getShortName()) ->tap(function (EventTickets $eventTicketsField) use ($block, $formId) { $eventId = $block->getAttribute('eventId'); $event = give(EventRepository::class)->getById($eventId); $ticketTypes = array_map(function ($ticketType) { return EventTicketTypeData::make($ticketType)->toArray(); }, $event->ticketTypes()->getAll() ?? []); $eventTicketsField ->title($event->title) ->startDateTime($event->startDateTime->format('Y-m-d H:i:s')) ->endDateTime($event->endDateTime->format('Y-m-d H:i:s')) ->description($event->description) ->ticketTypes($ticketTypes); $eventTicketsField->scope(function (EventTickets $field, $value, Donation $donation) { $ticketPurchaseData = array_map(function ($data) { return TicketPurchaseData::fromFieldValueObject($data); }, json_decode($value)); array_walk($ticketPurchaseData, new GenerateTicketsFromPurchaseData($donation)); $totalTicketsAmount = give(EventTicketRepository::class)->getTotalByDonation($donation); $donation->amount = $donation->amount->add($totalTicketsAmount); $donation->save(); }); return $eventTicketsField; }); } }