<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use BackendUserService;
use BackendContactService;
use Illuminate\Http\Request;
use RequestContext;
use App\Models\Contact;
use App\Libs\Transformers\BackendAuth\BackendContactTransformer;
use Fractal;

class ContactController extends Controller
{
    public function getIndex()
    {
        $loggedUser = BackendUserService::getLoggedUser();

        if (!$loggedUser->hasPermission('cms.manage')) {   
            abort(403);
        }
        return view('admin.pages.contact_forms.contact_forms');
    }

    public function postList(Request $request)
    {
        $page = $request->input("current");
        $rowCount = $request->input("rowCount");
        $sort = $request->input("sort");
        $search = $request->input("searchPhrase");

        if (!empty($page)) {
            $result = BackendContactService::getContactGridList($page, $rowCount, $sort, $search);
            $result["rows"] = Fractal::collection($result["rows"])
                ->transformWith(new BackendContactTransformer())->toArray();
            return response()->json($result);
        } else {
            $contacts = Contact::all();
            return response()->json(Fractal::collection($contacts)
                ->transformWith(new BackendContactTransformer())->toArray());
        }
    }

    public function getPreview($id = null)
    {
        $loggedUser = BackendUserService::getLoggedUser();
        
        if (!$loggedUser->hasPermission("cms.manage")) {
            abort(403);
        }   
 
        $contact = Contact::find($id);
        RequestContext::set('selected_menu', 'admin');
        RequestContext::set('selected_menu_option', 'contact-forms');

        return view('admin.pages.contact_forms.contact_form_preview', [
            'contact' => $contact,
        ]);
    }

    public function postDelete(Request $request)
    {
        $id = (int)$request->input('id');
        $contact = Contact::find($id);

        if(!empty($contact)){
            $contact->delete();
        }

        return response()->json(["success" => true]);
    }
}
