650 lines
35 KiB
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!');
|
|
// }
|
|
// }
|
|
}
|