all_lead_list
public function all_lead_list(Request $request)
{
// return $request->all();
$data_limit = request('data_limit', 50);
$data = [
'data_limit' => $data_limit,
'sl' => ((request('page', 1) - 1) * $data_limit),
'phone' => request('phone', ''),
'name' => request('name', ''),
'email' => request('email', ''),
'start_date' => request('start_date', ''),
'create_start_date' => request('create_start_date', ''),
'create_end_date' => request('create_end_date', ''),
'end_date' => request('end_date', ''),
'assign_date_from' => request('assign_date_from', ''),
'assign_date_to' => request('assign_date_to', ''),
'source' => request('source', []),
'status' => request('status', ''),
'student_status' => request('student_status', ''),
'is_contacted' => request('is_contacted', ''),
'is_counselled' => request('is_counselled', ''),
'lead_category' => request('lead_category', ''),
'tag' => request('tag', []),
'lead_priority' => request('lead_priority', ''),
'assign_to' => request('assign_to', ''),
'destination' => request('destination', ''),
'counsellor_id' => request('counsellor_id', ''),
'processing_counsellor_id' => request('processing_counsellor_id', ''),
'intake' => request('intake', ''),
'preference' => request('preference', ''),
'is_attend_english_proficiency_test' => request('is_attend_english_proficiency_test', ''),
'counsellors' => [],
'telemarketers' => [],
];
$query = Student::leftJoin('expo_events', 'expo_events.student_id', '=', 'students.id')
->leftJoin(DB::raw('(SELECT * FROM counsellings WHERE id IN (SELECT MAX(id) FROM counsellings GROUP BY student_id)) as latest_counselling_activities'), 'latest_counselling_activities.student_id', '=', 'students.id')
->leftJoin(DB::raw('(SELECT * FROM activities WHERE id IN (SELECT MAX(id) FROM activities GROUP BY student_id)) as latest_activities'), 'latest_activities.student_id', '=', 'students.id') // Subquery for latest activities
->leftJoin('activities as all_activities', 'all_activities.student_id', '=', 'students.id')
->leftJoin(DB::raw('(SELECT student_id, COUNT(id) as visit_count FROM front_desks GROUP BY student_id) as frontdesk_counts'), 'frontdesk_counts.student_id', '=', 'students.id')
->select(
'students.id',
'students.merged_student_id',
'students.lead_id',
'students.first_name',
'students.last_name',
'students.email',
'students.alter_email',
'students.phone',
'students.alter_phone',
'students.dob',
'students.academic_qualifications',
'students.status',
'students.is_attend_english_proficiency_test',
'students.english_proficiency',
'students.assign_to',
'students.counsellor_id as counselling_counsellor_id',
'students.priority',
'expo_events.preference',
'students.created_at',
'students.is_contacted',
'students.known_by',
'students.known_by_details',
'students.my_reference',
'students.my_reference_details',
'students.created_by',
'latest_activities.date as activity_date',
'latest_activities.category',
'latest_counselling_activities.counsellor_id',
'latest_counselling_activities.counselling_category',
'latest_counselling_activities.counselling_next_date',
'latest_activities.is_connected',
'latest_activities.contact_medium',
'latest_activities.user_id as activity_user_id',
'frontdesk_counts.visit_count'
)
->orderBy("latest_activities.date")
->groupBy("students.id")
->orderBy("latest_counselling_activities.counselling_next_date")
->when(!empty($data['preference']), function ($q) use ($data) {
$q->where('expo_events.preference', 'LIKE', '%' . $data['preference'] . '%');
});
FilterHelper::allLeadFilters($query, $data);
$role = ['counsellor', 'telemarketer', 'head_of_counsellor', 'application_officer'];
$employees = User::select('id', 'name')->whereIn('role', $role)->select('id', 'name', 'role')->get();
foreach ($employees as $employee) {
if ($employee->role === 'counsellor' || $employee->role === 'head_of_counsellor' || $employee->role === 'application_officer') {
$data['counsellors'][] = $employee;
} elseif ($employee->role === 'telemarketer') {
$data['telemarketers'][] = $employee;
}
}
if ($request->export == 'download') {
return DownloadLeadList::download($query->get());
}
$data['lead_list'] = $query->paginate($data_limit)->withQueryString();
// return $data['lead_list'];
$data['count'] = $data['lead_list']->total();
$data['sources'] = GlobalVariables::instance()->source();
$data['total_tag'] = GlobalVariables::instance()->tag();
$data['intakes'] = GlobalVariables::instance()->intakes();
$data['active_menu'] = 'all_lead_list';
$data['page_title'] = 'All Lead List';
$data['user_by_id'] = GlobalVariables::instance()->userById();
$role = Auth::user()->role;
$data['tags'] = GlobalVariables::instance()->tagList();
return view('admin.pages.lead_all_list', compact('data'));
}
0 comments:
Post a Comment