ldc-mesbr-app/src/Application/UseCases/Coupon/Update/Input.php

29 lines
1 KiB
PHP

<?php
declare(strict_types=1);
namespace Application\UseCases\Coupon\Update;
use Domain\Models\ValueObjects\Coupon\CouponCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Shared\DDD\UseCases\Input as UseCaseInput;
use Webmozart\Assert\Assert;
final readonly class Input implements UseCaseInput
{
public function __construct(
public CouponCode $code,
public ?CouponPicture $picture = null,
public ?CouponValidityInformationArray $validityInformations = null,
public ?CouponLegalInformationArray $legalInformations = null,
) {
Assert::true(
$this->picture instanceof CouponPicture
|| $this->validityInformations instanceof CouponValidityInformationArray
|| $this->legalInformations instanceof CouponLegalInformationArray,
'At least one field must be provided to update the coupon.',
);
}
}