<?php

namespace App\Http\Controllers\Admin;

use Carbon\Carbon;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Followup;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
use App\Models\UserTimeline;
class FollowupController extends Controller
{
    // /**
    //  * Display a listing of the resource.
    //  *
    //  * @return \Illuminate\Http\Response
    //  */
    // public function index()
    // {
    //     abort_if(!userCan('followup.view'), 403);
    //     return view('admin.followup.index');
     
    // }

    // /**
    //  * Show the form for creating a new resource.
    //  *
    //  * @return \Illuminate\Http\Response
    //  */
    // public function create()
    // {
    //     //
    // }

    // /**
    //  * Store a newly created resource in storage.
    //  *
    //  * @param  \Illuminate\Http\Request  $request
    //  * @return \Illuminate\Http\Response
    //  */
    // public function store(Request $request)
    // {
    //     //
    // }

    // /**
    //  * Display the specified resource.
    //  *
    //  * @param  int  $id
    //  * @return \Illuminate\Http\Response
    //  */
    // public function show($id)
    // {
    //     //
    // }

    // /**
    //  * Show the form for editing the specified resource.
    //  *
    //  * @param  int  $id
    //  * @return \Illuminate\Http\Response
    //  */
    // public function edit($id)
    // {
    //     //
    // }

    // /**
    //  * Update the specified resource in storage.
    //  *
    //  * @param  \Illuminate\Http\Request  $request
    //  * @param  int  $id
    //  * @return \Illuminate\Http\Response
    //  */
    // public function update(Request $request, $id)
    // {
    //     //
    // }

    // /**
    //  * Remove the specified resource from storage.
    //  *
    //  * @param  int  $id
    //  * @return \Illuminate\Http\Response
    //  */
    // public function destroy($id)
    // {
    //     //
    // }

    public function storeFollowup(Request $request, $id)
    {
      
      Followup::where('user_id', $id)->update(['close_status' => 1]);

        $comment = null;
        // if($request->follow_up_status == "Connected"){
        //     $comment = $request->comment_connected;
        //     if($request->comment_connected == "Other"){
        //         $comment = $request->comment;
        //     }
        // }elseif($request->follow_up_status == "Not Connected"){
        //     $comment = $request->comment_not_connected;
        //     if($request->comment_not_connected == "Other"){
        //         $comment = $request->comment;
        //     }
        // }

        if($request->comment){
            $comment = $request->comment;
        }
     
        $followup = new Followup();

        $followup_up = @$request->followup_up;
        if($request->followup_up == "close"){
            $followup_up = "close";
            $followup->close_status = "1";
        }

        $followup->user_id = $id;
        $followup->comment = $comment;
        $followup->type = $request->type;
        $followup->follow_up_status = $request->follow_up_status;
        $followup->priority = $request->priority;
        $followup->followup_up = $followup_up;
        
        $new_assign_to = Auth::user()->id;
        if (!empty($request->assign_to)) {
            $new_assign_to = $request->assign_to;
        }

        $followup->assign_to = $new_assign_to;

        if (!empty($request->datetime)) {
            if($followup_up != "close" && $followup_up  != "no"){
                $followup->followup_up = "yes";
                $followup->datetime = Carbon::parse($request->datetime);
            }
           
        }
        $followup->admin_id = Auth::user()->id;
        $followup->save();
        

      
        if(@$request->stage && @$request->followup_up == "close"){
            
            $user = User::where('id',$id)->first();
            if($user){
                UserTimeline::create([
                    'user_id' => $id,
                    'stages' => $request->stage,
                    'event' => 0,
                    'comment' => "Stage Changed from " . (@$user->stages ? @$user->stages : "-NA-") . " to " . (@$request->stage ? @$request->stage : "-NA-") . ".",
                    'auth_id' => Auth::user()->id
                ]);
    
                if($request->stage == "Student backed out / Dropped"){
                    $user->update([
                        "stages" => $request->stage,
                        'dropped_reason'=> $request->reasonComment,
                    ]);
                }
                if($request->stage == "Admitted"){
                    $user->update([
                        "stages" => $request->stage,
                    ]);
                }
            }
       
          


        }

        // $latestFollowups = Followup::where('user_id', $id)
        // ->latest('created_at') 
        // ->limit(3)
        // ->get();
        // $numberOfLatestFollowups = $latestFollowups->count();
      
        // $allNotConnected = $latestFollowups->every(function ($followup) {
        //     return $followup->follow_up_status == 'Not Connected';
        // });
        
        // if ($allNotConnected && $numberOfLatestFollowups == 3) {
        //     $data = User::FindOrFail($request->id);
              
        //         if($data){
        //               $sendTo = str_replace([' ','+'],'',$data->phone);
        //             // $sendTo=918875501432;
        //             sendRegisterWhatsapp([
        //                 "template" => "no_contact",
        //                 "sendTo" => $sendTo,
        //                 "name" =>  "$data->name",
        //                 "user_id" => "$data->id",
        //             ]);
        //         }
       
            
        // } 

        if ($request->ajax()) {
            return response()->json(['status'=>1]);
        }
        flashSuccess(__('follow_up_created_successfully'));
        return back();
    }
}
