<?php

namespace App\Http\Controllers\Admin;


use App\Http\Controllers\Controller;
use App\ProjectLead\ProjectLeads;
use App\Slack;
use App\StaticPage;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;

class StaticPageController extends Controller{

    private $request;

    public function __construct(Request $request){

        $this->request = $request;
    }

    public function viewPages(){

        $data['from_date'] = ($this->request->has('from_date') && !empty($this->request->get('from_date'))) ? Carbon::createFromFormat('Y-m-d', $this->request->get('from_date'))->toDateString() : Carbon::now()->startOfMonth()->toDateString();
        $data['to_date'] = ($this->request->has('to_date') && !empty($this->request->get('to_date'))) ? Carbon::createFromFormat('Y-m-d', $this->request->get('to_date'))->toDateString() : Carbon::now()->endOfMonth()->toDateString();

        $data['status'] = $this->request->get('status') ? $this->request->get('status') : '';
        $staticPages = StaticPage::with('user');
        if($data['status']){
            $staticPages = $staticPages->where('is_published', $data['status']);
        }
        if($data['from_date'] && $data['to_date']){
            $staticPages = $staticPages->where('created_at', '>=', $data['from_date'])->where('created_at', '<=', $data['to_date']);
        }
        $staticPages = $staticPages->orderby('created_at','desc')->get(['id','title','url','is_published','user_id','created_at', 'meta']);
        $data['staticPages'] = $staticPages;
        return view('admin.static-page.index', $data);
    }

    public function createPage($id = 0){

        $staticPage = null;
        $disabled = 0;

        $isWebNotice = StaticPage::where('web_notice', 1)->first(['id']);
        if(isset($isWebNotice->id)){
            $disabled = 1;
        }


        if($id) {
            $staticPage = new StaticPage();
            $staticPage = $staticPage->where('id', $id);
            $staticPage = $staticPage->orderby('created_at','desc')->first();

            if(isset($isWebNotice->id) && $isWebNotice->id == $id){
                $disabled = 0;
            }
        }
        $res = isset($staticPage->meta) ? explode('"', $staticPage->meta) : '';
        $meta_desc = '';
        $meta_keywords = '';
        if(isset($res[3])){
            if($res[1] == 'description') {
                $meta_desc = $res[3];
            }
            if($res[1] == 'keywords'){
                $meta_keywords = $res[3];
            }

        }
        if(isset($res[7])){
            $meta_keywords = $res[7];
        }
        return view('admin.static-page.create_v1', ['staticPage' =>$staticPage, 'id' => $id, 'disabled' => $disabled, 'meta_desc' => $meta_desc, 'meta_keywords' => $meta_keywords]);
    }

    public function publishPage(){

        $status = 'FAIL';
        if($this->request->get('is_published')){
            $message = 'Failed to publish page';
        }else{
            $message = 'Failed to save in draft';
        }

        if($this->request->get('page_id')){
            $staticPage = StaticPage::find($this->request->get('page_id'));
        }else{
            $staticPage = new StaticPage();
        }


        if($this->request->has('cover_image')){
            $size = (int) (strlen(rtrim($this->request->get('cover_image'), '=')) * 3 / 4);

            if($size > 1500001){
                return response()->json(['status' => $status, 'message' => 'Please check uploaded file\'s size']);
            }
        }

        $staticPage->fill($this->request->input());
        $staticPage->web_notice = $this->request->has('web_notice') ? 1 : 0;
        $staticPage->created_at = Carbon::now()->toDateTimeString();
        $staticPage->save();


        if($staticPage){
            $status = 'OK';
            if($this->request->get('is_published')){
                $message = 'Page published successfully';
            }else{
                $message = 'Page saved in draft';
            }
        }

        return response()->json(['status' => $status, 'message' => $message]);
    }

    public function getPage($slug, $main = ''){
        if($main){
            $slug .= '/'.$main;
        }
        $staticPage = StaticPage::where('url',trim($slug))->where('is_published',1)->first();
        if (!isset($staticPage->id)){
            abort(404);
        }
        $data['staticPage'] = $staticPage;
        $data['title'] = str_replace('-', ' ',$staticPage->title);
        $data['page'] = $staticPage->url;
        $data['meta'] = $staticPage->meta ?? '';
        $data['breadcrumbs'] = $staticPage->breadcrumbs ?? '';
        if($staticPage->url == 'lp/home-renovation') {
            $isMobile = (new Dashboard(new Request()))->isMobile();
            if ($isMobile) {
                $data['isMobile'] = $isMobile;
            }
        }
        return view('front.static_page', $data);
    }

    public function saveLead(Request $request){
        $status = 'FAIL';
        $message = 'Something went wrong. Please try again later';
        $ledaId = ProjectLeads::insertGetId([
            'firm' => $request->get('name'),
            'sector_id' => 41,
            'city' => $request->get('city'),
            'source' => $request->get('utm_source'),
            'lead_generated_by' => 19563,
            'user_id' => 19563,
            'status' => 1,
            'contacts' => json_encode([
                ["name_of_contact" => $request->get('name'), "designation_of_contact" => "", "email_of_contact" => $request->get('email'), "phone_of_contact" => $request->get('phone'), "dob_of_contact" =>$request->get('dob'), "pan_card" => $request->get('pan_card')]
            ]),
            'created_at' => Carbon::now()->toDateTimeString()
        ]);

        if($ledaId){
            $status = 'OK';
            $message = 'Your request is received. You will receive a confirmation message shortly';
        }

        return response()->json(['status' => $status, 'message' => $message]);
    }

    public function savePageRequest($slug, Request $request){

        $data = $request->input();
        unset($data['_token']);

        (new Slack(new Request(['title' => 'Moratorium EMI Notice Update', 'fields' => $data, 'group' => 'payment_collection'])))->send();

        \Session::flash('success', 'Your request has been submitted successfully, We\'ll get back to you soon.');
        return redirect()->back();
    }
}
