<?php

namespace App\Membership\Requests;

use App\Activity;
use App\Member\Member;
use App\Setting\NamiSettings;
use App\Subactivity;
use Illuminate\Foundation\Http\FormRequest;
use Zoomyboy\LaravelNami\Data\Membership;

class StoreRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
        ];
    }

    public function persist(Member $member, NamiSettings $settings): void
    {
        $from = now()->startOfDay();
        $namiId = $settings->login()->putMembership($member->nami_id, Membership::fromArray([
            'startsAt' => $from,
            'groupId' => $member->group->nami_id,
            'activityId' => Activity::find($this->input('activity_id'))->nami_id,
            'subactivityId' => optional(Subactivity::find($this->input('subactivity_id')))->nami_id,
        ]));

        $member->memberships()->create([
            ...$this->input(),
            ...['nami_id' => $namiId, 'group_id' => $member->group->id, 'from' => $from],
        ]);

        $member->syncVersion();
    }
}