<?php

namespace App\Http\Controllers\Admin;


use Carbon\Carbon;
use App\Models\User;
use App\Models\Skill;
use App\Models\JobRole;
use App\Models\Candidate;
use App\Models\Webinars;
use App\Models\Education;
use App\Models\InterestedCandidatesWebinar;
use App\Models\Experience;
use App\Models\Profession;
// use App\Models\ContactInfo;
use App\Models\UniversitySuggest;
use App\Models\Universities;
use App\Models\Course;
use App\Models\Intake;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Models\SkillTranslation;
use App\Models\CandidateLanguage;
use Illuminate\Support\Facades\DB;
use Modules\Location\Entities\City;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Modules\Location\Entities\State;
use Modules\Location\Entities\Country;
use App\Http\Requests\CandidateRequest;
use Modules\Language\Entities\Language;
use App\Models\Setting;
use App\Notifications\CandidateCreateApprovalPendingNotification;
use Illuminate\Support\Facades\Notification;
use App\Notifications\CandidateCreateNotification;
use App\Notifications\UpdateCompanyPassNotification;
use App\Models\Documents;
use App\Models\DocumentSubcategory;
use Illuminate\Support\Facades\Storage;
use App\Models\DocumentCategory;
use App\Models\IndianUniversity;
use App\Models\Countries;
use App\Models\CandidateEducation;
use App\Models\CandidateDestination;
use App\Models\Followup;
use App\Models\CandidateExam;
use App\Models\Exam;
use App\Models\Admin;
use App\Models\CandidateApplication;
use PhpOffice\PhpSpreadsheet\Worksheet\Row;
use Spatie\Permission\Models\Role;
use App\Models\Source;
use App\Models\University;
use Illuminate\Validation\Rule;
use App\Models\UserTimeline;
// use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;
use App\Models\Diploma_course;
use Illuminate\Support\Facades\Redirect;
use App\Notifications\AssignToChangeNotification;
use App\Exports\CustomerReportExport;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\StreamedResponse;
use App\Models\WhatsappTemplate;
use App\Models\Whatsapplog;
use App\Models\Partner;
use App\Models\WorkExperience;
use App\Models\Service;
use App\Models\StudyArea;
use App\Models\Degree;
use App\Models\Order;
use App\Models\Payment;
use DateTime;
use Barryvdh\DomPDF\PDF;
use App\Models\ieltsExamsTest;
use App\Models\IeltsMockTest;
use App\Models\UsersMockTest;
use App\Models\MockTestResult;
use App\Models\CandidateApplicationComment;
use App\Models\CandidateApplicationTimeline;
use App\Models\CourseShortlist;
use App\Models\Whatsapp_tracker;
use Illuminate\Support\Facades\Crypt;

use App\Notifications\Admin\NewUserRegisteredNotification;


class LeadManagementCandidateController extends Controller
{   

    public function create(Request $request){
        
        
        abort_if(!userCan('candidate.create'), 403);
        $validator = Validator::make($request->all(), [
            'name' => 'required|max:100',
            'phone' => [
                'required',
                
                Rule::when(!empty($request->phone), Rule::unique('users', 'phone')->where(function ($query) {
                    return $query->whereNull('deleted_at');
                })->ignore($request->user_id)),
                Rule::when(empty(@$request->email), ['numeric', Rule::unique('users', 'phone')->where(function ($query) {
                    return $query->whereNull('deleted_at');
                })->ignore($request->user_id)])
            ],
            'email' => [
                'nullable',
                'email',
                Rule::unique('users', 'email')->where(function ($query) use ($request) {
                    return $query->whereNull('deleted_at');
                })->ignore($request->user_id),
            ],
            'country'  => 'required',
        ]);
        $validator->errors = $validator->errors();

        if ($validator->fails()) {
            $errors = $validator->errors;
            
            return response()->json([
                'error' => $errors,
                'status' => 3
            ]);
        }
        
        
        


        $data['country'] = null;
        $data['country_code'] = null;
        
        
        
            if (!empty($request->country)) {
                $countryData = explode('@#$?', $request->country);
                $country = $countryData[0];
                $data['country'] = $country;
                if (!empty($country)) $data['country'] = $country;
    
                $code = $countryData[1];
                if (!empty($code)) $data['country_code'] = $code;
            }

        
        // $user_save_data = [
        //     'name' => $request->name,
        //     'phone' => $request->phone,
        //     'email' => $request->email, 
        //     'country' =>  $data['country'],
        //     'country_code' => $data['country_code'],
        //     'source'  => $request->source,
        //     'created_at' => Carbon::now()->tz(env('APP_TIMEZONE', 'UTC'))->format('Y-m-d H:i:s'),
        //     'updated_at' => Carbon::now()->tz(env('APP_TIMEZONE', 'UTC'))->format('Y-m-d H:i:s'),
        // ];
        // dd(Carbon::now()->tz(env('APP_TIMEZONE', 'UTC'))->format('Y-m-d H:i:s'));
       
        $new_data = User::create([
            'role' => 'candidate',
            'name' => $request->name,
            'phone' => $request->phone,
            'email' => $request->email, 
            'country' =>  $data['country'],
            'country_code' => $data['country_code'],
            'source'  => $request->source,
        ]);

        

        $candidate = Candidate::where('user_id', $new_data->id)->first();        
        // $candidate = Candidate::create([
        //     'created_at' => "2024-01-08 15:18:14",
        //     'user_id' => $data->id,
        // ]);

        if($new_data){
            
            return response()->json(['status'=>1,'message' => "Lead Created Successfully","candidate_id" =>$candidate]);
            

        }else{
            return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save"]); 
        }


    }


    public function candidateEdit(Request $request, $id)
    {
        $candidate = Candidate::where('id',$id)->first();
        $formattedTime = Carbon::now()->format('Y-m-d H:i:s');
        $candidateDisplay = 0;
        $roleNames = Auth()->user()->getRoleNames()->toArray();
        
        if (Auth::check()) {
            if ($candidate) {
                $formattedTime = Carbon::now(); 
                if ($candidate->open_auth_id && $formattedTime <= $candidate->open_date_time && $candidate->open_auth_id != Auth::user()->id) {
                    $candidateDisplay = 1;
                }
                if (!$candidate->open_auth_id || $formattedTime > $candidate->open_date_time) {
                    if(!in_array('superadmin', $roleNames)){
                        $candidate->update([
                            'open_auth_id' => Auth::user()->id,
                            'open_date_time' => $formattedTime->addMinutes(30),
                        ]);
                    }
                }
            } else {
                flashError("Candidate not found.");
                return back();
            }
        }

        $roleEnvNames = explode(',', env('AVAILABLE_LEAD_ROLES', 'Lead Manager,Operation Manager'));
        $admin_list = Admin::where('id', '!=', 1)
            ->whereHas('roles', function ($query) use ($roleEnvNames) {
                $query->whereIn('name', $roleEnvNames);
            })
            ->get()
            ->toArray();
        $user = User::findOrFail($candidate->user_id);
        $countries = Countries::all('id', 'name','sortname');

        $preferred_countries = [];
        $other_countries = [];
        $jsonString = str_replace(['"', '[', ']'], '', @$candidate->destination[0]->preferred_country);
        $preferred_country_ids = explode(",", $jsonString);
        foreach ($preferred_country_ids as $preferred_country_id) {
            $country = $countries->firstWhere('id', $preferred_country_id);
            if ($country) {
                $preferred_countries[] = [
                    'id' => $country->id,
                    'name' => $country->name,
                    'sortname' => $country->sortname,
                ];
            }
        }
        
        $other_countries = $countries->reject(function ($country) use ($preferred_country_ids) {
            return in_array($country->id, $preferred_country_ids);
        })->toArray(); // Convert the collection to an array
        $countries = array_merge($preferred_countries, $other_countries);

        $jsonString = str_replace(['"', '[', ']'], '',  @$candidate->destination[0]->preferred_country);
        $preferred_country_ids = explode(",", $jsonString);
        $preferred_countries = [];
        $other_countries = [];
        foreach ($countries as $country) {
            if (in_array($country['id'], $preferred_country_ids)) {
                $preferred_countries[] = [
                    'id' => $country['id'],
                    'name' => $country['name'],
                    'sortname' => $country['sortname'],
                ];
            }  
        }
        
        $sourcesData = Source::distinct('name')->with("source")->where("parent_id",null)->get();
        $ind_universities = IndianUniversity::all(['id', 'name']);
        $partners = Partner::select('id', 'name')->get()->toArray();
        $exam_list = Exam::get()->toArray();
        $profile_progress = $this->profile_complete($candidate->id);     
        $services = Service::select('id', 'name')->get()->toArray();
        $streams = StudyArea::get()->toArray();

        return view('admin.lead-management.customer-detail', compact(
            'countries',
            'candidate',
            'user',
            'preferred_country_ids',
            'preferred_countries',
            'admin_list',
            'ind_universities',
            'services',
            'partners',
            'exam_list',
            'profile_progress',
            'sourcesData',
            'streams',
        ));
    }

    public function candidate_application(Request $request)
    {
        abort_if(!userCan('candidateApplication.update'), 403);
        // dd($request->candidate_id);
        $candidate_id = $request->candidate_id;
        // dd( $candidate_id->candidate_id);
        // $partner_find = Partner::select('id', 'name')->get()->toArray();
        $data['candidateApplications'] = [];
        $data['candidates'] = [];
        $data['universities'] = [];
        $data['partner_find'] = [];
        if(!empty(@$candidate_id)){
            $data['candidateApplications'] = CandidateApplication::with('partners','timeLine')->where('candidate_id', $candidate_id)->get();
            // $data['universities'] = Universities::where('status', 1)->get(['id', 'name']);
            // $data['candidates'] = Candidate::where('id', $candidate_id)->with('user')->first();
            // $data['partner_find'] = Partner::select('id', 'name')->get()->toArray();
        
        }else{
            flashError("Candidate not found.");
            return redirect()->route('candidateApplication.index');
        }
        // dd(Auth::user()->image_url);
        // dd($data['candidateApplications']);
        $data['candidateApplicationsID'] = $request->id;
        if(count($data['candidateApplications']) <= 0){
            $code = '<div class="panel-top" style="width:100%;"><center><span>No data Found</span><center><div>';
        }else{
        $code = '<div class="p-left common table-scroll">
                    ';


                foreach ($data['candidateApplications'] as $candidateApplication) {
                    $priorityText = '';
                    if (@$candidateApplication->priority == 1) {
                        $priorityText = '1st priority';
                    } elseif (@$candidateApplication->priority == 2) {
                        $priorityText = '2nd priority';
                    } elseif (@$candidateApplication->priority == 3) {
                        $priorityText = '3rd priority';
                    }

                    $code .= '<div class="acc-list"> <div class="course-detail ' . ($candidateApplication->id == $data['candidateApplicationsID'] ? 'active' : '') . '" onclick="handleClick(' . @$candidateApplication->id . ');">
                                <div class="c-name">
                                    <p>
                                        <span class="course-name"><b>Application ID: <span class="text-primary">' . @$candidateApplication->id . '</span></b><br></span>
                                        <span class="uni-name"><b>Associate ID: <span class="text-primary">' . @$candidateApplication->partners->code . '(' . @$candidateApplication->partner_application_id . ')</span></b>
                                        <br><span class="course-name">' . @$candidateApplication->courses->name . '</span> <span class="uni-name">' . @$candidateApplication->university->name . '</span>
                                    </p>
                                   
                                </div>
                                <p class="status">Status:<span class="status-type">' . @$candidateApplication->status . '</span></p>
                                
                            </div>
                            
                            <div class="app-info show">
                                        <div class="status-detail">
                                            <span class="date">21/09/2023</span>
                                            <span class="time">03:07PM</span>
                                            <span class="app-id">188671/23</span>
                                            <p class="subtitle">Intake: <span class="mnth-year">Feb-2024</span></p>
                                        </div>

                                        <div class="comment-section">
                                            <p class="comment-head">Comments</p>

                                            <form action="" class="cmt-form">

                                                <div class="field">
                                                    <img src="{{ asset("backend") }}/lead-management/images/profile-image.jpg"
                                                        class="user-profile" alt="profile-image" width="100%"
                                                        height="100%">
                                                    <div class="cmt-field">
                                                        <textarea class="comment-input" name="" id="" cols="" rows=""
                                                            placeholder="Write Comments"></textarea>
                                                        <p class="file-name">upload-file.jpg <img
                                                                src="{{ asset("backend") }}/lead-management/images/close1.svg"
                                                                class="close" alt="close" width="100%"
                                                                height="100%">
                                                        </p>
                                                    </div>
                                                </div>

                                                <div class="f-bottom">
                                                    <p class="upload-file">
                                                        <input type="file" class="file" name="file"
                                                            id="">
                                                        <img src="{{ asset("backend") }}/lead-management/images/pin.svg"
                                                            class="pin-image" alt="pin" width="100%"
                                                            height="100%">
                                                    </p>

                                                    <button class="send-btn">Send</button>
                                                </div>
                                            </form>

                                            <div class="cmt-list">
                                                <div class="detail">
                                                    <p class="u-name"><img
                                                            src="{{ asset("backend") }}/lead-management/images/profile-image.jpg"
                                                            class="user-profile" alt="profile-image" width="100%"
                                                            height="100%">Sankalp Navdhinge</p>
                                                    <p><span class="date">21/09/2023</span><span
                                                            class="time">04:49PM</span>
                                                    </p>
                                                </div>
                                                <p class="comment">
                                                    Dear Team, <br><br>

                                                    We are not going to take this case forward as the applicant is from
                                                    Bihar and
                                                    completed
                                                    a
                                                    bachelor’s from Punjab, which is a GTE concern, hence we are closing
                                                    this case.
                                                </p>
                                            </div>
                                        </div>
                                    </div>
                                    
                            </div>
                            
                            ';

                           
                        
                }
                
                    $code .= '</div></div></div>';

                $code .= '<div class="right common">
                <div class="app-info">
     
                    <div id="appendHere"></div>
    
                    <div class="comment-section">
                        <p class="comment-head">Comments</p>
    
                        <form action="" class="cmt-form">
    
                            <div class="field">
                                <img src="'.Auth::user()->image_url.'" class="user-profile custom-w-img" alt="profile-image">
                                <div class="cmt-field w-100">
                                    <textarea id="comment_text" rows="8" type="text" class="comment-input form-control editor1" name="comment_text" placeholder="Write Comments"></textarea>
                                </div>
                            </div>
    
                            <div class="f-bottom">
                                <p class="upload-file">
                                    <select name="type" id="type" class=" select2bs4 select2-hide-search" onchange="handleClick('.@$candidateApplication->id.')">
                                        <option value="0">Internal Communication</option>
                                        <option value="1">Customer Communication</option>
                                    </select>
                                </p>
                                <button type="button" class="send-btn" onclick="commentButton()">Send</button>
                            </div>
                        </form>
                        <div class="table-scroll" id="appendCommentHere"></div>
                        
                    </div>
                </div>
            </div>';
                
        }       

        $data['code'] = $code;
        return $data;
    }

    public function followup(Request $request){
        $candidate = Candidate::where('user_id', $request->user_id)->first();
        $followups = Followup::latest()->where('user_id', $candidate->user_id)->get();
    
        $followupList = [];
        $count = count($followups);
        foreach ($followups as $followup){ 



            if (empty($followup->datetime)) {
                $date_time = "";
            } else {
                $date_time = date('d-m-Y H:i:s', strtotime($followup->datetime));
            }
            
            if (empty($followup->created_at)) {
                $created_at = "";
            } else {
                $created_at = date('d-m-Y H:i:s', strtotime($followup->created_at));
            }
           
            $followupItem = '<div class="single-folloup-list">
                <div class="f-head">
                    <p class="f-col">Followup Date:<span class="f-value">' . @$date_time . '</span></p>
                    <div class="head-mid">
                        <p class="f-col">Type:<span class="f-value">' . @$followup->type . '</span></p>
                        <p class="f-col">Priority:<span class="f-value">' . @$followup->priority . '</span></p>
                        <p class="f-col">Status:<span class="f-value">';

            $followupItem .= (@$followup->follow_up_status == 'Not Connected') ? '<span class="badge badge-danger float-right ml-2">Not Connected</span>' : '<span class="badge badge-success float-right ml-2">Connected</span>';
            
            $followupItem .= '</span></p>
                    </div>
                    
                </div>
                <div class="f-body">
                    <p class="f-col">Assign To:<span class="f-value">' . ucwords(adminIdToNameGet(@$followup->assign_to)) . '</span></p>
                    <p class="f-col">Followup:<span class="f-value">' . @$followup->followup_up . '</span></p>
                    <p class="f-col">Comment:<span class="f-value">' . @$followup->comment . '</span></p>
                    <p class="f-col">Created By:<span class="f-value">' . @$followup->admin->name . '</span></p>
                    <p class="f-col">Created Date:<span class="f-value">' . @$created_at . '</span></p>
                </div>
            </div>';
            array_push($followupList, $followupItem);
        }
        
        if($followupList == null){
            $followupItem = '<div >
              <center>  No Data Avaialable </center>
            </div> <br>';
            array_push($followupList, $followupItem);
        }
        $res = [
            'code' => $followupList,
            'count'=> $count,
        ];
        return $res;
    }

    public function student_case(Request $request,$user_id){
        try{
            $request->user_id = $user_id;
            $candidate = Candidate::where('id', $request->user_id)->first();
            
            $user = User::findOrFail($candidate->user_id);
            if($candidate->country_id != null && $candidate->country_id != ""){
                $countries = Country::where('id',$candidate->country_id)->select('name','id','restricted_country','restricted_state')->first();
                if($countries != null){
                    $candidate->country_name = $countries->name;
                }
                $states = State::where('id',$candidate->state_id)->first();
                if($states != null){
                    $candidate->state_name = $states->name;
                }
            }else{
                $countries = null;
                $candidate->country_name = "";
                $states = null;
                $candidate->state_name = "";
            }

            $work_experience = WorkExperience::where('candidate_id',$candidate->id)->get();
            // Start A blog of code work is give count work experience 
            foreach ($work_experience as $exp) {
                if (!empty($exp->start_date) && !empty($exp->end_date)) {
                    $start = new DateTime($exp->start_date);
                    $end = new DateTime($exp->end_date);
                    $diff = $start->diff($end);
                
                    if ($diff->y == 0) {
                        if ($diff->m == 0) {
                            if ($diff->d == 0) {
                                $exp->experience = "No Work Experience";
                            }else{
                                $exp->experience = $diff->format('%d Day');
                            }  
                        }else{
                            $exp->experience = $diff->format('%m Month %d Day');
                        }
                    } else {
                        $exp->experience = $diff->format('%y Year %m Month %d Day');
                    }
                } else {
                    $exp->experience = "Work experience duration not available";
                }
                $exp->start_date = !empty($exp->start_date) ? date('d-m-Y', strtotime($exp->start_date)) : "";
                $exp->end_date = !empty($exp->end_date) ? date('d-m-Y', strtotime($exp->end_date)) : "";
            }
            // end  A blog of code work is give count work experience

            $english_test = [
                'test_name' => '',
                'test_taken_date' => '',
                'test_result_date' => '',
                'test_scores' => '',
                'speaking_scores' => '',
                'reading_scores' => '',
                'listening_scores' => '',
                'writing_scores' => '',
            ];
            $abroad_test = [
                'test_name' => '',
                'test_taken_date' => '',
                'test_result_date' => '',
                'test_scores' => '',
            ];

            foreach ($candidate->candidate_exam as $index => $exam){
                if ($exam->test_type == '1'){
                    $abroad_test = [
                        'test_name' => $exam->test_name,
                        'test_taken_date' => $exam->test_taken_date,
                        'test_result_date' => $exam->test_result_date,
                        'test_scores' => $exam->test_scores,
                    
                    ];
                }
                else if($exam->test_type == '0'){
                    $english_test = [
                        'test_name' => $exam->test_name,
                        'test_taken_date' => $exam->test_taken_date,
                        'test_result_date' => $exam->test_result_date,
                        'test_scores' => $exam->test_scores,
                        'speaking_scores' => $exam->speaking_scores,
                        'reading_scores' => $exam->reading_scores,
                        'listening_scores' => $exam->listening_scores,
                        'writing_scores' => $exam->writing_scores,
                    ];
                }   
            }

            $candidate->destination[0] = CandidateDestination::where('candidate_id',$candidate->id)->first();
            $preferred_countries = [];
            $preferred_course = [];
            $other_countries = [];
        
            $jsonString = str_replace(['"', '[', ']'], '', @$candidate->destination[0]->preferred_country);
            $preferred_country_ids = explode(",", $jsonString);

            $country = null;
            $country_name = "";
            $countryData = Country::whereIn('id', $preferred_country_ids)->get();
            $preferredCountries = $countryData->map(function ($country) {
                return [
                    'name' => $country->name,
                    'id' => $country->id,
                    'image' => $country->image
                ];
            })->toArray();
        
            $preferredCountriesString = implode(',', array_map(function ($country) {
                return $country['name'] ;
            }, $preferredCountries));
            $candidate->preferred_country = $preferredCountriesString;

            $preferredCountriesId = implode(',', array_map(function ($country) {
                return $country['id'] ;
            }, $preferredCountries));

            $message = [
                "resident_country_message" => "",
                'preffered_country_message' => "",
                'preffered_state_message' => "",
                'education_bachelor_number' => "",
                'education_12th_number' => "",
                'english_test_message' => "",
                "english_test_required_message" => '',
                'intake_month_alert' => "",
                'birthdate_alert' => "",
                'education_alert' => '',
                'fund_availability' => "",
            ];

            // dd($candidate->birth_date);
            if ($candidate->birth_date !== null) {
                $from = new DateTime($candidate->birth_date);
                $to = new DateTime();
                $user->age = $from->diff($to)->y;
                
                if ($user->age < 18) {
                    $message['birthdate_alert'] = "Age is below 18 years.";
                } else if ($user->age > 35) {
                    $message['birthdate_alert'] = "Age is above 35 years.";
                }
                
            } else {
                // Handle the case when the birth date is null
                $user->age = null; // or set a default value
                $message['birthdate_alert'] = "Birth Date is not available";

            }


            $intakes = explode(',', @$candidate->destination[0]->intake_months);
        
            if (in_array(date('M'), $intakes)) {
                $message['intake_month_alert'] = "This Is Your Intake month Be alert";
            }
            elseif(in_array(date('M', strtotime('+1 month')), $intakes)){
                $message['intake_month_alert'] = "Your Intake Month Is Very Close";
            }
            if(@$candidate->passport_status == 1){
                if($candidate->country_id == null){
                    $message['preffered_country_message'] = $message['preffered_country_message']."Passport Country Not Available" ;
                }else{
                    foreach($preferredCountries as $prefered_country){
                        $countries_new_data = Country::where('id',$prefered_country['id'])->select('name','id','restricted_country','restricted_state')->first();
                        
                        $restricted_countrys = explode(',',$countries_new_data->restricted_country);
                        $restricted_state = explode(',',$countries_new_data->restricted_state);
                        
                        if(in_array($candidate->country_id,  $restricted_countrys)){
                            if($message['preffered_country_message'] == ""){
                                $message['preffered_country_message'] = "Student form ".$candidate->country_name." is restricted in ";
                            }
                            $message['preffered_country_message'] = $message['preffered_country_message']."". $countries_new_data['name'].", ";
                        }
        
                        if(in_array(@$candidate->state_id,  $restricted_state)){

                            if($message['preffered_state_message'] == ""){
                                $message['preffered_state_message'] = $candidate->state_name."-".$candidate->country_name." is restricted in ";
                            }

                            $message['preffered_state_message'] = $message['preffered_state_message']."". $countries_new_data['name'].", ";
                           
                        }   
                    }
                }
            }
            
            if($candidate->user->country == null){
                $message['resident_country_message'] = $message['resident_country_message']."Resident Country Not Available." ;
            }else{
                foreach($preferredCountries as $prefered_country){
                    $countries_new_data = Country::where('id',$prefered_country['id'])->select('name','id','restricted_country','restricted_state')->first();
                    
                    $country_data = Country::where('name',$candidate->user->country)->select('id','name')->first();
                    
                    $restricted_countrys = explode(',',$countries_new_data->restricted_country);
                    $restricted_state = explode(',',$countries_new_data->restricted_state);
                
                    if(in_array(@$country_data->id,  $restricted_countrys)){
                        if($message['resident_country_message'] == ""){
                            $message['resident_country_message'] = "Student form ".$country_data->name." is restricted in ";
                        }
                        $message['resident_country_message'] = $message['resident_country_message']."". $countries_new_data['name'].", ";
                        
                    }

                }
            }
            $data = CandidateApplication::where('candidate_id', $candidate->id)->where('course', '!=', null)->select('course')->get()->ToArray();
            $uniqueCourses = array_unique(array_column($data, 'course'));
            $courses = implode(',', $uniqueCourses);
            
            // $preferred_course_ids = explode(",", @$candidate->destination[0]->preferred_course);
            $preferred_course_ids = explode(",", $courses); // pass prefferd Courses by rm and counseler and run all code related to preffered Course
            $courseData = course::whereIn('id', $preferred_course_ids)->get();
            $preferred_course = $courseData->map(function ($course) {
                return [
                    'name' => $course->name,
                    'id' => $course->id,
                    'image' => $course->image
                ];
            })->toArray();

            $preferred_courseString = implode(', ', array_map(function ($course) {
                return $course['name'] ;
            }, $preferred_course));
            $candidate->preferred_course = $preferred_courseString;
        
            $education_data = CandidateEducation::where('candidate_id',$candidate->id)->orderBy('year','ASC')->get();

            $down_to_up = ['10th','12th','Diploma','Bachelors','Masters','PhD'];
            $highest_education = "";
            $highest_education_status = 0;
            $last_education_value = "";
            $education_data_new = [];
            foreach ($down_to_up as $down_to_up_use) {
                $flag = 0;
                
                
                foreach($education_data as $education){
                    $status_change = 0;
                    // $education['type'] = "education";
                    if($education->qualification == $down_to_up_use){
                        $highest_education = $down_to_up_use;
                        $flag = 1;
                        foreach($education_data as $education_new){
                            
                            if($education_new->qualification == $last_education_value){
                                $duration = 0;
                                
                                if($education->qualification == "12th"){
                                    if($education->passing_year == $education_new->passing_year+2){

                                    }else{
                                        if($education->passing_year > $education_new->passing_year+2){
                                            
                                            $duration = $education->passing_year - ($education_new->passing_year+2);
                                            $edu_obj = $education;
                                            $edu_obj['duration'] = $duration;
                                            // $edu_obj['type'] = "gap";
                                            $education_data_new[] = $edu_obj;
                                        }else{
                                            // $message['education_alert'] = $message['education_alert']." check your 10th and 12th passing year ";
                                        }
                                        $status_change = 1;
                                    }
                                    break;
                                    
                                }
                                
                                else if($education->qualification == "Diploma" || $education->qualification == "Bachelors" || $education->qualification == "Masters" || $education->qualification == "PhD"){
                                    if($education->year == $education_new->passing_year){
                                        
                                    }else{
                                        if($education->year > $education_new->passing_year){
                                            $duration = $education->year - $education_new->passing_year;
                                            $edu_obj = $education;
                                            $edu_obj['duration'] = $duration;
                                            // $edu_obj['type'] = "gap";
                                            $education_data_new[] = $edu_obj;
                                        }else{
                                            // $message['education_alert'] = $message['education_alert']." check your 10th and 12th passing year ";
                                        }
                                    }
                                    $status_change = 1;
                                    break;
                                }
                                

                            }
                            
                            
                        }
                        if($status_change == 0){

                            
                            foreach($education_data as $education_new){
                                
                                
                                if($education_new->qualification == "12th"){
                                    $duration = 0;
                                    if($education->qualification == "Bachelors"){
                                        if($education->year == $education_new->passing_year){

                                        }else{
                                            if($education->year > $education_new->passing_year){
                                                $duration = $education->year - $education_new->passing_year;
                                                $edu_obj = $education;
                                                $edu_obj['duration'] = $duration;
                                                // $edu_obj['type'] = "gap";
                                                $education_data_new[] = $edu_obj;
                                                
                                            }else{
                                                // $message['education_alert'] = $message['education_alert']." check your 10th and 12th passing year ";
                                            }
                                        }
                                        break;
                                        
                                    }
                                }

                                if($education_new->qualification == "10th"){
                                    $duration = 0;
                                    if($education->qualification == "Diploma"){
                                        
                                        if($education->year == $education_new->passing_year){

                                        }else{
                                            if($education->year > $education_new->passing_year){
                                                $duration = $education->year - $education_new->passing_year;
                                                $edu_obj = $education;
                                                $edu_obj['duration'] = $duration;
                                                // $edu_obj['type'] = "gap";
                                                $education_data_new[] = $edu_obj;
                                            }else{
                                                // $message['education_alert'] = $message['education_alert']." check your 10th and 12th passing year ";
                                            }
                                            
                                        }
                                        break;
                                        
                                    }
                                    
                                }
                                if($education_new->qualification == "12th"){
                                    if($education->qualification == "Bachelors"){
                                            
                                        if($education->year == $education_new->passing_year){

                                        }else{
                                            if($education->year > $education_new->passing_year){
                                               
                                                $duration = $education->year - $education_new->passing_year;
                                                $edu_obj = $education;
                                                $edu_obj['duration'] = $duration;
                                                // $edu_obj['type'] = "gap";
                                                $education_data_new[] = $edu_obj;
                                                
                                            }else{
                                                // $message['education_alert'] = $message['education_alert']." check your 10th and 12th passing year ";
                                            }
                                        }
                                        break;
                                        
                                    }
                                }

                                
                            }

                        }

                        break;
                    }

                    
                }
                if($highest_education_status == 0 && $flag == 0 && $candidate->highest_education != null ) {
                    $flag = 0;
                    if($message['education_alert'] == ""){
                        $message['education_alert'] = "Highest Education is ".$candidate->highest_education.". Missing ";
                    }
                    if($down_to_up_use == "12th"){
                        
                        foreach($education_data as $education){
                            if($education->qualification == "Diploma"){
                                $flag = 1;
                                break;
                            }
                        }
                        if($flag == 0){
                            $message['education_alert'] = $message['education_alert']." ".$down_to_up_use.",";
                        }
                    }elseif($down_to_up_use == "Diploma"){
                    }
                    else{
                        $message['education_alert'] = $message['education_alert']." ".$down_to_up_use.",";
                    }
                    
                } 
                

                if($candidate->highest_education == $down_to_up_use){
                    $highest_education_status = 1;
                }
                $last_education_value = $down_to_up_use;
            }
            
            if($message['education_alert'] == "Highest Education is ".$candidate->highest_education.". Missing " || $candidate->highest_education == ""|| $message['education_alert'] == ""){
                $message['education_alert'] = "";
            }else{
                $message['education_alert'] = $message['education_alert']." Education Detail";
            }
            
            $education_data_new = collect($education_data_new)->toArray();
            $education_data_change = collect($education_data)->toArray();

            foreach($education_data_change as &$item2){
                $item2['type'] = "Education";
            }

            foreach($education_data_new as &$item){
                $item['type'] = "Gap";
            }
            // dd( $message);
            $mergedCollection = array_merge($education_data_new, $education_data_change);

            usort($mergedCollection, function($a, $b) {
                return strcmp($a['passing_year'], $b['passing_year']);
            });
            
            foreach($courseData as $course_item){
                
                foreach($education_data as $education){
                    
                    if($education->qualification == "Bachelors"){
                        if($education->grade_type == "percentage"){
                            if($education->grade_percentage < $course_item->EntryRequirementUgOutOf100){
                                $message['education_bachelor_number'] = $message['education_bachelor_number']." Student Not Elegibale for This Course ".$course_item->name." ";
                            }
                        }
                        elseif($education->grade_type == "CGPA (10)"){
                            if($education->grade_percentage < $course_item->EntryRequirementUgOutOf10){
                                $message['education_bachelor_number'] = $message['education_bachelor_number']." Student Not Elegibale for This Course ".$course_item->name." ";
                            }
                        }
                        elseif($education->grade_type == "CGPA (4)"){
                            if($education->grade_percentage < $course_item->EntryRequirementUgOutOf4){
                                $message['education_bachelor_number'] = $message['education_bachelor_number']."Student Not Elegibale for This Course ".$course_item->name." ";
                            }
                        }
                    }
                    
                    if($education->qualification == "12th"){
                        if($education->grade_type == "percentage"){
                            if($education->grade_percentage < $course_item->EntryRequirementTwelfthOutOf100){
                                $message['education_12th_number'] = $message['education_12th_number']." Student Not Elegibale for This Course ".$course_item->name." ";
                            }
                        }
                        elseif($education->grade_type == "CGPA (10)"){
                            if($education->grade_percentage < $course_item->EntryRequirementTwelfthOutOf10){
                                $message['education_12th_number'] = $message['education_12th_number']." Student Not Elegibale for This Course ".$course_item->name." ";
                            }
                        }
                        elseif($education->grade_type == "CGPA (4)"){
                            if($education->grade_percentage < $course_item->EntryRequirementTwelfthOutOf4){
                                $message['education_12th_number'] = $message['education_12th_number']." Student Not Elegibale for This Course ".$course_item->name." ";
                            }
                        }
                    }
                }  
                
               // dd($course_item);
                if($course_item->WithoutEnglishProficiency == 1 ){
                    $message['english_test_required_message'] =  $message['english_test_required_message']." Student Eligible Without English Proficiency Test This Course". $course_item->name. " ";
                }else{
                    if($course_item->SatRequired == 1 && $english_test['test_name'] != "SAT"){
                        $message['english_test_required_message'] =  $message['english_test_required_message']." For This Course ".$course_item->name." Required SAT";
                    }
                    if($course_item->GmatRequired == 1 && $english_test['test_name'] != "GMAT"){
                        $message['english_test_required_message'] =  $message['english_test_required_message']." For This Course ".$course_item->name." Required GMAT";
                    }
                    if($course_item->ActRequired == 1 && $english_test['test_name'] != "GMAT"){
                        $message['english_test_required_message'] =  $message['english_test_required_message']." For This Course ".$course_item->name." Required GMAT";
                    }
                    if($course_item->GreRequired == 1 && $english_test['test_name'] != "GMAT"){
                        $message['english_test_required_message'] =  $message['english_test_required_message']." For This Course ".$course_item->name." Required GMAT";
                    }
                    if($course_item->IeltsRequired == 1 && $english_test['test_name'] != "GMAT"){
                        $message['english_test_required_message'] =  $message['english_test_required_message']." For This Course ".$course_item->name." Required GMAT";
                    }
                    if($course_item->ToeflRequired == 1 && $english_test['test_name'] != "GMAT"){
                        $message['english_test_required_message'] =  $message['english_test_required_message']." For This Course ".$course_item->name." Required GMAT";
                    }
                    if($course_item->PteRequired == 1 && $english_test['test_name'] != "GMAT"){
                        $message['english_test_required_message'] =  $message['english_test_required_message']." For This Course ".$course_item->name." Required GMAT";
                    }
                    if($course_item->DETRequired == 1 && $english_test['test_name'] != "GMAT"){
                        $message['english_test_required_message'] =  $message['english_test_required_message']." For This Course ".$course_item->name." Required GMAT";
                    }
                    
                    
                    
                    if( $english_test['test_name'] == "IELTS"){
                        if( $course_item->IeltsOverall > $english_test['test_scores']){
                            $message['english_test_message'] =  $message['english_test_message']." Student ".$english_test['test_name']." over all score is". $english_test['test_scores'] ." and this course at list minimum score is ". $course_item->IeltsOverall.".. Not Eligible";
                        }
                    }
                    if( $english_test['test_name'] == "SAT"){
                        if( $course_item->SatScore > $english_test['test_scores']){
                            $message['english_test_message'] =  $message['english_test_message']." Student ".$english_test['test_name']." over all score is". $english_test['test_scores'] ." and this course at list minimum score is ". $course_item->SatScore.".. Not Eligible";
                        }
                    }
                    if( $english_test['test_name'] == "PTE"){
                        if( $course_item->PteScore > $english_test['test_scores']){
                            $message['english_test_message'] =  $message['english_test_message']." Student ".$english_test['test_name']." over all score is". $english_test['test_scores'] ." and this course at list minimum score is ". $course_item->PteScore.".. Not Eligible";
                        }
                    }
                    if( $english_test['test_name'] == "TOEFL"){
                        if( $course_item->ToeflScore > $english_test['test_scores']){
                            $message['english_test_message'] =  $message['english_test_message']." Student ".$english_test['test_name']." over all score is". $english_test['test_scores'] ." and this course at list minimum score is ". $course_item->ToeflScore.".. Not Eligible";
                        }
                    }
                    if( $english_test['test_name'] == "GMAT"){
                        if( $course_item->GmatScore > $english_test['test_scores']){
                            $message['english_test_message'] =  $message['english_test_message']." Student ".$english_test['test_name']." over all score is". $english_test['test_scores'] ." and this course at list minimum score is ". $course_item->GmatScore.".. Not Eligible";
                        }
                    }
                    if( $english_test['test_name'] == "ACT"){
                        if( $course_item->ActScore > $english_test['test_scores']){
                            $message['english_test_message'] =  $message['english_test_message']." Student ".$english_test['test_name']." over all score is". $english_test['test_scores'] ." and this course at list minimum score is ". $course_item->ActScore.".. Not Eligible";
                        }
                    }
                    if( $english_test['test_name'] == "GRE"){
                        if( $course_item->GreScore > $english_test['test_scores']){
                            $message['english_test_message'] =  $message['english_test_message']." Student ".$english_test['test_name']." over all score is". $english_test['test_scores'] ." and this course at list minimum score is ". $course_item->GreScore.".. Not Eligible";
                        }
                    }
                    if( $english_test['test_name'] == "DET"){
                        if( $course_item->DETScore > $english_test['test_scores']){
                            $message['english_test_message'] =  $message['english_test_message']." Student ".$english_test['test_name']." over all score is". $english_test['test_scores'] ." and this course at list minimum score is ". $course_item->DETScore.".. Not Eligible";
                        }
                    }
                }
            }

            
           
            if($candidate->budget == "" && $candidate->budget == null){
                $message['fund_availability'] = $message['fund_availability']." Candidate Budget Not Available. "; 
            }
            if($candidate->fund_source == "" && $candidate->fund_source == null){
                $message['fund_availability'] = $message['fund_availability']." Candidate Budget Not Available. "; 
            }
            if($candidate->loan_type == "" && $candidate->loan_type == null && ($candidate->fund_source == "Full Loan" || $candidate->fund_source == "Partial Loan" )){
                $message['fund_availability'] = $message['fund_availability']." Candidate Loan Not Available. "; 
            }

            $education_data = $mergedCollection;
            
            // dd($message);
            return view('admin.lead-management.studentCase.studentCase',compact('candidate','user','country','work_experience','education_data','english_test','message'));
        }
        catch (Exception $e) {
            echo "Error: " . $e->getMessage(); // This will print the error message
        }
    }

    public function update(Request $request){
        abort_if(!userCan('candidate.update'), 403);
        if($request->type == "personal_info_form"){

            if($request->operation_type == "cancel"){
                $user = User::findOrFail($request->user_id);
                $candidate = Candidate::where('user_id', $request->user_id)->first();
                $userData = $user->toArray();
                $candidateData = $candidate->toArray();
                $fetch_data = array_merge($userData, $candidateData);
                $fetch_data['country'] = $user->country;
                

                if(Country::where('id',$fetch_data['country_id'])->first() == null){
                    $fetch_data['country_id_name'] = $fetch_data['country_id'];
                    if($fetch_data['country_id'] == null || $fetch_data['country_id'] == "" ){
                        $fetch_data['country_id'] ="";
                    }else{
                        $fetch_data['country_id'] ="other";
                    }
                    
                    
                }else{
                    $fetch_data['country_id'] = $fetch_data['country_id'];
                }
                if(State::where('id',$fetch_data['state_id'])->first() == null){
                    $fetch_data['state_id_name'] = $fetch_data['state_id'];
                    if($fetch_data['state_id'] == null || $fetch_data['state_id'] == "" ){
                        $fetch_data['state_id'] ="";
                    }else{
                        $fetch_data['state_id'] ="other";
                    }
                }else{
                    $fetch_data['state_id'] = $fetch_data['state_id'];
                }
                if(City::where('id',$fetch_data['city_id'])->first() == null){
                    // dd(City::where('id',$fetch_data['city_id'])->first());
                    $fetch_data['city_id_name'] = $fetch_data['city_id'];
                    if($fetch_data['city_id'] == null || $fetch_data['city_id'] == "" ){
                        $fetch_data['city_id'] ="";
                    }else{
                        $fetch_data['city_id'] ="other";
                    }
                }else{
                    $fetch_data['city_id'] = $fetch_data['city_id'];
                }

                return response()->json(['status'=>4,'user'=>$user,'fetch_data'=>$fetch_data]);

            }else{

                
                $validator = Validator::make($request->all(), [
                    'name' => 'required|max:100',
                    'phone' => [
                        'required',
                        
                        Rule::when(!empty($request->phone), Rule::unique('users', 'phone')->where(function ($query) {
                            return $query->whereNull('deleted_at');
                        })->ignore($request->user_id)),
                        Rule::when(empty(@$request->email), ['numeric', Rule::unique('users', 'phone')->where(function ($query) {
                            return $query->whereNull('deleted_at');
                        })->ignore($request->user_id)])
                    ],
                    'email' => [
                        'nullable',
                        'email',
                        Rule::unique('users', 'email')->where(function ($query) use ($request) {
                            return $query->whereNull('deleted_at');
                        })->ignore($request->user_id),
                    ],
                    // 'birth_date' => 'required|date|max:20',
                    // 'alternate_phone' => 'nullable|max:20',
                    // 'alternate_email' => 'nullable|email | max:300',
                    // 'gender' => 'required|max:20',
                    
                    // 'country' => 'required',
                    // 'country_id' => 'required',
                    // 'state_id' => 'required',
                    // 'city_id' => 'required',
                    // 'visa_refusal' => 'required',
                    // 'passport_status' => 'required',
                    // 'marital_status' => 'required',
                    // 'source' => 'required',
                ]);
                $validator->errors = $validator->errors();
                
                // if ($request->visa_refusal == "1") {
                //     $validatornew = Validator::make($request->all(), [
                //         'date_of_visa_expiration' => 'required|date',
                //     ]);
                            
                //     $validator->errors = $validator->errors()->merge($validatornew->errors());
                
                // }
                // if ($request->passport_status == "1") {
                //     $validatornew = Validator::make($request->all(), [
                        
                //         'passport_number' => 'required|max:20',
                //         'passport_expiry' => 'required|max:20',
                //     ]);
                            
                //     $validator->errors = $validator->errors()->merge($validatornew->errors());
                
                // }
            
                if ($validator->fails()) {
                    $errors = $validator->errors;
                    
                    return response()->json([
                        'error' => $errors,
                        'status' => 3
                    ]);
                }
                
                
                if (!empty($request->birth_date)) {
                    $dateTime = Carbon::parse($request->birth_date);
                    $birth_date = $request['birth_date'] = $dateTime->format('Y-m-d H:i:s');
                } else {
                    $birth_date = null;
                }

                if (!empty($request->passport_expiry)) {
                    $dateTime = Carbon::parse($request->passport_expiry);
                    $passport_expiry = $request['birth_date'] = $dateTime->format('Y-m-d H:i:s');
                } else {
                    $passport_expiry = null;
                }

                if( $request->visa_refusal  == "Yes"){
                    
                }

                

                if($request->country_id == "other"){
                    $country_id = $request->country_id_name;
                }else{
                    $country_id = $request->country_id;
                }
                if($request->state_id == "other"){
                    $state_id = $request->state_id_name;
                }else{
                    $state_id = $request->state_id;
                }
                if($request->city_id == "other"){
                    $city_id = $request->city_id_name;
                }else{
                    $city_id = $request->city_id;
                }

                if($request->passport_status == 0){
                    // $request->passport_number = null;
                    // $request->passport_expiry = null;

                    // $request->country_id = null;
                    // $request->country_id = null;
                    // $request->country_id = null;
                    $request->merge([
                        'passport_number' => null,
                        'passport_expiry' => null,
                        'country_id' => null,
                        'state_id' => null,
                        'city_id' => null,
                        'address_id' => null,
                    ]);

                }
            

                $user = User::findOrFail($request->user_id);


                $data['country'] = null;
                $data['country_code'] = null;
                
                
                
                    if (!empty($request->country)) {
                        $countryData = explode('@#$?', $request->country);
                        $country = $countryData[0];
                        $data['country'] = $country;
                        if (!empty($country)) $data['country'] = $country;
            
                        $code = $countryData[1];
                        if (!empty($code)) $data['country_code'] = $code;
                    }
                
                
                
                $request->prefferd_time =  date('H:i:s', strtotime($request->prefferd_time));

                $user = User::FindOrFail($request->user_id);
                $user_save_data = [
                    'name' => $request->name,
                    'phone' => $request->phone,
                    'alternate_phone' => $request->alternate_phone,
                    'secondary_email' => $request->secondary_email,
                    'email' => $request->email,
                    'last_name' => $request->last_name,
                    'country' =>  $data['country'],
                    'country_code' => $data['country_code'],
                    'prefferd_time' => $request->prefferd_time,
                    'source'  => $request->source,
                    'partner_id'=> $request->partner_id,
                    'service_id' => $request->service_id[0],
                    'whatsapp_marketing_status' => $request->whatsapp_marketing_status,
                ];
                $user_status = 0;
                $user_status = User::where('id',$user->id)->update($user_save_data);

                $candidate_save_data = [
                    'birth_date' => $birth_date,
                    'passport_number' => $request->passport_number,
                    'passport_expiry' => $passport_expiry,
                    'gender' => $request->gender,
                    'country_id' => $country_id,
                    'state_id' => $state_id,
                    'city_id' => $city_id,
                    'visa_refusal' => $request->visa_refusal,
                    'visa_refusal_reason' => $request->visa_refusal_reason,
                    'date_of_visa_expiration' => $request->date_of_visa_expiration,
                    'visa_categories' => $request->visa_categories,
                    'marital_status' => $request->marital_status,
                    'spouse_comming' => $request->spouse_comming,
                    'spouse_qualification'  => $request->spouse_qualification,
                    'spouse_income' => $request->spouse_income,
                    'kids_count' => $request->kids_count,
                    'accompanying_applicant'  => $request->accompanying_applicant,
                    
                    'spouse_employment_status'  => $request->spouse_employment_status,
                    "student_category" => $request->student_category,
                    
                    "address" => $request->address,
                    "permanent_address" => $request->permanent_address,
                    "passport_status" => $request->passport_status,

                ];

                
                $candidate_status = 0;

                
                $candidate_status = Candidate::where('user_id',$request->user_id)->update($candidate_save_data);
                
                if($user_status == 1 && $candidate_status == 1){
                    
                    $user = User::FindOrFail($request->user_id);
                    $candidate = Candidate::where('user_id', $request->user_id)->first();
                    
                    $userData = $user->toArray();
                    
                    $candidateData = $candidate->toArray();
                    
                    $fetch_data = array_merge($userData, $candidateData);
                    $fetch_data['country'] = $user->country;
                
                   
                    
                    if(Country::where('id',$fetch_data['country_id'])->first() == null){
                        $fetch_data['country_id_name'] = $fetch_data['country_id'];
                        if($fetch_data['country_id'] == null || $fetch_data['country_id'] == "" ){
                            $fetch_data['country_id'] ="";
                        }else{
                            $fetch_data['country_id'] ="other";
                        }
                        
                        
                    }else{
                        $fetch_data['country_id'] = $fetch_data['country_id'];
                    }
                    if(State::where('id',$fetch_data['state_id'])->first() == null){
                        $fetch_data['state_id_name'] = $fetch_data['state_id'];
                        if($fetch_data['state_id'] == null || $fetch_data['state_id'] == "" ){
                            $fetch_data['state_id'] ="";
                        }else{
                            $fetch_data['state_id'] ="other";
                        }
                    }else{
                        $fetch_data['state_id'] = $fetch_data['state_id'];
                    }
                    
                    if(City::where('id',$fetch_data['city_id'])->first() == null){
                        $fetch_data['city_id_name'] = $fetch_data['city_id'];
                        if($fetch_data['city_id'] == null || $fetch_data['city_id'] == "" ){
                            $fetch_data['city_id'] ="";
                        }else{
                            $fetch_data['city_id'] ="other";
                        }
                    }else{
                        $fetch_data['city_id'] = $fetch_data['city_id'];
                    }

                    if($user_status == 1 && $candidate_status == 1){
                        return response()->json(['status'=>1,'message' => "Information Successfully Updated",'fetch_data' =>$fetch_data]);
                    }else{
                        return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save",'fetch_data' =>$fetch_data]); 
                    }
                }
                
                
            }
            
        }
        else if($request->type == "notes_data_form"){
            if($request->operation_type == "cancel"){
               
                $candidate = Candidate::where('user_id', $request->user_id)->first();
                
                $fetch_data = $candidate->toArray();
                

                return response()->json(['status'=>4,'fetch_data'=>$fetch_data]);

            }else{

                $user = User::FindOrFail($request->user_id);
                
                $candidate_save_data = [
                    "notes" => $request->notes,
                ];

                $candidate_status = 0;

                
                $candidate_status = Candidate::where('user_id',$request->user_id)->update($candidate_save_data);
                
                if($candidate_status == 1){
                    
                    
                    $candidate = Candidate::where('user_id', $request->user_id)->first();
                    
                    $fetch_data = $candidate->toArray();
                   

                    if($candidate_status == 1){
                        return response()->json(['status'=>1,'message' => "Information Successfully Updated",'fetch_data' =>$fetch_data]);
                    }else{
                        return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save",'fetch_data' =>$fetch_data]); 
                    }
                }
                
                
            }
        }
        elseif($request->type == "education_detail"){

            
            if($request->doc_id == "null"){
                if ($request->qualification == "10th" || $request->qualification == "12th") {
                    $request->education_board = $request->education_board;
                    if($request->education_board == "other"){
                        $request->education_board = $request->board_other;
                    }
                }
                elseif ($request->qualification == "Bachelors" || $request->qualification == "Masters" || $request->qualification == "Diploma") {
                    $request->education_board = $request->uni_board;
                    if($request->uni_board == "other"){
                        $request->education_board = $request->uni_other;
                    }
                }
               
                $candidate = Candidate::where('user_id',$request->user_id)->first();
                
                $data = CandidateEducation::where('candidate_id',$candidate->id)->where('qualification',$request->qualification)->first();
                if($request->medium == "other"){
                    $medium = $request->medium_other;
                }else{
                    $medium = $request->medium;
                }
                $stream = "";
                $degree = "";
                if ($request->qualification == "10th" || $request->qualification == "Certification") {
                    $stream = "";
                    $degree = $request->certificate_name;
                    
                }
                elseif($request->qualification == "Bachelors" ||$request->qualification == "PhD" ||$request->qualification == "Masters" ){
                    $degree = $request->stream;
                }
                elseif($request->qualification == "Diploma" ){
                    $stream = $request->stream;
                }
                elseif($request->qualification == "Gap" ){
                    $stream = "";
                    $degree = "";
                }
                else{
                    $stream = $request->stream;
                    $degree = "";
                }
                $education_data = [
                    'qualification' => $request->qualification,
                    'education_board' => $request->education_board,
                    'year' => $request->admission_year,
                    'passing_year' => $request->passing_year,
                    'institute_name' => $request->institute_name,
                    'grade_percentage' => $request->grade_percentage,
                    'medium' => $medium,
                    'backlogs' => $request->backlog,
                    'gaps' => $request->gap,
                    'candidate_id' => $candidate->id,
                    'grade_type' => $request->grade_type,
                    'stream' => $stream,
                    'degree' => $degree,
                    'remark' => $request->remark,
                    'gap_reason' => $request->gap_reason,
                    'Justification' => $request->Justification,
                    'Justification_valid' => $request->Justification_valid,
                    'Justification_reason' => $request->Justification_reason,
                ];
                $data = CandidateEducation::insert($education_data);
                
                if($data == true){
                    return response()->json(['status'=>1,'message' => "Education Detail Successfully Save"]);
                }else{
                    return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save"]);  
                }
                
                // if($data == null){
                //     $education_data = [
                //         'qualification' => $request->qualification,
                //         'education_board' => $request->education_board,
                //         'year' => $request->admission_year,
                //         'passing_year' => $request->passing_year,
                //         'institute_name' => $request->institute_name,
                //         'grade_percentage' => $request->grade_percentage,
                //         'medium' => $medium,
                //         'backlogs' => $request->backlog,
                //         'gaps' => $request->gap,
                //         'candidate_id' => $candidate->id,
                //         'grade_type' => $request->grade_type,
                //         'stream' => $stream,
                //         'degree' => $degree,
                //         'remark' => $request->remark,
                //     ];
                //     $data = CandidateEducation::insert($education_data);
                    
                //     if($data == true){
                //         return response()->json(['status'=>1,'message' => "Education Detail Successfully Save"]);
                //     }else{
                //         return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save"]);  
                //     }
                // }else{
                //     return response()->json(['status'=>2,'message' => "Already Detail Exist Please Select another type Detail qualification / update Detail"]);  
                // }
                
            }else{
                
                if ($request->qualification == "10th" || $request->qualification == "12th") {
                    $request->education_board = $request->education_board;
                    if($request->education_board == "other"){
                        $request->education_board = $request->board_other;
                    }
                }
                elseif ($request->qualification == "Bachelors" || $request->qualification == "Masters" || $request->qualification == "Diploma") {
                    $request->education_board = $request->uni_board;
                    if($request->uni_board == "other"){
                        $request->education_board = $request->uni_other;
                    }
                }
                
                $candidate = Candidate::where('user_id',$request->user_id)->first();
                $data = CandidateEducation::whereNotIn('id', [$request->doc_id])->where('candidate_id',$candidate->id)->where('qualification',$request->qualification)->first();
                if($request->medium == "other"){
                    $medium = $request->medium_other;
                }else{
                    $medium = $request->medium;
                }
                $degree = "";
                $stream = "";
                if ($request->qualification == "10th" || $request->qualification == "Certification") {
                    $stream = "";
                    $degree = $request->certificate_name;
                    
                }
                elseif($request->qualification == "Bachelors" ||$request->qualification == "PhD" ||$request->qualification == "Masters" ){
                    $degree = $request->stream;
                }
                elseif($request->qualification == "Diploma" ){
                    $stream = $request->stream;
                }
                elseif($request->qualification == "Gap" ){
                    $stream = "";
                    $degree = "";
                }
                else{
                    $stream = $request->stream;
                    $degree = "";
                }
                $education_data = [
                    'qualification' => $request->qualification,
                    'education_board' => $request->education_board,
                    'year' => $request->admission_year,
                    'passing_year' => $request->passing_year,
                    'institute_name' => $request->institute_name,
                    'grade_percentage' => $request->grade_percentage,
                    'medium' => $medium,
                    'backlogs' => $request->backlog,
                    'gaps' => $request->gap,
                    'candidate_id' => $candidate->id,
                    'grade_type' => $request->grade_type,
                    'degree' => $degree,
                    'stream' => $stream,
                    'remark' => $request->remark,
                    'gap_reason' => $request->gap_reason,
                    'Justification' => $request->Justification,
                    'Justification_valid' => $request->Justification_valid,
                    'Justification_reason' => $request->Justification_reason,
                ];
                $data = CandidateEducation::where('id',$request->doc_id)->update($education_data);
                
                if($data == 1){
                    return response()->json(['status'=>1,'message' => "Education Detail Successfully Updated"]);
                }else{
                    return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Update"]);  
                }

                // if($data == null){
                //     $education_data = [
                //         'qualification' => $request->qualification,
                //         'education_board' => $request->education_board,
                //         'year' => $request->admission_year,
                //         'passing_year' => $request->passing_year,
                //         'institute_name' => $request->institute_name,
                //         'grade_percentage' => $request->grade_percentage,
                //         'medium' => $medium,
                //         'backlogs' => $request->backlog,
                //         'gaps' => $request->gap,
                //         'candidate_id' => $candidate->id,
                //         'grade_type' => $request->grade_type,
                //         'degree' => $degree,
                //         'stream' => $stream,
                //         'remark' => $request->remark,
                //     ];
                //     $data = CandidateEducation::where('id',$request->doc_id)->update($education_data);
                   
                //     if($data == 1){
                //         return response()->json(['status'=>1,'message' => "Education Detail Successfully Updated"]);
                //     }else{
                //         return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Update"]);  
                //     }
                // }else{
                //     return response()->json(['status'=>2,'message' => "Already Detail Exist Please Select another type qualification / update detail"]);  
                // }
            }
            
        }
        
        elseif($request->type == "study_abroad_form"){
            
            if($request->operation_type == "cancel"){
                $candidate = Candidate::where('user_id', $request->user_id)->first();
                $candidatedestination = CandidateDestination::where('candidate_id', $candidate->id)->first();
                if($candidatedestination == null){
                    $fetch_data = [
                        "preferred_country" => null,
                        "preferred_state" => null,
                        "preferred_city" => null,
                        "preferred_program" => null,
                        "preferred_course" => null,
                        "preffered_stream" => null,
                        "applied_university_name" => null,
                        "applied_university_status" => "No",
                        "consultant_status" => "No",
                        "consultant_name" => null,
                        "intake" => null,
                        "intake_sessions" => null,
                        "intake_months" => null,
                        "intake_years" => null,
                    ];

                }else{
                    $fetch_data = $candidatedestination->toArray();
                    
                    if($fetch_data['applied_university_name'] != Null && $fetch_data['applied_university_name'] != ""){
                        $fetch_data['applied_university'] = "Yes";
                    }else{
                        $fetch_data['applied_university'] = "No";
                    }

                    if($fetch_data['consultant_name'] != Null && $fetch_data['consultant_name'] != ""){
                        $fetch_data['consultant'] = "Yes";
                    }else{
                        $fetch_data['consultant'] = "No";
                    }
                  
                }
                return response()->json(['status'=>4,'fetch_data'=>$fetch_data]);

            }else{

                $candidate = Candidate::where('user_id',$request->user_id)->first();

                if($request->applied_university == "Yes"){
                    
                }else{
                    $request->applied_university_name = NULL;
                }

                if($request->consultant == "Yes"){
                    
                }else{
                    $request->consultant_name = NULL;
                }

            
                $_POST['intake_years'] = $request->intake_years[0];
                $_POST['intake_months'] = $request->intake_months[0];
                $_POST['preferred_country'] =  $request->preferred_country[0];
                
                // $validator = Validator::make($_POST, [
                //     'preferred_country' => 'required',
                //     'intake_years' => 'required',
                //     'intake_months' => 'required',
                    
                // ]);
            
                
                // if ($validator->fails()) {
                //     $errors = $validator->errors();
                //     return response()->json([
                //         'error' => $errors,
                //         'status' => 3
                //     ]);
                // }
                
                $candidate_save_data = [
                    "intake_years" => $request->intake_years[0],
                    "intake_months" => $request->intake_months[0],
                    "consultant_name" => $request->consultant_name,
                    "preferred_country" => $request->preferred_country[0],
                    "preferred_course" => $request->preferred_course,
                    "applied_university_name" => $request->applied_university_name,
                    "preferred_program" => $request->preferred_program[0],
                    "preffered_stream" => $request->preffered_stream[0],
                    'candidate_id' => $candidate->id,
                ];
                
                
                
                $candidate_status = CandidateDestination::where('candidate_id',$candidate->id)->update($candidate_save_data);
                
                if($candidate_status == 1){
                    $candidate = Candidate::where('user_id', $request->user_id)->first();
                    $candidatedestination = CandidateDestination::where('candidate_id', $candidate->id)->first();
                    if($candidatedestination == null){
                        $fetch_data = [
                            "preferred_country" => null,
                            "preferred_state" => null,
                            "preferred_city" => null,
                            "preferred_program" => null,
                            "preferred_course" => null,
                            "preffered_stream" => null,
                            "applied_university_name" => null,
                            "applied_university_status" => "No",
                            "consultant_status" => "No",
                            "consultant_name" => null,
                            "intake" => null,
                            "intake_sessions" => null,
                            "intake_months" => null,
                            "intake_years" => null,
                        ];

                    }else{
                        $fetch_data = $candidatedestination->toArray();
                        
                        if($fetch_data['applied_university_name'] != Null && $fetch_data['applied_university_name'] != ""){
                            $fetch_data['applied_university'] = "Yes";
                        }else{
                            $fetch_data['applied_university'] = "No";
                        }

                        if($fetch_data['consultant_name'] != Null && $fetch_data['consultant_name'] != ""){
                            $fetch_data['consultant'] = "Yes";
                        }else{
                            $fetch_data['consultant'] = "No";
                        }
                    
                    }
                    
                    if( $candidate_status > 0){
                        return response()->json(['status'=>1,'message' => "Information Successfully Updated",'fetch_data'=>$fetch_data]);
                    }else{
                          
                    }
                }else{

                    $candidate_status = CandidateDestination::insert($candidate_save_data);
                    

                    $candidate = Candidate::where('user_id', $request->user_id)->first();
                    $candidatedestination = CandidateDestination::where('candidate_id', $candidate->id)->first();
                    if($candidatedestination == null){
                        $fetch_data = [
                            "preferred_country" => null,
                            "preferred_state" => null,
                            "preferred_city" => null,
                            "preferred_program" => null,
                            "preferred_course" => null,
                            "preffered_stream" => null,
                            "applied_university_name" => null,
                            "applied_university_status" => "No",
                            "consultant_status" => "No",
                            "consultant_name" => null,
                            "intake" => null,
                            "intake_sessions" => null,
                            "intake_months" => null,
                            "intake_years" => null,
                        ];

                    }else{
                        $fetch_data = $candidatedestination->toArray();
                        
                        if($fetch_data['applied_university_name'] != Null && $fetch_data['applied_university_name'] != ""){
                            $fetch_data['applied_university'] = "Yes";
                        }else{
                            $fetch_data['applied_university'] = "No";
                        }

                        if($fetch_data['consultant_name'] != Null && $fetch_data['consultant_name'] != ""){
                            $fetch_data['consultant'] = "Yes";
                        }else{
                            $fetch_data['consultant'] = "No";
                        }
                    
                    }
                    
                    if( $candidate_status > 0){
                        return response()->json(['status'=>1,'message' => "Information Successfully Updated",'fetch_data'=>$fetch_data]);
                    }else{
                        
                        
                        return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save",'fetch_data'=>$fetch_data]); 
                        
                    }
                }
            }
            
        }
        elseif($request->type == "budget_preference_form"){
            if($request->operation_type == "cancel"){
                $candidate = Candidate::where('user_id', $request->user_id)->first();
                
                $fetch_data = $candidate->ToArray();
                
                return response()->json(['status'=>4,'fetch_data'=>$fetch_data]);

            }else{
                $candidate_save_data = [
                    "budget" => $request->budget,
                    "fund_source" => $request->fund_source,
                    "loan_type" => $request->loan_type,
                ];

                $candidate_status = Candidate::where('user_id',$request->user_id)->update($candidate_save_data);
                if($candidate_status == 1){
                    $candidate = Candidate::where('user_id', $request->user_id)->first();
                
                    $fetch_data = $candidate->ToArray();
                    if( $candidate_status == 1){
                        return response()->json(['status'=>1,'message' => "Information Successfully Updated"]);
                    }else{
                        return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save"]); 
                    }
                }
                
            }
            
        }
        elseif($request->type == "test_status_form"){
            
            if($request->operation_type == "cancel"){
                $candidate = Candidate::where('user_id', $request->user_id)->first();
                $candidate_exam_study_abroad= CandidateExam::where('candidate_id',$candidate->id)->where('test_type',"1")->first();
                $candidate_exam_english= CandidateExam::where('candidate_id',$candidate->id)->where('test_type',"0")->first();
                $examList = Exam::get();
                $englishFlag = false;
                $abroadFlag = false;

                foreach ($examList as $exam) {
                    if (@$candidate_exam_study_abroad && @$exam->type === "1" && @$exam->name === @$candidate_exam_study_abroad->test_name) {
                        @$abroadFlag = true;
                    }
                    if (@$candidate_exam_english && @$exam->type === "0" && @$exam->name === @$candidate_exam_english->test_name) {
                        @$englishFlag = true;
                    }
                }

                foreach ($examList as $exam) {
                    if (@$candidate_exam_study_abroad && @$exam->type === "1" && @$exam->name === @$candidate_exam_study_abroad->test_name ) {
                        @$abroadFlag = true;
                    }
                    if (@$candidate_exam_english && @$exam->type === "0" && @$exam->name === @$candidate_exam_english->test_name) {
                        @$englishFlag = true;
                    }
                }

                
                
                if (@$englishFlag == false && (@$candidate_exam_english->test_name == null || @$candidate_exam_english->test_name == "")) {
                    @$candidate_exam_english->english_other = @$candidate_exam_english->test_name;
                    @$candidate_exam_english->test_name = "";
                }else if($englishFlag == false){
                    @$candidate_exam_english->english_other = @$candidate_exam_english->test_name;
                    @$candidate_exam_english->test_name = "other";
                }


               
                
                if (@$abroadFlag == false && (@$candidate_exam_study_abroad->test_name == null || @$candidate_exam_study_abroad->test_name == "")) {
                    @$candidate_exam_study_abroad->aptitude_other = @$candidate_exam_study_abroad->test_name;
                    @$candidate_exam_study_abroad->test_name = "";
                }else if(@$abroadFlag == false){
                    @$candidate_exam_study_abroad->aptitude_other = @$candidate_exam_study_abroad->test_name;
                    @$candidate_exam_study_abroad->test_name = "other";
                }

                @$englishTestData = (@$candidate_exam_english) ? [
                    'english_test' => @$candidate_exam_english->test_name,
                    'english_other' => @$candidate_exam_english->english_other,
                    'english_test_scores' => @$candidate_exam_english->test_scores,
                    'english_test_taken_date' => $candidate_exam_english->test_taken_date ? date('Y-m-d', strtotime($candidate_exam_english->test_taken_date)) : "",
                    'english_test_result_date' => $candidate_exam_english->test_result_date ? date('Y-m-d', strtotime($candidate_exam_english->test_result_date)) : "",
                    'english_speaking_scores' => @$candidate_exam_english->speaking_scores,
                    'english_reading_scores' => @$candidate_exam_english->reading_scores,
                    'english_listening_scores' => @$candidate_exam_english->listening_scores,
                    'english_writing_scores' => @$candidate_exam_english->writing_scores,
                ] : [
                    'english_test' => "",
                    'english_test_scores' => "",
                    'english_test_taken_date' => "",
                    'english_test_result_date' => "",
                    'english_speaking_scores' => "",
                    'english_reading_scores' => "",
                    'english_listening_scores' => "",
                    'english_writing_scores' => "",
                ];

                @$abroadTestData = (@$candidate_exam_study_abroad) ? [
                    'aptitude_other' => @$candidate_exam_study_abroad->aptitude_other,
                    'aptitude_test' => @$candidate_exam_study_abroad->test_name,
                    'aptitude_test_scores' => @$candidate_exam_study_abroad->test_scores,
                    'aptitude_test_taken_date' => $candidate_exam_study_abroad->test_taken_date ? date('Y-m-d', strtotime($candidate_exam_study_abroad->test_taken_date)) : "",
                    'aptitude_test_result_date' => $candidate_exam_study_abroad->test_result_date ? date('Y-m-d', strtotime($candidate_exam_study_abroad->test_result_date)) : "",
                ] : [
                    'aptitude_test' => "",
                    'aptitude_test_scores' => "",
                    'aptitude_test_taken_date' => "",
                    'aptitude_test_result_date' => "",
                ];

                @$fetch_data = array_merge(@$abroadTestData, @$englishTestData);

                return response()->json(['status'=>4,'fetch_data'=>@$fetch_data]);

            }
            else{


                $validator = Validator::make($request->all(), [
                    // 'english_test_taken_date' => 'required|date|max:20',
                    // 'english_test_result_date' => 'required|date|max:20',
                    'english_test_scores' => 'required|max:20',
                    'english_test' => 'required|max:20',
                ]);
                
                if ($request->english_test != "NT") {
                    if ($validator->fails()) {
                        $errors = $validator->errors();
                        return response()->json([
                            'error' => $errors,
                            'status' => 3
                        ]);
                    }
                }
                
                if ($request->english_test == "other") {
                    $validator = Validator::make($request->all(), [
                        'english_other' => 'required|max:50',
                    ]);
                
                    if ($validator->fails()) {
                        $errors = $validator->errors();
                        return response()->json([
                            'error' => $errors,
                            'status' => 3
                        ]);
                    }
                }

                // $validator = Validator::make($request->all(), [
                //     // 'aptitude_test_taken_date' => 'required|date|max:20',
                //     // 'aptitude_test_result_date' => 'required|date|max:20',
                //     // 'aptitude_test_scores' => 'required|max:20',
                //     'aptitude_test' => 'required|max:20',
                // ]);
                
                // if ($request->aptitude_test != "NT") {
                //     if ($validator->fails()) {
                //         $errors = $validator->errors();
                //         return response()->json([
                //             'error' => $errors,
                //             'status' => 3
                //         ]);
                //     }
                // }

                
                
               
                $candidate = Candidate::where('user_id',$request->user_id)->first();
                if($request->english_test == "other" ){
                    $request->english_test = $request->english_other;
                }
                $english_test_data = [
                    'candidate_id' =>$candidate->id,
                    'test_type' => "0",
                    'test_name' => $request->english_test,
                    
                    'test_scores' => $request->english_test_scores,
                    'test_taken_date' => $request->english_test_taken_date,
                    'test_result_date' => $request->english_test_result_date,
                    'speaking_scores' => $request->english_speaking_scores,
                    'reading_scores' => $request->english_reading_scores,
                    'listening_scores' => $request->english_listening_scores,
                    'writing_scores' => $request->english_writing_scores,
                ];

                
                if(CandidateExam::where('candidate_id',$candidate->id)->where('test_type',"0")->exists()){ 
                    $english_status = CandidateExam::where('candidate_id',$candidate->id)->where('test_type',"0")->update($english_test_data);
                }else{
                    $english_status = CandidateExam::insert($english_test_data);
                }
            
                if($request->aptitude_test == "other"){
                    $request->aptitude_test = $request->aptitude_other;
                }
                $abroad_test_data = [
                    'candidate_id' =>$candidate->id,
                    'test_type' => "1",
                    'test_name' => $request->aptitude_test,
                    'test_scores' => $request->aptitude_test_scores,
                    'test_taken_date' => $request->aptitude_test_taken_date,
                    'test_result_date' => $request->aptitude_test_result_date,
                ];
    
                if(CandidateExam::where('candidate_id',$candidate->id)->where('test_type',"1")->exists()){ 
                    $abroad_status = CandidateExam::where('candidate_id',$candidate->id)->where('test_type',"1")->update($abroad_test_data);
                }else{
                    $abroad_status =  CandidateExam::insert($abroad_test_data);
                }
                $candidate = Candidate::where('user_id', $request->user_id)->first();
                $candidate_exam_study_abroad= CandidateExam::where('candidate_id',$candidate->id)->where('test_type',"1")->first();
                $candidate_exam_english= CandidateExam::where('candidate_id',$candidate->id)->where('test_type',"0")->first();
                $examList = Exam::get();
                $englishFlag = false;
                $abroadFlag = false;
                
                foreach ($examList as $exam) {
                    if ($candidate_exam_study_abroad && $exam->type === "1" && $exam->name === $candidate_exam_study_abroad->test_name || "NT" == $candidate_exam_study_abroad->test_name) {
                        $abroadFlag = true;
                        
                    }
                    if ($candidate_exam_english && $exam->type === "0" && $exam->name === $candidate_exam_english->test_name || "NT" == $candidate_exam_english->test_name) {
                        $englishFlag = true;
                        
                    }
                }
                //dd($abroadFlag);
                
                
                if ($englishFlag == false && ($candidate_exam_english->test_name == null || $candidate_exam_english->test_name == "")) {
                    $candidate_exam_english->english_other = $candidate_exam_english->test_name;
                    $candidate_exam_english->test_name = "";
                }else if($englishFlag == false){
                    $candidate_exam_english->english_other = $candidate_exam_english->test_name;
                    $candidate_exam_english->test_name = "other";
                }

                


               
                
                if ($abroadFlag == false && ($candidate_exam_study_abroad->test_name == null || $candidate_exam_study_abroad->test_name == "")) {
                    $candidate_exam_study_abroad->aptitude_other = $candidate_exam_study_abroad->test_name;
                    $candidate_exam_study_abroad->test_name = "";
                }else if($abroadFlag == false){
                    $candidate_exam_study_abroad->aptitude_other = $candidate_exam_study_abroad->test_name;
                    $candidate_exam_study_abroad->test_name = "other";
                }
                

                $englishTestData = ($candidate_exam_english) ? [
                    'english_test' => $candidate_exam_english->test_name,
                    'english_other' => $candidate_exam_english->english_other,
                    'english_test_scores' => $candidate_exam_english->test_scores,
                    
                    'english_test_taken_date' => $candidate_exam_english->test_taken_date ? date('Y-m-d', strtotime($candidate_exam_english->test_taken_date)) : "",
                    'english_test_result_date' => $candidate_exam_english->test_result_date ? date('Y-m-d', strtotime($candidate_exam_english->test_result_date)) : "",
                    'english_speaking_scores' => $candidate_exam_english->speaking_scores,
                    'english_reading_scores' => $candidate_exam_english->reading_scores,
                    'english_listening_scores' => $candidate_exam_english->listening_scores,
                    'english_writing_scores' => $candidate_exam_english->writing_scores,
                ] : [
                    'english_test' => "",
                    'english_test_scores' => "",
                    'english_test_taken_date' => "",
                    'english_test_result_date' => "",
                    'english_speaking_scores' => "",
                    'english_reading_scores' => "",
                    'english_listening_scores' => "",
                    'english_writing_scores' => "",
                ];
                
                $abroadTestData = ($candidate_exam_study_abroad) ? [
                    'aptitude_other' => $candidate_exam_study_abroad->aptitude_other,
                    'aptitude_test' => $candidate_exam_study_abroad->test_name,
                    'aptitude_test_scores' => $candidate_exam_study_abroad->test_scores,
                    'aptitude_test_taken_date' => $candidate_exam_study_abroad->test_taken_date ? date('Y-m-d', strtotime($candidate_exam_study_abroad->test_taken_date)) : "",
                    'aptitude_test_result_date' => $candidate_exam_study_abroad->test_result_date ? date('Y-m-d', strtotime($candidate_exam_study_abroad->test_result_date)) : "",
                ] : [
                    'aptitude_test' => "",
                    'aptitude_test_scores' => "",
                    'aptitude_test_taken_date' => "",
                    'aptitude_test_result_date' => "",
                ];
               
                $fetch_data = array_merge($abroadTestData, $englishTestData);

                if( $english_status > 0 && $abroad_status > 0){
                    return response()->json(['status'=>1,'message' => "Information Successfully Updated",'fetch_data' => $fetch_data]);
                }else{
                    return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save",'fetch_data' => $fetch_data]); 
                }
            }
            
        }
        elseif($request->type == "webinar_form"){
            if($request->webinar_id == null){
                return response()->json(['status'=>2,'message' => "Webinar Is null Please Select Valid Webinar"]); 
            }
            $candidate = Candidate::where('user_id',$request->user_id)->first();
            
            $webinar = [
                'candidate_id' =>$candidate->id,
                'webinar_id' => $request->webinar_id,
                
            ];
            if(InterestedCandidatesWebinar::where('candidate_id',$candidate->id)->where('webinar_id',$request->webinar_id)->exists()){
                return response()->json(['status'=>1,'message' => "You Are Already Join This Webinar"]); 
            }
            else{
                $webinar_status = InterestedCandidatesWebinar::insert($webinar);
                if( $webinar_status > 0){
                    $webinar_history = InterestedCandidatesWebinar::where('candidate_id', $candidate->id)->get();
                    foreach($webinar_history as $webinar_history_use){
                        $webinar = Webinars::where('id', $webinar_history_use->webinar_id)->first();
                
                        if($webinar != null){
                            $webinar_history_use->webinar_name = $webinar->webinar_name;
                            $webinar_history_use->webinar_link = $webinar->webinar_link;
                            $webinar_history_use->dateTime = $webinar->dateTime;
                        } 
                    }
            
                    
                    $code = "";
                    foreach ($webinar_history as $webinar_history_use){
                        $code .= "<tr>
                            <td class='t-col'>" . $webinar_history_use->webinar_name . "</td>
                            <td class='t-col'>" . date('d-m-Y H:i:s', strtotime($webinar_history_use->dateTime)) . "</td>
                            <td class='t-col'>";
                        if (!empty($webinar_history_use->webinar_link)) {
                            $code .= "<a href='" . $webinar_history_use->webinar_link . "' style='color: blue;'>Join Link</a>";
                        } else {
                            $code .= "--";
                        }
                        $code .= "</td>
                            <td class='t-col'>" . ($webinar_history_use->attended == 1 ? 'Yes' : 'No') . "</td>
                            <td class='t-col'>
                                <a href='javascript:;' data-id='" . $webinar_history_use->id . "' class='delete_webinar_btn del-detail' onclick='delete_webinar_btn(" . $webinar_history_use->id . ")'>
                                    <img class='delete-webinar-img' src='" . asset('backend/lead-management/images/delete.svg') . "' alt='delete-icon'>
                                </a>
                            </td>
                        </tr>";

                    }


                    return response()->json(['status'=>1,'message' => "Webinar Successfully Added",'code' => $code]);
                }else{
                    return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save"]); 
                }
            }
        }

        elseif($request->type == "add_tests"){

            $user_id = $request->user_id;
            $test_id = $request->test_id;
            $userMockTestData = UsersMockTest::where('user_id', $user_id)->first();
            $mockTestResults = MockTestResult::where('user_id', $user_id)->get()->toArray();
            $tests = IeltsMockTest::select('id')->get()->toArray();
            if ($test_id == null) {
                return response()->json(['status' => 2, 'message' => "Test Is null. Please Select Valid Test"]); 
            }
            
            if ($userMockTestData == null) {
               
                $words = explode(',', $test_id);
                if (isset($words[0]) && is_numeric($words[0])) {
                    array_shift($words);
                }
                $test_id = implode(',', $words);
                
                UsersMockTest::create([
                    'user_id' => $user_id,
                    'ielts_test_ids' => $test_id,
                ]);
                return response()->json(['status' => 1, 'message' => "Test Successfully Added"]); 
              
            } else {
                $oldTests = explode(",", $userMockTestData->ielts_test_ids);
                $newTests = explode(",", $test_id);
                $missingTests = array_diff($newTests, $oldTests);
                if ($missingTests == []) {
                    return response()->json(['status' => 1, 'message' => "You Are Already Joined This Test"]); 
                } else {
                    $testIdsToAdd = implode(',', $missingTests);
                    $test_data = $userMockTestData->ielts_test_ids . ',' . $testIdsToAdd;
                    $words = explode(',', $test_data);
                    if (isset($words[0]) && is_numeric($words[0])) {
                        array_shift($words);
                    }
                   
                    $test_data = implode(',', $words);
                    
                    $userMockTestData->update(['ielts_test_ids' => $test_data]);
                    return response()->json(['status' => 1, 'message' => "Test Successfully Added"]); 
                    $response = ['status' => 1, 'message' => "Test Successfully Added"];
                }
            }   
            
        }
        
        elseif($request->type == "lead_type"){
           
            $data = [
              
                'lead_type' => $request->lead_type,
            ];
          
            $stage_data = User::where('id',$request->user_id)->update($data);
            
            if( $stage_data > 0){
                return response()->json(['status'=>1,'message' => "Lead Changed Successfully","stage" => $request->stage]);
            }else{
                $stage_data = User::where('id',$request->user_id)->first();
                return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save","stage" => $stage_data->stages]); 
            }
        }

        elseif($request->type == "stage_change"){
            $candidate = Candidate::where('user_id',$request->user_id)->first();
            $user = User::findOrFail($candidate->user_id);
           
            if (!empty($request->stage) && $request->stage !== $user->stages) {
               
                UserTimeline::create([
                    'user_id' => $user->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
                ]);
            }
            $data = [
              
                'stages' => $request->stage,
            ];
          
            $stage_data = User::where('id',$request->user_id)->update($data);

            

            
            $user = User::findOrFail($candidate->user_id);
          

            // Generate HTML for user timeline
            $userTimelineHtml = '';
            foreach ($user->timeLine as $timeLine) {
                $userTimelineHtml .= '<tr>';
                if (!empty($timeLine->event)) {
                    $userTimelineHtml .= '<td class="t-col">
                    <div class="event">
                        <span class="date evt-name">AC</span>
                        <div class="tooltip">
                          Assigned Changed
                        </div>
                    </div>
                </td> ';
    
                } else {
                    $userTimelineHtml .= '<td class="t-col">
                    <div class="event">
                        <span class="date evt-name">SC</span>
                        <div class="tooltip">
                          Stage Changed
                        </div>
                    </div>
                </td>';
                }
                
                if ($timeLine->stages == 'Assign To') {
                    $userTimelineHtml .= '<td class="t-col"><span>--</td>';
                } else {
                    $userTimelineHtml .= '<td class="t-col"><span>' . $timeLine->stages . '</td>';
                }
            
                $userTimelineHtml .= '<td class="t-col"><span>' . $timeLine->comment . '</td>';
                
                if (!empty($timeLine->auth_id)) {
                    $userTimelineHtml .= '<td class="t-col"><span>' . ucwords(adminIdToNameGet($timeLine->auth_id)) . '</td>';
                } else {
                    $userTimelineHtml .= '<td class="t-col"><span>--</td>';
                }
                
                if (!empty($timeLine->created_at)) {
                    $userTimelineHtml .= '<td class="t-col"><span>' . dateMonthTimeFormat($timeLine->created_at) . '</td>';
                } else {
                    $userTimelineHtml .= '<td class="t-col"><span>--</td>';
                }
                $userTimelineHtml .= '</tr>';
            }
            
            
            // Now you can use $userTimelineHtml and $webinarHistoryHtml in your response
            
            if( $stage_data > 0){
                $stage_name = getStageGroup($request->stage);
                return response()->json(['status'=>1,'message' => "Stage Changed Successfully","stage" => $request->stage, "stage_name" => $stage_name,"code"=> $userTimelineHtml]);
            }else{
                $stage_data = User::where('id',$request->user_id)->first();
                $stage_name = getStageGroup($stage_data->stages);
                return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save","stage" => $stage_data->stages ,"stage_name" => $stage_name, "code"=> $userTimelineHtml]); 
            }
        }
        elseif($request->type == "stage_save"){

            $candidate = Candidate::where('user_id',$request->user_id)->first();
            $user = User::findOrFail($candidate->user_id);
            
            if (!empty($request->stage) && $request->stage !== $user->stages) {
               
                UserTimeline::create([
                    'user_id' => $user->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->dropped_reason == "other"){
                $request->dropped_reason = $request->dropped_reason1;

            }
            
            $data = [
              
                'stages' => $request->stage,
                'dropped_reason' => $request->dropped_reason,
                'stage_expiry_date' => $request->expire_date,
                
            ];
          
            $stage_data = User::where('id',$request->user_id)->update($data);

            $user = User::findOrFail($candidate->user_id);
          

            // Generate HTML for user timeline
            $userTimelineHtml = '';
            foreach ($user->timeLine as $timeLine) {
                $userTimelineHtml .= '<tr>';
                if (!empty($timeLine->event)) {
                    $userTimelineHtml .= '<td class="t-col">
                    <div class="event">
                        <span class="date evt-name">AC</span>
                        <div class="tooltip">
                          Assigned Changed
                        </div>
                    </div>
                </td> ';
    
                } else {
                    $userTimelineHtml .= '<td class="t-col">
                    <div class="event">
                        <span class="date evt-name">SC</span>
                        <div class="tooltip">
                          Stage Changed
                        </div>
                    </div>
                </td>';
                }
                
                if ($timeLine->stages == 'Assign To') {
                    $userTimelineHtml .= '<td class="t-col"><span>--</td>';
                } else {
                    $userTimelineHtml .= '<td class="t-col"><span>' . $timeLine->stages . '</td>';
                }
            
                $userTimelineHtml .= '<td class="t-col"><span>' . $timeLine->comment . '</td>';
                
                if (!empty($timeLine->auth_id)) {
                    $userTimelineHtml .= '<td class="t-col"><span>' . ucwords(adminIdToNameGet($timeLine->auth_id)) . '</td>';
                } else {
                    $userTimelineHtml .= '<td class="t-col"><span>--</td>';
                }
                
                if (!empty($timeLine->created_at)) {
                    $userTimelineHtml .= '<td class="t-col"><span>' . dateMonthTimeFormat($timeLine->created_at) . '</td>';
                } else {
                    $userTimelineHtml .= '<td class="t-col"><span>--</td>';
                }
                $userTimelineHtml .= '</tr>';
            }
            
            
            // Now you can use $userTimelineHtml and $webinarHistoryHtml in your response
            
            if( $stage_data > 0){
                $stage_name = getStageGroup($request->stage);
                return response()->json(['status'=>1,'message' => "Stage Changed Successfully","stage" => $request->stage, "stage_name" => $stage_name,"code"=> $userTimelineHtml]);
            }else{
                $stage_data = User::where('id',$request->user_id)->first();
                $stage_name = getStageGroup($stage_data->stages);
                return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save","stage" => $stage_data->stages ,"stage_name" => $stage_name, "code"=> $userTimelineHtml]); 
            }
        }
        elseif($request->type == "highest_education_change"){
            $candidate = Candidate::where('user_id',$request->user_id)->first();
            $user = User::findOrFail($candidate->user_id); 
            
            $data = [
              
                'highest_education' => $request->highest_education,
            ];
            $candidate = Candidate::where('user_id',$request->user_id)->update($data); 
           
            if( $candidate > 0){
                $highest_education = Candidate::where('user_id',$request->user_id)->first()->highest_education;
                
                return response()->json(['status'=>1,'message' => "Highest Education Changed Successfully", "highest_education" => $highest_education]);
            }else{
                $candidate = User::where('id',$request->user_id)->first();
                $highest_education = Candidate::where('user_id',$request->user_id)->first()->highest_education;
                return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save", "highest_education" => $highest_education]); 
            }
        }
        elseif($request->type == "work_experience"){
            // $validator = Validator::make($request->all(), [
            //     'organization_name' => 'required| max: 250',
            //     'organization_type' => 'required| max: 250',
            //     'organization_address' => 'required| max: 250',
            //     'position' => 'required| max: 250',
            //     'start_date' => 'required| max: 250',
            //     'end_date' => 'required| max: 250',
            //     'experience_letter' => 'required| max: 250',
            //     'mode_of_salery' => 'required| max: 250',
            // ]);
        
            // if ($validator->fails()) {
            //     $errors = $validator->errors();
            //     return response()->json([
            //         'error' => $errors,
            //         'status' => 3
            //     ]);
            // } 
            
            if($request->id != null){
                $workExperience = WorkExperience::find($request->id);

                if ($workExperience) {
               
                    $workExperience->organization_name = $request->organization_name;
                    $workExperience->organization_type = $request->organization_type;
                    $workExperience->organization_address = $request->organization_address;
                    $workExperience->position = $request->position;
                    $workExperience->start_date = $request->start_date;
                    $workExperience->end_date = $request->end_date;
                    $workExperience->name = $request->name;
                    $workExperience->department_name = $request->department_name;
                    $workExperience->mobile_number = $request->mobile_number;
                    $workExperience->experience_letter = $request->experience_letter;
                    $workExperience->mode_of_salery = $request->mode_of_salery;
                    $workExperience->Justification = $request->Justification;
                    $workExperience->Justification_valid = $request->Justification_valid;
                    $workExperience->Justification_reason = $request->Justification_reason;
                    $workExperience->save();

                    return response()->json(['status' => 1, 'message' => "Data Successfully Updated"]);
                } else {
                    return response()->json(['status' => 2, 'message' => "Record not found for the given ID"]);
                }
            }else{
                $candidate = Candidate::where('user_id',$request->user_id)->first();
                $workExperience = new WorkExperience;

                $workExperience->candidate_id = $candidate->id;
                $workExperience->organization_name = $request->organization_name;
                $workExperience->organization_type = $request->organization_type;
                $workExperience->organization_address = $request->organization_address;
                $workExperience->position = $request->position;
                $workExperience->start_date = $request->start_date;
                $workExperience->end_date = $request->end_date;
                $workExperience->name = $request->name;
                $workExperience->department_name = $request->department_name;
                $workExperience->mobile_number = $request->mobile_number;
                $workExperience->experience_letter = $request->experience_letter;
                $workExperience->mode_of_salery = $request->mode_of_salery;
                $workExperience->Justification = $request->Justification;
                $workExperience->Justification_valid = $request->Justification_valid;
                $workExperience->Justification_reason = $request->Justification_reason;
                $workExperience->save();

                if ($workExperience->id) {
                    return response()->json(['status' => 1, 'message' => "Data Successfully Saved"]);
                } else {
                    return response()->json(['status' => 2, 'message' => "Please Try Again Something Went Wrong, Data Not Saved"]);
                }
            }
            return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save"]); 
        }
        elseif($request->type == "save_suggested_course"){
            
            if(userCan('candidateApplication.create')){


                $validator = Validator::make($request->all(), [
                    'partner_application_id' => 'required',
                    // 'candidate_id' => 'required',
                    // 'university_id' => 'required',
                    // 'course' => 'required',
                    // 'intake' => 'required',
                    'partner' => 'required',
                    // 'status' => 'required',
                    // 'next_step' => 'required',
                ]);
            
                if ($validator->fails()) {
                    $errors = $validator->errors();
                    return response()->json([
                        'error' => $errors,
                        'status' => 3
                    ]);
                } 

                $candidate = Candidate::where('user_id',$request->id)->first();

                $datetime = NUll;
                if (!empty($request->datetime)) {
                    $datetime = Carbon::parse($request->datetime);
                }

                $data = CandidateApplication::create([
                    'partner_application_id' => $request->partner_application_id,
                    'candidate_id' => $candidate->id,
                    'university_id' => $request->university_id,
                    'course' => $request->course,
                    // 'intake' => $request->intake,
                    'partner' => $request->partner,
                    'status' => $request->status,
                    'next_step' => $request->next_step,
                    'intake_months' =>  $request->intake_months[0],
                    'intake_years' =>  $request->intake_years[0],
                    'university_name' => $request->university_id ,
                    'course_name' => $request->course,
                    // 'university_name' => $request->university_id == 0 ? $request->university_name :null,
                    // 'course_name' =>$request->course == 0 ? $request->course_name :null,
                    'created_by' => Auth()->user()->id,
                    'datetime' => $datetime,
                    // 'created_by_name' => $request->created_by_name,
                    'stage_reason' => $request->stage_reason,
                ]);

                if(!empty($request->status)){
                    $new_data = CandidateApplicationTimeline::create([
                        'application_id' => $data->id,
                        'candidate_id' => $data->candidate_id,
                        'status' => $request->status,
                        'comment' => "Status Changed from " . "-NA-" . " to " . (@$request->status ? @$request->status : "-NA-") . ".",
                        'auth_id' => Auth::user()->id,
                        'auth_type' => "admin",
                    ]);
                    if($new_data){
                        return response()->json(['status'=>1,'message' => "Application Create Successfully With Time line",'data' => $data->id]);
                    }else{
                        return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save"]); 
                    }
                }else{
                    if( $data){
                        return response()->json(['status'=>1,'message' => "Application Create Successfully",'data' => $data->id]);
                    }else{
                        return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Detail Not Save"]); 
                    }
                }
            }
            else{
                return response()->json(['status'=>2,'message' => "You Are Not Allow to Create application contact to admin"]); 
            }
            
            
            
            
        }
        
    }

    public function education_detail_delete(Request $request){
        abort_if(!userCan('candidate.update'), 403);
        if($request->doc_type == "education"){
            $data = CandidateEducation::where('id', $request->doc_delete_id)->delete();
            if($data == 1){
                return response()->json(['status'=>1,'message' => "Education Detail Successfully Deleted","type" =>$request->doc_type]);
            }else{
                return response()->json(['status'=>0,'message' => "Please Try Again Something Wrong Detail Not Delete","type" =>$request->doc_type]);  
            }
        }else if($request->doc_type == "document"){
            
            $data = Documents::where('id', $request->doc_delete_id)->delete();
            if($data == 1){
                return response()->json(['status'=>1,'message' => "Document Successfully Deleted","type" =>$request->doc_type]);
            }else{
                return response()->json(['status'=>0,'message' => "Please Try Again Something Wrong Document Not Delete","type" =>$request->doc_type]);  
            }
        
        }else if($request->doc_type == "work_experience"){
                
            $data = WorkExperience::where('id', $request->doc_delete_id)->delete();
            if($data == 1){
                return response()->json(['status'=>1,'message' => "Work Experience Detail Successfully Deleted","type" =>$request->doc_type]);
            }else{
                return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong Work Experience Detail Not Delete","type" =>$request->doc_type]);  
            }
        }
        else if($request->doc_type == "webinar_delete"){

                if($request->doc_delete_id == null){
                    return response()->json(['status'=>2,'message' => "Webinar Is Not Valid"]); 
                }
                $data = InterestedCandidatesWebinar::where('id',$request->doc_delete_id)->delete();
               
                $candidate = Candidate::where('user_id',$request->user_id)->first();
                if($data){
                    
                    $webinar_history = InterestedCandidatesWebinar::where('candidate_id', $candidate->id)->get();
                    foreach($webinar_history as $webinar_history_use){
                        $webinar = Webinars::where('id', $webinar_history_use->webinar_id)->first();
                
                        if($webinar != null){
                            $webinar_history_use->webinar_name = $webinar->webinar_name;
                            $webinar_history_use->webinar_link = $webinar->webinar_link;
                            $webinar_history_use->dateTime = $webinar->dateTime;
                        } 
                    }
                
                    $code = "";
                    foreach ($webinar_history as $webinar_history_use) {
                        $code .= "<tr>
                            <td class='t-col'>" . $webinar_history_use->webinar_name . "</td>
                            <td class='t-col'>" . date('d-m-Y H:i:s', strtotime($webinar_history_use->dateTime)) . "</td>
                            <td class='t-col'>";
                        if (!empty($webinar_history_use->webinar_link)) {
                            $code .= "<a href='" . $webinar_history_use->webinar_link . "' style='color: blue;'>Join Link</a>";
                        } else {
                            $code .= "--";
                        }
                        $code .= "</td>
                            <td class='t-col'>" . ($webinar_history_use->attended == 1 ? 'Yes' : 'No') . "</td>
                            <td class='t-col'>";
                        if (userCan('candidate.create')) {
                            $code .= "<a href='javascript:;' data-id='" . $webinar_history_use->id . "' class='delete_webinar_btn del-detail' onclick='delete_webinar_btn(" . $webinar_history_use->id . ")'>
                                <img class='delete-webinar-img' src='" . asset('backend/lead-management/images/delete.svg') . "' alt='delete-icon'>
                            </a>";
                        }
                        $code .= "</td>
                        </tr>";
                    }
                return response()->json(['status'=>1,'message' => "Webinar Successfully Deleted",'code' => $code,"type" =>$request->doc_type]);
    
                }   
                else{
                    $webinar_history = InterestedCandidatesWebinar::where('candidate_id', $candidate->id)->get();
                    foreach($webinar_history as $webinar_history_use){
                        $webinar = Webinars::where('id', $webinar_history_use->webinar_id)->first();
                
                        if($webinar != null){
                            $webinar_history_use->webinar_name = $webinar->webinar_name;
                            $webinar_history_use->webinar_link = $webinar->webinar_link;
                            $webinar_history_use->dateTime = $webinar->dateTime;
                        } 
                    }
                    $code = "";
                    foreach ($webinar_history as $webinar_history_use){
                        $code .= "<tr>
                            <td class='t-col'>" . $webinar_history_use->webinar_name . "</td>
                            <td class='t-col'>" . date('d-m-Y H:i:s', strtotime($webinar_history_use->dateTime)) . "</td>
                            <td class='t-col'> <a href='" . $webinar_history_use->webinar_link . "'> Join Link</a></td> 
                            <td class='t-col'>";
                        if ($webinar_history_use->attended == 1) {
                            $code .= "Yes";
                        } else {
                            $code .= "No";
                        }
                        $code .= "</td> 
                            <td class='t-col'>
                                <a href='javascript:;' data-id='" . $webinar_history_use->id . "' class='delete_webinar_btn del-detail' onclick='delete_webinar_btn($webinar_history_use->id)'>
                                    <img class='delete-webinar-img' src='" . asset("backend") . "/lead-management/images/delete.svg' alt='delete-icon'>
                                </a>
                            </td>  
                        </tr>";
                    }
                    return response()->json(['status'=>1,'message' => "Something Else Try Again",'code' => $code,"type" =>$request->doc_type]);
                }
            


            // $data = WorkExperience::where('id', $request->doc_delete_id)->delete();
            // if($data == 1){
            //     return response()->json(['status'=>1,'message' => "Work Experience Detail Successfully Deleted","type" =>$request->doc_type]);
            // }else{
            //     return response()->json(['status'=>0,'message' => "Please Try Again Something Wrong Work Experience Detail Not Delete","type" =>$request->doc_type]);  
            // }
        }

        else if($request->doc_type == "test_delete"){

            if($request->doc_delete_id == null){
                return response()->json(['status'=>2,'message' => "Test Is Not Valid"]); 
            }else{
                $UsersMockTest_data = UsersMockTest::where('user_id',$request->user_id)->first();
                if($UsersMockTest_data != null){
                    $new_test = explode(",",$UsersMockTest_data->ielts_test_ids);
                    
                    $key = array_search($request->doc_delete_id, $new_test);
                    if($key !== false){
                        unset($new_test[$key]);
                    }
                    $new_test_data = implode(',', $new_test);
                    $words = explode(',', $new_test_data);
                    if (isset($words[0]) && is_numeric($words[0])) {
                        array_shift($words);
                    }
                    $new_test_data = implode(',', $words);
                    $test = [
                        'user_id' => $request->user_id,
                        'ielts_test_ids' => $new_test_data,
                    ];
                    $data = UsersMockTest::where('user_id',$request->user_id)->update($test);
                    if($data){
                        return response()->json(['status'=>1,'message' => "Successfully Delete Test","type" =>$request->doc_type]); 
                    }
                    return response()->json(['status'=>2,'message' => "Something Else Try Again","type" =>$request->doc_type]);
                    
                    
                }else{
                    return response()->json(['status'=>2,'message' => "Something Else Try Again","type" =>$request->doc_type]);
                }    
            }

        }   
        else{
 
        }

        
       
    }

    public function check_qualification_year(Request $request){

        $down_to_up = ['10th','12th','Diploma','Bachelors','Masters','
        PhD'];
        $up_to_down = ['PhD','Masters','Bachelors','Diploma','12th','10th'];
        $candidate = Candidate::where('user_id',$request->user_id)->first();
        $max[0] = 2024;
        $min[0] = 1980;

        // $data = CandidateEducation::where('candidate_id',$candidate->id)->get();
        // $year = 0;
        // $flag = 0;
        // $i = 0;
        // $new_flag = 0;
        
        // foreach ($down_to_up as $down_to_up_use) {
        //     $year++;
        //     if ($down_to_up_use == $request->qualification) {
        //         $flag = 1;
        //     } else {
        //         if ($flag == 1) {
        //             foreach ($data as $data_use) {
        //                 if ($data_use->qualification == $down_to_up_use) {
                           
                                
                                
        //                         if (($data_use->qualification == "10th" || $data_use->qualification == "12th") && ($data_use->passing_year != "" || $data_use->passing_year != null)) {
        //                             $max[$i] = $data_use->passing_year - 1;
        //                             $i++;
        //                             $new_flag = 1;
        //                             break;
        //                         }
        //                         if (($data_use->qualification == "Diploma" || $data_use->qualification == "Bachelors" || $data_use->qualification == "Masters" || $data_use->qualification == "PhD") && ($data_use->year != "" || $data_use->year != null)) {
 
        //                             $max[$i] = $data_use->year - 1;
        //                             $i++;
        //                             $new_flag = 1;
        //                             break;
        //                         }
                            
                            
                            
        //                     // if ($data_use->qualification == "10th" || $data_use->qualification == "12th") {
                                
        //                     // } elseif ($data_use->qualification == "Diploma" || $data_use->qualification == "Bachelors" || $data_use->qualification == "Masters") {
        //                     //     $max[$i] = $data_use->year - 1;
        //                     // } else {
        //                     //     // $max[$i] = $data_use->year - 1;
        //                     // }
                            
        //                 } 
                        
        //             }
        //         }
        //     }
        
        //     if ($new_flag == 1) {
        //         break;
        //     }
        // }
        
       
        // $flag = 0;
        // $i = 0;
        // rsort($max);
        
        
        // $new_flag = 0;
        // foreach($up_to_down as $up_to_down_use){
        //     $year++;
            
        //     if($up_to_down_use == $request->qualification){
        //         $flag = 1;
               
        //     }else{
        //         if($flag == 1){
        //             foreach($data as $data_use){
        //                 if($data_use->qualification == $up_to_down_use){
        //                     // if($up_to_down_use == "10th" || $up_to_down_use == "12th"){
        //                     //     $min[$i] = $data_use->passing_year+1;
        //                     // }else{
        //                     //     $min[$i] = $data_use->passing_year+1;
        //                     // }

                            
        //                     // $i++;
        //                     // $new_flag = 1;
        //                     // break;

                            

        //                     if (($data_use->qualification == "10th" || $data_use->qualification == "12th") && ($data_use->passing_year != "" || $data_use->passing_year != null)) {
        //                         $min[$i] = $data_use->passing_year+1;
        //                         $i++;
        //                         $new_flag = 1;
        //                         break;
        //                     }
        //                     if (($data_use->qualification == "Diploma" || $data_use->qualification == "Bachelors" || $data_use->qualification == "Masters" || $data_use->qualification == "PhD") && ($data_use->year != "" || $data_use->year != null)) {

        //                         $min[$i] = $data_use->passing_year+1;
        //                         $i++;
        //                         $new_flag = 1;
        //                         break;
        //                     }
        //                 }
        //             }
        //         }
        //     }
        //     if($new_flag == 1){
        //         break;
        //     }
        // }
        // sort($min);

        
        

        if($request->doc_id == "null"){
            $candidate = Candidate::where('user_id',$request->user_id)->first();
            $education_data = CandidateEducation::where('candidate_id',$candidate->id)->get();
            
        }else{
            $education_data = CandidateEducation::where('id',$request->doc_id)->first();
           
        }
        $currentYear = now()->year;
        if($min[0] <= 1980 || $min[0] > $currentYear){
            $min[0] = 1980;
        }
        
        if($max[0] <= 1980 || $max[0] > $currentYear){
            $max[0] = $currentYear;
        }
        
        $stream = [];
        if($request->qualification == "10th"){
            $stream = null;
        }else if($request->qualification == "12th"){
            $stream[]  = [
                "name" => "Science",
                
            ];
            $stream[]  = [
               
                "name" => "Commerce",
               
            ];
            $stream[]  = [
                
                "name" => "Arts",
               
            ];
            $stream[]  = [
                
                "name" => "Vocational",
            ];
       
        }else if($request->qualification == "Diploma"){
            $stream  = Diploma_course::where('status',1)->get();
        }
        else if($request->qualification == "Bachelors"){
            $stream  = Degree::where('degree_type',"UG")->get();
        }
        else if($request->qualification == "Masters"){
            $stream  = Degree::where('degree_type',"PG")->get();
        }
        else if($request->qualification == "PhD"){
            $stream  = Degree::where('degree_type',"PhD")->get();
        }
        else if($request->qualification == "Certification"){
            $stream = null;
        }
        

        $data = 1;
        if($data == 1){
            return response()->json(['status'=>1,'message' => "Education Detail Successfully Fetch",'max'=>$max[0] , 'min' => $min[0],'education_detail' => $education_data, 'stream' => $stream ]);
        }else{
            return response()->json(['status'=>0,'message' => "Please Try Again Something Wrong Detail Not Delete", 'min' => $min[0],'education_detail' => $education_data, 'stream' => $stream ]);  
        }
    }
    

    public function education_detail_get(Request $request){
        if($request->doc_id == "null"){
            $candidate = Candidate::where('user_id',$request->user_id)->first();
            $education_data = CandidateEducation::where('candidate_id',$candidate->id)->get();
            
        }else{
            $education_data = CandidateEducation::where('id',$request->doc_id)->first();
            
        }
        $doc_category = DocumentCategory::get()->ToArray();
        $doc_sub_category = DocumentSubcategory::get()->ToArray();
       
        $document_link = Storage::disk('s3')->url('/');
        $document_link = substr($document_link, 0, -1);

        $documents = Documents::where('user_id', $request->user_id)->get();
      

        foreach ($documents as $item) {
            $flag = 0;
            $documentData = $item['document_data'];
            $item['document_category_name'] = "";
            if ($documentData != null && $documentData != "") {
                $parsedData = json_decode($documentData, true);
                $commaSeparatedData = implode(',', $parsedData);
                $item['document_data'] = $commaSeparatedData;
            }

            foreach ($doc_sub_category as $doc_sub_category_one) {
                if ($doc_sub_category_one['id'] == $item['document_subcategory_id']) {
                    $item['document_sub_category_name'] = $doc_sub_category_one['document_subcategory_name'];
                    $flag = 1;
                    foreach ($doc_category as $doc_category_one) {
                        if ($doc_category_one['id'] == $doc_sub_category_one['document_category_id']) {
                            $item['document_category_name'] = $doc_category_one['document_category_name'];
                        }
                    }
                }
            }
            if ($flag == 0) {
                $item['document_sub_category_name'] = null;
            }
            $item['document_link'] = $document_link;
        }

        $document = $documents->ToArray();
        $data = compact(['document', 'document_link','doc_category','doc_sub_category','education_data']);
        return $data;
    }

    public function form_work_experience_get(Request $request){
        if($request->id == "null"){
            $candidate = Candidate::where('user_id',$request->user_id)->first();
            $education_data = WorkExperience::where('candidate_id',$candidate->id)->get();
            foreach($education_data as $education_data_use){
                if (!is_null($education_data_use->start_date)){
                    $education_data_use->start_date = date('d-m-Y', strtotime($education_data_use->start_date));
                }else{
                    $education_data_use->start_date = "";   
                }
                if (!is_null($education_data_use->end_date)){
                    $education_data_use->end_date = date('d-m-Y', strtotime($education_data_use->end_date));
                }else{
                    $education_data_use->end_date = "";
                }
            }
            
        }else{
            $education_data = WorkExperience::where('id',$request->id)->first();
            if (!is_null($education_data->start_date)){
                $education_data->start_date = date('Y-m-d', strtotime($education_data->start_date));
            }else{
                $education_data->start_date = "";
            }
            if (!is_null($education_data->end_date)){
                $education_data->end_date = date('Y-m-d', strtotime($education_data->end_date));
            }else{
                $education_data->end_date = "";
            }
            
        }
        
        return $education_data;
    }

    public function delete_documents(Request $request)
    {
        abort_if(!userCan('candidate.update'), 403);
        // $user_id=Auth::user()->id;
        // $subcategory_id=$request->subcategory_id;
        // $document=Documents::where('user_id',$user_id)
        // ->where('document_subcategory_id',$subcategory_id);
        $document_id = $request->document_id;
        $document = Documents::where('id', $document_id)->first();
        if (isset($document)) {
            $document_path = $document->get()->toArray()[0]["document_location"];
            $path = Storage::disk('s3')->delete($document_path);
            if ($path) {
                $document->delete();
                return response()->json(['status' => 1]);
            }
        }

        return response()->json(['status' => 0]);
    }

    public function documents_upload(Request $request)
    {       
            
            if($request->subcategory_name == "LOR 1" || $request->subcategory_name == "LOR 2" ||$request->subcategory_name == "LOR 3" ){

            }else{
                $validator = Validator::make($request->all(), [
                    'file' => 'required|mimes:pdf,doc,xlsx,csv,docx,jpeg,jpg,png|max:16000000'
                ]);
            
                if ($validator->fails()) {
                    $errors = $validator->errors();
                    return response()->json([
                        'error' => $errors,
                        'status' => 3
                    ]);
                } 
            }
            
            $jsonData = "";
            
            if($request->subcategory_name == "LOR 1" || $request->subcategory_name == "LOR 2" || $request->subcategory_name == "LOR 3"){
                $data = [
                    "name" => $request->input("name"),
                    "designation" => $request->input("designation"),
                    "ofemail" => $request->input("ofemail"),
                    "relation" => $request->input("relation"),
                ];
    
                $jsonData = json_encode($data);
            }
            
            $user_id = $request->user_id;
            
            if ($request->hasFile('file')) {

                // $user_id=Auth::user()->id;
                
                // $subcategory=DocumentSubcategory::find($request->document_subcategory_id)->toArray()['document_subcategory_name'];
                // $subcategory=str_replace("'"," ",$subcategory);
                // $subcategory=explode(' ', $subcategory);
                // $subcategory=implode('_', $subcategory);
    
                $subcategory = $request->subcategory_name;
    
                $file = $request->file('file');
                $target_dir = "https://gradding.s3.ap-south-1.amazonaws.com/";
                $file_type = strtolower($file->getClientOriginalExtension());
    
                $filename = $subcategory . "_" . time() . "." . $file_type;
                $user_dir = "candidate/documents/" . $user_id . "/";
                $document_subcategory_id = null;
                $document_name = $request->document_name;
                
                
                $document_subcategory_id = $request->document_subcategory_id;
                $file_path = $user_dir . $filename;
                $path = Storage::disk('s3')->put($file_path,  fopen($file, 'r+')); //stores file
    
    
                if ($path) {
                    if($request->document_id != null){
                        $document = Documents::find($request->document_id);
                        $document->user_id = $user_id;
                        $document->document_subcategory_id =  $document_subcategory_id;
                        $document->document_name =  $document_name;
                        $document->document_location = $user_dir . $filename;
                        $document->document_size = $file->getSize();
                        $document->document_data = $jsonData;
                        $document->save();
                    }else{
                        $document = new Documents;
                        $document->user_id = $user_id;
                        $document->document_subcategory_id =  $document_subcategory_id;
                        $document->document_name =  $document_name;
                        $document->document_location = $user_dir . $filename;
                        $document->document_size = $file->getSize();
                        $document->document_data = $jsonData;
                        $document->save();
                    }
                    

                
                    
                    return response()->json(['document_subcategory_id' => $request->document_subcategory_id, 'status' => 1, "message" => "document successfully Uploaded"]);
                }
                else{
                    return response()->json(['document_subcategory_id' => $request->document_subcategory_id, 'status' => 0, "message" => "Something Wrong Please Try Again"]);
                }
            }
            else if($request->subcategory_name == "LOR 1" || $request->subcategory_name == "LOR 2" || $request->subcategory_name == "LOR 3"){
                 
                        $document = Documents::find($request->document_id);

                        if (!$document) {
                            $document = new Documents();
                        }
                       

                        $document->user_id = $user_id;
                        $document->document_subcategory_id =  $request->document_subcategory_id;
                       
                        $document->document_data = $jsonData;


                        $document->save();
                    return response()->json(['document_subcategory_id' => $request->document_subcategory_id, 'status' => 1, "message" => "document successfully Uploaded"]);
            }
            else{
                return response()->json(['document_subcategory_id' => $request->document_subcategory_id, 'status' => 2, "message" => "Attach Document File"]);
            }
            
           
    }

    public function get_documents(Request $request)
    {   
        $doc_category = DocumentCategory::get()->ToArray();
        $doc_sub_category = DocumentSubcategory::get()->ToArray();
       
        $document_link = Storage::disk('s3')->url('/');
        $document_link = substr($document_link, 0, -1);

        $documents = Documents::where('user_id', $request->user_id)->get();
      

        foreach ($documents as $item) {
            $flag = 0;
            $documentData = $item['document_data'];
            $item['document_category_name'] = "";
            if ($documentData != null && $documentData != "") {
                $parsedData = json_decode($documentData, true);
                $commaSeparatedData = implode(',', $parsedData);
                $item['document_data'] = $commaSeparatedData;
            }

            foreach ($doc_sub_category as $doc_sub_category_one) {
                if ($doc_sub_category_one['id'] == $item['document_subcategory_id']) {
                    $item['document_sub_category_name'] = $doc_sub_category_one['document_subcategory_name'];
                    $flag = 1;
                    foreach ($doc_category as $doc_category_one) {
                        if ($doc_category_one['id'] == $doc_sub_category_one['document_category_id']) {
                            $item['document_category_name'] = $doc_category_one['document_category_name'];
                        }
                    }
                }
            }
            if ($flag == 0) {
                $item['document_sub_category_name'] = null;
            }
            $item['document_link'] = $document_link;
        }

        $document = $documents->ToArray();
        $data = compact(['document', 'document_link','doc_category','doc_sub_category']);
        return view('admin.lead-management.candidate-detail.get_documents',compact('data'));
        return response()->json(['data' => $data]); 
    }

    public function get_webinar(Request $request)
    {       
        $candidate = Candidate::where('user_id',$request->user_id)->select('id')->first();
        $webinar_history = InterestedCandidatesWebinar::where('candidate_id', $candidate->id)->get();
        foreach($webinar_history as $webinar_history_use){
            $webinar = Webinars::where('id', $webinar_history_use->webinar_id)->first();
    
            if($webinar != null){
                $webinar_history_use->webinar_name = $webinar->webinar_name;
                $webinar_history_use->webinar_link = $webinar->webinar_link;
                $webinar_history_use->dateTime = $webinar->dateTime;
            } 
        }

        
        $code = "";
        foreach ($webinar_history as $webinar_history_use){
            $code .= "<tr>
                <td class='t-col'>" . $webinar_history_use->webinar_name . "</td>
                <td class='t-col'>" . date('d-m-Y H:i:s', strtotime($webinar_history_use->dateTime)) . "</td>
                <td class='t-col'>";
            if (!empty($webinar_history_use->webinar_link)) {
                $code .= "<a href='" . $webinar_history_use->webinar_link . "'>Join Link</a>";
            } else {
                $code .= "--";
            }
            $code .= "</td>
                <td class='t-col'>" . ($webinar_history_use->attended == 1 ? 'Yes' : 'No') . "</td>
                <td class='t-col'>
                    <a href='javascript:;' data-id='" . $webinar_history_use->id . "' class='delete_webinar_btn del-detail' onclick='delete_webinar_btn(" . $webinar_history_use->id . ")'>
                        <img class='delete-webinar-img' src='" . asset('backend/lead-management/images/delete.svg') . "' alt='delete-icon'>
                    </a>
                </td>
            </tr>";

        }

        $webinards= Webinars::select('id', 'webinar_name','webinar_link','dateTime')->get()->toArray();
    
        return response()->json(['code' => $code,'webinars' => $webinards]);
    }

    public function get_tests_data(Request $request)
    {       
        $userMockTestData = UsersMockTest::where('user_id',$request->user_id)->first();
        $mockTestResults = MockTestResult::where('user_id',$request->user_id)->get()->ToArray();
        $response = [];
        if($userMockTestData != null){
            $new_test = explode(",",$userMockTestData->ielts_test_ids);
            // dd($new_test);
            $IeltsMockTests = IeltsMockTest::whereIn('id',$new_test)->get()->ToArray();
            $new_test = array_reverse($new_test);
            return view('admin.lead-management.candidate-detail.get_tests_data', compact('userMockTestData', 'mockTestResults', 'response','new_test','IeltsMockTests'));
        }else{
            return view('admin.lead-management.candidate-detail.get_tests_data', compact('userMockTestData', 'mockTestResults', 'response'));
        }
    }
    public function get_test_by_category(Request $request)
    {       
        $tests = IeltsMockTest::where('category_id',$request->category_id)->select('id')->get()->toArray();

        return $tests;
    }
    

    public function get_activity(Request $request)
    {   
        $user = User::where('id',$request->user_id)->first();
        return view('admin.lead-management.candidate-detail.get_activity',compact('user'));
    }

    public function profile_complete($candidate_id){
        $candidate = Candidate::where('id',$candidate_id)->first();
        $user = User::findOrFail($candidate->user_id);
        $null_fields = 0;
        $Available_fields = 0;
        $Available_mandatary = 0;
        $null_mandatary = 0;
        $fields = [
            'name' => $user->name,
            'phone' => $user->phone,
            'email' => $user->email,
            'birth_date' => $candidate->birth_date,
            'country_id' => $candidate->country_id,
            'state_id' => $candidate->state_id,
            'city_id' => $candidate->city_id,
            'address' => $candidate->address,
            'budget' => $candidate->budget,
            'fund_source' => $candidate->fund_source,
            'preferred_country' => @$candidate->destination[0]->preferred_country,
            'preferred_program' => @$candidate->destination[0]->preferred_program,
            'preffered_stream' => @$candidate->destination[0]->preffered_stream,
        ];
        if($candidate->visa_refusal == 1){
            $fields['visa_refusal'] = $candidate->visa_refusal;
            $fields['visa_refusal_reason'] = $candidate->visa_refusal_reason;
        }
        if($candidate->passport_status == 1){
            $fields['passport_expiry'] = $candidate->passport_expiry;
            $fields['passport_number'] = $candidate->passport_number;
        }
        if($candidate->marital_status == 1){
            $fields['marital_status'] = $candidate->marital_status;
            if($candidate->spouse_comming == 1){
                $fields['spouse_comming'] = $candidate->spouse_comming;
                $fields['spouse_qualification'] = $candidate->spouse_qualification;
                $fields['spouse_employment_status'] = $candidate->spouse_employment_status;
                $fields['spouse_income'] = $candidate->spouse_income;
                $fields['kids_count'] = $candidate->kids_count;
                $fields['accompanying_applicant'] = $candidate->accompanying_applicant;
                $fields['comment'] = $candidate->comment;
            }
        }
        $mandatoryFields = ['name', 'phone', 'email', 'birth_date', 'gender', 'passport_number', 'passport_expiry', 'country_id', 'state_id', 'city_id', 'visa_refusal', 'marital_status', ]; 
        foreach ($fields as $field => $value) {
            if ($value != "" && $value != null) {
                $Available_fields++;
                if (in_array($field, $mandatoryFields)) {
                    $Available_mandatary++;
                }
            } else {
                $null_fields++;
                if (in_array($field, $mandatoryFields)) {
                    $null_mandatary++;
                }
            }
        }
        $personal_info = $Available_fields+$null_fields;
        $personal_info_available = $Available_fields;
        if($null_mandatary > 0){
            $personal_info_mandatary = 1;
        }else{
            $personal_info_mandatary = 0;
        }
        $personal_info_available_percentage = ($Available_fields/$personal_info)*100;
        $null_fields = 0;
        $Available_fields = 0;
        $Available_mandatary = 0;
        $null_mandatary = 0;
        if(isset($candidate->destination[0])){
            if($candidate->destination[0]['preferred_country'] != "" && $candidate->destination[0]['preferred_country'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }
            if($candidate->destination[0]['intake_years'] != "" && $candidate->destination[0]['intake_years'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }
            if($candidate->destination[0]->intake_months != "" && $candidate->destination[0]->intake_months !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }
            if($candidate->destination[0]->preferred_program != "" && $candidate->destination[0]->preferred_program !=null){
                $Available_fields++;
                
            }else{
                $null_fields++;
               
            }
            if($candidate->destination[0]->preffered_stream != "" && $candidate->destination[0]->preffered_stream !=null){
                $Available_fields++;
                
            }else{
                $null_fields++;
               
            }
        }else{
            $Available_fields = 0;
            $null_fields = 4;
            $null_mandatary = 4;
            $Available_mandatary = 0;
        }
        
        $study_abroad_info = $Available_fields+$null_fields;
        $study_abroad_info_available = $Available_fields;
        if($null_mandatary > 0){
            $study_abroad_info_mandatary = 1;
        }else{
            $study_abroad_info_mandatary = 0;
        }
        $study_abroad_info_available_percentage = ($Available_fields/$study_abroad_info)*100;
        

        $null_fields = 0;
        $Available_fields = 0;
        $Available_mandatary = 0;
        $null_mandatary = 0;
        
        
        if($candidate->budget != "" && $candidate->budget !=null){
            $Available_fields++;
          
        }else{
            $null_fields++;
            
        }
        if($candidate->fund_source != "" && $candidate->fund_source !=null){
            $Available_fields++;
            
        }else{
            $null_fields++;
            
        }
        if($candidate->loan_type != "" && $candidate->loan_type !=null){
            $Available_fields++;
           
        }else{
            $null_fields++;
            
        }
        
        $budget_info = $Available_fields+$null_fields;
        $budget_info_available = $Available_fields;
        if($null_mandatary > 0){
            $budget_info_mandatary = 1;
        }else{
            $budget_info_mandatary = 0;
        }
        $budget_info_available_percentage = ($Available_fields/$budget_info)*100;




        $null_fields = 0;
        $Available_fields = 0;
        $Available_mandatary = 0;
        $null_mandatary = 0;
        $english_test = [
            'test_name' => '',
            'test_taken_date' => '',
            'test_result_date' => '',
            'test_scores' => '',
        ];
        $abroad_test = [
            'test_name' => '',
            'test_taken_date' => '',
            'test_result_date' => '',
            'test_scores' => '',
        ];
        
        foreach ($candidate->candidate_exam as $index => $exam){

            
            if ($exam->test_type == 1){
                
                $abroad_test = [
                    'test_name' => $exam->test_name,
                    'test_taken_date' => $exam->test_taken_date,
                    'test_result_date' => $exam->test_result_date,
                    'test_scores' => $exam->test_scores,
                ];
            }
            else if($exam->test_type == 0){
               
                $english_test = [
                    'test_name' => $exam->test_name,
                    'test_taken_date' => $exam->test_taken_date,
                    'test_result_date' => $exam->test_result_date,
                    'test_scores' => $exam->test_scores,
                ];
            }
            
        }

        if($english_test['test_name'] != "NT"){
            if($english_test['test_name'] != "" && $english_test['test_name'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }
            if($english_test['test_taken_date'] != "" && $english_test['test_taken_date'] !=null){
                $Available_fields++;
                $Available_mandatary++;
                
            }else{
                $null_fields++;
                $null_mandatary++;
            }
            if(@$english_test['test_result_date'] != "" && @$english_test['test_result_date'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }
    
            if($english_test['test_scores'] != "" && $english_test['test_scores'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }
        }
    

        if($abroad_test['test_name'] != "NT"){
            if($abroad_test['test_name'] != "" && $abroad_test['test_name'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }

            if($abroad_test['test_taken_date'] != "" && $abroad_test['test_taken_date'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            
            }else{
                $null_fields++;
                $null_mandatary++;
                
            }
            if($abroad_test['test_result_date'] != "" && $abroad_test['test_result_date'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }

            if($abroad_test['test_scores'] != "" && $abroad_test['test_scores'] !=null){
                $Available_fields++;
                $Available_mandatary++;
            }else{
                $null_fields++;
                $null_mandatary++;
            }
        }
            
        
        
        $test_score_info = $Available_fields+$null_fields;
        $test_score_info_available = $Available_fields;
        if($null_mandatary > 0){
            $test_score_info_mandatary = 1;
        }else{
            $test_score_info_mandatary = 0;
        }
        // $test_score_info_available_percentage = ($Available_fields/$test_score_info)*100;


        $null_fields = 0;
        $Available_fields = 0;
        $Available_mandatary = 0;
        $null_mandatary = 0;
        

        

        $total_fields = $study_abroad_info+$personal_info+$test_score_info;
        $total_available_fields = $study_abroad_info_available+$test_score_info_available+$personal_info_available;
        
        $available_percentage = ($total_available_fields/$total_fields)*100;
        $profile_progress = [];
        $profile_progress['available_percentage'] = round($available_percentage);
        $profile_progress['personal_info_mandatary'] = $personal_info_mandatary;
        $profile_progress['study_abroad_info_mandatary'] = $study_abroad_info_mandatary;
        $profile_progress['budget_info_mandatary'] = $budget_info_mandatary;
        $profile_progress['test_score_info_mandatary'] = $test_score_info_mandatary;
        
        $profile_lock = $candidate->lock_profile;

        $data = [
            'profile_complete' => $profile_progress['available_percentage'],
        ];

        if($profile_progress['available_percentage'] == 100.0){
            if($profile_lock == null){
                $current_date = date('Y-m-d');
                $after_seven_days = date('Y-m-d', strtotime($current_date . ' + 7 days'));
                $data['lock_profile'] = $after_seven_days;          
            }
        }

        Candidate::where('id',$candidate_id)->update($data);
        return $profile_progress;
    }

    public function changesIntakes(){

        $candidateDestination = CandidateDestination::get();
        // dd($candidateDestination);
        $count = 0;
        if(!empty($candidateDestination)){
            foreach ($candidateDestination as $candidate) {
                 
                if(!empty($candidate->intake)){
                    $intakeArray = explode(",", $candidate->intake);
                    // dd($intakeArray);
                    $months = [];
                    $years = [];
                    foreach ($intakeArray as $intake) {
                        // dd($intake);
                        list($month, $year) = explode("'", $intake);
                        if (!preg_match('/^20\d{2}$/', $year)) {
                            $year = '20' . $year;
                        }
                        $months[] = $month;
                        $years[] = $year;
                    }
                    $months = array_unique($months);
                    $years = array_unique($years); 
                    
                    $monthsString = implode(",", $months);
                    $yearsString = implode(",", $years);
                    
                    if(!empty($monthsString) && !empty($yearsString)){
                        // dd('inside');
                        
                        $data = [
                            'intake_years' =>$yearsString,
                            'intake_months' =>$monthsString
                        ];
                        CandidateDestination::where('id',$candidate->id)->update($data);
                    }
                }
            }
        }
        if($count > 0){
            echo "Intakes Updated: " . $count;
        }
    } 

    public function changesIntakesin_candidate_university_suggest(){

        $candidateDestination = UniversitySuggest::get();
        // dd($candidateDestination);
        $count = 0;
        if(!empty($candidateDestination)){
            foreach ($candidateDestination as $candidate) {
                 
                if(!empty($candidate->intake)){
                    $intakeArray = explode(",", $candidate->intake);
                    // dd($intakeArray);
                    $months = [];
                    $years = [];
                    foreach ($intakeArray as $intake) {
                        // dd($intake);
                        list($month, $year) = explode("'", $intake);
                        if (!preg_match('/^20\d{2}$/', $year)) {
                            $year = '20' . $year;
                        }
                        $months[] = $month;
                        $years[] = $year;
                    }
                    $months = array_unique($months);
                    $years = array_unique($years); 
                    
                    $monthsString = implode(",", $months);
                    $yearsString = implode(",", $years);
                    
                    if(!empty($monthsString) && !empty($yearsString)){
                        $data = [
                            'intake_years' =>$yearsString,
                            'intake_months' =>$monthsString
                        ];
                        UniversitySuggest::where('id',$candidate->id)->update($data);
                    }
                }
            }
        }
        if($count > 0){
            echo "Intakes Updated: " . $count;
        }
    } 

    public function get_user_number_with_country_code(Request $request,$id){
        $data = User::where('id',$id)->first();
        $new_data = [
            'phone' => @$data->phone,
            'country_code' => @$data->country_code,
            'country' => $data->country,
            'email' => $data->email
        ];
        return $new_data; 
    } 

    public function transaction_invoice_download($id)
    {
        $payment = Payment::find($id);
        $data = [
            'invoice_number' => @$payment->invoice_number,
            'amount' => @$payment->amount,
            'currency_symbol' => @$payment->currency_symbol,
            'plan_name' => @$payment->order->plan->title,
            'name' => @$payment->order->name,
            'email' => @$payment->order->email,
        ];
        $pdf = app()->make(PDF::class);
        $pdf->loadView('admin.lead-management.invoice', ['data' => $data]);
        return $pdf->download('invoice.pdf');
    }

    public function get_courses_by_stream(Request $request){
       
        $preffered_stream_list = [];
        if(isset($request->preffered_stream)){
            $preffered_stream_list = Course::whereIn('study_area_id',$request->preffered_stream)->orderBy('name', 'asc')->get();
        }   
        $code = "";
        foreach ($preffered_stream_list as $preffered_stream) {
            if($request->preferred_course == null){
                $code .= "<option value='" . $preffered_stream->id . "'>" . $preffered_stream->name . "</option>";
            }else{
                if (in_array($preffered_stream->id, $request->preferred_course)) {
                    $code .= "<option value='" . $preffered_stream->id . "' selected>" . $preffered_stream->name . "</option>";
                } else {
                    $code .= "<option value='" . $preffered_stream->id . "'>" . $preffered_stream->name . "</option>";
                }
            }
        }
        return response()->json(['code' => $code]);
    }

    public function commentInsertByApplicationsId(Request $request)
    {
        abort_if(!userCan('candidateApplication.update'), 403);
        try {
            $candidateApplication = CandidateApplication::where('id', $request->applications_id)->first();
            if($candidateApplication){
                CandidateApplicationComment::create([
                    'application_id' => $request->applications_id,
                    'comment' => $request->comment_text,
                    'admin_id' => Auth::user()->id,
                    'type' => @$request->type == 1 ? @$request->type : 0,
                ]);
                flashSuccess("Comment Created Successfully!");
                return response()->json(['success' => true]);
            }
            return response()->json(['success' => false, 'message' => 'Something Went Wrong'], 404);
        } catch (\Exception $e) {
            return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
        }
    }

    public function commentAndApplicationGetByApplicationID(Request $request)
    {
        abort_if(!userCan('candidateApplication.view'), 403);
        try {
                $candidateApplication = CandidateApplication::where('id', $request->id)->first();
                if(!empty($request->type) && $request->type == 1){
                    $comments = CandidateApplicationComment::where("application_id", $request->id)->where("type", 1)->get();
                }else{
                    $comments = CandidateApplicationComment::where("application_id", $request->id)->where("type",'!=', 1)->get();
                } 
                $applicationTimeline = CandidateApplicationTimeline::where("application_id", $request->id)->get();
                $partnerCode = " ";
                if (!empty($candidateApplication->partners->code)) {
                    $partnerCode =  $candidateApplication->partners->code;
                }
                $data['candidateApplications']['partnerApplicationId'] = ($partnerCode ? $partnerCode : '-NA-') . ' ' . ($candidateApplication->partner_application_id ?? '-NA-');
                $data['candidateApplications']['id'] = @$candidateApplication->id ?? '-NA-';
                $data['candidateApplications']['created_at'] = dateMonthTimeFormat(@$candidateApplication->created_at) ?? '-NA-';
                $data['candidateApplications']['course'] = @$candidateApplication->courses->name ?? '-NA-';
                $data['candidateApplications']['universities'] = @$candidateApplication->university->name ?? '-NA-';
                $data['candidateApplications']['status'] = @$candidateApplication->status;

                $data['comments']  = [];
                foreach ($comments as $comment) {
                    $data['comments'][] = [
                        'id' => @$comment->id,
                        'comment' => @$comment->comment,
                        'created_at' => dateMonthTimeFormat(@$comment->created_at),
                        'comment_by_admin' => ucwords(@$comment->commentByAdmin->name),
                        'comment_by_image_url' => @$comment->commentByAdmin->image_url,
                    ];
                }
                $data['applicationTimeline']  = [];
                foreach ($applicationTimeline as $timeline) {
                    $data['applicationTimeline'][] = [
                        'id' => @$timeline->id,
                        'application_id' => @$timeline->application_id,
                        'candidate_id' => @$timeline->candidate_id,
                        'status' => @$timeline->status,
                        'auth_name' =>  ucwords(@$timeline->auth_name),
                        'auth_type' => @$timeline->auth_type,
                        'comment' => @$timeline->comment,
                        'created_at' => dateMonthTimeFormat(@$timeline->created_at),
                    ];
                }
            return response()->json($data);
        } catch (\Exception $e) {
            return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
        }
    }

    public function get_short_list(Request $request){
        $list = CourseShortlist::where('user_id',$request->user_id)
        ->leftjoin('courses','courses.id','course_shortlists.course_id')
        ->leftjoin('universities','universities.id','courses.university_id')
        ->select('courses.name as course_name','universities.name as university_name','universities.logo','course_shortlists.applied','courses.IntakeDeadLines','course_shortlists.id as id')
        ->get()->ToArray();
        return view('admin.lead-management.candidate-detail.get_short_list',compact('list'));        
    }

    public function add_new_course(Request $request){
        $partner_find = Partner::select('id','name')->get()->ToArray();
        return view('admin.lead-management.candidate-detail.add_new_course',compact('partner_find'));
    }

    public function get_whatsapp_log(Request $request){
        // $whatsapplogs = Whatsapplog::where('user_id',$request->user_id)->where('status',1)->get()->ToArray();
        $whatsapplogs = Whatsapp_tracker::where('user_id', $request->user_id)->orderBy('created_at', 'desc')->get();

        return view('admin.lead-management.candidate-detail.get_whatsapp_log',compact('whatsapplogs'));
    }

    public function order_get(Request $request){
        $orders = Order::where('candidate_id', $request->candidate_id)->orderBy('created_at', 'desc')->get();
        return view('admin.lead-management.candidate-detail.order_get',compact('orders'));
    }
    
    public function get_transaction(Request $request){
        $transactions = Payment::where('candidate_id',$request->candidate_id)->get();
        return view('admin.lead-management.candidate-detail.get_transaction',compact('transactions'));
    }

    // public function study_abroad_preference(Request $request){
    //     $candidate = Candidate::where('id',$request->candidate_id)->first();
        
    //     $countries = Countries::all('id', 'name','sortname');
    //     $preferred_countries = [];
    //     $other_countries = [];
    //     $jsonString = str_replace(['"', '[', ']'], '', @$candidate->destination[0]->preferred_country);
    //     $preferred_country_ids = explode(",", $jsonString);
    //     foreach ($preferred_country_ids as $preferred_country_id) {
    //         $country = $countries->firstWhere('id', $preferred_country_id);
    //         if ($country) {
    //             $preferred_countries[] = [
    //                 'id' => $country->id,
    //                 'name' => $country->name,
    //                 'sortname' => $country->sortname,
    //             ];
    //         }
    //     }

    //     $intake_years = explode(',', @$candidate->destination[0]->intake_years);
    //     $intake_months = explode(',', @$candidate->destination[0]->intake_months);

    //     $jsonString = str_replace(['"', '[', ']'], '', @$candidate->destination[0]->preferred_country);
    //     $preferred_program = explode(',', @$candidate->destination[0]->preferred_program);
    //     $preferredPrograms = explode(',', @$candidate->destination[0]->preffered_stream);
    //     $streams = StudyArea::get()->toArray();


    //     $code = "";
    //     $code .= '<form action="" class="detail-form" id="study_abroad_form">
    //         <p class="panel-top">
    //             <span class="p-head">Study Abroad Preferences</span>';
    //             if (userCan("candidate.update")){
    //             $code .= '<button type="button" class="edit-btn cancel-btn" data-form_id="study_abroad"
    //                     onclick="save_data("study_abroad_form_cancel")" data-operation_type="cancel"
    //                     id="study_abroad_form_cancel">
    //                     <!--type=submit-->
    //                     <span class="cancel-text" id="study_abroad_form_cancel_button">Cancel</span>
    //                 </button>
    //                 <button type="button" class="edit-btn" data-form_id="study_abroad"
    //                     onclick="save_data("study_abroad_form_edit")" id="study_abroad_form_edit"
    //                     data-operation_type="save_edit"> <!--type=submit-->

    //                     <span class="edit-text" id="study_abroad_form_edit_button">Edit</span>
    //                     <!--OnClick edit-btn Change the text to Save-->
    //                     <img src="{{ asset("backend") }}/lead-management/images/customer-detail/pencil.svg"
    //                         id="study_abroad_form_edit_image" alt="edit" class="field-icon"
    //                         width="100%" height="100%">
    //                     <!--OnClick edit-btn Change the img to file-save.svg-->
    //                 </button>';
    //             }
    //             $code .= ' </p>
    //             </form>';

    //             $code .= '<div class="fields-list">';
    //             $code .= '<div class="single-field">
    //                 <p class="field-value multiple-select-field-value">
    //                     <img src="' . asset("backend") . '/lead-management/images/customer-detail/country.svg"
    //                     alt="country" class="field-icon" width="100%" height="100%">

    //                     <!--Multiple Select-->

    //                     <select class="input-field select2-with-search" name="preferred_country[]"
    //                         id="preferred_country" disabled multiple="multiple" autocomplete="off">';

    //                     if(isset($countries)){
    //                         foreach ($countries as $country){
    //                             $code .= '<option ';
    //                             if (in_array($country['id'], $preferred_country_ids)) {
    //                                 $code .= 'selected value="' . $country['id'] . '">';
    //                                 $code .= $country['name'];
    //                             } else {
    //                                 $code .= 'value="' . $country['id'] . '">' . $country['name'];
    //                             }
    //                             $code .= '</option>';
    //                         }
    //                     }

    //     $code .= '</select>
    //             </p>
    //             <label for="country_select" class="field-label">Country(You Can Select Only 3 Contries)</label>
    //         </div>';

    //     $code .= '<div class="single-field">
    //         <p class="field-value multiple-select-field-value">
    //             <img src="' . asset("backend") . '/lead-management/images/customer-detail/calender.svg"
    //                 alt="calender" class="field-icon" width="100%" height="100%">
    //             <!--Multiple Select-->
    //             <select class="input-field select2-with-search" name="intake_years[]" disabled
    //                 multiple="multiple" id="intake_years">';
        
                    
    //                 for ($i = 2022; $i <= date('Y') + 3; $i++) {
    //                     $code .= '<option ' . (in_array($i, $intake_years) ? 'selected' : '') . '
    //                         value="' . $i . '">' . $i . '</option>';
    //                 }
    //                 $code .= '
    //                 <option ' . (in_array('Not Decided', $intake_years) ? 'selected' : '') . '
    //                     value="Not Decided">Not Decided</option>';
    //                 // Closing PHP tag after the loop
                    
    //                 $code .= '</select>
    //         </p>
    //         <label for="intake_years" class="field-label">Plan Year</label>
    //     </div>';

    //     $code .= '<div class="single-field">
    //         <p class="field-value multiple-select-field-value">
    //             <img src="' . asset("backend") . '/lead-management/images/customer-detail/calender.svg"
    //                 alt="calender" class="field-icon" width="100%" height="100%">
    //             <!--Multiple Select-->
    //             <select class="input-field select2-with-search" name="intake_months[]"
    //                 id="intake_months" disabled multiple="multiple">

    //                 <option ' . (in_array('Jan', $intake_months) ? 'selected' : '') . ' value="Jan">Jan</option>
    //                 <option ' . (in_array('Feb', $intake_months) ? 'selected' : '') . ' value="Feb">Feb</option>
    //                 <option ' . (in_array('Mar', $intake_months) ? 'selected' : '') . ' value="Mar">Mar</option>
    //                 <option ' . (in_array('Apr', $intake_months) ? 'selected' : '') . ' value="Apr">Apr</option>
    //                 <option ' . (in_array('May', $intake_months) ? 'selected' : '') . ' value="May">May</option>
    //                 <option ' . (in_array('Jun', $intake_months) ? 'selected' : '') . ' value="Jun">Jun</option>
    //                 <option ' . (in_array('July', $intake_months) ? 'selected' or '' : '') . ' value="July">July</option>
    //                 <option ' . (in_array('Aug', $intake_months) ? 'selected' : '') . ' value="Aug">Aug</option>
    //                 <option ' . (in_array('Sept', $intake_months) ? 'selected' : '') . ' value="Sept">Sept</option>
    //                 <option ' . (in_array('Oct', $intake_months) ? 'selected' : '') . ' value="Oct">Oct</option>
    //                 <option ' . (in_array('Nov', $intake_months) ? 'selected' : '') . ' value="Nov">Nov</option>
    //                 <option ' . (in_array('Dec', $intake_months) ? 'selected' : '') . ' value="Dec">Dec</option>

    //                 <option ' . (in_array('Not Decided', $intake_months) ? 'selected' : '') . ' value="Not Decided">Not Decided</option>
    //             </select>
    //         </p>
    //         <label for="season_select" class="field-label">Intake Season</label>
    //     </div>';


    //     $code .= '<div class="single-field">
    //         <p class="field-value">
    //             <img src="' . asset("backend") . '/lead-management/images/customer-detail/courses.svg"
    //                 alt="calender" class="field-icon" width="100%" height="100%">
                
                

    //             <select class="input-field select2-with-search" name="preferred_program[]"
    //                 id="preferred_program" disabled multiple>
    //                 <option ' . (in_array("MBA", $preferred_program) ? "selected" : "") . ' value="MBA">MBA</option>
    //                 <option ' . (in_array("Bachelors", $preferred_program) ? "selected" : "") . ' value="Bachelors">Bachelors</option>
    //                 <option ' . (in_array("Masters", $preferred_program) ? "selected" : "") . ' value="Masters">Masters</option>
    //                 <option ' . (in_array("PG", $preferred_program) ? "selected" : "") . ' value="PG">PG Diploma</option>
    //                 <option ' . (in_array("Certification", $preferred_program) ? "selected" : "") . ' value="Certification">Certification</option>
    //                 <option ' . (in_array("PHD", $preferred_program) ? "selected" : "") . ' value="PHD">PHD</option>
    //                 <option ' . (in_array("Others", $preferred_program) ? "selected" : "") . ' value="Others">Others</option>
    //                 <option ' . (in_array("Not_Decided", $preferred_program) ? "selected" : "") . ' value="Not_Decided">Not Decided</option>
    //             </select>
               

    //         </p>
    //         <label for="season_select" class="field-label">Preferred Program</label>
    //     </div>';

    //     $code .= '<div class="single-field">
    //         <p class="field-value p-course">
    //             <img src="' . asset("backend") . '/lead-management/images/customer-detail/courses.svg"
    //                 alt="courses" class="field-icon" width="100%" height="100%">
    //             <select class="input-field select2-with-search" name="preffered_stream[]"
    //                 id="preffered_stream" disabled multiple>';
    //                 foreach ($streams as $stream)
    //                     $code .= '<option ' . (in_array($stream["id"], $preferredPrograms) ? "selected" : "") . '
    //                         value="' . $stream["id"] . '">' . $stream["name"] . '</option>
    //                     value="' . $stream["id"] . '">' . $stream["name"] . '</option>';

    //                 $code .= '<option ' . ($preferredPrograms == "Not Decided" ? "selected" : "") . '
    //                     value="Not Decided"> Not Decided
    //                 </option>
    //                 <option ' . ($preferredPrograms == "other" ? "selected" : "") . '
    //                     value="other">
    //                     Other </option>
    //                 <option ' . ($preferredPrograms == "no-preference" ? "selected" : "") . '>No
    //                     Preference
    //                 </option>
    //             </select>
    //         </p>
    //         <label for="preferred_courses" class="field-label">Preferred Stream</label>
    //     </div>';


    //     $code .= ' <div class="single-field">
    //     <p class="field-value p-course">
    //         <img src="' . asset("backend") . '/lead-management/images/customer-detail/courses.svg"
    //             alt="courses" class="field-icon" width="100%" height="100%">


    //         <input type="text" class="input-field" name="preferred_course"
    //             placeholder="Preferred Courses" maxlength="200"
    //             value="'.$candidate->destination[0]->preferred_course.'"
    //             maxlength="200" id="preferred_courses">

            

    //         </select>


    //     </p>
    //     <label for="preferred_courses" class="field-label">Preferred Courses</label>
    //     </div>';

    //     $code .= '
    //     <div class="single-field">
    //         <p class="field-value">
    //             <img src="' . asset("backend") . '/lead-management/images/customer-detail/university.svg"
    //                 alt="university" class="field-icon" width="100%" height="100%">
    //             <select class="input-field select2-with-search" name="applied_university"
    //                 id="applied_university" disabled>
    //                 <option disabled>Applied University</option>';
    //                 if (@$candidate->destination[0]->applied_university_name != null){
    //                 $code .= '<option selected value="Yes">Yes</option>
    //                     <option value="No">No</option>';
    //                 }
    //                 else{
    //                 $code .= '<option value="Yes">Yes</option>
    //                     <option selected value="No">No</option>';
    //                 }

    //                 $code .= '</select>
    //         </p>
    //         <label for="applied_uni" class="field-label">Applied University</label>
    //     </div>';


    //     $code .= '<div class="single-field" id="applied_university_name_box"
    //                     style="' . (@$candidate->destination[0]->applied_university_name == null ? 'display:none;' : '') . '">
    //                     <p class="field-value">
    //                         <img src="' . asset("backend") . '/lead-management/images/customer-detail/passport.svg"
    //                             alt="passport" class="field-icon" width="100%" height="100%">
    //                         <input type="text" class="input-field" name="applied_university_name"
    //                             placeholder="Name of the University"
    //                             value="'. @$candidate->destination[0]->applied_university_name.'"
    //                             maxlength="50" id="applied_university_name">
    //                     </p>
    //                     <label for="university_name" class="field-label">Name of University</label>
    //                 </div>';

    //     $code .= '    <div class="single-field consultant">
    //                 <p class="field-value">
    //                     <img src="' . asset("backend") . '/lead-management/images/customer-detail/headphone.svg"
    //                         alt="headphone" class="field-icon" width="100%" height="100%">
    //                     <select class="input-field select2-with-search" name="consultant"
    //                         id="consultant" disabled>
    //                         <option disabled>Connected Consultant</option>';
    //                         if (@$candidate->destination[0]->consultant_name != null){
    //                             $code .= '<option selected value="Yes">Yes</option>
    //                             <option value="No">No</option>';
    //                         }else{
    //                             $code .= '<option value="Yes">Yes</option>
    //                             <option selected value="No">No</option>';
    //                         }
    //                     $code .= '
    //                     </select>
    //                 </p>
    //                 <label for="consultant" class="field-label">Connected Consultant</label>
    //             </div>';

    //         $code .= '    <div class="single-field" id="consultant_name_box"
    //                 style="' . (@$candidate->destination[0]->consultant_name == null ? 'display:none;' : '') . '">
    //                 <p class="field-value">
    //                     <img src="' . asset("backend") . '/lead-management/images/customer-detail/passport.svg"
    //                         alt="passport" class="field-icon" width="100%" height="100%">
    //                     <input type="text" class="input-field" name="consultant_name"
    //                         id="consultant_name" placeholder="Name of the Consultant"
    //                         value="'.@$candidate->destination[0]->consultant_name.'" maxlength="20"
    //                         val>
    //                 </p>
    //                 <label for="consultant_name" class="field-label">Name of Consultant</label>
    //             </div>';


    //     $code .= '</div>';

    //     return $code;
        
    // }

    public function get_answersheet(Request $request){

        $MockTestResults = MockTestResult::where('id',@$request->test_id)->first();
         $ieltsExamsTest = ieltsExamsTest::where('id',@$MockTestResults->test_id)->first();

         return view('admin.lead-management.candidate-detail.get_answersheet',compact('MockTestResults','ieltsExamsTest'));
        dd($ieltsExamsTest);
        
        $status = 1;
        $code = "";
        if($MockTestResults != null){
            if($MockTestResults->answer != null){

                $answers = json_decode($MockTestResults->answer);
                if (is_array($answers) || is_object($answers)) {
                    foreach($answers as $answer){
                        if (property_exists($answer, 'name') && property_exists($answer, 'value')) {
                            $code .= '<div class="single-input select-list">' . $answer->name . '</div>';
                            if(is_array($answer->value)) {
                                $code .= '<div class="single-input select-list year">';
                                foreach($answer->value as $item) {
                                    $code .= '<span>' . $item . '</span> <br>';
                                }
                                $code .= '</div>';
                            } else {
                                $code .= '<div class="single-input select-list year">' . $answer->value . '</div>';
                            }
                            
                        }
                    }
                }
            }
        }else{
            $status = 2;
        }
        $data = [
            'status' => $status,
            'code' => $code,
            'data' => $MockTestResults,
        ];
        return $data;
        
    }

    public function save_test_result(Request $request){
        $data = [
            'score' => $request->score,
        ];
        $MockTestResults = MockTestResult::where('id',@$request->test_id)->update($data);
        
        if($MockTestResults == 1){
            return response()->json(['status'=>1,'message' => "Test Result Update Successfully"]);
        }else{
            return response()->json(['status'=>2,'message' => "Please Try Again Something Wrong "]);  
        }
    }

    public function get_forms(Request $request){
        $user = User::where('id',$request->user_id)->first();
        return view('admin.lead-management.candidate-detail.get_forms',compact('user'));
    }

    public function  get_candidate_data(Request $request) {
        $user = User::where('id', $request->user_id)->select('stages', 'dropped_reason', 'stage_expiry_date', 'id')->first();
        $user->stage_expiry_date = date('d-m-Y h:i:s A', strtotime($user->stage_expiry_date));
        $userArray = $user->toArray();
        $userArray['stage_name'] = getStageGroup($userArray['stages']);
        return $userArray;
    } 
   
    public function notes_save(Request $request)
    {
        
        $candidate = Candidate::findOrFail($request->id);

        
            // Check if notes is already an array
            $jsonData = is_array($candidate->notes) ? $candidate->notes : json_decode($candidate->notes, true);
        
            if (!is_array($jsonData)) {
                // If it's not an array, create a new array
                $jsonData = [];
            }
        
            $flag = 0;
        
            foreach ($jsonData as &$item) {
                if ($item['auth_id'] == auth()->user()->id) {
                    $item['notes'] = $request->notes;
                    $item['auth_name'] = auth()->user()->name;
                    $flag = 1;
                }
            }
        
            if ($flag == 0) {
                $newJson = [
                    'auth_id' => auth()->user()->id,
                    'auth_name' => auth()->user()->name,
                    'notes' => $request->notes,
                ];
        
                // Use array_merge to add the new entry to the existing array
                $jsonData[] = $newJson;
            }
        
            // Update the 'notes' field directly
            $candidate->update([
                'notes' => $jsonData,
            ]);

            if ($candidate) {
                return response()->json(['status' => 1]);
            }
        
            return response()->json(['status' => 0]);
        
        
    }

}











