<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Auth;
use App\Models\CaseStudies;

use App\Models\Contact;

use App\Models\User;


class RaintelsController extends Controller
{
    public function __construct()
    {
        //$this->middleware('auth');
    }

    public function casestudies()
    {
        $cases = CaseStudies::all();
       
        return view('casestudies',compact('cases'));
    }

    public function add_casestudies()
    {
        
        return view('case');
    }

    public function post_casestudies(Request $request)
    {
       

        $insert = CaseStudies::create([
            'title' => $request->title,
            'details' => $request->details,
            'tags' => $request->tags,
            'slug' => $request->slug
        ]);

        $case_id = $insert->id;
        if ($request->hasFile("logo")) 
        {
            $fileobj=$request->file("logo")->getClientOriginalName();

            $destpath="uploads/casestudies";

            $custom_file_name =$case_id.'-'.$fileobj;
            $path = $request->file("logo")->move(public_path().'/uploads/casestudies/', $custom_file_name);
            $uploadphoto = CaseStudies::where('id',$case_id)->update(['logo' => $custom_file_name]);
        }
        
        return redirect()->back();
    }

    public function get_case_details(Request $request)
    {
        $columns = array(
            0=> 'id',
            1=> 'title',
            2=> 'tags',
            3=> 'action',
        );
        $totalData = CaseStudies::count();
        $totalFiltered = $totalData; 
        $limit = $request->input('length');
        $start = $request->input('start');
        $order=0;
        //$order = $columns[$request->input('order.0.column')];
        $dir = $request->input('order.0.dir');
        if(empty($request->input('search.value')))
        {            
            $posts = CaseStudies::offset($start)
                         ->limit($limit)
                         ->orderBy('id','desc')
                         ->get();
        }
        else 
        {
            $search = $request->input('search.value'); 
            $posts =  CaseStudies::where('title', 'LIKE',"%{$search}%")
                            ->orWhere('tags', 'LIKE',"%{$search}%")
                            ->offset($start)
                            ->limit($limit)
                            ->orderBy($order,$dir)
                            ->get();
            $totalFiltered = CaseStudies::where('title', 'LIKE',"%{$search}%")
                            ->orWhere('tags', 'LIKE',"%{$search}%")
                            ->count();
        }
        $data = array();
        if(!empty($posts))
        {
            $title = "";
            $details = "";
            $tags = "";
            foreach ($posts as $post)
            {   
                $imagename= $post->logo;
                if($imagename)
                {
                    $image_path='uploads/casestudies/'.$imagename;
                }
                else
                {
                    $image_path="";
                }
                $nestedData['DT_RowIndex'] = $post->id;
                $nestedData['title'] = $post->title;
                $nestedData['tags'] = $post->tags;
                $nestedData['logo'] = $image_path;
                $nestedData['action'] = '<a href="'.url('update_casestudies').'/'.$post->id.'" title="Update Case Studies"><span style="color:blue;"><i class="fa fa-edit"></i></span></a>';
                $data[] = $nestedData;
            }
        }
        $json_data = array(
                    "draw"            => intval($request->input('draw')),  
                    "recordsTotal"    => intval($totalData),  
                    "recordsFiltered" => intval($totalFiltered), 
                    "data"            => $data   
                    );
        echo json_encode($json_data); 
    }

    public function update_casestudies($id)
    {
        $case_studies = CaseStudies::where('id',$id)->first();
        return view('update_case', compact('case_studies'));
    }

    public function post_update_casestudies(Request $request)
    {
        $case_id = $request->case_id;
        $case_studies = CaseStudies::where('id',$case_id)->first();
        $case_studies->title = $request->title;
        $case_studies->details = $request->details;
        $case_studies->tags = $request->tags;
        $case_studies->slug = $request->slug;
        $case_studies->save();

        if ($request->hasFile("logo")) 
        {
            $fileobj=$request->file("logo")->getClientOriginalName();

            $destpath="uploads/casestudies";

            $custom_file_name =$case_id.'-'.$fileobj;
            $path = $request->file("logo")->move(public_path().'/uploads/casestudies/', $custom_file_name);
            $uploadphoto = CaseStudies::where('id',$case_id)->update(['logo' => $custom_file_name]);
        }
        
        return redirect('add-casestudies');
    }

