<?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'],
            'phone'        => ['required'],
            'email'        => ['required', 'email'],
            'subject'      => ['required'],
            'message'      => ['required'],
        ]);
        if ($validator->fails()) return response()->json(['errors' => $validator->errors()], 403);

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

        //hunters2fujiyoshi@gmail.com
        Notify::create(['content' => "[" . $params['name'] . "] just sent you a contact.", 'module' => 'contact']);
        event(new NotifyEvent()); //broadcast(new NotifyEvent($notify));

        try {
            $email = $params['email'];
            $data['name'] = $params['name'];
            $data['phone'] = $params['phone'];
            $data['email'] = $params['email'];
            $data['subject'] = $params['subject'];
            $data['content'] = htmlspecialchars_decode(strip_tags($params['message']));

            Mail::send('emails.contact', $data, function ($message) use ($email) {
                $message->from('fujiyoshi@gxo.co.jp', 'iPhone System');
                $message->to(config('settings.admin_email'));
                $message->subject('Member Contact Notification');
            });
            logger("[Email] Send contact email.");
        } catch (\Exception $exception) {
            logger("[Email] Error: Send contact email has an error.");
        }

        return response()->json(['status' => 'success', 'message' => 'Sent contact successfully.'], 201);
    }
}
