Skip to content

[Bug]: OutOfOffice DTO #197

@StanBarrows

Description

@StanBarrows

What happened?

  • Fix OutOfOfficeDTO Parsing createFromTimestampMs

Correct Code.

<?php

namespace CodebarAg\DocuWare\DTO\General\UserManagement\GetUsers;

use Illuminate\Support\Arr;
use Illuminate\Support\Carbon;
use Illuminate\Support\Str;

final class OutOfOffice
{
    public static function fromJson(array $data): self
    {
        if ($startDateTime = Arr::get($data, 'StartDateTime')) {
            $startDateTime = Str::of($startDateTime)->after('(')->before(')');
            // Extract milliseconds part (ignore optional timezone offset like +0000)
            $milliseconds = (int) (string) $startDateTime;
            $startDateTime = Carbon::createFromTimestampMs($milliseconds, 'UTC');
        }

        if ($endDateTime = Arr::get($data, 'EndDateTime')) {
            $endDateTime = Str::of($endDateTime)->after('(')->before(')');
            // Extract milliseconds part (ignore optional timezone offset like +0000)
            $milliseconds = (int) (string) $endDateTime;
            $endDateTime = Carbon::createFromTimestampMs($milliseconds, 'UTC');
        }

        return new self(
            isOutOfOffice: Arr::get($data, 'IsOutOfOffice'),
            startDateTime: $startDateTime,
            startDateTimeSpecified: Arr::get($data, 'StartDateTimeSpecified'),
            endDateTime: $endDateTime,
            endDateTimeSpecified: Arr::get($data, key: 'EndDateTimeSpecified'),
        );
    }

    public function __construct(
        public bool $isOutOfOffice,
        public ?Carbon $startDateTime,
        public bool $startDateTimeSpecified,
        public ?Carbon $endDateTime,
        public bool $endDateTimeSpecified,
    ) {}
}


Package Version

12.0

PHP Version

8.4.0

Laravel Version

12.0.0

Which operating systems does with happen with?

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions