<?php

namespace App\Http\Controllers;

use App\DwpRoll;
use DB;
use Mail;
use Auth;
use Session;
use App\Jobs;
use App\jobs_address;
use App\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use DateTime;
use Illuminate\Http\UploadedFile;
use App\Image;
use ZipArchive;
use App\Exports\ListExport;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\File;
use Intervention\Image\Facades\Image as Imagee;
use Kunnu\Dropbox\DropboxApp;
use Kunnu\Dropbox\Dropbox;



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

    private $e;
    private $a;

    public function basic_email($name, $email)
    {
        $data = array('name' => $name);
        $this->e = $email;
        $this->a = $name;
        Mail::send('mail', $data, function ($message) {
            $message->to($this->e, $this->a)->subject('Status Update');
            $message->from('aumar@geneticconcepts.org', 'Landlord Cert');
        });
        // echo "Basic Email Sent. Check your inbox.";
    }
	
	  public function revert_job_status_by_update(Request $request)
    {
		//die($request->id);
        $table = Jobs::findOrFail((int) $request->id);
		
        if ($request->job_status == "surveyed") {
			
			$table->booking_date = null;
			$table->booking_time = null;
			$table->insulation_date = null;
			$table->insulated_time = null;
			$table->submit_date = null;
			$table->cancel_date = null;
		    $table->job_status = 1;
        
		} elseif ($request->job_status == "booked") {
           
			$table->insulation_date = null;
			$table->insulated_time = null;
			$table->submit_date = null;
			$table->cancel_date = null;
		    $table->job_status = 2;
			
        } elseif ($request->job_status == "insulated") {
            
			$table->submit_date = null;
			$table->cancel_date = null;
		    $table->job_status = 3;
        }
		
        //$table->delay_mail = 0;
        $table->save();
		return redirect()->back();
	}

	public function revert_job_status_by(Request $request)
    {
        $jobs_id = array();
        $status2 = "index";
		
		$r = $request;
		$sd = strtoupper($r->search_data);
		$query = str_replace(",", " ", $sd);
		$output = preg_replace("/\s+/", " ", $query);
		$exp = explode(" ",$output);
		
		$search_data=$r->search_data;
		
		//die($sd.'  '.$query.'  '.$query1.'  ');
		//die(print_r($exp));
		//die($query);explode(" ",$query)
		
        /*$jobs = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
				//->where('jobs.status', 1)
                //->where('jobs.address',  '%High Town Road%')
                ->whereIn(DB::raw("upper(jobs.address)"), 'like' ,'%'.$exp[0].'%')
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('id', 'desc')
				->groupBy('jobs.id')
                ->get();*/
				
		$jobs_q = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
				//->where('jobs.status', 1)
                //->where('jobs.address',  '%High Town Road%')
                ->where(DB::raw("upper(jobs.id)"), '=' ,$sd)
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('id', 'desc');
                //->get();
				
				/*foreach ($exp as $exp) {
				   $jobs_q->orwhere(DB::raw("upper(jobs.address)"),  'like', '%'.$exp.'%');
				}*/
				
				$jobs = $jobs_q->get();
			//die(print_r($jobs));	
				
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }

        $images = Image::all();

        //$surveyr = User::where("role_id", 3)->get();


        $jobs_id2 = implode(',', $jobs_id);
        return view('jobs.revert_job_status', compact('jobs', 'status2', 'jobs_id2', "images","search_data"));
    }
	
	public function revert_job_status()
	{
		
        $jobs_id = array();
        $status2 = "index";
        
            $jobs = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
                ->where('jobs.status', 666)
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('id', 'desc')
                ->get();
        
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }

        $images = Image::all();

        $surveyr = User::where("role_id", 3)->get();

		//$jobs='';
        $jobs_id2 = implode(',', $jobs_id);
        return view('jobs.revert_job_status', compact('jobs', "surveyr", 'status2', 'jobs_id2', "images"));
    
	}
	 //
    public function property_check()
    {
        $jobs_id = array();
        $status2 = "index";
        
            $jobs = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
                ->where('jobs.status', 666)
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('id', 'desc')
                ->get();
        
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }

        $images = Image::all();

        $surveyr = User::where("role_id", 3)->get();

		//$jobs='';
        $jobs_id2 = implode(',', $jobs_id);
        return view('jobs.propertycheck', compact('jobs', "surveyr", 'status2', 'jobs_id2', "images"));
    }

	public function property_check_by(Request $request)
    {
        $jobs_id = array();
        $status2 = "index";
		
		$r = $request;
		$sd = strtoupper($r->search_data);
		$query = str_replace(",", " ", $sd);
		$output = preg_replace("/\s+/", " ", $query);
		$exp = explode(" ",$output);
		
		$search_data=$r->search_data;
		
		//die($sd.'  '.$query.'  '.$query1.'  ');
		//die(print_r($exp));
		//die($query);explode(" ",$query)
		
        /*$jobs = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
				//->where('jobs.status', 1)
                //->where('jobs.address',  '%High Town Road%')
                ->whereIn(DB::raw("upper(jobs.address)"), 'like' ,'%'.$exp[0].'%')
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('id', 'desc')
				->groupBy('jobs.id')
                ->get();*/
				
		$jobs_q = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
				//->where('jobs.status', 1)
                //->where('jobs.address',  '%High Town Road%')
                ->where(DB::raw("upper(jobs.address)"), 'like' ,'%'.$output.'%')
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('id', 'desc');
                //->get();
				
				/*foreach ($exp as $exp) {
				   $jobs_q->orwhere(DB::raw("upper(jobs.address)"),  'like', '%'.$exp.'%');
				}*/
				
				$jobs = $jobs_q->get();
			//die(print_r($jobs));	
				
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }

        $images = Image::all();

        //$surveyr = User::where("role_id", 3)->get();


        $jobs_id2 = implode(',', $jobs_id);
        return view('jobs.propertycheck', compact('jobs', 'status2', 'jobs_id2', "images","search_data"));
    }

	public function property_check_by_postal_code(Request $request)
    {
        $jobs_id = array();
        $status2 = "index";
		
		$r = $request;
		$sd = strtoupper($r->search_data_zip);
		//$query = str_replace(",", " ", $sd);
		//$output = preg_replace("/\s+/", " ", $query);
		//$exp = explode(" ",$output);
		
		$search_data_zip=$r->search_data_zip;
		
		//die($sd.'  '.$query.'  '.$query1.'  ');
		//die(print_r($exp));
		//die($query);explode(" ",$query)
		
        /*$jobs = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
				//->where('jobs.status', 1)
                //->where('jobs.address',  '%High Town Road%')
                ->whereIn(DB::raw("upper(jobs.address)"), 'like' ,'%'.$exp[0].'%')
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('id', 'desc')
				->groupBy('jobs.id')
                ->get();*/
				//die('hello'.$sd);
		$jobs_q = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
				//->where('jobs.status', 1)
                //->where('jobs.address',  '%High Town Road%')
                //->where(DB::raw("upper(jobs.postal_code)"), 'like' ,'%'.$output.'%')
				//->where(DB::raw("upper(jobs.postal_code)"), 'like' ," '".$sd."' ")
				->where(DB::raw("upper(jobs.postal_code)"), 'like', $sd)
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('id', 'desc');
                //->get();
				
		//die(print_r('hello'.$jobs_q));		
				/*foreach ($exp as $exp) {
				   $jobs_q->orwhere(DB::raw("upper(jobs.address)"),  'like', '%'.$exp.'%');
				}*/
				
				$jobs = $jobs_q->get();
			//die(print_r($jobs));	
				
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }

        $images = Image::all();

        //$surveyr = User::where("role_id", 3)->get();


        $jobs_id2 = implode(',', $jobs_id);
        return view('jobs.propertycheck', compact('jobs', 'status2', 'jobs_id2', "images","search_data_zip"));
    }
    //
    public function index()
    {
        $jobs_id = array();
        $status2 = "index";
        if (Auth::user()->role_id > 2) {
            $jobs = DB::table('jobs')
                ->where('status', 1)->where('user_id', Auth::id())->orderBy('id', 'desc')->get();
        } else {
            $jobs = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
                ->where('jobs.status', 1)
                ->join('users', 'users.id', 'jobs.user_id')
                ->orderBy('jobs.id', 'desc')
                ->get();
        }
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }

        $images = Image::all();

        $surveyr = User::where("role_id", 3)->get();
		
		$obligation_month_lov = DB::table('jobs')
                ->select(DB::raw('nvl(jobs.obligation_month,"empty") as obligation_month'))
                ->groupBy('jobs.obligation_month')
                ->orderBy('jobs.id', 'desc')
                ->get();

        $jobs_id2 = implode(',', $jobs_id);
        return view('jobs.list', compact('obligation_month_lov','jobs', "surveyr", 'status2', 'jobs_id2', "images"));
    }
    // This functon is for homepage jobs
    public function index2($id, $status)
    {
        if ($status == "booked") {
            $status = 2;
        } elseif ($status == "insulated") {
            $status = 3;
        } elseif ($status == "submitted") {
            $status = 4;
        } elseif ($status == "surveyed") {
            $status = 1;
        } elseif ($status == "canceled") {
            $status = 5;
        }
        $status2 = "index2";
        $jobs_id = array();
        if (Auth::user()->role_id > 2) {
            $jobs = DB::table('jobs')->where('job_status', $status)->where('id', $id)
                ->where('status', 1)->where('user_id', Auth::id())->orderBy('id', 'desc')->get();
        } else {
            $jobs = DB::table('jobs')
                ->join('users', 'users.id', 'jobs.user_id')
                ->select('jobs.*', 'users.name as sales_by')->where('jobs.job_status', '=', $status)->where('jobs.id', '=', $id)
				->orderBy('jobs.id', 'desc')
                ->get();
        }
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }
        $jobs_id2 = implode(',', $jobs_id);
        return view('jobs.list', compact('jobs', 'status2', 'jobs_id2'));
    }
    // This function is for getting job by dates
    public function index3(Request $request)
    {

        //dd($request->by_date,$request->dwpStatus, $request->survedBy, $request->start_date, $request->end_date);
        $r = $request;


        $jobs = $this->forFilterOb($r->start_date, $r->end_date, $r->survedBy, $r->dwpStatus, $r->by_date, $r->obligation_month_lov_by);




        $status2 = "index3";
        $jobs_id = array();
        ////////// filter again start
        /////filter again end////
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }
        $jobs_id2 = implode(',', $jobs_id);
        $jobs_List2 = $jobs_id2;


        //dd($jobs_List2);
		
		$obligation_month_lov = DB::table('jobs')
                ->select(DB::raw('nvl(jobs.obligation_month,"empty") as obligation_month'))
                ->groupBy('jobs.obligation_month')
                ->orderBy('jobs.id', 'desc')
                ->get();


        // else{
        //     return redirect()->route('jobs_list');
        // }
        // return dump($jobs);
        $start_date = $request->start_date;
        $end_date = $request->end_date;
        $surveyr = User::where("role_id", 3)->get();

        $oldSurved = $request->survedBy;
        $oldDwp = $request->dwpStatus;
        $oldStatus = $request->status;
        $oldBy_date = $request->by_date;
        $oldobligation_month_lov = $request->obligation_month_lov_by;
        return view('jobs.list', compact('obligation_month_lov',"oldBy_date", 'jobs', 'oldStatus', 'jobs_List2', 'oldSurved', "oldDwp", "surveyr", 'status2', 'jobs_id2', 'start_date', 'end_date', 'oldobligation_month_lov'));
    }

    public function jobsbytag($job)
    {
        if ($job == "booked") {
            $job = 2;
        } elseif ($job == "insulated") {
            $job = 3;
        } elseif ($job == "submitted") {
            $job = 4;
        } elseif ($job == "surveyed") {
            $job = 1;
        } elseif ($job == "canceled") {
            $job = 5;
        }
        $tag = $job;
        $jobs_id = array();
        $status2 = "jobsbytag";
        if (Auth::user()->role_id > 2) {
            $jobs = DB::table('jobs')
                ->where('status', 1)->where('job_status', $job)->where('user_id', Auth::id())->get();
        } else {
            $jobs = DB::table('jobs')
                ->select('jobs.*', 'users.name as sales_by')
                ->where('job_status', $job)
                ->where('jobs.status', 1)
                ->join('users', 'users.id', 'jobs.user_id')
                ->get();
        }
        foreach ($jobs as $job) {
            if ($job->job_status == 2) {
                $job->job_status = "booked";
            } elseif ($job->job_status == 3) {
                $job->job_status = "insulated";
            } elseif ($job->job_status == 4) {
                $job->job_status = "submitted";
            } elseif ($job->job_status == 1) {
                $job->job_status = "surveyed";
            } elseif ($job->job_status == 5) {
                $job->job_status = "canceled";
            }
            array_push($jobs_id, $job->id);
        }
        $surveyr = User::where("role_id", 3)->get();

        //dd($tag);
        $jobs_id2 = implode(',', $jobs_id);
        return view('jobs.list', compact('jobs', 'surveyr', 'status2', 'jobs_id2', 'tag'));
    }

    public function newjob()
    {
		
        return view('jobs.new');
    }
	function weekOfMonth($date) {
		//Get the first day of the month.
		$firstOfMonth = strtotime(date("Y-m-01", $date));
		//Apply above formula.
		return $this->weekOfYear($date) - $this->weekOfYear($firstOfMonth) + 1;
	}

	function weekOfYear($date) {
		$weekOfYear = intval(date("W", $date));
		if (date('n', $date) == "1" && $weekOfYear > 51) {
			// It's the last week of the previos year.
			$weekOfYear = 0;    
		}
		return $weekOfYear;
	}
	
	public function RemoveSpecialChar($str){
      
		// Using preg_replace() function 
		// to replace the word 
		$res = preg_replace('/[^a-zA-Z0-9]/s',' ',$str);
		  
		// Returning the result 
		return $res;
	}

    public function storejob(Request $request)
    {
		//die("testing");
		if ($request->postcode1 != null) {
			$request->postcode = $request->postcode1;
		}
		
		//die(Auth::user()->name);
		//Configure Dropbox Application
		//$app = new DropboxApp("xfkkpz47rx4vjuu", "s1kevq2hax2n1m8", "FxJ69N_11CQAAAAAAAAAAdkkP2vu-Ltj1f5u2bq9qUrJV2YVzVrcj8DzOUJP98eI");
		//$app = new DropboxApp("h4yzk3104gubwcy", "5lt4sgffa66jomj", "IwhDwk1W2IMAAAAAAAAAAec-JsV1X6cnoQSGtXlWGb9cvgzZ_dCcRAJZy7rCWD3T");
		//$app = new DropboxApp("gmpfqavjfcwxlpf", "pt4vqyt2mzwshyl", "wIMY_wVd-MgAAAAAAAAAAfDdLN_AteBXqWJPBLTOYb9ifHmo5WllzEYsZPFHuUGL");
		$app = new DropboxApp("gmpfqavjfcwxlpf", "pt4vqyt2mzwshyl", "9VTgbL2_5_QAAAAAAAAAAa1RFpuNOmn4Km38h_3hd_xuRhlHFOMy9d-TMPsSun8W");
		
		//die(" l");
		//Configure Dropbox service
		$dropbox = new Dropbox($app);
		
		

		//echo "The textual representation of current month with leading zero is: " . date("F");
		//echo "<br />";
		
		//echo $this->weekOfMonth(strtotime(date("Y-m-d"))) . " "; // 2			
			
		$name_sur = trim(Auth::user()->name);
		
		$AddPath = "/".$name_sur."/2021/".date("F")."/Week ".$this->weekOfMonth(strtotime(date("Y-m-d")))."/".date("d")."-".date("m")."/".$request->line_1." ".$request->line_2." ".$request->line_3;
		//$AddPath = "/".$request->line_1." ".$request->line_2." ".$request->line_3;
		//die($AddPath);
		//echo $AddPath;
		//die($AddPath);
		//$AddPath1 = strval($AddPath);
		$AddPath1 = trim(preg_replace('/\s+/', ' ', $AddPath));
		//die(strval($AddPath1));
		//if (Auth::user()->id == 3) {
			if ($request->postcode1 != null) {
				$manual_address = $request->address;
				$manual_address = $this->RemoveSpecialChar($manual_address);
				$AddPath = "/".$name_sur."/2021/".date("F")."/Week ".$this->weekOfMonth(strtotime(date("Y-m-d")))."/".date("d")."-".date("m")."/".$manual_address;
				$AddPath1 = trim(preg_replace('/\s+/', ' ', $AddPath));
				//$AddPath1 = RemoveSpecialChar($AddPath1);
				//die("AddPath1: ".$AddPath1."");
			}
		//}
		$folder = $dropbox->createFolder("".$AddPath1."");
		//die($AddPath);
		$AddPath = trim($AddPath1);

		//Name
		if (Auth::user()->id == 3) {
		$fileMetadata = $folder->getName();
		//die(" l ".$fileMetadata." ----------".$AddPath1);
		}
		//die('');

		$s=2;
		//$title_hmo = 'title'.$s;
		//die('j'.$request->$title_hmo);
        $stringLength = strlen($request->test1);

        $string1 = substr($request->test1, 0, $stringLength - 1);

        $stringArray = explode(",", $string1);

        array_unshift($stringArray, "0");


		if ($request->flatnumb != null) {
			$flatnumbStr = 'Flat '.$request->flatnumb.', ';
		}
		else{
			$flatnumbStr = '';
		}
        $table = new Jobs();
        $table->title = $request->title;
        $table->fore_name = $request->forename;
        $table->last_name = $request->lastname;
        $table->address = $flatnumbStr.$request->address;
        $table->postal_code = $request->postcode;
        $table->email = $request->email;
        $table->contact_no = $request->contact_no;
        $table->additional_no = $request->additional_no;
        if ($request->dob != null) {
            $date = date("Y-m-d", strtotime($request->dob));
            $table->date_of_birth = $date;
        } else {
            $date = null;
        }
        $table->is_rented = $request->is_rented;
		
        $table->is_communal_hatch = $request->is_communal_hatch;
        $table->is_loft_checked = $request->is_loft_checked;
        $table->is_hatch_making_job = $request->is_hatch_making_job;
		
        $table->landloard = $request->landloard;
        $table->contact_name = $request->contact_name;
        $table->phone_number = $request->phone_number;
        $table->email_address = $request->r_email;
        $table->notes = $request->notes;
        $table->heating_type = $request->heating_type;
        $table->property_type = $request->property_type;
        $table->service_type = $request->service_type;
        $table->funder = $request->funder_value;
        $table->dropbox_path = '/'.$AddPath;

        if ($request->property_type == "HMO") {
            $table->no_of_flats = $request->no_of_flats;

            if (count($stringArray) > 0) {
                $table->no_of_beds =   $stringArray[1] == "" ? "1" : $stringArray[1];
            } elseif (count($stringArray) == 0) {
                $table->no_of_beds = "1";
            } else {
                $table->no_of_beds = "1";
            }
        } else {
            $table->no_of_beds = $request->no_of_beds;
        }
        $table->external_walls = $request->external_walls;
        if ($request->booking_date != null) {
            $table->job_status = 2;
            $table->booking_date = $request->booking_date;
            $table->booking_time = $request->booking_time;

            $installer = User::where("role_id", "4")->first();

            $table->installer_id = $installer->id;
        }
        $table->survey_date = $request->survey_date;
        $table->final_notes = $request->final_notes;
        $table->user_id = Auth::id();
		
		//Address Details
		$building_name = $request->building_name;
		$building_number = $request->building_number ;
		$country = $request->country ;
		$county = $request->county ;
		$district = $request->district ;
		$formatted_address = $request->formatted_address ;
		$line_1 = $request->line_1 ;
		$line_2 = $request->line_2 ;
		$line_3 = $request->line_3 ;
		$line_4 = $request->line_4 ;
		$locality = $request->locality ;
		$sub_building_name = $request->sub_building_name ;
		$sub_building_number = $request->sub_building_number ;
		$thoroughfare = $request->thoroughfare ;
		$town_or_city = $request->town_or_city ;
		
		
		
		//var_dump($request);
		/*die($building_name.' - '.$building_number.' - '.$country.' - '.$county.' - '.$district.' - '.$formatted_address.' - '.$line_1.' - '
		.$line_2.' - '.$line_3.' - '.$line_4.' - '.$locality.' - '.$sub_building_name.' - '.$sub_building_number.' - '.$thoroughfare.' - '.$town_or_city);
		*/
        $images_arr = [];


        if ($table->save()) {
				if (isset($request->images)) {
					foreach ($request->images as $image) {
						$id = uniqid();
						$imgTable = new Image();

						$name = $id . $image->getClientOriginalName();
						$destinationPath = public_path('/images');

						// $img->save($destinationPath . "/" . $name);

						$image->move($destinationPath, $name);
						// $latestId = Jobs::latest()->first()->id;


						$imgTable->jobs_id = $table->id;
						$imgTable->image = "images" . "/" . $id . $image->getClientOriginalName();
						array_push($images_arr, $imgTable->image);
						$imgTable->save();
					}
				
				
				}
			
			$jobs_address_tbl = new jobs_address();
				
			$jobs_address_tbl->job_id = $table->id; ;
			$jobs_address_tbl->building_name = $building_name ;
			$jobs_address_tbl->building_number = $building_number ;
			$jobs_address_tbl->country = $country ;
			$jobs_address_tbl->county = $county ;
			$jobs_address_tbl->district = $district ;
			$jobs_address_tbl->formatted_address = $formatted_address ;
			$jobs_address_tbl->line_1 = $line_1 ;
			$jobs_address_tbl->line_2 = $line_2 ;
			$jobs_address_tbl->line_3 = $line_3 ;
			$jobs_address_tbl->line_4 = $line_4 ;
			$jobs_address_tbl->locality = $locality ;
			$jobs_address_tbl->sub_building_name = $sub_building_name ;
			$jobs_address_tbl->sub_building_number = $sub_building_number ;
			$jobs_address_tbl->thoroughfare = $thoroughfare ;
			$jobs_address_tbl->town_or_city = $town_or_city ;
			$jobs_address_tbl->save();


            for ($i = 2; $i <= $request->no_of_flats; $i++) {
                $tab = new Jobs();
				$title_hmo = 'title'.$i;
				$forename_hmo = 'forename'.$i;
				$lastname_hmo = 'lastname'.$i;
				$email_hmo = 'email'.$i;
				$contact_no_hmo = 'contact_no'.$i;
				$dob_hmo = 'dob'.$i;
				$flatnumb_hmo = 'flatnumb'.$i;
				
                $tab->title = $request->$title_hmo;
                //$tab->fore_name = $request->forename.$i;
                $tab->fore_name = $request->$forename_hmo;
                //$tab->last_name = $request->lastname.$i;
                $tab->last_name = $request->$lastname_hmo;
                $tab->address = 'Flat '.$request->$flatnumb_hmo.', '.$request->address;
                $tab->postal_code = $request->postcode;
                //$tab->email = $request->email;
                $tab->email = $request->$email_hmo;
                //$tab->contact_no = $request->contact_no;
                $tab->contact_no = $request->$contact_no_hmo;
                $tab->additional_no = $request->additional_no;
				
                if ($request->$dob_hmo != null) {
                    $date = date("Y-m-d", strtotime($request->$dob_hmo));
                    $tab->date_of_birth = $date;
                } else {
                    $date = null;
                }
                $tab->is_rented = $request->is_rented;
                $tab->landloard = $request->landloard;
                $tab->contact_name = $request->contact_name;
                $tab->phone_number = $request->phone_number;
                $tab->email_address = $request->r_email;
                $tab->notes = $request->notes;
                $tab->heating_type = $request->heating_type;
                $tab->property_type = $request->property_type;


                $tab->no_of_beds = $stringArray[$i] == "" ? "1" : $stringArray[$i];
                $tab->external_walls = $request->external_walls;
                if ($request->booking_date != null) {
                    $tab->job_status = 2;
                    $tab->booking_date = $request->booking_date;
                    $tab->booking_time = $request->booking_time;
                }
                $tab->survey_date = $request->survey_date;
                $tab->final_notes = $request->final_notes;
                $tab->user_id = Auth::id();
                $tab->hmo_id = $table->id;
                $tab->save();

                if (isset($request->images)) {
                    // foreach ($request->images as $image) {
                    //     $idd = uniqid();
                    //     $imgTable = new Image();
                    //     ///saving in to public directory////
                    //     // $image->storePubliclyAs("images",  $idd . $image->getClientOriginalName(), "publics");

                    //     // $name=$idd . $image->getClientOriginalName();
                    //     // $destinationPath = public_path('/images');
                    //     // $image->move($destinationPath, $name);
                    //     // $latestId = Jobs::latest()->first()->id;
                    //     // $latestId += 1;

                    //     $imgTable->jobs_id = $tab->id;
                    //     $imgTable->image = "images" . "/" .  $idd . $image->getClientOriginalName();

                    //     $imgTable->save();
                    // }
                    foreach ($images_arr as $imgg) {
                        $imgTable = new Image();

                        $imgTable->jobs_id = $tab->id;
                        $imgTable->image = $imgg;

                        $imgTable->save();
                    }
                }
            }



            return redirect('jobs_list')->with('success', "Job Added Successfully");
        } else {


            return redirect('new_job')->with([
                "fore" => $request->forename, "last" => $request->lastname,
                "address" => $request->address, "postcode" => $request->postcode, "email" => $request->email, "contact_no" => $request->contact_no, "add_no" => $request->additional_no, "DOB" => $request->dob,
                "is_rented" => $request->is_rented, "landloard" => $request->landloard,
                "contact_name" => $request->contact_name,
                "phone_number" => $request->phone_number,
                "email_address" => $request->r_email,
                "notes" => $request->notes, "heating_type" => $request->heating_type,
                "property_type" => $request->property_type,
                "service_type" => $request->service_type,
                "no_of_beds" => $request->no_of_beds, "external_walls" => $request->external_walls



            ]);
        }
    }

    public function updateview($id)
    {
        $jobs = Jobs::find((int) $id);
        if ($jobs->job_status == 2) {
            $jobs->job_status = "booked";
        } elseif ($jobs->job_status == 3) {
            $jobs->job_status = "insulated";
        } elseif ($jobs->job_status == 4) {
            $jobs->job_status = "submitted";
        } elseif ($jobs->job_status == 1) {
            $jobs->job_status = "surveyed";
        } elseif ($jobs->job_status == 5) {
            $jobs->job_status = "canceled";
        }
        $installers = User::where('role_id', 4)->get();


        $dwpStatus = DwpRoll::all();

        foreach ($dwpStatus as $preDwp) {
            if ($jobs->dwp_rolls_id == $preDwp->id) {
                return view('jobs.update', compact('jobs', 'preDwp', 'dwpStatus', 'installers'));
            }
        }

        return view('jobs.update', compact('jobs', 'dwpStatus', 'installers'));


        // return dump($jobs);
        // $selected_id=(Int)$id;
        // $jobs=DB::table('jobs')->where('status',1)->where('user_id',Auth::id())->get();
    }
    public function updatejob(Request $request)
    {
		//dd($request);
        if ($request->dob != null) {
            $date = date("Y-m-d", strtotime($request->dob));
        } else {
            $date = null;
        }
        $prev = Jobs::find((int) $request->id);
        $count = 0;
        $table = Jobs::findOrFail((int) $request->id);
        $table->title = $request->title;
        $table->refference_number = $request->ref_number;
        $table->fore_name = $request->forename;
        $table->last_name = $request->lastname;
        $table->address = $request->address;
        $table->postal_code = $request->postcode;
        $table->email = $request->email;
        $table->contact_no = $request->contact_no;
        $table->additional_no = $request->additional_no;
        $table->date_of_birth = $date;
        $table->funder = $request->funder_value;
        $table->is_rented = $request->is_rented;
		
		
        $table->is_communal_hatch = $request->is_communal_hatch;
        $table->is_loft_checked = $request->is_loft_checked;
        $table->is_hatch_making_job = $request->is_hatch_making_job;
		
        if ($request->is_rented == "yes") {
            $table->landloard = $request->landloard;
            $table->contact_name = $request->contact_name;
            $table->phone_number = $request->phone_number;
            $table->email_address = $request->r_email;
            $table->notes = $request->notes;
        }

        $table->heating_type = $request->heating_type;
        $table->no_of_beds = $request->no_of_beds;
        if ($request->property_type != null) {
            $table->property_type = $request->property_type;
        }
        $table->service_type = $request->service_type;
        if ($request->installer_id != null) {
            $table->installer_id = $request->installer_id;
        }

        $table->dwp_rolls_id = $request->dwp;
        $table->external_walls = $request->external_walls;
        $table->survey_date = $request->survey_date;
        if ($request->booking_time != null && $request->booking_date != null) {
            $table->booking_time = $request->booking_time;
            $table->booking_date = $request->booking_date;

            $this->statusBookingUpdate($request->id);

            if ($prev->job_status == 1) {
                $table->job_status = 2;
                $count = 1;
            }
        }
        $table->final_notes = $request->final_notes;
        // $table->user_id=Auth::id();
		
		//----------------======================Add Image=======--------------
		


       
           
			
			
			
			
		
		
		//----------------======================Add Image=======--------------
		
		
		
        if ($table->save()) {
            if ($count > 0) {
                $hmo_jobs = Jobs::where('hmo_id', $request->id)->get();

                if (count($hmo_jobs) == 0) {
                    $table = Jobs::find($table->hmo_id);
                    $table->booking_time = $request->booking_time;
                    $table->booking_date = $request->booking_date;
                    $table->job_status = 2;
                    $table->save();
                    $hmo_jobs = Jobs::where('hmo_id', $table->id)->get();
                }
                foreach ($hmo_jobs as $job) {
                    $table = Jobs::findorfail($job->id);
                    $table->booking_time = $request->booking_time;
                    $table->booking_date = $request->booking_date;
                    $table->job_status = 2;
                    $table->save();
                }
            }
			$images_arr = [];
			//$images_array = [];
			//$images_array = $request->file('upload_file')
			//return dump($request);
			if ($request->images != null) {
			 if (isset($request->images)) {
                foreach ($request->images as $image) {
                    $id = uniqid();
                    $imgTable = new Image();
                    //$imgTable = $request->file('image');
                    //$image = $request->file('image');
					
					//die('hello'.print_r($request->images));
                    $name = $id . $image->getClientOriginalName();
                    $destinationPath = public_path('/images');

                    // $img->save($destinationPath . "/" . $name);

                    $image->move($destinationPath, $name);
                    // $latestId = Jobs::latest()->first()->id;


                    $imgTable->jobs_id = $table->id;
                    $imgTable->image = "images" . "/" . $id . $image->getClientOriginalName();
                    array_push($images_arr, $imgTable->image);
                    $imgTable->save();
                }
            }
			if (isset($request->images)) {
				foreach ($images_arr as $imgg) {
					$imgTable = new Image();

					$imgTable->jobs_id = $table->id;
					$imgTable->image = $imgg;

					$imgTable->save();
				}
			}
			}
		
            return redirect()->route('jobs_list');
        } else {
            return redirect()->back()->with("errors", "something went wrong while submiting form");
        }
    }

    // public function deleteview()
    // {
    //     $jobs=DB::table('jobs')->where('status',1)->where('user_id',Auth::id())->get();
    //     return view('jobs.delete',compact('jobs'));
    // }
    public function deletejob(Request $request, $id)
    {
        // $table=Jobs::findOrFail((Int)$request->id);
        $table = Jobs::findOrFail((int) $id);
        // $table->job_status=4;
        $table->status = 0;
        $table->save();
        return redirect()->route('jobs_list');
    }

    public function getdatecalender($date)
    {
        // return dump($date);
        // $attr = date("Y-m-d H:i:s", $date);
        $date2 = date('Y-m-d', strtotime($date));
        $time = date('H:i:s', strtotime($date));




        $jobLatestId = Jobs::latest()->first()->id;

        if ($jobLatestId == null) {
            $jobLatestId += 1;

            return view('jobs.new');
        } else {
            $jobLatestId += 1;

            return view('jobs.new', compact("jobLatestId"));
        }
    }

    public function updatestatusview()
    {
        $jobs = DB::table('jobs')->where('status', 1)->where('user_id', Auth::id())->get();
        return view('jobs.update_status', compact('jobs'));
    }

    public function updatemultijobstatus(Request $request)
    {
        $jobs = explode(',', $request->job_ids[0]);
        foreach ($jobs as $job_id) {
            $this->updatejobstatusmulti($job_id, $request->job_status, $request->date1, $request->time1);
        }

        Session::put('Job', "Multiple");
        Session::put('status', $request->job_status);
        return redirect()->back();
    }

    public function updatejobstatusmulti($id, $job_status, $date, $time)
    {
        $table = Jobs::findOrFail((int) $id);
        if ($job_status == "booked") {
            $table->booking_date = $date;
            $table->booking_time = $time;
            $table->job_status = 2;
        } elseif ($job_status == "insulated") {
            $table->insulation_date = $date;
            $table->insulated_time = $time;
            $table->job_status = 3;
        } elseif ($job_status == "submitted") {
            $table->submit_date = $date;
            $table->job_status = 4;
        } elseif ($job_status == "canceled") {
            $table->cancel_date = $date;
            $table->job_status = 5;
        }
        $table->delay_mail = 0;
        $table->save();

        $hmo_jobs = Jobs::where('hmo_id', $id)->get();

        if (count($hmo_jobs) == 0) {
            $job = Jobs::find($id);
            if ($job->hmo_id > 0) {
                $table = Jobs::findorfail($job->hmo_id);
                if ($job_status == "booked") {
                    $table->booking_date = $date;
                    $table->booking_time = $time;
                    $table->job_status = 2;
                } elseif ($job_status == "insulated") {
                    $table->insulation_date = $date;
                    $table->insulated_time = $time;
                    $table->job_status = 3;
                } elseif ($job_status == "submitted") {
                    $table->submit_date = $date;
                    $table->job_status = 4;
                } elseif ($job_status == "canceled") {
                    $table->cancel_date = $date;
                    $table->job_status = 5;
                }
                $table->delay_mail = 0;
                $table->save();

                $hmo_jobs = Jobs::where('hmo_id', $job->hmo_id)->get();
            }
        }
        foreach ($hmo_jobs as $job) {
            $table = Jobs::findorfail($job->id);
            if ($job_status == "booked") {
                $table->booking_date = $date;
                $table->booking_time = $time;
                $table->job_status = 2;
            } elseif ($job_status == "insulated") {
                $table->insulation_date = $date;
                $table->insulated_time = $time;
                $table->job_status = 3;
            } elseif ($job_status == "submitted") {
                $table->submit_date = $date;
                $table->job_status = 4;
            } elseif ($job_status == "canceled") {
                $table->cancel_date = $date;
                $table->job_status = 5;
            }
            $table->delay_mail = 0;
            $table->save();
        }
    }

    public function updatejobstatus(Request $request)
    {
        $table = Jobs::findOrFail((int) $request->id);
        if ($request->job_status == "booked") {
            $table->booking_date = $request->date;
            $table->booking_time = $request->time;
            $this->statusBookingUpdate($request->id);
            $table->job_status = 2;
        } elseif ($request->job_status == "insulated") {
            $table->insulation_date = $request->date;
            $table->insulated_time = $request->time;
            $table->job_status = 3;
        } elseif ($request->job_status == "submitted") {
            $table->submit_date = $request->date;
			$table->submitted_type = $request->submitted_type;
			$table->obligation_month = $request->obligation_month;
            $table->job_status = 4;
        } elseif ($request->job_status == "canceled") {
            $table->cancel_date = $request->date;
            $table->job_status = 5;
        }
        $table->delay_mail = 0;
        $table->save();

        $hmo_jobs = Jobs::where('hmo_id', $request->id)->get();

        if ((int) $request->is_hmo_status != 1) {
            if (count($hmo_jobs) == 0) {
                $job = Jobs::find($request->id);
                if ($job->hmo_id > 0) {
                    $table = Jobs::findorfail($job->hmo_id);
                    if ($request->job_status == "booked") {
                        $table->booking_date = $request->date;
                        $table->booking_time = $request->time;
                        $table->job_status = 2;
                    } elseif ($request->job_status == "insulated") {
                        $table->insulation_date = $request->date;
                        $table->insulated_time = $request->time;
                        $table->job_status = 3;
                    } elseif ($request->job_status == "submitted") {
                        $table->submit_date = $request->date;
                        $table->submitted_type = $request->submitted_type;
                        $table->obligation_month = $request->obligation_month;
                        $table->job_status = 4;
                    } elseif ($request->job_status == "canceled") {
                        $table->cancel_date = $request->date;
                        $table->job_status = 5;
                    }
                    $table->delay_mail = 0;
                    $table->save();

                    $hmo_jobs = Jobs::where('hmo_id', $job->hmo_id)->get();
                }
            }
            foreach ($hmo_jobs as $job) {
                $table = Jobs::findorfail($job->id);
                if ($request->job_status == "booked") {
                    $table->booking_date = $request->date;
                    $table->booking_time = $request->time;
                    $table->job_status = 2;
                } elseif ($request->job_status == "insulated") {
                    $table->insulation_date = $request->date;
                    $table->insulated_time = $request->time;
                    $table->job_status = 3;
                } elseif ($request->job_status == "submitted") {
                    $table->submit_date = $request->date;
					$table->submitted_type = $request->submitted_type;
					$table->obligation_month = $request->obligation_month;
                    $table->job_status = 4;
                } elseif ($request->job_status == "canceled") {
                    $table->cancel_date = $request->date;
                    $table->job_status = 5;
                }
                $table->delay_mail = 0;
                $table->save();
            }
        }
        //Getting Owner And Admins
        // $admins=User::whereIn('role_id',[1,2])->get();

        Session::put('Job', $table->title);
        Session::put('status', $table->job_status);

        //Mail to admins and owner
        // foreach($admins as $admin)
        // {
        // $this->basic_email($admin->name,$admin->email);
        // }
        //Mail to customer
        // $this->basic_email($table->name,$table->email);
        //Mail to user
        // $this->basic_email(Auth::user()->name,Auth::user()->email);
        // return dump($table);
        return redirect()->back();
    }
    public function getdate($date)
    {
        $data = DB::table('jobs')->where('booking_date', $date)->get();
        $array = json_decode(json_encode($data), true);
        return $array;
    }



    public function getImages($id)
    {
        $dataa = Image::where("jobs_id", $id)->first();
        $path = [];
        if (!$dataa == null) {
            $data = Image::where("jobs_id", $id)->get();
            // $output = "";
            foreach ($data as $item) {
                array_push($path, $item->image);

                //     $output .= "

                //   <div>  <img   src='$item->image'> </div>



                // ";
            }

            return $path;
        } else {
            return "null";
        }
    }


    public function statusBookingUpdate($jobID)
    {
        $Installer = User::where("role_id", "4")->first();

        $jobsPerson = new Jobs();

        $jb = $jobsPerson->where("id", $jobID)->first();


        $jb->installer_id = $Installer->id;

        return $jb->save();



        /* foreach ($Installer as $installer) {

            if ($installer->id == $installerId) {

                dd($installer);
            }
        } */
    }


    public function exportList(Request $req)
    {

        return Excel::download(new ListExport($req->list12), 'Report_for_DWP_'.date('m-d-Y_hia').'.xlsx');
    }



    ////previous and current week///
    public function preCurrWeek($month)
    {

        //0 previous month
        //1 current month





        if ($month == 0) {
            $month = carbon::now()->subMonth()->startOfMonth();
            $monthEnd = carbon::now()->subMonth()->endOfMonth();
        } else {
            $month = carbon::now()->startOfMonth();
            $monthEnd = carbon::now()->endOfMonth();
        }


        $surveyed = 0;
        $booked = 0;
        $insulated = 0;
        $submitted = 0;
        $canceled = 0;



        if (Auth::user()->role_id < 3) {
            $surveydJobs = Jobs::where('status', 1)
               // ->where('job_status', 1)
                ->whereBetween('survey_date', [$month, $monthEnd])
                ->get()->toArray();
            $bookedJobs = Jobs::where("status", 1)
              //  ->where("job_status", 2)
                ->whereBetween("booking_date", [$month, $monthEnd])
                ->get()->toArray();
            $insulatedJobs = Jobs::where("status", 1)
              //  ->where("job_status", 3)
                ->whereBetween("insulation_date", [$month, $monthEnd])
                ->get()->toArray();

            $submittedJobs = Jobs::where("status", 1)
               // ->where("job_status", 4)
                ->whereBetween("submit_date", [$month, $monthEnd])
                ->get()->toArray();

            $canceledJobs = Jobs::where("status", 1)
               // ->where("job_status", 5)
                ->whereBetween("cancel_date", [$month, $monthEnd])
                ->get()->toArray();

            //$jobs = array_merge($surveydJobs, $bookedJobs, $insulatedJobs, $submittedJobs, $canceledJobs);

            $submitted = count($submittedJobs);
            $surveyed = count($surveydJobs);
            $canceled = count($canceledJobs);
            $booked = count($bookedJobs);
            $insulated = count($insulatedJobs);


            //dd($jobs);
        } else {
            $surveydJobs = Jobs::where('status', 1)
                ->where('job_status', 1)
                ->whereBetween('survey_date', [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();
            $bookedJobs = Jobs::where("status", 1)
                ->where("job_status", 2)
                ->whereBetween("booking_date", [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();
            $insulatedJobs = Jobs::where("status", 1)
                ->where("job_status", 3)
                ->whereBetween("insulation_date", [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();

            $submittedJobs = Jobs::where("status", 1)
                ->where("job_status", 4)
                ->whereBetween("submit_date", [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();

            $canceledJobs = Jobs::where("status", 1)
                ->where("job_status", 5)
                ->whereBetween("cancel_date", [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();

            $submitted = count($submittedJobs);
            $surveyed = count($surveydJobs);
            $canceled = count($canceledJobs);
            $booked = count($bookedJobs);
            $insulated = count($insulatedJobs);
        }


        return [
            $surveyed,
            $booked,
            $insulated,
            $submitted,
            $canceled
        ];
    }

	////previous and current week total total///
    public function preCurrWeektot($month)
    {

        //0 previous month
        //1 current month





        if ($month == 0) {
            $month = carbon::now()->subMonth()->startOfMonth();
            $monthEnd = carbon::now()->subMonth()->endOfMonth();
        } else {
            $month = carbon::now()->startOfMonth();
            $monthEnd = carbon::now()->endOfMonth();
        }


        $surveyed = 0;
        $booked = 0;
        $insulated = 0;
        $submitted = 0;
        $canceled = 0;
		$tot = 0;


        if (Auth::user()->role_id < 3) {
            $surveydJobs = Jobs::where('status', 1)
                ->where('job_status', 1)
                ->whereBetween('survey_date', [$month, $monthEnd])
                ->get()->toArray();
            $bookedJobs = Jobs::where("status", 1)
                ->where("job_status", 2)
                ->whereBetween("booking_date", [$month, $monthEnd])
                ->get()->toArray();
            $insulatedJobs = Jobs::where("status", 1)
                ->where("job_status", 3)
                ->whereBetween("insulation_date", [$month, $monthEnd])
                ->get()->toArray();

            $submittedJobs = Jobs::where("status", 1)
                ->where("job_status", 4)
                ->whereBetween("submit_date", [$month, $monthEnd])
                ->get()->toArray();

            $canceledJobs = Jobs::where("status", 1)
                ->where("job_status", 5)
                ->whereBetween("cancel_date", [$month, $monthEnd])
                ->get()->toArray();

            //$jobs = array_merge($surveydJobs, $bookedJobs, $insulatedJobs, $submittedJobs, $canceledJobs);

            $submitted = count($submittedJobs);
            $surveyed = count($surveydJobs);
            $canceled = count($canceledJobs);
            $booked = count($bookedJobs);
            $insulated = count($insulatedJobs);
			
			$tot = $submitted+$surveyed+$canceled+$booked+$insulated;
			$tot = "Total: ".$tot;
			
			//$submitted = $submitted." \<p style='font-size: 12px;'>/ ".$tot_jobs."'</p>'";
			//$surveyed = $surveyed." / ".$tot_jobs;
			//$canceled = $canceled." / ".$tot_jobs;
			//$booked = $booked." / ".$tot_jobs;
			//$insulated = $insulated." / ".$tot_jobs;

            //dd($jobs);
        } else {
            $surveydJobs = Jobs::where('status', 1)
                ->where('job_status', 1)
                ->whereBetween('survey_date', [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();
            $bookedJobs = Jobs::where("status", 1)
                ->where("job_status", 2)
                ->whereBetween("booking_date", [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();
            $insulatedJobs = Jobs::where("status", 1)
                ->where("job_status", 3)
                ->whereBetween("insulation_date", [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();

            $submittedJobs = Jobs::where("status", 1)
                ->where("job_status", 4)
                ->whereBetween("submit_date", [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();

            $canceledJobs = Jobs::where("status", 1)
                ->where("job_status", 5)
                ->whereBetween("cancel_date", [$month, $monthEnd])->where("user_id", Auth::id())
                ->get()->toArray();

            $submitted = count($submittedJobs);
            $surveyed = count($surveydJobs);
            $canceled = count($canceledJobs);
            $booked = count($bookedJobs);
            $insulated = count($insulatedJobs);
			$tot = $submitted+$surveyed+$canceled+$booked+$insulated;
			$tot = "Total: ".$tot;
        }


        return [
            $tot,
            $tot,
            $tot,
            $tot,
            $tot
        ];
    }

    public function downloadImage($id)
    {
        $jobsImages = Jobs::find($id)->select("jobs.id", "jobs.address", "images.image")
            ->join("images", "jobs.id", "images.jobs_id")
            ->where('images.jobs_id', $id)
            ->get();


        $public_dir = public_path();
        $headers = array(
            'Content-Type' => 'application/octet-stream',
        );
        $zipName = $jobsImages[0]->address . ".zip";

        $zip = new ZipArchive();

        if ($zip->open($public_dir . "/" . $zipName, ZipArchive::CREATE) == true) {
            foreach ($jobsImages as $job) {
                $zip->addFile(public_path() . "/" . $job->image, "$job->image");
            }
            $zip->close();
        }

        $fileToDownload = $public_dir . "/" . $zipName;


        if (file_exists($fileToDownload)) {



            return response()->download($fileToDownload, $zipName, $headers);
        }
    }

    public function addnewflat($id)
    {
        $job = Jobs::find($id);
        $hmo_id = $id;
        if ($job->hmo_id != null && $job->hmo_id != 0) {
            $hmo_id = $job->hmo_id;
        }

        $table = new Jobs();
        $table->title = $job->title;
        $table->fore_name = $job->fore_name;
        $table->last_name = $job->last_name;
        $table->address = $job->address;
        $table->postal_code = $job->postal_code;
        $table->email = $job->email;
        $table->contact_no = $job->contact_no;
        $table->additional_no = $job->additional_no;
        $table->date_of_birth = $job->date_of_birth;
        $table->is_rented = $job->is_rented;
        $table->landloard = $job->landloard;
        $table->contact_name = $job->contact_name;
        $table->phone_number = $job->phone_number;
        $table->email_address = $job->email_address;
        $table->notes = $job->notes;
        $table->heating_type = $job->heating_type;
        $table->no_of_beds = $job->no_of_beds;
        $table->hmo_id = $hmo_id;
        $table->property_type = $job->property_type;
        $table->external_walls = $job->external_walls;
        $table->service_type = $job->service_type;
        $table->installer_id = $job->installer_id;
        $table->dwp_rolls_id = $job->dwp_rolls_id;
        $table->survey_date = $job->survey_date;
        $table->booking_time = $job->booking_time;
        $table->booking_date = $job->booking_date;
        $table->final_notes = $job->final_notes;
        $table->user_id = $job->user_id;
        $table->status = $job->status;
        $table->job_status = $job->status;
        $table->save();

        $old_job = Jobs::findorfail($hmo_id);
        $old_job->no_of_flats += 1;
        $old_job->save();

        $images = Image::where('jobs_id', $hmo_id)->get();
        foreach ($images as $image) {
            $store = new Image();
            $store->jobs_id = $table->id;
            $store->image = $image->image;
            $store->save();
        }

        return $this->updateview($table->id);
    }

    public function installerNote($id, $note)
    {
        $newNote = jobs::findOrFail($id);
        $newNote->installer_note = $note;
        $newNote->save();
        return back();
    }
	
    public function btNote($id, $note)
    {
        $newNote = jobs::findOrFail($id);
        $newNote->booking_team_notes = $note;
        $newNote->save();
        return back();
    }


	
    public function forFilterOb($sDate, $eDate, $surveyedBy, $dwpStatus, $searchBJobS, $searchobligationMonth)
    {
        if ($searchBJobS == 1) {
            $date_by = "survey_date";
        } else if ($searchBJobS == 2) {
            $date_by = "booking_date";
        } else if ($searchBJobS == 3) {
            $date_by = "insulation_date";
        } else if ($searchBJobS == 4) {
            $date_by = "submit_date";
        } else if ($searchBJobS == 5) {
            $date_by = "cancel_date";
        } else if ($searchBJobS == 6) {
            $date_by = "created_at";
        }

        ////for users surveyar and installer start//
        if (Auth::user()->role_id > 2) {

            $query = Jobs::where("status", 1)
                ->where("user_id", Auth::id());
            if ($sDate != null && $eDate != null) {
				$sDate1 = $sDate.' 00:00:00' ;
				$eDate1 = $eDate.' 23:59:59';

                $query->whereBetween($date_by, [$sDate, $eDate]);
            }
			$query->orderBy('id', 'DESC');
            $q = $query->get();
        }
        ////for users surveyar and installer end//
        /////////for admins//////////////////////
        if (Auth::user()->role_id < 3) {
            $query = DB::table("jobs")
                ->select(DB::raw("jobs.*"), "users.name as sales_by")
                ->join("users", "users.id", "jobs.user_id")
                ->where("jobs.status", 1);
            if ($surveyedBy != null) {
                $query->where("users.id", $surveyedBy);
            }
            if ($dwpStatus != null) {
                $query->where("jobs.dwp_rolls_id", $dwpStatus);
            }
			if($searchobligationMonth!= null){
				$query->where("jobs.obligation_month", $searchobligationMonth);
			}
            if ($sDate != null && $eDate != null) {
				//die(date->format('Y-m-d H:i:s'));
				$sDate1 = $sDate.' 00:00:00' ;
				$eDate1 = $eDate.' 23:59:59';
                $query->whereBetween("jobs." . $date_by, [$sDate1, $eDate1]);
                //$query->where("jobs." . $date_by, '<=' ,$eDate);
                //$query->where("jobs." . $date_by, '>=' ,$sDate);
            }
			$query->orderBy('id', 'DESC');
			//dd($query);
            $q = $query->get();
        }

        return $q;
    }

    public function forFilter($sDate, $eDate, $surveyedBy, $dwpStatus, $searchBJobS)
    {
        if ($searchBJobS == 1) {
            $date_by = "survey_date";
        } else if ($searchBJobS == 2) {
            $date_by = "booking_date";
        } else if ($searchBJobS == 3) {
            $date_by = "insulation_date";
        } else if ($searchBJobS == 4) {
            $date_by = "submit_date";
        } else if ($searchBJobS == 5) {
            $date_by = "cancel_date";
        } else if ($searchBJobS == 6) {
            $date_by = "created_at";
        }

        ////for users surveyar and installer start//
        if (Auth::user()->role_id > 2) {

            $query = Jobs::where("status", 1)
                ->where("user_id", Auth::id());
            if ($sDate != null && $eDate != null) {
				$sDate1 = $sDate.' 00:00:00' ;
				$eDate1 = $eDate.' 23:59:59';

                $query->whereBetween($date_by, [$sDate, $eDate]);
            }
			$query->orderBy('id', 'DESC');
            $q = $query->get();
        }
        ////for users surveyar and installer end//
        /////////for admins//////////////////////
        if (Auth::user()->role_id < 3) {
            $query = DB::table("jobs")
                ->select(DB::raw("jobs.*"), "users.name as sales_by")
                ->join("users", "users.id", "jobs.user_id")
                ->where("jobs.status", 1);
            if ($surveyedBy != null) {
                $query->where("users.id", $surveyedBy);
            }
            if ($dwpStatus != null) {
                $query->where("jobs.dwp_rolls_id", $dwpStatus);
            }
            if ($sDate != null && $eDate != null) {
				//die(date->format('Y-m-d H:i:s'));
				$sDate1 = $sDate.' 00:00:00' ;
				$eDate1 = $eDate.' 23:59:59';
                $query->whereBetween("jobs." . $date_by, [$sDate1, $eDate1]);
                //$query->where("jobs." . $date_by, '<=' ,$eDate);
                //$query->where("jobs." . $date_by, '>=' ,$sDate);
            }
			$query->orderBy('id', 'DESC');
			//dd($query);
            $q = $query->get();
        }

        return $q;
    }
    //<!--Start Code by Qaisar-->
    public function multidel(Request $request){

        $ids=$request->input('ids');
       
        Jobs::whereIn('id', $ids)->delete();
        
        return response()->json(['status'=>true,'message'=>"Category deleted successfully."]);
        
    }
    //<!-- Code by Qaisar-->
}
