<?php

namespace App\Http\Controllers;

use App\Contact;
use App\Events\NotifyEvent;
use App\Notify;
use Illuminate\Http\Request;
use Validator;
use Mail;

class ContactController extends Controller
{
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name'                => ['required'],
            'full_name'           => ['required'],
            'furigana_name'       => ['required'],
            'phone_number'        => ['required'],
            'email'               => ['required'],
            'contact_method'      => ['required'],
            'contents_of_inquiry' => ['required'],
        ]);
        if ($validator->fails()) return response()->json(['errors' => $validator->errors()], 403);

        $params = $request->all();
        /*Contact::create([
            'type'         => $params['type'],
            'name'         => $params['name'],
            'email'        => $params['email'],
            'content'      => $params['content'],
            'is_read'      => 0,
            'is_activated' => 1,
            'created_at'   => date('Y-m-d H:i:s'),
            'updated_at'   => date('Y-m-d H:i:s')
        ]);*/

        $ageList = ['1' => '18～24歳', '2' => '25～34歳', '3' => '35～44歳', '4' => '45～54歳', '5' => '55～64歳', '6' => '65歳以上'];
        $contactMethodList = [1 => 'メール', 2 => '電話', 3 => 'ライン', 4 => '当サイトからの連絡は受けとらない'];

        if ($params['gender'] == 1 || $params['gender'] == '1') {
            $gender = '男性';
        } elseif ($params['gender'] == 2 || $params['gender'] == '2') {
            $gender = '非公開';
        } else {
            $gender = '女性';
        }

        $data = $params;
        $data['gender'] = $gender;
        $data['age'] = $ageList[$data['age']];
        $data['contact_method'] = $contactMethodList[$data['contact_method']];
        $data['site'] = url("/");
        $userEmail = $params['email'];

        try {
            //hunters2fujiyoshi@gmail.com
            Notify::create([
                'content'      => "[" . $params['full_name'] . "] just sent you a contact.",
                'module'       => 'contact',
                'item_content' => json_encode($data),
                'created_at'   => date('Y-m-d H:i:s'),
                'updated_at'   => date('Y-m-d H:i:s'),
            ]);
            event(new NotifyEvent()); //broadcast(new NotifyEvent($notify));

            //admin
            Mail::send('emails.contact_admin', $data, function ($message) {
                $message->from(config('mail.from.address'), config('mail.from.name'));
                $message->to(config('settings.admin_email'));
                $message->subject("【介護なんでも相談室】お客様からメールフォームにお問合せがありました。");
            });

            //user
            Mail::send('emails.contact_user', $data, function ($message) use ($userEmail) {
                $message->from(config('mail.from.address'), config('mail.from.name'));
                $message->to($userEmail);
                $message->subject("【介護なんでも相談室】お問い合わせありがとうございました。");
            });
        } catch (\Exception $exception) {
            logger($exception->getMessage());
        } finally {
            logger("[Email] Sent contact email to: " . config('settings.admin_email'));

            return response()->json(['data' => ['status' => 'success', 'message' => __('contact.message.success')]], 200);
        }
    }
}
