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

use Illuminate\Http\Request;
use App\EmailTemplate;

/**
 * EmailTemplateController Class Doc Comment
 *
 * @category Class
 * @package  Api
 * @author   Ketan Patel - ketan.patel@brainvire.com
 *
*/
class EmailTemplateController extends Controller
{
    public function __construct()
    {
     //$this->middleware('oauth', ['except' => ['index']]);
     //$this->middleware('auth:api', ['except' => ['index']]);
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $helperObj = new \App\CommonHelper();
        $dateformat = env("DATE_FORMAT");
        $timeformat = env("TIME_FORMAT");
        
        $templates = EmailTemplate::select('id', 'info', 'subject', 'status', 'created')
                ->orderBy('id', 'desc')
                ->get();
        if (!empty($templates)) {
            foreach($templates as $key => $val){
                $templates[$key]->created = $helperObj->convertDateByFormat($val->created, $dateformat.' '.$timeformat);
            }
        }
        
        return response()->json($templates);
    }
    /**
     * Get the specified resource from storage.
     *
     * @param  int $rid
     * @return \Illuminate\Http\Response
     */
    public function show($rid)
    {
        $template = EmailTemplate::where('id', $rid)->get()->first();
        if (!empty($template)) {
            return response()->json($template);
        } 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, [
            'info'        => 'required',
            'subject'     => 'required',
            'description' => 'required',
            'slug'        => 'required|unique:cms',
        ]);

        $template                = new EmailTemplate();
        $template->info          = $request->info;
        $template->subject       = $request->subject;
        $template->description   = $request->description;
        $template->status        = $request->status;
        $template->slug          = $request->slug;
        $date                    = new \DateTime();
        $ddf                     = $date->format('Y-m-d');
        $template->created       = $ddf;
        if ($template->save()) {
            return response()->json(['status' => 'success', 'message' => TEMPLATE_CREATED]);
        } else {
            return response()->json(['status' => 'fail', 'message' => SOMETHING_WENT_WRONG]);
        }
    }

    /**
     * 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, [
            'info'        => 'required',
            'subject'     => 'required',
            'description' => 'required',
        ]);

        $template                    = EmailTemplate::find($rid);
        if ($template) {
            $template->info          = $request->info;
            $template->subject       = $request->subject;
            $template->description   = $request->description;
            $template->status        = $request->status;
            $date                    = new \DateTime();
            $ddf                     = $date->format('Y-m-d H:i:s');
            $template->updated       = $ddf;
            
            if ($template->save()) {
                return response()->json(['status' => 'success', 'message' => TEMPLATE_UPDATED]);
            } else {
                return response()->json(['status' => 'fail', 'message' => SOMETHING_WENT_WRONG]);
            }
        } else {
            return response()->json(['status' => 'fail', 'message' => RECORD_NOT_FOUND]);
        }
    }
    
        /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function changeStatus(Request $request)
    {
        $this->validate($request, [
            'id'          => 'required',
            'status'      => 'required',
        ]);

        $rid                = $request->id;
        $template           = EmailTemplate::find($rid);
        
        if ($template) {
            $template->status   = $request->status;
            $date               = new \DateTime();
            $ddf                = $date->format('Y-m-d H:i:s');
            $template->updated  = $ddf;

            if ($template->save()) {
                return response()->json(['status' => 'success', 'message' => STATUS_CHANGED]);
            } else {
                return response()->json(['status' => 'fail', 'message' => SOMETHING_WENT_WRONG]);
            }
        } else {
            return response()->json(['status' => 'fail', 'message' => RECORD_NOT_FOUND]);
        }
    }
}
