<?php

namespace App\Http\Controllers;

use App\Models\Branch;
use App\Models\Province;
use Illuminate\Http\Request;

class BranchController extends Controller
{
    protected $LogController;
    public function __construct(LogController $LogController)
    {
        $this->LogController = $LogController;
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $branchs = Branch::all();

        return view('branch.index')->with([
            'page_title' => 'การจัดการสาขา',
            'branchs' => $branchs
        ]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $provinces = Province::orderBy('name')->get();
        return view('branch.create')->with([
            'page_title' => 'เพิ่มสาขา',
            'provinces' => $provinces
        ]);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
            'code' => 'required',
            'name' => 'required',
            'address' => 'required',
            'province' => 'required',
            'phone1' => 'required|numeric',
            'open' => 'required',
            'close' => 'required'
        ],[
            'code.required' => 'กรุณากรอกรหัสสาขา',
            'name.required' => 'กรุณากรอกชื่อสาขา',
            'address.required' => 'กรุณากรอกที่ตั้งสาขา',
            'province.required' => 'กรุณาเลือกจังหวัด',
            'phone1.required' => 'กรุณากรอกหมายเลขโทรศัพท์',
            'phone1.numeric' => 'กรุณากรอกเป็นตัวเลขเท่านั้น',
            'open.required' => 'กรุณากรอกเวลาเปิด',
            'close.required' => 'กรุณากรอกเวลาปิด'
        ]);

        $branch = new Branch;
        $branch->code = $request->code;
        $branch->name = $request->name;
        $branch->address = $request->address;
        $branch->province = $request->province;
        $branch->phone_1 = $request->phone1;
        $branch->phone_2 = $request->phone2;
        $branch->open = $request->open;
        $branch->close = $request->close;

        $branch->save();

        // Log
        $description = "เพิ่มสาขา: ". $request->name;
        $this->LogController->log('การจัดการสาขา', 'เพิ่มข้อมูล', $description);

        return redirect()->route('branch.index')->with('feedback','เพิ่มข้อมูลสาขาเรียบร้อย');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Branch  $branch
     * @return \Illuminate\Http\Response
     */
    public function show(Branch $branch)
    {
        $branch = Branch::find($branch->id);
        return view('branch.show')->with([
            'page_title' => 'ข้อมูลสาขา',
            'branch' => $branch
        ]);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Branch  $branch
     * @return \Illuminate\Http\Response
     */
    public function edit(Branch $branch)
    {
        $provinces = Province::orderBy('name')->get();
        return view('branch.edit', [
            'page_title' => 'แก้ไขสาขา',
            'branch' => $branch,
            'provinces' => $provinces
        ]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Branch  $branch
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Branch $branch)
    {
        $request->validate([
            'code' => 'required',
            'name' => 'required',
            'address' => 'required',
            'province' => 'required',
            'phone1' => 'required|numeric',
            'open' => 'required',
            'close' => 'required'
        ],[
            'code.required' => 'กรุณากรอกรหัสสาขา',
            'name.required' => 'กรุณากรอกชื่อสาขา',
            'address.required' => 'กรุณากรอกที่ตั้งสาขา',
            'province.required' => 'กรุณาเลือกจังหวัด',
            'phone1.required' => 'กรุณากรอกหมายเลขโทรศัพท์',
            'phone1.numeric' => 'กรุณากรอกเป็นตัวเลขเท่านั้น',
            'open.required' => 'กรุณากรอกเวลาเปิด',
            'close.required' => 'กรุณากรอกเวลาปิด'
        ]);

        $branch->code = $request->code;
        $branch->name = $request->name;
        $branch->address = $request->address;
        $branch->province = $request->province;
        $branch->phone_1 = $request->phone1;
        $branch->phone_2 = $request->phone2;
        $branch->open = $request->open;
        $branch->close = $request->close;

        $branch->save();

        // Log
        $description = "แก้ไขสาขา: ". $request->name;
        $this->LogController->log('การจัดการสาขา', 'แก้ไขข้อมูล', $description);

        return redirect()->route('branch.index')->with('feedback','แก้ไขข้อมูลสาขาเรียบร้อย');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Branch  $branch
     * @return \Illuminate\Http\Response
     */
    public function destroy(Branch $branch)
    {
        //$branch->delete();
        $branch->is_active = '0';
        $branch->save();

        // Log
        $description = "ลบสาขา: ". $branch->name;
        $this->LogController->log('การจัดการสาขา', 'ลบข้อมูล', $description);

        return redirect()->route('branch.index')->with('feedback','ลบข้อมูลสาขาเรียบร้อย');
    }
}
