1: <?php
2:
3: namespace IPay\ValueObjects;
4:
5: use EventSauce\ObjectHydrator\Constructor;
6: use EventSauce\ObjectHydrator\PropertyCasters\CastToDateTimeImmutable;
7: use EventSauce\ObjectHydrator\PropertyCasters\CastToType;
8:
9: readonly class Transaction
10: {
11: private function __construct(
12: public string $currency,
13: public int $amount,
14: public string $remark,
15: public string $corresponsiveAccount,
16: public string $corresponsiveName,
17: public \DateTimeImmutable $processDate,
18: ) {
19: }
20:
21: #[Constructor]
22: public static function create(
23: string $currency,
24: #[CastToType('integer')]
25: int $amount,
26: string $remark,
27: string $corresponsiveAccount,
28: string $corresponsiveName,
29: #[CastToDateTimeImmutable('d-m-Y H:i:s')]
30: \DateTimeImmutable $processDate,
31: ): self {
32: return new self(
33: $currency,
34: $amount,
35: $remark,
36: $corresponsiveAccount,
37: $corresponsiveName,
38: $processDate,
39: );
40: }
41: }
42: