<?php

namespace App\Http\Controllers\Backend2;

use App\Components\Functions;
use App\Http\Controllers\Backend\AdminController;
use App\Models\Lead;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class LeadController extends AdminController {
	//
	public function index() {
		return view( 'admin2.lead.index' );
	}

	public function detail( Request $request ) {
		$id         = $request->input( 'id' );
		$user       = auth( 'backend' )->user();
		$numberView = $user->number_view_leads;
		if ( empty( $numberView ) ) {
			return response( [
				'status'  => 0,
				'message' => 'Bạn đã hết số lượt xem thông tin khách hàng'
			] );
		}
		$item = Lead::find( $id );

		$cnt = \DB::table( 'lead_users' )
		          ->where( 'user_id', $user->id )
		          ->where( 'lead_id', $item->id )
		          ->count();

		if ( $cnt == 0 ) {
			$user->decrement( 'number_view_leads', 1 );
		}

		if ( $cnt == 0 ) {
			\DB::table( 'lead_users' )
			   ->insert( [
				   'user_id' => $user->id,
				   'lead_id' => $item->id,
			   ] );
		}

		return response( [
			'status' => 1,
			'data'   => view( 'admin2.lead.detail', compact( 'item' ) )->render(),
			'remain' => $user->number_view_leads
		] );
	}

	public function getLeadsByAttribute( Request $request ) {
		$provinceId = $request->input( 'province_id' );
		$districtId = $request->input( 'district_id' );
		$wardId     = $request->input( 'ward_id' );
		$leads      = Lead::query()->with( [
			'users' => function ( $query ) {
				$query->where( 'user_id', auth( 'backend' )->user()->id );
			}
		] )->with( 'province' )->with( 'district' )->with( 'ward' );

		if ( ! empty( $provinceId ) ) {
			$leads = $leads->where( 'province_id', $provinceId );
		}

		if ( ! empty( $districtId ) ) {
			$leads = $leads->where( 'district_id', $districtId );
		}

		if ( ! empty( $wardId ) ) {
			$leads = $leads->where( 'ward_id', $wardId );
		}

		return datatables()->of( $leads )
		                   ->editColumn( 'name', function ( $lead ) {

			                   if ( $lead->users->count() ) {
				                   return $lead->name;
			                   }

			                   return Functions::censorText( $lead->name );
		                   } )
		                   ->editColumn( 'phone', function ( $lead ) {
			                   if ( $lead->users->count() ) {
				                   return $lead->phone;
			                   }

			                   return Functions::censorText( $lead->phone );
		                   } )
		                   ->editColumn( 'address', function ( $lead ) {
			                   if ( $lead->users->count() ) {
				                   return $lead->address;
			                   }

			                   return Functions::censorText( $lead->address );
		                   } )
		                   ->editColumn( 'email', function ( $lead ) {
			                   if ( $lead->users->count() ) {
				                   return $lead->email;
			                   }

			                   return Functions::censorText( $lead->email );
		                   } )
		                   ->editColumn( 'province_id', function ( $lead ) {
			                   if ( $lead->province ) {
				                   return $lead->province->name;
			                   }

		                   } )
		                   ->filterColumn( 'province_id', function ( $query, $keyword ) {
			                   $query->whereHas( 'province', function ( $q ) use ( $keyword ) {
				                   $q->where( 'name', 'LIKE', '%' . $keyword . '%' );
			                   } );

		                   } )
		                   ->editColumn( 'district_id', function ( $lead ) {
			                   if ( $lead->district ) {
				                   return $lead->district->name;
			                   }
		                   } )
		                   ->filterColumn( 'district_id', function ( $query, $keyword ) {
			                   $query->whereHas( 'district', function ( $q ) use ( $keyword ) {
				                   $q->where( 'name', 'LIKE', '%' . $keyword . '%' );
			                   } );

		                   } )
		                   ->editColumn( 'ward_id', function ( $lead ) {
			                   if ( $lead->ward ) {
				                   return $lead->ward->name;
			                   }
		                   } )
		                   ->filterColumn( 'ward_id', function ( $query, $keyword ) {
			                   $query->whereHas( 'ward', function ( $q ) use ( $keyword ) {
				                   $q->where( 'name', 'LIKE', '%' . $keyword . '%' );
			                   } );

		                   } )
		                   ->addColumn( 'action', function ( $item ) {
			                   return
				                   '<a data-id="' . $item->id . '" class="btn btn-outline green btn-detail" >Xem</a>';
		                   } )
		                   ->rawColumns( [
			                   'action'
		                   ] )
		                   ->make( true );
	}
}
