<?php
namespace App\Http\Controllers\Api\v1;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Cms;

/**
 * CmsController Class Doc Comment
 *
 * @category Class
 * @package  Api
 * @author   Ketan Patel - ketan.patel@brainvire.com
 *
*/
class CmsController extends Controller
{

    public function __construct()
    {
     //$this->middleware('auth:api');
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $pages = DB::table('cms')->orderBy('id', 'desc')->get();

        return response()->json($pages);
    }
    /**
     * Get the specified resource from storage.
     *
     * @param  int $slug
     * @return \Illuminate\Http\Response
     */
    public function show($slug)
    {
        $cms = Cms::where('id', $slug)->get()->first();
        if (!empty($cms)) {
            return response()->json($cms);
        } else {
            return response()->json(['status' => 'fail', 'message' => RECORD_NOT_FOUND]);
        }
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'title'       => 'required',
            'description' => 'required',
            'slug'        => 'required|unique:cms,slug',
            'status'      => 'required'
        ]);

        $cms              = new Cms();
        $cms->title       = $request->title;
        $cms->description = $request->description;
        $cms->slug        = $request->slug;
        $cms->status      = $request->status;
        $date             = new \DateTime();
        $ddf              = $date->format('Y-m-d');
        $cms->created     = $ddf;
        $cms->save();

        /*---- Subadmin activity log ---*/
        $subAdminName           = $request->subAdminName;
        $subAdminId             = $request->subAdminId;
        $logdata                = [];
        $logdata['adminName']   = $subAdminName;
        $logdata['adminUserId'] = $subAdminId;
        $logdata['type']        = 'cms';
        $logdata['description'] = "Sub Admin $subAdminName has created new CMS record $request->title";
        $this->logActivity($logdata);
        
        
        return response()->json(['status' => 'success']);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int                      $rid
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $rid)
    {
        //
        $this->validate($request, [
            'title'       => 'required',
            'description' => 'required',
            'status'      => 'required'
        ]);

        $cms              = Cms::find($rid);
        if (!$cms) {
            return response()->json(['status' => 'fail','message' => RECORD_NOT_FOUND]);
        }
        $cms->title       = $request->title;
        $cms->description = $request->description;
        $cms->status      = $request->status;
        $date             = new \DateTime();
        $ddf              = $date->format('Y-m-d H:i:s');
        $cms->updated     = $ddf;
        $cms->save();
        if ($cms->save()) {
            
            /*---- Subadmin activity log ---*/
            $subAdminName           = $request->subAdminName;
            $subAdminId             = $request->subAdminId;
            $logdata                = [];
            $logdata['adminName']   = $subAdminName;
            $logdata['adminUserId'] = $subAdminId;
            $logdata['type']        = 'cms';
            $logdata['description'] = "Sub Admin $subAdminName has updated CMS $request->title record";
            $this->logActivity($logdata);
            
            return response()->json(['status' => 'success', 'message' => CMS_UPDATED]);
        } else {
            return response()->json(['status' => 'fail', 'message' => SOMETHING_WENT_WRONG]);
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int $rid
     * @return \Illuminate\Http\Response
     */
    public function destroy($rid)
    {
        if (Cms::destroy($rid)) {
             return response()->json(['status' => 'success', 'message' => CMS_DELETED]);
        }
    }
}