    public function contactpost(Request $request)
    {
        //dd($request);

        $this->validate($request, [
            'company' => 'required',
            'email' => 'required',
            'phone' => 'required',
            'typeofenq' => 'required',
            'tellusabout' => 'required',
            'g-recaptcha-response' => 'required|recaptcha',
            ]);


        $industry = $request->session()->get('industry');
        $business = $request->session()->get('business');
        $engagement = $request->session()->get('engagement');

        $insert = Contact::create([
            'name' => $request->name,
            'email' => $request->email,
            'phone' => $request->phone,
            'companyname' => $request->company,
            'typeofenq' => $request->typeofenq,
            'tellusabout' => $request->tellusabout,
            'hearus' => $request->hearus,
            'industry' => $industry,
            'business' => $business,
            'engagement' => $engagement
        ]);
        
        return view('contactsuccess');
    }

    public function saveindustry(Request $request)
    {
        $industry = $request->industry;

        $request->session()->put('industry',$industry);
    }

    public function savebusiness(Request $request)
    {
        $business = $request->business;

        $request->session()->put('business',$business);
    }

    public function saveengagement(Request $request)
    {
        $engagement = $request->engagement;

        $request->session()->put('engagement',$engagement);
    }

    public function blog($pageno=1)
    {
        $no_of_records_per_page = 5;
        $offset = ($pageno-1) * $no_of_records_per_page;

        $cases = CaseStudies::limit($no_of_records_per_page)->offset($offset)->orderBy('id','DESC')->get();

        $totalrecords = CaseStudies::count();
        $total_pages = ceil($totalrecords / $no_of_records_per_page);
       
        return view('blog',compact('cases','total_pages','pageno'));
    }

    public function blogdetails($blogid)
    {
        $cases = CaseStudies::where('id',$blogid)->first();

        $totalcharacters = strlen($cases->details);

        $estimatedtime = round($totalcharacters/200);
       
        return view('blogdetails',compact('cases','estimatedtime'));
    }

    public function blogs($slugname)
    {
        $cases = CaseStudies::where('slug',$slugname)->first();

        $totalcharacters = strlen($cases->details);

        $estimatedtime = round($totalcharacters/200);
       
        return view('blogdetails',compact('cases','estimatedtime'));
    }

    public function topic($topicname,$pageno=1)
    {
        $topicname = trim($topicname);
        $no_of_records_per_page = 5;
        $offset = ($pageno-1) * $no_of_records_per_page;

        $cases = CaseStudies::where('tags', 'LIKE', "%{$topicname}%")->limit($no_of_records_per_page)->offset($offset)->get();

        $totalrecords = CaseStudies::where('tags', 'LIKE', "%{$topicname}%")->count();
        $total_pages = ceil($totalrecords / $no_of_records_per_page);

             
        return view('topic',compact('cases','total_pages','pageno','topicname'));
    }

    public function view_profile()
    {
        $id = Auth::user()->id;
        $users = User::where('id',$id)->first();
        return view('view_profile', compact('users'));
    }

    public function change_password()
    {
        $id = Auth::user()->id;
        $users = User::where('id',$id)->first();
        return view('change_password', compact('users','id'));
    }

    public function change_password_post(Request $request)
    {
        $id = Auth::user()->id;
        if (!(Hash::check($request->get('current_password'), Auth::user()->password))) 
        {     
            // The passwords matches
            return redirect()->back()->with('status',"Your current password does not matches with the password you provided. Please try again.");  
        }
        if(!(strcmp($request->get('confirmpass'), $request->get('Password'))) == 0)
        {
            return redirect()->back()->with('status',"New Password and confirm should be same.");
        }
        else
        {
            $pwd = $request->get('confirmpass');
            $password = Hash::make($pwd);
            User::where('id',$id)->update(['password'=>$password]);
            return redirect()->back()->with('status',"Password updated");
        }
    }

}
