CrestRoad/laravel/app/Http/Controllers/ContactController.php

650 lines
35 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\LambdaRequest;
use DB;
use League\Csv\Reader;
use Log;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\InvoicesExport;
use Auth;
use DateTime;
use DateTimeZone;
class ContactController extends Controller
{
public function __construct()
{
$this->middleware('auth');
$this->_service = 'contact';
$this->_module = 'contact';
$this->_viewname = 'contact';
$this->_title = 'Paramedics Enrolled';
$this->_base_url = '/contact';
$this->_listtype = 'ajaxlist';
$this->_allcourses = [];
$this->_parents = [];
}
public function ajaxlist(Request $request)
{
$params = $request->input();
$user = Auth::user();
$permissions = json_decode($user->permissions);
if (in_array('all_data_access', $permissions)) {
// $contacts = DB::table("lms_users")
// ->join("lms_courses_completion", "lms_users.contact_id", "=", "lms_courses_completion.contact_id")
// ->select("lms_users.contact_id","lms_users.name","lms_users.phone","lms_users.email","lms_users.rep_name","lms_users.employee_code","lms_users.city",
// "state","lms_users.english_article_count","lms_users.english_quiz_count","lms_users.hindi_article_count","lms_users.hindi_quiz_count", "lms_courses_completion.created_date as latest_date")
// ->skip($params['start'])
// ->take($params['length']);
// if(isset($params['search']['value']) && $params['search']['value'] != '') {
// $contacts->whereRaw("MATCH(name,phone,email,rep_name,employee_code)AGAINST('".$params['search']['value']."' IN BOOLEAN MODE)");
// }
// $contacts = $contacts->get();
$latest_dates = DB::table('lms_courses_completion')
->select('contact_id', DB::raw('MAX(created_date) as latest_date'))
->groupBy('contact_id');
$contacts = DB::table('lms_users')
->leftJoinSub($latest_dates, 'latest_dates', function ($join) {
$join->on('lms_users.contact_id', '=', 'latest_dates.contact_id');
})
->select(
"lms_users.contact_id",
"lms_users.name",
"lms_users.phone",
"lms_users.email",
"lms_users.rep_name",
"lms_users.employee_code",
"lms_users.city",
"state",
"lms_users.english_article_count",
"lms_users.english_quiz_count",
"lms_users.hindi_article_count",
"lms_users.hindi_quiz_count",
"latest_dates.latest_date"
)
->skip($params['start'])
->take($params['length']);
if (isset($params['search']['value']) && $params['search']['value'] != '') {
$contacts->whereRaw("MATCH(name,phone,email,rep_name,employee_code)AGAINST('" . $params['search']['value'] . "' IN BOOLEAN MODE)");
}
$contacts = $contacts->get();
$count = DB::table("lms_users")->select(DB::raw("count(*) as count"))->first();
} else {
$contacts = DB::table("lms_users")->where('parents', 'like', '%' . $user->hierarchy_id . '%')->orWhere('user_id', $user->user_id)->select("contact_id", "name", "phone", "email", "rep_name", "employee_code", "city", "state", "english_article_count", "english_quiz_count", "hindi_article_count", "hindi_quiz_count")->skip($params['start'])->take($params['length'])->get();
$count = DB::table("lms_users")->where('parents', 'like', '%' . $user->hierarchy_id . '%')->orWhere('user_id', $user->user_id)->select(DB::raw("count(*) as count"))->first();
}
// echo "<pre>";
// print_r($contacts);
// exit;
// if(in_array('all_data_access',$permissions)) {
// $contacts = DB::table("lms_users as u")->select("u.contact_id","u.name","u.phone","u.email","u.rep_name","u.employee_code","u.city","u.state","u.english_article_count","u.english_quiz_count","u.hindi_article_count","u.hindi_quiz_count","r.is_sent")->skip($params['start'])->take($params['length'])
// ->leftjoin("raphiwa_send as r", "u.phone", "r.to");
// if(isset($params['search']['value']) && $params['search']['value'] != '') {
// $contacts->whereRaw("MATCH(u.name,u.phone,u.email,u.rep_name,u.employee_code)AGAINST('".$params['search']['value']."' IN BOOLEAN MODE)");
// }
// $contacts = $contacts->get();
// $count = DB::table("lms_users")->select(DB::raw("count(*) as count"))->first();
// } else {
// $contacts = DB::table("lms_users as u")->where('u.parents', 'like', '%'.$user->hierarchy_id.'%')->orWhere('u.user_id', $user->user_id)->select("u.contact_id","u.name","u.phone","u.email","u.rep_name","u.employee_code","u.city","u.state","u.english_article_count","u.english_quiz_count","u.hindi_article_count","u.hindi_quiz_count","r.is_sent")->skip($params['start'])->take($params['length'])->leftjoin("raphiwa_send as r", "r.to", "u.phone")->get();
// $count = DB::table("lms_users")->where('parents', 'like', '%'.$user->hierarchy_id.'%')->orWhere('user_id', $user->user_id)->select(DB::raw("count(*) as count"))->first();
// }
// if(in_array('all_data_access',$permissions)) {
// $contacts = DB::table("lms_users as u")->select("u.contact_id","u.name","u.phone","u.email","u.rep_name","u.employee_code","u.city","u.state","u.english_article_count","u.english_quiz_count","u.hindi_article_count","u.hindi_quiz_count","r.is_sent")->skip($params['start'])->take($params['length'])
// ->leftjoin("raphiwa_send as r", "u.phone", "r.to");
// if(isset($params['search']['value']) && $params['search']['value'] != '') {
// $contacts->whereRaw("MATCH(u.name,u.phone,u.email,u.rep_name,u.employee_code)AGAINST('".$params['search']['value']."' IN BOOLEAN MODE)");
// }
// $contacts = $contacts->get();
// $count = DB::table("lms_users")->select(DB::raw("count(*) as count"))->first();
// } else {
// $contacts = DB::table("lms_users as u")->where('u.parents', 'like', '%'.$user->hierarchy_id.'%')->orWhere('u.user_id', $user->user_id)->select("u.contact_id","u.name","u.phone","u.email","u.rep_name","u.employee_code","u.city","u.state","u.english_article_count","u.english_quiz_count","u.hindi_article_count","u.hindi_quiz_count","r.is_sent")->skip($params['start'])->take($params['length'])->leftjoin("raphiwa_send as r", "r.to", "u.phone")->get();
// $count = DB::table("lms_users")->where('parents', 'like', '%'.$user->hierarchy_id.'%')->orWhere('user_id', $user->user_id)->select(DB::raw("count(*) as count"))->first();
// }
// $depts = DB::table("hierarchy_departments")->select("name", "employee_code", "sub_department_3")->get();
// $sdepts = [];
// foreach($depts as $dept) {
// $sdepts[$dept->employee_code] = $dept->sub_department_3;
// }
// $conts = [];
// foreach($contacts as $contact) {
// $conts[$contact->contact_id] = $contact;
// }
// $conts = array_values($conts);
// foreach($conts as &$contact) {
// $contact->english_completed_status = $contact->english_quiz_count >= 3 ? 'Completed' : 'Not Completed';
// $contact->hindi_completed_status = $contact->hindi_quiz_count >= 3 ? 'Completed' : 'Not Completed';
// $contact->actions = [];
// $contact->actions[] = ['link' => '/edit?id='.$contact->contact_id, 'icon' => 'square-edit-outline text-warning'];
// $contact->actions[] = ['link' => '/delete?id='.$contact->contact_id, 'icon' => 'delete text-danger'];
// $contact->team_name = isset($sdepts[$contact->employee_code]) ? $sdepts[$contact->employee_code] : '-';
// }
$depts = DB::table("hierarchy_departments")->select("name", "employee_code", "sub_department_3")->get();
$sdepts = [];
foreach ($depts as $dept) {
$sdepts[$dept->employee_code] = $dept->sub_department_3;
}
foreach ($contacts as &$contact) {
$contact->english_completed_status = $contact->english_quiz_count >= 3 ? 'Completed' : 'Not Completed';
$contact->hindi_completed_status = $contact->hindi_quiz_count >= 3 ? 'Completed' : 'Not Completed';
$contact->actions = [];
$contact->actions[] = ['link' => '/edit?id=' . $contact->contact_id, 'icon' => 'square-edit-outline text-warning'];
$contact->actions[] = ['link' => '/delete?id=' . $contact->contact_id, 'icon' => 'delete text-danger'];
$contact->team_name = isset($sdepts[$contact->employee_code]) ? $sdepts[$contact->employee_code] : '-';
}
return response()->json(['data' => $contacts, 'iTotalRecords' => $count->count, 'iTotalDisplayRecords' => $count->count]);
$search = ['type' => 'lmsuser'];
foreach ($params['columns'] as $col) {
if ($col['search']['value'] != '') {
$search[$col['data']] = $col['search']['value'];
}
}
$fields = $this->get_list_fields();
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module . '/get_all', ['start' => $params['start'], 'length' => $params['length'], 'search' => json_encode($search), 'keyword' => $params['search']['value'], 'source' => 'dynamodb', 'belowme' => true, 'fields' => json_encode(['city', 'state', 'is_verified', 'article_count', 'completed_article_count', 'user_info'])]);
//echo '<pre>'; print_r($response); exit;
//Log::debug(print_r($response, true));
$depts = DB::table("hierarchy_departments")->select("name", "employee_code", "sub_department_3")->get();
$sdepts = [];
foreach ($depts as $dept) {
$sdepts[$dept->employee_code] = $dept->sub_department_3;
}
$article_counts = DB::table("lms_courses_completion")->select("contact_id", "course_id", DB::raw("count(article_id) as article_count"))->groupBy("contact_id", "course_id")->get();
$article_counts_arr = [];
foreach ($article_counts as $ac) {
$article_counts_arr[$ac->contact_id . '_' . $ac->course_id] = $ac->article_count;
}
//Log::debug(json_encode(['start' => $params['start'], 'length' => $params['length'], 'search' => json_encode($search), 'keyword' => $params['search']['value'], 'belowme' => true, 'fields' => json_encode(['city','state','is_verified','article_count','completed_article_count']) ]));
// Log::debug(print_r(['start' => $params['start'], 'length' => $params['length'], 'search' => json_encode($search), 'keyword' => $params['search']['value'] ], true));
$users = [];
foreach ($response->data->items as $item) {
$user = [];
foreach ($fields as $field => $props) {
if ($field != 'actions') {
switch ($props['type']) {
case ('image'):
$user[$field] = '<img src="' . $item->{$field} . '" class="img-thumbnail"> ';
break;
case ('text'):
case ('select'):
$user[$field] = isset($item->{$field}) ? $item->{$field} : '';
break;
case ('date'):
$user[$field] = date("d M Y", strtotime($item->{$field}));
break;
}
} else {
$user['actions'] = [];
foreach ($props['buttons'] as $key => $button) {
switch ($button) {
case 'edit':
$user['actions'][] = ['link' => '/edit?id=' . $item->id, 'icon' => 'square-edit-outline text-warning'];
break;
case 'delete':
$user['actions'][] = ['link' => '/delete?id=' . $item->id, 'icon' => 'delete text-danger'];
break;
default:
$querystring = $button['querystring'];
foreach ((array)$item as $k => $v) {
if (strpos($querystring, '{' . strtoupper($k) . '}') !== false)
$querystring = str_replace('{' . strtoupper($k) . '}', $v, $querystring);
}
$user['actions'][] = ['link' => '/' . $key . '?' . $querystring, 'icon' => $button['icon']];
break;
}
}
}
}
$user['english_completed_articles'] = isset($article_counts_arr[$item->id . '_1692237077-7be9a215-dae1-4af0-9350-d336ea54176f']) ? $article_counts_arr[$item->id . '_1692237077-7be9a215-dae1-4af0-9350-d336ea54176f'] : 0;
$user['hindi_completed_articles'] = isset($article_counts_arr[$item->id . '_1692263655-25749640-2bfb-476c-9116-cbc9aa958335']) ? $article_counts_arr[$item->id . '_1692263655-25749640-2bfb-476c-9116-cbc9aa958335'] : 0;
$user['english_completed_status'] = $user['english_completed_articles'] >= 3 ? 'Completed' : 'Not Completed';
$user['hindi_completed_status'] = $user['hindi_completed_articles'] >= 3 ? 'Completed' : 'Not Completed';
// $user['completed_vs_total'] = (isset($item->article_count) ? $item->article_count : '-') . ' / ' . (isset($item->completed_article_count) ? $item->completed_article_count : '-');
// $user['is_completed'] = ((isset($item->article_count) ? $item->article_count : 0) == (isset($item->completed_article_count) ? $item->completed_article_count : 0) && (isset($item->article_count) ? $item->article_count : 0) > 0 && (isset($item->completed_article_count) ? $item->completed_article_count : 0)) ? 'Completed' : 'Not Completed';
$user['rep_name'] = isset($item->user_info) && isset($item->user_info->name) ? $item->user_info->name : '-';
$user['employee_code'] = isset($item->user_info) && isset($item->user_info->employee_code) ? $item->user_info->employee_code : '-';
$user['team_name'] = isset($sdepts[$user['employee_code']]) ? $sdepts[$user['employee_code']] : '-';
$users[] = $user;
}
if (!isset($response->data->count)) {
$response->data->count = sizeof($response->data->items);
}
return response()->json(['data' => $users, 'iTotalRecords' => $response->data->count, 'iTotalDisplayRecords' => $response->data->count]);
}
public function list(Request $request)
{
$fields = $this->get_list_fields();
return $this->view($this->_listtype)->with([
'title' => $this->_title,
'fields' => $fields,
'base_url' => $this->_base_url,
//'items' => $response->data->items,
'buttons' => $this->get_list_buttons()
]);
}
protected function get_list_buttons()
{
// return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Import Users', 'link' => $this->_base_url.'/import'] ];
return [['title' => 'Export', 'link' => $this->_base_url . '/export']];
}
protected function get_import_fields($records)
{
$response = LambdaRequest::signedrequest('get', 'contact', 'contactattribute/get_all');
$hierar = $this->getlambda('get', 'ums', 'hierarchy', 'dropdown');
$hierar_dd = [];
foreach ($hierar->data->items as $hier) {
$hierar_dd[$hier->code] = $hier->name . ' (' . $hier->code . ')';
}
//echo '<pre>'; print_r($response); exit;
$fields = [
'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
'email' => ['title' => 'Email', 'type' => 'email', 'required' => true],
'phone' => ['title' => 'Phone', 'type' => 'text', 'required' => true],
'msl_code' => ['title' => 'MSL Code', 'type' => 'text'],
'position' => ['title' => 'Position', 'type' => 'select', 'required' => true, 'values' => $hierar_dd],
'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
];
foreach ($response->data->items as $item) {
$values = [];
if (in_array($item->type, ['select', 'radio', 'checkbox'])) {
foreach ($item->options as $op) {
$values[$op->value] = $op->display;
}
}
$fields[$item->code] = ['title' => $item->attribute, 'type' => $item->type, 'required' => $item->required == 'yes' ? true : false, 'values' => $values];
}
return $fields;
}
// public function list(Request $request) {
// $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all');
// //echo '<pre>'; print_r($items); exit;
// $items = [];
// foreach ($response->data->items as $item) {
// $item->position = $item->hierarchy_info->code;
// unset($item->hierarchy_info);
// $items[] = $item;
// }
// $fields = $this->get_list_fields();
// return $this->view('list')->with([
// 'title' => $this->_title,
// 'fields' => $fields,
// 'base_url' => $this->_base_url,
// 'items' => $items,
// 'buttons' => $this->get_list_buttons()
// ]);
// }
protected function get_list_fields()
{
return [
'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']],
'name' => ['title' => 'Name', 'type' => 'text'],
'phone' => ['title' => 'Phone', 'type' => 'text'],
'email' => ['title' => 'Email', 'type' => 'text'],
'rep_name' => ['title' => 'Rep Name', 'type' => 'text'],
'employee_code' => ['title' => 'Employee Code', 'type' => 'text'],
'team_name' => ['title' => 'Team Name', 'type' => 'text'],
'city' => ['title' => 'City', 'type' => 'text'],
'state' => ['title' => 'State', 'type' => 'text'],
// 'completed_vs_total' => ['title' => 'Completed / Total', 'type' => 'text'],
// 'is_completed' => ['title' => 'Course Status', 'type' => 'text'],
'english_article_count' => ['title' => 'English Completed Articles', 'type' => 'text'],
'english_quiz_count' => ['title' => 'English Completed Quiz', 'type' => 'text'],
'english_completed_status' => ['title' => 'English Course Status', 'type' => 'text'],
'hindi_article_count' => ['title' => 'Hindi Completed Articles', 'type' => 'text'],
'hindi_quiz_count' => ['title' => 'Hindi Completed Quiz', 'type' => 'text'],
'hindi_completed_status' => ['title' => 'Hindi Course Status', 'type' => 'text'],
'latest_date' => ['title' => 'Course Completion Date', 'type' => 'text'],
//'status' => ['title' => 'Status', 'type' => 'select'],
//'is_verified' => ['title' => 'Is Verified', 'type' => 'select'],
];
}
protected function get_form_fields($type, $values)
{
$response = LambdaRequest::signedrequest('get', 'contact', 'contactattribute/get_all');
$hierar = $this->getlambda('get', 'ums', 'hierarchy', 'dropdown');
$hierar_dd = [];
foreach ($hierar->data->items as $hier) {
$hierar_dd[$hier->code] = $hier->name . ' (' . $hier->code . ')';
}
//echo '<pre>'; print_r($response); exit;
$fields = [
'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
'email' => ['title' => 'Email', 'type' => 'email', 'required' => true],
'phone' => ['title' => 'Phone', 'type' => 'text', 'required' => true],
'msl_code' => ['title' => 'MSL Code', 'type' => 'text', 'required' => true],
'position' => ['title' => 'Position', 'type' => 'select', 'required' => true, 'values' => $hierar_dd],
'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
];
foreach ($response->data->items as $item) {
$values = [];
if (in_array($item->type, ['select', 'radio', 'checkbox'])) {
foreach ($item->options as $op) {
$values[$op->value] = $op->display;
}
}
$fields[$item->code] = ['title' => $item->attribute, 'type' => $item->type, 'required' => $item->required == 'yes' ? true : false, 'values' => $values];
}
return $fields;
}
protected function _beforesave($type, $request)
{
$data = $request->except('_token');
$data['entity_id'] = $request->session()->get('entity_id');
$options = [];
if (isset($data['option_value'])) {
foreach ($data['option_value'] as $k => $ov) {
$options[] = ['value' => $ov, 'display' => $data['option_name'][$k]];
}
$data['options'] = $options;
unset($data['option_value']);
unset($data['option_name']);
}
return $data;
}
public function editall(Request $request)
{
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module . '/get_my_contacts');
//echo '<pre>'; print_r($response); exit;
$fields = $this->get_list_fields();
return $this->view('editall')->with([
'title' => $this->_title,
'fields' => $response->data->attributes,
'base_url' => $this->_base_url,
'items' => $response->data->items
]);
}
public function export(Request $request)
{
$user = Auth::user();
$permissions = json_decode($user->permissions);
if (in_array('all_data_access', $permissions)) {
// $contacts = DB::table("lms_users")->select("contact_id", "name", "phone", "email", "rep_name", "employee_code", "city", "state", "english_article_count", "english_quiz_count", "hindi_article_count", "hindi_quiz_count", "clinic_institute_name")->get();
$latest_dates = DB::table('lms_courses_completion')
->select('contact_id', DB::raw('MAX(created_date) as latest_date'))
->groupBy('contact_id');
$contacts = DB::table('lms_users')
->leftJoinSub($latest_dates, 'latest_dates', function ($join) {
$join->on('lms_users.contact_id', '=', 'latest_dates.contact_id');
})
->select(
"lms_users.contact_id",
"lms_users.name",
"lms_users.phone",
"lms_users.email",
"lms_users.rep_name",
"lms_users.employee_code",
"lms_users.city",
"lms_users.state",
"lms_users.english_article_count",
"lms_users.english_quiz_count",
"lms_users.hindi_article_count",
"lms_users.hindi_quiz_count",
"latest_dates.latest_date",
"lms_users.clinic_institute_name"
);
$contacts = $contacts->get();
} else {
$contacts = DB::table("lms_users")->where('parents', 'like', '%' . $user->hierarchy_id . '%')->orWhere('user_id', $user->user_id)->select("contact_id", "name", "phone", "email", "rep_name", "employee_code", "city", "state", "english_article_count", "english_quiz_count", "hindi_article_count", "hindi_quiz_count", "clinic_institute_name")->get();
}
$depts = DB::table("hierarchy_departments")->select("name", "employee_code", "sub_department_3")->get();
$sdepts = [];
foreach ($depts as $dept) {
$sdepts[$dept->employee_code] = $dept->sub_department_3;
}
foreach ($contacts as &$contact) {
$contact->english_completed_status = $contact->english_quiz_count >= 3 ? 'Completed' : 'Not Completed';
$contact->hindi_completed_status = $contact->hindi_quiz_count >= 3 ? 'Completed' : 'Not Completed';
$contact->team_name = isset($sdepts[$contact->employee_code]) ? $sdepts[$contact->employee_code] : '-';
}
$headers = ['ID', 'Name', 'Phone', 'Email', 'Rep Name', 'Employee Code', 'Team Name', 'City', 'State', 'Clinic Institute Name', 'English Completed Articles', 'English Completed Quiz', 'English Course Status', 'Hindi Completed Articles', 'Hindi Completed Quiz', 'Hindi Course Status', 'Completion Date'];
$exceldata[] = $headers;
foreach ($contacts as $user) {
$row = [];
$row[] = isset($user->contact_id) ? $user->contact_id : '-';
$row[] = isset($user->name) ? $user->name : '-';
$row[] = isset($user->phone) ? $user->phone : '-';
$row[] = isset($user->email) ? $user->email : '-';
$row[] = isset($user->rep_name) ? $user->rep_name : '-';
$row[] = isset($user->employee_code) ? $user->employee_code : '-';
$row[] = isset($user->team_name) ? $user->team_name : '-';
$row[] = isset($user->city) ? $user->city : '-';
$row[] = isset($user->state) ? $user->state : '-';
$row[] = isset($user->clinic_institute_name) ? $user->clinic_institute_name : '-';
$row[] = isset($user->english_article_count) ? $user->english_article_count : '-';
$row[] = isset($user->english_quiz_count) ? $user->english_quiz_count : '-';
$row[] = isset($user->english_completed_status) ? $user->english_completed_status : '-';
$row[] = isset($user->hindi_article_count) ? $user->hindi_article_count : '-';
$row[] = isset($user->hindi_quiz_count) ? $user->hindi_quiz_count : '-';
$row[] = isset($user->hindi_completed_status) ? $user->hindi_completed_status : '-';
// $row[] = isset($user->status) ? $user->status : '-';
if (isset($user->latest_date)) {
$utcDate = new DateTime($user->latest_date, new DateTimeZone('UTC'));
$utcDate->setTimezone(new DateTimeZone('Asia/Kolkata'));
$formattedDate = $utcDate->format('Y-m-d g:i A');
$row[] = $formattedDate;
} else {
$row[] = '-';
}
$exceldata[] = $row;
}
return Excel::download(new InvoicesExport($exceldata), 'Paramedics.xlsx');
$search = ['type' => 'lmsuser'];
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module . '/get_all', ['search' => json_encode($search), 'source' => 'dynamodb', 'belowme' => true, 'fields' => json_encode(['city', 'state', 'is_verified', 'article_count', 'completed_article_count', 'user_info', 'clinic_institute_name'])]);
//echo '<pre>'; print_r($response); exit;
//Log::debug(print_r($response, true));
$depts = DB::table("hierarchy_departments")->select("name", "employee_code", "sub_department_3")->get();
$sdepts = [];
foreach ($depts as $dept) {
$sdepts[$dept->employee_code] = $dept->sub_department_3;
}
$article_counts = DB::table("lms_courses_completion")->select("contact_id", "course_id", DB::raw("count(article_id) as article_count"))->groupBy("contact_id", "course_id")->get();
$article_counts_arr = [];
foreach ($article_counts as $ac) {
$article_counts_arr[$ac->contact_id . '_' . $ac->course_id] = $ac->article_count;
}
//Log::debug(json_encode(['start' => $params['start'], 'length' => $params['length'], 'search' => json_encode($search), 'keyword' => $params['search']['value'], 'belowme' => true, 'fields' => json_encode(['city','state','is_verified','article_count','completed_article_count']) ]));
// Log::debug(print_r(['start' => $params['start'], 'length' => $params['length'], 'search' => json_encode($search), 'keyword' => $params['search']['value'] ], true));
$users = [];
foreach ($response->data->items as $item) {
$user = (array)$item;
// $user['completed_vs_total'] = (isset($item->article_count) ? $item->article_count : '-') . ' / ' . (isset($item->completed_article_count) ? $item->completed_article_count : '-');
// $user['is_completed'] = ((isset($item->article_count) ? $item->article_count : 0) == (isset($item->completed_article_count) ? $item->completed_article_count : 0) && (isset($item->article_count) ? $item->article_count : 0) > 0 && (isset($item->completed_article_count) ? $item->completed_article_count : 0)) ? 'Completed' : 'Not Completed';
$user['english_completed_articles'] = isset($article_counts_arr[$item->id . '_1692237077-7be9a215-dae1-4af0-9350-d336ea54176f']) ? $article_counts_arr[$item->id . '_1692237077-7be9a215-dae1-4af0-9350-d336ea54176f'] : 0;
$user['hindi_completed_articles'] = isset($article_counts_arr[$item->id . '_1692263655-25749640-2bfb-476c-9116-cbc9aa958335']) ? $article_counts_arr[$item->id . '_1692263655-25749640-2bfb-476c-9116-cbc9aa958335'] : 0;
$user['english_completed_status'] = $user['english_completed_articles'] >= 3 ? 'Completed' : 'Not Completed';
$user['hindi_completed_status'] = $user['hindi_completed_articles'] >= 3 ? 'Completed' : 'Not Completed';
$user['rep_name'] = isset($item->user_info) && isset($item->user_info->name) ? $item->user_info->name : '-';
$user['employee_code'] = isset($item->user_info) && isset($item->user_info->employee_code) ? $item->user_info->employee_code : '-';
$user['team_name'] = isset($sdepts[$user['employee_code']]) ? $sdepts[$user['employee_code']] : '-';
$users[] = (object)$user;
}
//echo '<pre>';print_r($users); exit;
$headers = ['ID', 'Name', 'Phone', 'Email', 'Rep Name', 'Employee Code', 'Team Name', 'City', 'State', 'Clinic Institute Name', 'English Completed Articles', 'English Course Status', 'Hindi Completed Articles', 'Hindi Course Status', 'Status'];
$exceldata[] = $headers;
foreach ($users as $user) {
$row = [];
$row[] = isset($user->id) ? $user->id : '-';
$row[] = isset($user->name) ? $user->name : '-';
$row[] = isset($user->phone) ? $user->phone : '-';
$row[] = isset($user->email) ? $user->email : '-';
$row[] = isset($user->rep_name) ? $user->rep_name : '-';
$row[] = isset($user->employee_code) ? $user->employee_code : '-';
$row[] = isset($user->team_name) ? $user->team_name : '-';
$row[] = isset($user->city) ? $user->city : '-';
$row[] = isset($user->state) ? $user->state : '-';
$row[] = isset($user->clinic_institute_name) ? $user->clinic_institute_name : '-';
$row[] = isset($user->english_completed_articles) ? $user->english_completed_articles : '-';
$row[] = isset($user->english_completed_status) ? $user->english_completed_status : '-';
$row[] = isset($user->hindi_completed_articles) ? $user->hindi_completed_articles : '-';
$row[] = isset($user->hindi_completed_status) ? $user->hindi_completed_status : '-';
$row[] = isset($user->status) ? $user->status : '-';
$exceldata[] = $row;
}
return Excel::download(new InvoicesExport($exceldata), 'Paramedics.xlsx');
}
public function sendwhatsapp(Request $request)
{
$contact_id = $request->input('id', 0);
$force = $request->input('force', 0);
$record = DB::table("lms_users")->where('contact_id', $contact_id)->first();
if (!DB::table("raphiwa_send")->where("contact_id", $record->contact_id)->exists() || $force) {
$rsdata = [
'to' => $record->phone,
'text' => json_encode(['countryCode' => '+91', 'phoneNumber' => $record->phone, 'callbackData' => rand(10000, 99999) . '-' . $record->contact_id, 'type' => 'Template', 'template' => ['name' => 'paramedic_course_registration_success', 'languageCode' => 'en', 'bodyValues' => [$record->name, $record->contact_id]]]),
'is_sent' => 0,
'session_id' => 0,
'contact_id' => $record->contact_id,
'status' => 1
];
DB::table("raphiwa_send")->insert($rsdata);
return redirect($this->_base_url . 's')->withMessage('Successfully Sent Link Message to ' . $record->name . ' on ' . $record->phone . ' !!!');
} else {
$sent = DB::table("raphiwa_send")->where("contact_id", $record->contact_id)->latest('created_at')->first();
return redirect($this->_base_url . 's')->withError('Message NOT Sent to ' . $record->name . ' because its already sent on ' . date("d M Y, h:iA", strtotime($sent->created_at) + 19800));
}
}
// public function postimport(Request $request) {
// if( $request->file('importfile') ) {
// $path = $request->file('importfile')->store('user_import');
// $request->session()->put('user_import_path', $path);
// $csv = Reader::createFromPath(storage_path('app') .'/' . $path, 'r');
// $csv->setHeaderOffset(0);
// $header = $csv->getHeader(); //returns the CSV header record
// $records = $csv->getRecords(); //returns all the CSV records as an Iterator
// $contacts = [];
// echo '<pre>';
// foreach($records as $record) {
// $contacts[] = (array)$record;
// }
// $created = 0;
// $updated = 0;
// $count = 0;
// $total = sizeof($contacts);
// while($count < $total) {
// $tempdata = array_slice($contacts, $count, 20);
// Log::debug(print_r($tempdata, true));
// $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/import', $tempdata);
// Log::debug(print_r($response, true));
// $count = $count + 20;
// $created = $created + $response->data->created_count;
// $updated = $updated + (isset($response->data->updated_count) ? $response->data->updated_count : 0);
// Log::debug(print_r(['$count' => $count, '$created' => $created, '$updated' => $updated], true));
// }
// //echo '<pre>'; print_r($response); exit;
// if($response->statusCode == 200 && $response->status == "success") {
// return redirect($this->_base_url.'s')->withMessage('Successfully Imported ' .$created. ' records and Updated ' .$updated. ' records out of ' .$total. ' records!!!');
// } else {
// return \Redirect::back()->withMessage('Some Error occured!');
// }
// exit;
// return redirect($this->_base_url.'/importmap')->withMessage('Successfully Uploaded !!!');
// } else {
// return \Redirect::back()->withMessage('Some Error occured!');
// }
// }
}