HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: /home/workzeni/agency-erp-05.workzenix.com/vendor/livewire/flux/src/DateRangeSynth.php
<?php

namespace Flux;

use Livewire\Mechanisms\HandleComponents\Synthesizers\Synth;

class DateRangeSynth extends Synth
{
    public static $key = 'fxdr';

    static function match($target)
    {
        return is_object($target) && $target instanceof DateRange;
    }

    static function matchByType($type) {
        return $type === DateRange::class;
    }

    static function unwrapForValidation($target) {
        $data = [
            'start' => $target->start()?->format('Y-m-d'),
            'end' => $target->end()?->format('Y-m-d'),
        ];

        $preset = $target->preset();

        $preset && $data['preset'] = $preset->value;

        return $data;
    }

    static function hydrateFromType($type, $value) {
        if ($value === '' || $value === null) return null;

        $preset = $value['preset'] ?? null;

        if ($preset) {
            if ($preset === DateRangePreset::AllTime->value) {
                return DateRange::allTime($value['start']);
            }

            return DateRange::fromPreset(DateRangePreset::from($preset));
        }

        return new DateRange($value['start'] ?? null, $value['end'] ?? null);
    }

    function dehydrate($target, $dehydrateChild)
    {
        $data = [
            'start' => $target->start()?->format('Y-m-d'),
            'end' => $target->end()?->format('Y-m-d'),
        ];

        $preset = $target->preset();

        $preset && $data['preset'] = $preset->value;

        return [$data, []];
    }

    function hydrate($value, $meta) {
        if ($value === '' || $value === null) return null;

        $preset = $value['preset'] ?? null;

        if ($preset) {
            if ($preset === DateRangePreset::AllTime->value) {
                return DateRange::allTime($value['start']);
            }

            return DateRange::fromPreset(DateRangePreset::from($preset));
        }

        return new DateRange($value['start'] ?? null, $value['end'] ?? null);
    }

    function set(&$target, $key, $value) {
        $target = match ($key) {
            'start' => new DateRange($value, $target->end()),
            'end' => new DateRange($target->start(), $value),
            'preset' => $value === DateRangePreset::AllTime->value
                ? DateRange::allTime($target->start())
                : DateRange::fromPreset(DateRangePreset::from($value)),
        };
    }

    function unset(&$target, $key) {
        $target = match ($key) {
            'start' => new DateRange(null, $target->end()),
            'end' => new DateRange($target->start(), null),
            'preset' => new DateRange($target->start(), $target->end()),
        };
    }
}