<?php

namespace App\Domains\Event\Actions\UpdateEvent;

class UpdateEventCommand {
    public UpdateEventRequest $request;
    public function __construct(UpdateEventRequest $request) {
        $this->request = $request;
    }

    public function execute() : UpdateEventResponse {
        $response = new UpdateEventResponse();

        $this->request->event->name = $this->request->eventName;
        $this->request->event->location = $this->request->eventLocation;
        $this->request->event->postal_code = $this->request->postalCode;
        $this->request->event->email = $this->request->email;
        $this->request->event->early_bird_end = $this->request->earlyBirdEnd;
        $this->request->event->registration_final_end = $this->request->registrationFinalEnd;
        $this->request->event->alcoholics_age = $this->request->alcoholicsAge;
        $this->request->event->support_per_person = $this->request->supportPerPerson;
        $this->request->event->support_flat = $this->request->flatSupport;
        $this->request->event->send_weekly_report = $this->request->sendWeeklyReports;
        $this->request->event->registration_allowed = $this->request->registrationAllowed;
        $this->request->event->save();

        $this->request->event->resetAllowedEatingHabits();
        $this->request->event->resetContributingLocalGroups();

        foreach($this->request->eatingHabits as $eatingHabit) {
            $this->request->event->eatingHabits()->attach($eatingHabit);
        }

        foreach($this->request->contributingLocalGroups as $contributingLocalGroup) {
            $this->request->event->localGroups()->attach($contributingLocalGroup);
        }

        $this->request->event->save();
        $response->success = true;

        return $response;
    }
}
