<?php

namespace App\Http\Controllers\Api;

use fullMstr;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class MasterController extends Controller
{
    public function index(Request $request)
    {
        $singleMstrQuery = Master::query();
        $singleMstrQuery->where('title', 'like', '%'.$request->get('q').'%');
        $singleMstrQuery->orderBy('title');
        $mstrCollections = $singleMstrQuery->paginate(25);

        return $mstrCollections;
    }

    public function store(Request $request)
    {
        $this->authorize('create', new Master);

        $newMaster = $request->validate([
            'title'       => 'required|max:60',
            'description' => 'nullable|max:255',
        ]);
        $newMaster['creator_id'] = auth()->id();

        $singleMstr = Master::create($newMaster);

        return response()->json([
            'message' => __('master.created'),
            'data'    => $singleMstr,
        ], 201);
    }

    public function show(Master $singleMstr)
    {
        return $singleMstr;
    }

    public function update(Request $request, Master $singleMstr)
    {
        $this->authorize('update', $singleMstr);

        $singleMstrData = $request->validate([
            'title'       => 'required|max:60',
            'description' => 'nullable|max:255',
        ]);
        $singleMstr->update($singleMstrData);

        return response()->json([
            'message' => __('master.updated'),
            'data'    => $singleMstr,
        ]);
    }

    public function destroy(Request $request, Master $singleMstr)
    {
        $this->authorize('delete', $singleMstr);

        $request->validate(['master_id' => 'required']);

        if ($request->get('master_id') == $singleMstr->id && $singleMstr->delete()) {
            return response()->json(['message' => __('master.deleted')]);
        }

        return response()->json('Unprocessable Entity.', 422);
    }
}
