10829 lines
484 KiB
PHP
10829 lines
484 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use App\Http\Requests\FormAdditional;
|
|
use DB;
|
|
use Log;
|
|
use Storage;
|
|
|
|
use App\Mail\Neblogistic;
|
|
use App\Mail\NeblogisticAbm;
|
|
use App\Mail\NeblogisticDepotTmMapping;
|
|
use App\Mail\NeblogisticSupervisor;
|
|
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Exports\InvoicesExport;
|
|
use Auth;
|
|
use App\Mail\ReportExcel;
|
|
use Mail;
|
|
use Illuminate\Support\Facades\Cache;
|
|
use Aws\Ses\SesClient;
|
|
use Aws\Credentials\CredentialProvider;
|
|
use Illuminate\Support\Str;
|
|
use Response;
|
|
use App\Services\NeblogisticAuditService;
|
|
|
|
class FormController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->_service = 'form';
|
|
$this->_module = 'formaction';
|
|
$this->_viewname = 'formaction';
|
|
$this->_title = 'Quick Actions';
|
|
$this->_base_url = '/formaction';
|
|
}
|
|
|
|
protected function deliverform($formdata, $questions, $id = false) {
|
|
$additional_info = $this->get_additional_info($formdata);
|
|
// if($formdata->form_id == '1711609582-e93dba24-9c98-43e7-b97a-b22d64d9b9fc') {
|
|
// echo '<pre>'; print_r($formdata); print_r($questions); exit;
|
|
// }
|
|
//echo '<pre>'; print_r($formdata); print_r($questions); exit;
|
|
$data = ['questions' => $questions, 'form' => $formdata, 'form_id' => $formdata->form_id, 'id' => false, 'id' => $id ];
|
|
//Log::debug(print_r($data, true));
|
|
//echo '<pre>'; print_r($data); exit;
|
|
if(sizeof($additional_info) > 0) {
|
|
$data['additional'] = $additional_info;
|
|
}
|
|
|
|
// if ($formdata->form_id == '1731413373-65062594-7136-45b2-a846-b34be9afe3b9') {
|
|
// // For debug: print $data
|
|
// echo '<pre>' . print_r($data, true) . '</pre>'; exit;
|
|
// }
|
|
// $pid = $formdata->partition;
|
|
// $fid = $formdata->form_id;
|
|
// $base = '/var/www/rapport/resources/views/form';
|
|
// if (is_file("$base/$pid/$fid.blade.php")) {
|
|
// return view("form.$pid.$fid", $data);
|
|
// } elseif (is_file("$base/$fid.blade.php")) {
|
|
// return view("form.$fid", $data);
|
|
// }
|
|
// elseif(isset($formdata->form_type) && $formdata->form_type == 'enrollment_form'){
|
|
// return view('form.common-enrollmentform', $data);
|
|
// }
|
|
// elseif(isset($formdata->form_type) && $formdata->form_type == 'plan_vs_execution'){
|
|
// return view('form.common-planexecution', $data);
|
|
// }
|
|
// else {
|
|
// return view('form.common', $data);
|
|
// }
|
|
if (\View::exists('form.'.$formdata->partition.'.'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->partition.'.'.$formdata->form_id)->with($data);
|
|
} elseif (\View::exists('form.'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->form_id)->with($data);
|
|
} else {
|
|
return view('form.common')->with($data);
|
|
}
|
|
}
|
|
|
|
protected function muscle_questions($formdata) {
|
|
switch($formdata->form_id) {
|
|
case '63c2ff17-a69c-4b47-af33-1d9909c608b6':
|
|
case 'eaef2abf-f16b-414c-b6a5-df3fd2282b2e':
|
|
$hierarchy = LambdaRequest::getrequest('ums', 'hierarchy/hierarchy_below_me', ['partition' => $formdata->partition, 'user_id' => $formdata->user_id ]);
|
|
$team = [];
|
|
foreach($hierarchy->data->hierarchies as $hie) {
|
|
if(isset($hie->owner_info->id)) {
|
|
$team[$hie->owner_info->id] = ['name' => $hie->owner_info->name, 'code' => $hie->owner_info->employee_code ];
|
|
}
|
|
}
|
|
return ['team' => $team];
|
|
break;
|
|
|
|
default:
|
|
return [];
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function handle($finfo, Request $request) {
|
|
$time = strtotime("now");
|
|
Log::debug('enter handle - ' . $time);
|
|
$request->session()->put('finfo', $finfo);
|
|
// $finfo = Cache::remember($finfo, 3600, function () use ($finfo) {
|
|
// return LambdaRequest::postrequest('form', 'formentity/getforminfo', ['finfo' => $finfo]);
|
|
// });
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/getforminfo', ['finfo' => $finfo]);
|
|
//echo '<pre>'; print_r($finfo); exit;
|
|
// if($finfo->data->formdata->partition == 'rapport-dc') {
|
|
// echo 'Temporary down for maintanance, please check back after 10 min'; exit;
|
|
// }
|
|
Log::debug('after getforminfo - ' . $time);
|
|
Log::debug(print_r($finfo, true));
|
|
if( isset($finfo->data->users) && sizeof($finfo->data->users) > 0 ) {
|
|
$finfo->data->formdata->users = $finfo->data->users;
|
|
$finfo->data->formdata->manager_can_submit = true;
|
|
}
|
|
$request->session()->put('formdata', isset($finfo->data->formdata) ? $finfo->data->formdata : $finfo->data->form );
|
|
if($finfo->status == 'success' && $finfo->data->formdata->link_type == 'form' && isset($finfo->data->personalizations) && sizeof($finfo->data->personalizations) > 0 ){
|
|
return $this->deliverpersonalization($finfo->data->formdata, $finfo->data->questions, $finfo->data->personalizations);
|
|
} else if($finfo->status == 'success' && $finfo->data->formdata->link_type == 'form') {
|
|
//echo '<pre>'; print_r($finfo->data); exit;
|
|
// if ($finfo->data->formdata->form_id == '1731413373-65062594-7136-45b2-a846-b34be9afe3b9') {
|
|
// // For debug: print $data
|
|
// echo '<pre>';
|
|
// print_r($finfo);
|
|
// echo '</pre>';
|
|
// exit;
|
|
// }
|
|
return $this->deliverform($finfo->data->formdata, $finfo->data->questions);
|
|
} elseif($finfo->status == 'success' && $finfo->data->formdata->link_type == 'list') {
|
|
//echo '<pre>'; print_r($finfo->data); exit;
|
|
if (\View::exists('form.'.$finfo->data->formdata->partition.'.list-'.$finfo->data->formdata->form_id)) {
|
|
return view('form.'.$finfo->data->formdata->partition.'.list-'.$finfo->data->formdata->form_id)->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey, 'formdata' => $finfo->data->formdata, 'form' => $finfo->data->form ]);
|
|
} elseif (\View::exists('form.list-'.$finfo->data->formdata->form_id)) {
|
|
return view('form.list-'.$finfo->data->formdata->form_id)->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey, 'formdata' => $finfo->data->formdata, 'form' => $finfo->data->form ]);
|
|
} elseif (\View::exists('form.'.$finfo->data->formdata->partition.'.list')) {
|
|
return view('form.'.$finfo->data->formdata->partition.'.list')->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey, 'formdata' => $finfo->data->formdata, 'form' => $finfo->data->form ]);
|
|
} else {
|
|
return view('form.list')->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey, 'formdata' => $finfo->data->formdata, 'form' => $finfo->data->form ]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function loadmore(Request $request) {
|
|
//$finfo = $request->session()->get('finfo');
|
|
//echo $finfo; exit;
|
|
$lastkey = $request->input('lastkey', '');
|
|
$partition = $request->input('partition', '');
|
|
$alldata = $request->input('alldata', 0);
|
|
$user_id = $request->input('user_id', '');
|
|
$form_id = $request->input('form_id', '');
|
|
$team_report = $request->input('team_report', 0);
|
|
|
|
$serviceParams = ['lastkey' => $lastkey, 'partition' => $partition, 'user_id' => $user_id, 'form_id' => $form_id];
|
|
if($alldata == 1) {
|
|
$serviceParams['alldata'] = 1;
|
|
} else if($team_report == 1) {
|
|
$serviceParams['team_report'] = 1;
|
|
}
|
|
$startdate = $request->input('startdate', '');
|
|
$enddate = $request->input('enddate', '');
|
|
if($startdate != '' && $enddate != '') {
|
|
$serviceParams['date_range'] = [$startdate, $enddate];
|
|
}
|
|
|
|
$originalFormId = $form_id;
|
|
|
|
$aliasForms = [
|
|
'1771861147-eb801858-8520-45e9-aa5c-239b6bacdf98'
|
|
=> '1750914801-153443b9-94d0-4dcb-b3f3-4fa11588a0a9'
|
|
];
|
|
|
|
if (isset($aliasForms[$form_id])) {
|
|
$form_id = $aliasForms[$form_id];
|
|
}
|
|
|
|
$serviceParams['form_id'] = $form_id;
|
|
|
|
if ($form_id == '1750914801-153443b9-94d0-4dcb-b3f3-4fa11588a0a9') {
|
|
$serviceParams['sort'] = ['created_date' => -1];
|
|
}
|
|
|
|
//print_r(json_encode($serviceParams)); exit;
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/getformhistory', $serviceParams);
|
|
Log::debug(print_r(['to test view'], true));
|
|
|
|
Log::debug(print_r($finfo, true));
|
|
|
|
//return response()->json(['finfo' => $finfo]);
|
|
// print_r($finfo); exit;
|
|
$formdata = $finfo->data->form;
|
|
$jsonRows = [];
|
|
|
|
if ($form_id == '1750914801-153443b9-94d0-4dcb-b3f3-4fa11588a0a9') {
|
|
$submissionIds = [];
|
|
foreach ($finfo->data->submissions as $submission) {
|
|
if (isset($submission->id)) {
|
|
$submissionIds[] = $submission->id;
|
|
}
|
|
}
|
|
$nebStatuses = [];
|
|
$nebRecordIds = [];
|
|
if (!empty($submissionIds)) {
|
|
$nebRows = \DB::table('neblogistic')
|
|
->whereIn('submission_id', $submissionIds)
|
|
->get(['submission_id', 'status', 'id']);
|
|
foreach ($nebRows as $row) {
|
|
$nebStatuses[$row->submission_id] = $row->status;
|
|
$nebRecordIds[$row->submission_id] = $row->id;
|
|
}
|
|
}
|
|
foreach ($finfo->data->submissions as &$submission) {
|
|
if (isset($nebStatuses[$submission->id])) {
|
|
$submission->neblogistic_status = $nebStatuses[$submission->id];
|
|
}
|
|
if (isset($nebRecordIds[$submission->id])) {
|
|
$submission->record_id = $nebRecordIds[$submission->id];
|
|
}
|
|
}
|
|
}
|
|
|
|
//print_r($finfo->data->submissions);exit;
|
|
foreach($finfo->data->submissions as $submission) {
|
|
if (!isset($submission->user_info->name)) continue;
|
|
$row = [
|
|
"date" => date("d M Y", strtotime($submission->updatedAt)),
|
|
"name" => $submission->user_info->name,
|
|
"designation" => $submission->user_info->designation ?? "",
|
|
"employee_code" => $submission->user_info->employee_code ?? "",
|
|
"submission_id" => $submission->id,
|
|
"actions" => []
|
|
];
|
|
|
|
// workflow status
|
|
if (isset($formdata->workflow) && $formdata->workflow == 'yes') {
|
|
$row["workflow_status"] = ucfirst($submission->workflow_status ?? "");
|
|
$row["workflow_next_approver"] = $submission->workflow_next_approver ?? "";
|
|
}
|
|
|
|
// answers for all questions (put on top level!)
|
|
foreach($finfo->data->questions as $code => $question) {
|
|
if ($question->type == 'hidden') continue;
|
|
if ($question->type == 'multitextbox') {
|
|
foreach ($question->options as $k => $v) {
|
|
$row[$k] = isset($submission->formdata->{$k})
|
|
? (is_array($submission->formdata->{$k})
|
|
? implode(', ', $submission->formdata->{$k})
|
|
: $submission->formdata->{$k})
|
|
: '';
|
|
}
|
|
} else if ($question->type == 'file') {
|
|
$row[$code . '_file'] = isset($submission->formdata->{$code})
|
|
? (is_array($submission->formdata->{$code})
|
|
? implode(', ', $submission->formdata->{$code})
|
|
: $submission->formdata->{$code})
|
|
: '';
|
|
} else {
|
|
$row[$code] = isset($submission->formdata->{$code})
|
|
? (is_array($submission->formdata->{$code})
|
|
? implode(', ', $submission->formdata->{$code})
|
|
: $submission->formdata->{$code})
|
|
: '';
|
|
}
|
|
}
|
|
|
|
// show position
|
|
if(isset($finfo->data->form->show_position) && $finfo->data->form->show_position == 'yes') {
|
|
$row['territory'] = $submission->territory;
|
|
$row['area'] = $submission->area;
|
|
$row['region'] = $submission->region;
|
|
$row['zone'] = $submission->zone;
|
|
}
|
|
|
|
// actions
|
|
if(isset($finfo->data->form->approver_can_edit) && $finfo->data->form->approver_can_edit == 'yes') {
|
|
$row['actions'][] = 'edit';
|
|
}
|
|
if(isset($finfo->data->form->allow_delete_by_user) && $finfo->data->form->allow_delete_by_user == 'yes') {
|
|
$row['actions'][] = 'delete';
|
|
}
|
|
if (isset($submission->actions) && in_array('edit', $submission->actions)) $row['actions'][] = 'edit';
|
|
if (
|
|
isset($formdata->workflow) &&
|
|
$formdata->workflow == 'yes' &&
|
|
$submission->workflow_status == 'unapproved'
|
|
) {
|
|
$row['actions'][] = 'approve';
|
|
$row['actions'][] = 'reject';
|
|
}
|
|
|
|
if ($form_id == '1750914801-153443b9-94d0-4dcb-b3f3-4fa11588a0a9') {
|
|
if(isset($submission->formdata->status) && $submission->formdata->status == 'Requested') {
|
|
$row['actions'][] = 'approve';
|
|
$row['actions'][] = 'reject';
|
|
}
|
|
$row['neblogistic_status'] = $submission->formdata->status;
|
|
$row['record_id'] = $submission->formdata->record_id ?? '-';
|
|
}
|
|
$jsonRows[] = $row;
|
|
}
|
|
return response()->json(['rows' => $jsonRows, 'lastkey' => $lastkey+1 ]);
|
|
|
|
|
|
// Log::debug(print_r($finfo->data, true));
|
|
// $html = '';
|
|
// foreach($finfo->data->submissions as $submission) {
|
|
// if(isset($submission->user_info->name)) {
|
|
// $html .= '<tr>
|
|
// <th>'.date("d M Y", strtotime($submission->updatedAt)).'</th>
|
|
// <td>
|
|
// <h5 class="m-0 fw-normal">'.$submission->user_info->name.'</h5>
|
|
// <p class="mb-0 text-muted"><small>'.(isset($submission->user_info->designation)?$submission->user_info->designation:'-').'</small></p>
|
|
// </td>
|
|
// <th>
|
|
// <h5 class="m-0 fw-normal">'.(isset($submission->user_info->employeecode)?$submission->user_info->employeecode:'-').'</h5>
|
|
// </th>';
|
|
// if(isset($finfo->data->formdata) && isset($finfo->data->formdata->workflow) && $finfo->data->formdata->workflow == 'yes' ) {
|
|
// $html .= '<td>'.ucwords($submission->workflow_status).'</td>';
|
|
// }
|
|
// foreach($finfo->data->questions as $code => $question) {
|
|
// if($question->type == 'file'){
|
|
// $html .= '<td><a target="_blank" href="'. (isset($submission->formdata->{$code}) ? (is_array($submission->formdata->{$code}) ? implode(', ', $submission->formdata->{$code}) : $submission->formdata->{$code}) : '' ).'" download="'.( isset($submission->formdata->{$code}) ? (is_array($submission->formdata->{$code}) ? implode(', ', $submission->formdata->{$code}) : $submission->formdata->{$code}) : '' ).'" class="btn btn-dark btn-xs"><i class="mdi mdi-cloud-download me-1"></i> Download</a></td>';
|
|
// } else {
|
|
// $html .= '<td>'.( isset($submission->formdata->{$code}) ? (is_array($submission->formdata->{$code}) ? implode(', ', $submission->formdata->{$code}) : $submission->formdata->{$code}) : '' ).'</td>';
|
|
// }
|
|
// }
|
|
// $html .= '<th>';
|
|
// //if( in_array('edit', $submission->actions) && (strtotime("now") - strtotime($submission->createdAt)) < 432000 ){
|
|
// $html .= '<a href="/form/edit?id='.$submission->id.'" class="btn btn-primary btn-xs">Edit</a>';
|
|
// if(isset($finfo->data->formdata) && isset($finfo->data->formdata->workflow) && $finfo->data->formdata->workflow == 'yes' && $submission->workflow_status == 'unapproved' ){
|
|
// $html .= '<button class="btn btn-success btn-xs btn-approve m-1" submission="'.$submission->id.'">Approve</button>';
|
|
// $html .= '<button class="btn btn-danger btn-xs btn-reject m-1" submission="'.$submission->id.'">Reject</button>';
|
|
// }
|
|
// //}
|
|
// $html .= '</th>
|
|
// </tr>';
|
|
// }
|
|
// }
|
|
// return response()->json(['html' => $html, 'lastkey' => $finfo->data->lastkey]);
|
|
}
|
|
|
|
public function show(Request $request) {
|
|
$formdata = $request->session()->get('formdata');
|
|
//Log::debug(print_r($formdata, true));
|
|
$id = $request->input('id', false);
|
|
$action = $request->input('action', false);
|
|
Log::debug(print_r(['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'id' => $id ], true));
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'id' => $id ]);
|
|
//Log::debug(print_r($finfo, true));
|
|
$formdata->formdata = $finfo->data->formdata;
|
|
//echo '<pre>'; print_r($formdata); print_r($finfo); exit;
|
|
if($formdata->form_id == '1711947857-4fbd5d43-d176-4ec7-aff2-e4dec4b6e02a' && isset($action) && $action == 'delete') {
|
|
$contact_id = false;
|
|
foreach($finfo->data->questions as $que) {
|
|
if($que->code == 'contact_id') {
|
|
$contact_id = $que->value;
|
|
}
|
|
}
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_delete%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
LambdaRequest::getrequest('contact', 'contact/delete', ['id' => $contact_id], $token[0]->access_token);
|
|
LambdaRequest::getrequest('form', 'formentity/deletesubmission', ['id' => $id, 'form_id' => $formdata->form_id], $token[0]->access_token);
|
|
return redirect('/form/history')->withMessage('Successfully Deleted !!!');
|
|
}
|
|
$formdata->title = $finfo->data->formdata->title;
|
|
return $this->deliverform($formdata, $finfo->data->questions, $id);
|
|
}
|
|
|
|
public function deletesubmission(Request $request) {
|
|
$formdata = $request->session()->get('formdata');
|
|
Log::debug(print_r($formdata, true));
|
|
$id = $request->input('id', false);
|
|
$form_id = $request->input('form_id', false);
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
//print_r(['form_id' => $form_id, 'id' => $id ]); exit;
|
|
LambdaRequest::getrequest('form', 'formentity/deletesubmission', ['form_id' => $form_id, 'id' => $id ], $token[0]->access_token);
|
|
return response()->json(['success' => true, 'message' => 'Successfully Deleted !!!']);
|
|
}
|
|
|
|
public function submit(Request $request) {
|
|
echo '<h1>Something looks wrong. Try again!!!</h1>'; exit;
|
|
$post = $request->except('_token');
|
|
$files = $request->file();
|
|
foreach($files as $fname => $file) {
|
|
$post[$fname] = $this->_uploadMedia($request, $fname, 'form/'.$post['form_id'].'/'.$fname);
|
|
}
|
|
if(isset($post['id']) && $post['id']=='') unset($post['id']);
|
|
$formdata = $request->session()->get('formdata');
|
|
if(isset($post['user_id']) && $post['user_id'] != '') {
|
|
$formdata->user_id = $post['user_id'];
|
|
}
|
|
|
|
// if($formdata->partition == 'rapport-copd') {
|
|
// return response()->json(['status' => 'failure']);
|
|
// }
|
|
|
|
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
|
|
$post = $this->processformdata($formdata->form_id, $post);
|
|
//Log::debug(print_r($post, true));
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
if($formdata->link_type == 'list') {
|
|
return redirect('/form/'.$request->session()->get('finfo') )->withMessage('Successfully Saved !!!');
|
|
} else {
|
|
return redirect('/form/history')->withMessage('Successfully Saved !!!');
|
|
}
|
|
} else {
|
|
echo '<h1>Something looks wrong. Try again!!!</h1>'; exit;
|
|
}
|
|
}
|
|
|
|
protected function createSlug($string) {
|
|
// Convert to lowercase
|
|
$slug = strtolower($string);
|
|
// Transliterate accented characters to ASCII
|
|
$slug = iconv('UTF-8', 'ASCII//TRANSLIT', $slug);
|
|
// Remove special characters
|
|
$slug = preg_replace('/[^a-z0-9\s]/', '', $slug);
|
|
// Replace spaces with hyphens
|
|
$slug = str_replace(' ', '-', $slug);
|
|
// Trim leading and trailing hyphens
|
|
$slug = trim($slug, '-');
|
|
return $slug;
|
|
}
|
|
|
|
protected function sanitizeArray($input) {
|
|
foreach ($input as $key => $value) {
|
|
if (is_array($value)) {
|
|
$input[$key] = $this->sanitizeArray($value);
|
|
} elseif (is_string($value)) {
|
|
$value = trim($value);
|
|
// CSV Injection prevention
|
|
if (preg_match('/^[=+\-@]/', $value)) {
|
|
$value = "'".$value;
|
|
}
|
|
// Basic XSS prevention (optional if output escaping is consistent)
|
|
$value = strip_tags($value); // Removes HTML tags entirely
|
|
$input[$key] = $value;
|
|
}
|
|
}
|
|
return $input;
|
|
}
|
|
|
|
public function ajaxsubmit(Request $request) {
|
|
//return response()->json(['status' => 'error']);
|
|
$post = $request->except('_token');
|
|
$files = $request->file();
|
|
//Log::debug(print_r($files, true));
|
|
// if($post['form_id'] == '1663069943-2d45ab0c-ccbe-4047-a77f-bce46b93257a') {
|
|
// exit;
|
|
// }
|
|
|
|
foreach($files as $fname => $file) {
|
|
$post[$fname] = $this->_uploadMedia($request, $fname, 'form/'.$post['form_id'].'/'.$fname);
|
|
}
|
|
$post = $this->sanitizeArray($post);
|
|
if(isset($post['id']) && $post['id']=='') unset($post['id']);
|
|
|
|
$formdata = $request->session()->get('formdata');
|
|
if(!$formdata) {
|
|
$formdata = (object)[];
|
|
}
|
|
$formdata->form_id = $post['form_id'];
|
|
if(isset($post['user_id']) && $post['user_id'] != '') {
|
|
$formdata->user_id = $post['user_id'];
|
|
}
|
|
if(isset($post['partition']) && $post['partition'] != '') {
|
|
$formdata->partition = $post['partition'];
|
|
}
|
|
|
|
if($formdata->form_id == '1740377155-6ef021d0-d8cf-42e6-bc7d-d00743b7b354') { // emcurecv Hospital Enrollment
|
|
$inputs = $request->input();
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
Log::debug(print_r($token, true));
|
|
$conts = LambdaRequest::getrequest('contact', 'contact/get_all', ['keyword'=>$inputs['hospital_name'], 'search' => '{"type":"hospital"}', 'start' => 0, 'length' => 10000], $token[0]->access_token);
|
|
Log::debug(print_r($conts, true));
|
|
//return response()->json(['status' => 'error']);
|
|
$exists = false;
|
|
if($conts->data->count > 0) {
|
|
foreach($conts->data->items as $item) {
|
|
if($item->hospital_name == $inputs['hospital_name'] && $item->state == $inputs['state_of_hospital'] && $item->city == $inputs['city_of_hospital']) {
|
|
$exists = true;
|
|
}
|
|
}
|
|
}
|
|
Log::debug(print_r($exists, true));
|
|
if(!$exists) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'name' => $post['hospital_name'],
|
|
'msl_code' => 'HOS_' . strtotime("now").rand(0,99),
|
|
'type' => 'hospital',
|
|
'hospital_name' => $post['hospital_name'],
|
|
'total_no_of_listed_drs_in_hospital' => $post['total_no_of_listed_drs_in_hospital'],
|
|
'no_of_beds_in_hospital' => $post['no_of_beds_in_hospital'],
|
|
'state' => $post['state_of_hospital'],
|
|
'city' => $post['city_of_hospital'],
|
|
'suppy_distributor_name_1' => $post['suppy_distributor_name_1'],
|
|
'suppy_distributor_name_2' => $post['suppy_distributor_name_2'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
return response()->json(['status' => 'success']);
|
|
} else {
|
|
return response()->json(['status' => 'error', 'message' => 'The Hospital you are trying add already exists in the system.', 'description' => 'Please check the added hospital list or change the name' ]);
|
|
}
|
|
exit;
|
|
}
|
|
|
|
if ( $formdata->form_id == '1655458544-00d0e7c9-c60e-410e-ada7-8e0fef8e6ac4' && isset($post['planning']) && $post['planning'] == 'yes' ) {
|
|
$plan_date = $post['plan_date'] ?? null;
|
|
|
|
$today = new \DateTime('today');
|
|
$currentDay = (int) $today->format('d');
|
|
|
|
if ($currentDay >= 1 && $currentDay <= 31) {
|
|
|
|
$nextMonthStart = (clone $today)->modify('first day of next month')->format('Y-m-d');
|
|
$nextMonthEnd = (clone $today)->modify('last day of next month')->format('Y-m-d');
|
|
|
|
if (empty($plan_date)) {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => 'Plan date is required.'
|
|
], 200);
|
|
}
|
|
|
|
$planDateObj = \DateTime::createFromFormat('Y-m-d', $plan_date);
|
|
|
|
if (!$planDateObj || $planDateObj->format('Y-m-d') !== $plan_date) {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => 'Invalid plan date.'
|
|
], 200);
|
|
}
|
|
|
|
// if ($plan_date < $nextMonthStart || $plan_date > $nextMonthEnd) {
|
|
// return response()->json([
|
|
// 'status' => 'error',
|
|
// 'message' => "Plan date must be between $nextMonthStart and $nextMonthEnd."
|
|
// ], 200);
|
|
// }
|
|
|
|
} else {
|
|
|
|
if (!empty($plan_date)) {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => 'Plan date can only be selected from 20th to 25th.'
|
|
], 200);
|
|
}
|
|
}
|
|
}
|
|
|
|
if($formdata->form_id == '1750312866-ea213e07-7786-4e99-9e1b-3bb8784ee219') { // gennovadc center/hospital enrollment
|
|
$inputs = $request->input();
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
// OLD: Use Formhelper to get all previous form data entries for this user
|
|
// $previousEntries = \App\Helpers\Formhelper::getMultiformData($formdata->partition, $formdata->form_id, $formdata->user_id);
|
|
|
|
$exists = false;
|
|
$input_hospital_name = isset($inputs['dialysis_centre_hospital_name']) ? trim($inputs['dialysis_centre_hospital_name']) : '';
|
|
// $input_center_type = isset($post['center_type']) ? trim($post['center_type']) : '';
|
|
|
|
$normalize = function ($s) {
|
|
$s = is_string($s) ? $s : '';
|
|
$s = mb_strtolower(trim($s));
|
|
$s = preg_replace('/\s+/', ' ', $s);
|
|
// Remove punctuation/special chars so "A-B" matches "A B"
|
|
$s = preg_replace('/[^a-z0-9 ]/i', '', $s);
|
|
$s = preg_replace('/\s+/', ' ', $s);
|
|
return trim($s);
|
|
};
|
|
$input_norm = $normalize($input_hospital_name);
|
|
|
|
if ($input_norm === '') {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => 'Hospital name is required.',
|
|
'description' => 'Please enter the dialysis centre / hospital name'
|
|
]);
|
|
}
|
|
|
|
// NEW: compare against all existing contacts for this hierarchy and their hospital_name/name.
|
|
$hierarchyId = $inputs['hierarchy_id'] ?? ($formdata->hierarchy_id ?? $formdata->hierarchy ?? '');
|
|
if (!empty($hierarchyId)) {
|
|
$contactsResp = LambdaRequest::getrequest('contact', 'contact/get_my_contacts', [
|
|
'hierarchy' => $hierarchyId,
|
|
'partition' => $formdata->partition,
|
|
//'type' => 'center',
|
|
'fields' => 'id,name,hospital_name,type'
|
|
]);
|
|
|
|
// return response()->json([
|
|
// 'status' => 'error',
|
|
// 'message' => 'Hospital name is required.',
|
|
// 'description' => 'Please enter the dialysis centre / hospital name',
|
|
// 'previous_hospital_names' => $contactsResp->data->items
|
|
// ]);
|
|
|
|
if (isset($contactsResp->data) && isset($contactsResp->data->items) && is_array($contactsResp->data->items)) {
|
|
foreach ($contactsResp->data->items as $c) {
|
|
$entry_hospital_name = '';
|
|
if (isset($c->hospital_name) && $c->hospital_name !== null) {
|
|
$entry_hospital_name = trim($c->hospital_name);
|
|
} elseif (isset($c->name) && $c->name !== null) {
|
|
$entry_hospital_name = trim($c->name);
|
|
}
|
|
|
|
$entry_norm = $normalize($entry_hospital_name);
|
|
$similarPct = 0;
|
|
if ($entry_norm !== '' && $input_norm !== '') {
|
|
similar_text($entry_norm, $input_norm, $similarPct);
|
|
}
|
|
|
|
$isSame =
|
|
strcasecmp($entry_hospital_name, $input_hospital_name) === 0 ||
|
|
($entry_norm !== '' && $entry_norm === $input_norm) ||
|
|
($similarPct >= 90);
|
|
|
|
if ($isSame) {
|
|
Log::debug(print_r(['Center enrol form: duplicate contact'], true));
|
|
Log::debug(print_r(['existing' => $entry_hospital_name, 'input' => $input_hospital_name, 'similarPct' => $similarPct], true));
|
|
$exists = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!$exists) {
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'name' => $post['dialysis_centre_hospital_name'],
|
|
'msl_code' => 'HOS_' . strtotime("now").rand(0,99),
|
|
'hospital_name' => $post['dialysis_centre_hospital_name'],
|
|
// 'center_type' => $post['center_type'],
|
|
'type' => 'center'
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
$post['contact_id'] = isset($cont->data->item->id) ? $cont->data->item->id : null;
|
|
//return response()->json(['status' => 'success']);
|
|
} else {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => 'The Hospital you are trying to add already exists in the system.',
|
|
'description' => 'Please check the added hospital list or change the name'
|
|
]);
|
|
}
|
|
//exit;
|
|
}
|
|
|
|
// if($formdata->form_id == '1755701060-46f95f9d-f30b-41fe-9e0e-6ede3b612ef2') { // vegus center/hospital enrollment
|
|
// $inputs = $request->input();
|
|
// list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
// // Use Formhelper to get all previous form data entries for this user
|
|
// $previousEntries = \App\Helpers\Formhelper::getMultiformData($formdata->partition, $formdata->form_id, $formdata->user_id);
|
|
|
|
// $exists = false;
|
|
// $input_account_name = isset($inputs['enter_account_name']) ? trim($inputs['enter_account_name']) : '';
|
|
// $input_place_branch = isset($post['place_branch']) ? trim($post['place_branch']) : '';
|
|
|
|
// if(isset($previousEntries->data) && isset($previousEntries->data->submissions) && is_array($previousEntries->data->submissions)) {
|
|
// foreach($previousEntries->data->submissions as $submission) {
|
|
// $formdata_entry = isset($submission->formdata) ? $submission->formdata : null;
|
|
// $entry_account_name = isset($formdata_entry->enter_account_name) ? trim($formdata_entry->enter_account_name) : '';
|
|
// $entry_place_branch = isset($formdata_entry->place_branch) ? trim($formdata_entry->place_branch) : '';
|
|
// if (
|
|
// strcasecmp($entry_account_name, $input_account_name) === 0 &&
|
|
// strcasecmp($entry_place_branch, $input_place_branch) === 0
|
|
// ) {
|
|
// $exists = true;
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// if(!$exists) {
|
|
// $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
// $contactdata = [
|
|
// 'domain' => $domain,
|
|
// 'application' => $application,
|
|
// 'user_id' => $post['user_id'],
|
|
// 'name' => $post['enter_account_name'],
|
|
// 'msl_code' => 'HOS_' . strtotime("now").rand(0,99),
|
|
// 'center_place' => $post['enter_account_name'],
|
|
// 'center_name' => $post['place_branch'],
|
|
// 'type' => 'center'
|
|
// ];
|
|
// $cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
// $post['contact_id'] = isset($cont->data->item->id) ? $cont->data->item->id : null;
|
|
// //return response()->json(['status' => 'success']);
|
|
// } else {
|
|
// return response()->json([
|
|
// 'status' => 'error',
|
|
// 'message' => 'The Hospital you are trying to add already exists in the system.',
|
|
// 'description' => 'Please check the added hospital list or change the name'
|
|
// ]);
|
|
// }
|
|
// //exit;
|
|
// }
|
|
|
|
if($formdata->form_id == '1755701060-46f95f9d-f30b-41fe-9e0e-6ede3b612ef2') { // emcurecv Hospital Enrollment
|
|
$inputs = $request->input();
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
Log::debug(print_r($token, true));
|
|
$conts = LambdaRequest::getrequest('contact', 'contact/get_all', ['keyword'=>$inputs['enter_account_name'], 'search' => '{"type":"center"}', 'start' => 0, 'length' => 10000], $token[0]->access_token);
|
|
Log::debug(print_r($conts, true));
|
|
// return response()->json(['status' => $conts]);
|
|
$exists = false;
|
|
|
|
if (isset($conts->data->count) && $conts->data->count > 0 && isset($conts->data->items) && is_array($conts->data->items)) {
|
|
foreach ($conts->data->items as $item) {
|
|
// return response()->json(['status' => 'inside']);
|
|
|
|
if (
|
|
isset($item->center_name, $item->center_place, $inputs['enter_account_name'], $inputs['place_branch']) &&
|
|
strcasecmp(trim($item->center_name), trim($inputs['enter_account_name'])) === 0 &&
|
|
strcasecmp(trim($item->center_place), trim($inputs['place_branch'])) === 0
|
|
) {
|
|
$exists = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// return response()->json(['status' => $exists]);
|
|
|
|
|
|
Log::debug(print_r($exists, true));
|
|
if(!$exists) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'name' => $post['enter_account_name'],
|
|
'msl_code' => 'HOS_' . strtotime("now").rand(0,99),
|
|
'center_name' => $post['enter_account_name'],
|
|
'center_place' => $post['place_branch'],
|
|
'type' => 'center'
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
return response()->json(['status' => 'success']);
|
|
} else {
|
|
return response()->json(['status' => 'error', 'message' => 'The Hospital you are trying add already exists in the system.', 'description' => 'Please check the added hospital list or change the name' ]);
|
|
}
|
|
exit;
|
|
}
|
|
|
|
if($formdata->form_id == '1718178830-d871301e-312b-4a60-9c68-15afa4ce6163') {
|
|
$exists = false;
|
|
if(!isset($post['id'])) {
|
|
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
foreach($history->data->submissions as $submission) {
|
|
if(isset($submission->formdata->execution_id) && $submission->formdata->execution_id == $post['execution_id'] && $submission->formdata->no_of_follow_up == $post['no_of_follow_up']) {
|
|
return response()->json(['status' => 'failure', 'message' => 'You have already submitted for '.$post['no_of_follow_up'].' Follow Up. Please select other option']);
|
|
}
|
|
}
|
|
}
|
|
if(!isset($post['id']) && $formdata->form_id == '1718178830-d871301e-312b-4a60-9c68-15afa4ce6163') {
|
|
DB::table('team3_nebyatra_doctors')->where('execution_id', $post['execution_id'])->increment('no_of_followups', 1);
|
|
DB::table('team3_nebyatra_doctors')->where('execution_id', $post['execution_id'])->update(['last_followup_date' => date('Y-m-d H:i:s', strtotime('now'))] );
|
|
}
|
|
if(!isset($post['id']) && $formdata->form_id == '1718178830-d871301e-312b-4a60-nebmitra-15afa4ce6163') {
|
|
DB::table('team3_nebyatra_doctors')->where('execution_id', $post['execution_id'])->increment('nm_no_of_followups', 1);
|
|
DB::table('team3_nebyatra_doctors')->where('execution_id', $post['execution_id'])->update(['nm_last_followup_date' => date('Y-m-d H:i:s', strtotime('now'))] );
|
|
}
|
|
}
|
|
|
|
if($formdata->form_id == '1718178830-d871301e-312b-4a60-9c68-tmfollowup') {
|
|
$exists = false;
|
|
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
foreach($history->data->submissions as $submission) {
|
|
if($submission->formdata->execution_id == $post['execution_id'] && $submission->formdata->no_of_follow_up == $post['no_of_follow_up']) {
|
|
return response()->json(['status' => 'failure', 'message' => 'You have already submitted for '.$post['no_of_follow_up'].' Follow Up. Please select other option']);
|
|
}
|
|
}
|
|
if(!isset($post['id'])) {
|
|
DB::table('team3_nebyatra_doctors')->where('execution_id', $post['execution_id'])->increment('tm_no_of_followups', 1);
|
|
DB::table('team3_nebyatra_doctors')->where('execution_id', $post['execution_id'])->update(['tm_last_followup_date' => date('Y-m-d H:i:s', strtotime('now'))] );
|
|
}
|
|
}
|
|
|
|
if($formdata->form_id == '1731476724-fa8c01ad-3ec5-4052-8e84-70e4c5a7933e') {
|
|
$urls = [
|
|
'4 to 17 years of age' => 'https://did94hhhcgq1d.cloudfront.net/vgreet/ciclohale/a-4-17-years.png',
|
|
'6 to 11 years of age 1' => 'https://did94hhhcgq1d.cloudfront.net/vgreet/ciclohale/b-6-11-years.png',
|
|
'6 to 11 years of age 2' => 'https://did94hhhcgq1d.cloudfront.net/vgreet/ciclohale/c-multicenterstudy.png',
|
|
'6 to 11 years of age 3' => 'https://did94hhhcgq1d.cloudfront.net/vgreet/ciclohale/d-gina-6-11.png',
|
|
'12 years of age' => 'https://did94hhhcgq1d.cloudfront.net/vgreet/ciclohale/e-gina-12.png',
|
|
'12 to 17 years of age' => 'https://did94hhhcgq1d.cloudfront.net/vgreet/ciclohale/f-12-17-years.png'
|
|
];
|
|
|
|
$post_fields = [
|
|
'messaging_product' => 'whatsapp',
|
|
'to' => '91'.$post['whatsapp_number'],
|
|
'type' => 'template',
|
|
'template' => json_encode([
|
|
'name' => 'ciclesonide_clinical_evidence',
|
|
'language' => ['code' => 'en'],
|
|
'components' => [
|
|
[
|
|
'type' => 'header',
|
|
'parameters' => [
|
|
[
|
|
'type' => 'image',
|
|
'image' => [
|
|
'link' => $urls[$post['years_range']]
|
|
]
|
|
]
|
|
]
|
|
],
|
|
[
|
|
'type' => 'body',
|
|
'parameters' => [
|
|
[
|
|
'type' => 'text',
|
|
'text' => $post['doctor_name']
|
|
]
|
|
]
|
|
]
|
|
]
|
|
])
|
|
];
|
|
|
|
Log::debug(print_r($post_fields, true));
|
|
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/v20.0/105856779114949/messages');
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
|
'Authorization: Bearer EAAWVZCWNeZAGMBAIcr8e7kBoWeEUXIQZBWFpm6Dn8FCrAxLBVQWDOvLjiXi20URBMZCxeSnMZCT7tgvZBv4rzjwGZCr6yc6hYovDYbRYHZB50gS3yCdu9aA7k9ZBuZC9X7EkC6uBgcfIZBJogrdOCFuZCoTsJ9LyMevHLhdgnqYAvpGRaO15p5TiqPZBv',
|
|
]);
|
|
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
|
|
$response = curl_exec( $ch );
|
|
$err = curl_error( $ch );
|
|
curl_close( $ch );
|
|
|
|
if ( $err ) {
|
|
Log::debug(print_r($err, true));
|
|
} else {
|
|
$post['whatsapp_response'] = $response;
|
|
Log::debug(print_r($response, true));
|
|
}
|
|
}
|
|
|
|
if($formdata->form_id == '1737368490-73a87163-7381-46a6-9fdf-3b11fc49ca3f') {
|
|
if(isset($post['cresar_bs_launched']) && $post['cresar_bs_launched'] == 'Yes' ) {
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token","user_id")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'cresar_bs_launched' => 'Yes',
|
|
'id' => $post['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
$post['cresar_bs_launched_count'] = "1";
|
|
}
|
|
}
|
|
|
|
if($formdata->form_id == '1775640000-71402a87-56be-48ae-93c9-a77a2cf25693') {
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'name' => $post['name_of_chemist'],
|
|
'type' => 'chemist',
|
|
'msl_code' => strtotime("now").'-'.rand(1000,9999),
|
|
'user_id' => $post['user_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
Log::debug(print_r(['createcontactcampaigntagging'], true));
|
|
Log::debug(print_r($post, true));
|
|
// return response()->json(['status' => 'success', 'data'=> $cont]);
|
|
}
|
|
|
|
if($formdata->form_id == '1713351143-9afc68f4-653f-491a-9e0e-a27d61ed1e07' && isset($post['contact_id']) && !empty($post['contact_id'])) {
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token","user_id")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'area' => $post['area'],
|
|
'speciality' => $post['speciality'],
|
|
'venue_clinic_address' => $post['venue_clinic_address'],
|
|
'id' => $post['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
|
|
// if($formdata->form_id == '1758800833-00e44f7c-1857-4109-8ad4-2789d49a78fa') {
|
|
|
|
// list($application, $domain) = explode("-", $formdata->partition);
|
|
// $token = DB::table('users')->select("access_token","user_id")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
// for ($i = 1; $i <= 5; $i++) {
|
|
|
|
// if (!empty($post["contact_id_$i"])) {
|
|
|
|
// $contactdata = [
|
|
// 'domain' => $domain,
|
|
// 'application' => $application,
|
|
// 'user_id' => $post['user_id'],
|
|
// 'ndc_enrollment' => 'Yes',
|
|
// 'id' => $post["contact_id_$i"],
|
|
// ];
|
|
|
|
// $cont = LambdaRequest::postrequest(
|
|
// 'contact',
|
|
// 'contact/update',
|
|
// $contactdata,
|
|
// $token[0]->access_token
|
|
// );
|
|
|
|
|
|
// Log::info("NDCFORM");
|
|
// Log::info("Updated contact_id_$i", $contactdata);
|
|
|
|
|
|
// }
|
|
// }
|
|
|
|
// Log::info("NDCFORMFORMDATA");
|
|
// Log::info(print_r($post, true));
|
|
|
|
// $contactdata = [
|
|
// 'domain' => $domain,
|
|
// 'application' => $application,
|
|
// 'user_id' => $post['user_id'],
|
|
// 'ndc_enrollment' => 'Yes',
|
|
// 'id' => $post['contact_id'],
|
|
// ];
|
|
// $cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
// }
|
|
|
|
if($formdata->form_id == '1767873454-9be29731-6989-43b8-9066-a8e70edac695') {
|
|
$post['upload_photo'] = $post['image_with_location'];
|
|
}
|
|
|
|
if ($formdata->form_id == '1768200130-7e002780-2e64-4472-ba6a-2f93ef37804b') {
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
Log::info('Power of 5 form triggered', [
|
|
'form_id' => $formdata->form_id,
|
|
'user_id' => $post['user_id'] ?? null,
|
|
'domain' => $domain
|
|
]);
|
|
|
|
$token = DB::table('users')
|
|
->select("access_token", "user_id")
|
|
->where("domain", $domain)
|
|
->where("permissions", 'like', '%contact_update%')
|
|
->orderBy('updated_at', 'desc')
|
|
->first();
|
|
|
|
if (!$token) {
|
|
Log::warning('Power of 5 contact update skipped - token not found', [
|
|
'domain' => $domain
|
|
]);
|
|
return;
|
|
}
|
|
|
|
$brandMap = [
|
|
'voltido_trio' => 'power_of_5_voltido_trio',
|
|
'voltido' => 'power_of_5_voltido',
|
|
'duolin' => 'power_of_5_duolin',
|
|
];
|
|
|
|
foreach ($brandMap as $brand => $powerField) {
|
|
|
|
for ($i = 1; $i <= 5; $i++) {
|
|
|
|
$doctorKey = "doctor_{$i}_{$brand}";
|
|
$potentialKey = "dr_potential_{$i}_{$brand}";
|
|
|
|
if (!empty($post[$doctorKey])) {
|
|
|
|
$contactData = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'id' => $post[$doctorKey], // CONTACT ID
|
|
$powerField => 'Yes',
|
|
];
|
|
|
|
// Add numeric doctor potential if present
|
|
if (isset($post[$potentialKey]) && is_numeric($post[$potentialKey])) {
|
|
$contactData['power_of_5_dr_potential'] = (int) $post[$potentialKey];
|
|
}
|
|
|
|
Log::info('Updating Power of 5 contact', [
|
|
'contact_id' => $post[$doctorKey],
|
|
'brand' => $brand,
|
|
'attributes' => $contactData
|
|
]);
|
|
|
|
LambdaRequest::postrequest(
|
|
'contact',
|
|
'contact/update',
|
|
$contactData,
|
|
$token->access_token
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
Log::info('Power of 5 contact update completed', [
|
|
'form_id' => $formdata->form_id
|
|
]);
|
|
}
|
|
|
|
if($formdata->form_id == '1757055046-ba0eff4e-0d4a-4e90-b190-c59f12ef6edd') {
|
|
// if(isset($post['cresar_bs_launched']) && $post['cresar_bs_launched'] == 'Yes' ) {
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token","user_id")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'emvasrin_conversion_doctor' => 'Yes',
|
|
'id' => $post['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
// }
|
|
}
|
|
|
|
if($formdata->form_id == '1770113055-b65a4310-83e0-49ad-ad98-6a226beb2bc3') {
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token","user_id")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'glycohale_power_punch' => 'Yes',
|
|
'dr_potential_for_glycohale' => $post['dr_potential_for_glycohale_in_units'],
|
|
'id' => $post['doctor_name'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
|
|
if($post['doctor_name'] != $post['og_contact_id']) {
|
|
$removeoldcontactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'glycohale_power_punch' => '',
|
|
'dr_potential_for_glycohale' => '',
|
|
'id' => $post['og_contact_id'],
|
|
];
|
|
|
|
LambdaRequest::postrequest('contact', 'contact/update', $removeoldcontactdata, $token[0]->access_token);
|
|
}
|
|
}
|
|
|
|
// if($formdata->form_id == '1758180234-37c6fb8c-7d13-4647-8aaa-1d67fc51ea57') {
|
|
// $contacts = [];
|
|
|
|
// foreach ($post as $key => $value) {
|
|
// if (strpos($key, 'contact_id_') === 0) {
|
|
// $contacts[] = [
|
|
// 'contact_id' => $value,
|
|
// 'tenectase_super_50' => 'Yes'
|
|
// ];
|
|
// }
|
|
// }
|
|
|
|
// list($application, $domain) = explode("-", $formdata->partition);
|
|
// $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
// $msg = ["test cont"];
|
|
// Log::debug(print_r($msg, true));
|
|
|
|
// Log::debug(print_r($contacts, true));
|
|
|
|
// foreach($contacts as $contact) {
|
|
// $contactdata = [
|
|
// 'domain' => $domain,
|
|
// 'application' => $application,
|
|
// 'user_id' => $post['user_id'],
|
|
// 'tenectase_super_50' => $contact['tenectase_super_50'],
|
|
// 'id' => $contact['contact_id'],
|
|
// ];
|
|
// $cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
// }
|
|
// // return response()->json(['status' => 'success']);
|
|
// }
|
|
|
|
if($formdata->form_id == '1741672502-78ceeb99-b393-47b7-9e3b-850a1d42c204') {
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
if(isset($post['empacip_launched']) && $post['empacip_launched'] == 'Yes' ) {
|
|
$token = DB::table('users')->select("access_token","user_id")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'empacip_launched' => 'Yes',
|
|
'id' => $post['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
$post['empacip_launched_count'] = "1";
|
|
}
|
|
}
|
|
|
|
// if ($formdata->form_id == '1775980892-f0346e7e-e9e5-4f85-9924-beb91fcb8fda') {
|
|
|
|
// $contacts = [];
|
|
|
|
// // collect contacts from doctor_name_1 to doctor_name_20
|
|
// for ($i = 1; $i <= 20; $i++) {
|
|
// if (!empty($post['doctor_name_' . $i])) {
|
|
// $contacts[] = [
|
|
// 'contact_id' => $post['doctor_name_' . $i],
|
|
// 'po5_novel_meeting' => 'Yes'
|
|
// ];
|
|
// }
|
|
// }
|
|
|
|
// list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
// $token = DB::table('users')
|
|
// ->select("access_token")
|
|
// ->where("domain", $domain)
|
|
// ->where("permissions", 'like', '%contact_create%')
|
|
// ->orderBy('updated_at', 'desc')
|
|
// ->first();
|
|
|
|
// foreach ($contacts as $contact) {
|
|
// $contactdata = [
|
|
// 'domain' => $domain,
|
|
// 'application' => $application,
|
|
// 'user_id' => $post['user_id'],
|
|
// 'po5_novel_meeting' => $contact['po5_novel_meeting'],
|
|
// 'id' => $contact['contact_id'],
|
|
// ];
|
|
|
|
// $cont = LambdaRequest::postrequest(
|
|
// 'contact',
|
|
// 'contact/update',
|
|
// $contactdata,
|
|
// $token->access_token
|
|
// );
|
|
// }
|
|
|
|
// }
|
|
|
|
// if ($formdata->form_id == '1775984811-b4153c49-48d9-4295-b075-b83b2e913bae') {
|
|
|
|
// $contacts = [];
|
|
|
|
// // collect contacts from doctor_name_1 to doctor_name_20
|
|
// for ($i = 1; $i <= 20; $i++) {
|
|
// if (!empty($post['doctor_name_' . $i])) {
|
|
// $contacts[] = [
|
|
// 'contact_id' => $post['doctor_name_' . $i],
|
|
// 'po5_ace_meeting' => 'Yes'
|
|
// ];
|
|
// }
|
|
// }
|
|
|
|
// list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
// $token = DB::table('users')
|
|
// ->select("access_token")
|
|
// ->where("domain", $domain)
|
|
// ->where("permissions", 'like', '%contact_create%')
|
|
// ->orderBy('updated_at', 'desc')
|
|
// ->first();
|
|
|
|
// foreach ($contacts as $contact) {
|
|
// $contactdata = [
|
|
// 'domain' => $domain,
|
|
// 'application' => $application,
|
|
// 'user_id' => $post['user_id'],
|
|
// 'po5_ace_meeting' => $contact['po5_ace_meeting'],
|
|
// 'id' => $contact['contact_id'],
|
|
// ];
|
|
|
|
// $cont = LambdaRequest::postrequest(
|
|
// 'contact',
|
|
// 'contact/update',
|
|
// $contactdata,
|
|
// $token->access_token
|
|
// );
|
|
// }
|
|
|
|
// }
|
|
|
|
if($formdata->form_id == '1741694174-665474ba-4492-4e00-9c87-78ccea51e6a9') {
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'id' => $post['contact_id'],
|
|
];
|
|
$toupdate = false;
|
|
if(isset($post['empa_launched']) && $post['empa_launched'] == 'Yes' ) {
|
|
$token = DB::table('users')->select("access_token","user_id")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata['empa_launched'] = 'Yes';
|
|
//$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
$post['empa_launched_count'] = "1";
|
|
$toupdate = true;
|
|
}
|
|
if(!isset($post['empa_conversion']) && isset($post['no_of_empa_rx_generated']) && (int)$post['no_of_empa_rx_generated'] > 0 ) {
|
|
$token = DB::table('users')->select("access_token","user_id")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata['empa_conversion'] = 'Yes';
|
|
$post['empa_conversion_count'] = "1";
|
|
$toupdate = true;
|
|
}
|
|
if($toupdate) {
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
|
|
}
|
|
|
|
if($formdata->form_id == '1718178830-d871301e-312b-4a60-nebmitra-15afa4ce6163') {
|
|
$exists = false;
|
|
// if(!isset($post['id'])) {
|
|
// $history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
// foreach($history->data->submissions as $submission) {
|
|
// if(isset($submission->formdata->execution_id) && $submission->formdata->execution_id == $post['execution_id'] && $submission->formdata->no_of_follow_up == $post['no_of_follow_up']) {
|
|
// return response()->json(['status' => 'failure', 'message' => 'You have already submitted for '.$post['no_of_follow_up'].' Follow Up. Please select other option']);
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// Get all variables starting with actual_, compare actual_ and non-actual keys in formdata,
|
|
// update if actual_ value is greater, then replace the values in non actual with actuals.
|
|
// Also, change the total value with the given multipliers.
|
|
|
|
// Define the mapping of actual_ field (brand) to its fixed value (multipliers)
|
|
$actualBrandMultipliers = [
|
|
'budecort-respules-0' => 19.37,
|
|
'budecort-respules-1m' => 21.39,
|
|
'budesal-05-respules' => 37.96,
|
|
'budesal-1-respules-2' => 48.69,
|
|
'duolin-3-respule' => 19.59,
|
|
'duolin-ld-respules' => 14.54,
|
|
'levolin-31-resp' => 4.66,
|
|
'levolin-063-mg-respules' => 5.62,
|
|
'levolin-125mg-resp' => 6.52,
|
|
'glycohale_2_ml_respules' => 40,
|
|
'asthalin_inhaler' => 129,
|
|
'foracort_1_respules' => 77.82,
|
|
'foracort_05_respules' => 62.95,
|
|
'asthalin_respules' => 6,
|
|
'hyperneb_3_respules' => 18.81,
|
|
'hyperneb_7_respules' => 23.76
|
|
];
|
|
|
|
if (isset($post) && is_array($post)) {
|
|
$actualTotalValue = 0;
|
|
foreach ($post as $key => $value) {
|
|
if (strpos($key, 'actual_') === 0) {
|
|
$nonActualKey = substr($key, 7); // Remove 'actual_' prefix
|
|
if (isset($post[$nonActualKey])) {
|
|
$actualValue = $value;
|
|
$nonActualValue = $post[$nonActualKey];
|
|
|
|
// Try to compare as numbers if both are numeric, else as strings
|
|
if (is_numeric($actualValue) && is_numeric($nonActualValue)) {
|
|
if ($actualValue > $nonActualValue) {
|
|
$post[$nonActualKey] = $actualValue;
|
|
}
|
|
} else {
|
|
if ($actualValue > $nonActualValue) {
|
|
$post[$nonActualKey] = $actualValue;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Calculate total value using multipliers
|
|
// The key for multipliers is the nonActualKey (without 'actual_')
|
|
// Try both dash and underscore variants for compatibility
|
|
$brandKey = str_replace('_', '-', $nonActualKey);
|
|
if (isset($actualBrandMultipliers[$brandKey]) && is_numeric($value)) {
|
|
$actualTotalValue += floatval($value) * $actualBrandMultipliers[$brandKey];
|
|
} elseif (isset($actualBrandMultipliers[$nonActualKey]) && is_numeric($value)) {
|
|
$actualTotalValue += floatval($value) * $actualBrandMultipliers[$nonActualKey];
|
|
}
|
|
}
|
|
}
|
|
// Set the total value in the post array
|
|
$post['actual_total_value'] = $actualTotalValue;
|
|
}
|
|
if(!isset($post['id'])) {
|
|
DB::table('team3_nebmitra_doctors')->where('id', $post['doctor_id'])->increment('no_of_followups', 1);
|
|
DB::table('team3_nebmitra_doctors')->where('id', $post['doctor_id'])->update(['last_followup_date' => date('Y-m-d H:i:s', strtotime('now'))] );
|
|
}
|
|
|
|
Log::debug(print_r(['daily call reporting'], true));
|
|
Log::debug(print_r($post, true));
|
|
|
|
}
|
|
|
|
if($formdata->form_id == '1747214698-91cb34fd-d1fb-49cb-b90d-139ab0699c54') {
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'nursing_home_format_enrollment' => 'yes',
|
|
'name' => $post['nursing_home_name'],
|
|
'state' => $post['state'],
|
|
'user_id' => $post['user_id'],
|
|
'msl_code' => strtotime("now").'-'.rand(1000,9999),
|
|
'current_business' => $post['current_businessmonth_at_the_time_of_enrollment'],
|
|
'potential_business' => $post['respi_potential_businessmonth_at_the_time_of_enrollment']
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
Log::debug(print_r($post, true));
|
|
return response()->json(['status' => 'success', 'data'=> $cont]);
|
|
}
|
|
|
|
if($formdata->form_id == '1747907662-381b8a4b-b944-493c-a242-37ef94e600dd') {
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'hl_associate_enrollment' => 'yes',
|
|
'name' => $post['hl_associate_name'],
|
|
'state' => $post['state'],
|
|
'user_id' => $post['user_id'],
|
|
'msl_code' => strtotime("now").'-'.rand(1000,9999),
|
|
'nebulization_potential_business' => $post['nebulization_potential_businessmonth_value_at_the_time_of_enrollment'],
|
|
'expected_nebulization_business' => $post['expected_nebulization_businessmonth_value_at_the_time_of_enrollment']
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
Log::debug(print_r($post, true));
|
|
Log::debug(print_r($contactdata, true));
|
|
return response()->json(['status' => 'success', 'data'=> $cont]);
|
|
}
|
|
|
|
if($formdata->form_id == '1744959804-4f16d406-e57e-4ba8-a805-231422c7a2bf') {
|
|
$formdata->form_id = '1745558346-87594722-9a7c-41b8-9fb9-4f37ab631133';
|
|
|
|
if(isset($post['contact_id']) && $post['contact_id'] == 'other'){
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'name' => $post['other_doctor_name'],
|
|
'unique_doctor_code' => $post['unique_doctor_code'],
|
|
'user_id' => $post['user_id'],
|
|
'msl_code' => strtotime("now").'-'.rand(1000,9999),
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
Log::debug(print_r($cont, true));
|
|
|
|
$post['contact_id'] = $cont->data->item->id;
|
|
Log::debug(print_r($post, true));
|
|
Log::debug(print_r($contactdata, true));
|
|
|
|
// echo "<pre>";
|
|
// print_r($post);
|
|
// exit;
|
|
}
|
|
|
|
}
|
|
|
|
if($formdata->form_id == '1748599846-8198a6e1-49f2-4965-b8b3-35cbfa83364e') {
|
|
|
|
$id = DB::table('team3_nebmitra_doctors')
|
|
->insertGetId([
|
|
'user_id'=> $post['user_id'],
|
|
'hierarchy_id' => $post['hierarchy_id'],
|
|
'doctor_name' => $post['doctor_name'],
|
|
'mobile_number' => $post['mobile_number'],
|
|
'speciality' => $post['speciality'],
|
|
'degree' => $post['degree'],
|
|
'type' => 'doctor',
|
|
'location' => $post['location'],
|
|
'micro_interior'=> $post['micro_interior'],
|
|
'state'=> $post['state']
|
|
]);
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'name' => $post['doctor_name'],
|
|
'type' => 'nebmitra_doctor',
|
|
'user_id' => $post['user_id'],
|
|
'msl_code' => 'NEBMITRA_DOCTOR_'.$id,
|
|
'phone' => $post['mobile_number'],
|
|
'speciality'=> $post['speciality']
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
$contactid = $cont->data->item->id;
|
|
$positioncode = $cont->data->item->position;
|
|
|
|
|
|
DB::table('team3_nebmitra_doctors')
|
|
->where('id', $id)
|
|
->update([
|
|
'contact_id' => $contactid,
|
|
'position_code' => $positioncode
|
|
]);
|
|
|
|
Log::debug(print_r(['Add Doctor'], true));
|
|
Log::debug(print_r($contactid, true));
|
|
Log::debug(print_r($post, true));
|
|
Log::debug(print_r($contactdata, true));
|
|
Log::debug(print_r($cont, true));
|
|
Log::debug(print_r(['Add Doctor End'], true));
|
|
|
|
|
|
|
|
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1750914801-153443b9-94d0-4dcb-b3f3-4fa11588a0a9') {
|
|
$userid = $post['user_id'];
|
|
$depot = DB::table('team3_neblogistics_tms')
|
|
->join('team3_neblogistics_depot', 'team3_neblogistics_tms.depot_id', '=', 'team3_neblogistics_depot.id')
|
|
->where('team3_neblogistics_tms.user_id', $userid)
|
|
->select('team3_neblogistics_depot.id', 'team3_neblogistics_depot.name')
|
|
->first();
|
|
// $depot = false;
|
|
|
|
// Check if user is blocked from submitting a new NAP request
|
|
|
|
// Find Employee Code (emp_id). Try from $post['emp_id'] else fallback to users table
|
|
$employeeCode = isset($post['emp_id']) ? $post['emp_id'] : null;
|
|
|
|
if (!$employeeCode) {
|
|
// fallback to database if not provided in post
|
|
$user = DB::table('users')->where('id', $userid)->select('emp_employee_code')->first();
|
|
if ($user && isset($user->emp_employee_code)) {
|
|
$employeeCode = $user->emp_employee_code;
|
|
}
|
|
}
|
|
|
|
if ($employeeCode) {
|
|
try {
|
|
$client = new \GuzzleHttp\Client(['timeout' => 5]);
|
|
$response = $client->request(
|
|
'GET',
|
|
'https://nap.easyspacebooking.com/APi/GetStatusToBlockOrNotByEmployeeCode/' . urlencode($employeeCode)
|
|
);
|
|
|
|
if ($response->getStatusCode() == 200) {
|
|
$body = $response->getBody()->getContents();
|
|
$decoded = json_decode($body, true);
|
|
if (
|
|
is_array($decoded) &&
|
|
isset($decoded[0]['blocked']) &&
|
|
(strtolower($decoded[0]['blocked']) === 'yes' || strtolower($decoded[0]['blocked']) === 'Yes')
|
|
) {
|
|
return response()->json([
|
|
'status' => 'failure',
|
|
'message' => 'You are not allowed to raise a new NAP request at this time.',
|
|
'allemployeerequest' => $decoded[0]['employeeRequests'] ?? [],
|
|
'redirect_url' => 'https://nap.easyspacebooking.com/login'
|
|
]);
|
|
}
|
|
}
|
|
} catch (\Exception $e) {
|
|
// Handle connection error/timeout gracefully -- allow request to go through but log it
|
|
\Log::error('Failed to check NAP employee block status: '.$e->getMessage());
|
|
}
|
|
}
|
|
|
|
$checkOnly = ($post['GetStatusToBlockOrNotByEmployeeCode'] ?? '') === 'yes';
|
|
if ($checkOnly) {
|
|
return response()->json([
|
|
'status' => 'success',
|
|
'message' => 'Allowed to raise a new NAP'
|
|
]);
|
|
}
|
|
|
|
$phones = [ '8421945842',
|
|
'9000892659',
|
|
'8008779049',
|
|
'7032574882',
|
|
'7030704045',
|
|
'7768035567',
|
|
'7870676113',
|
|
'9075980409',
|
|
'7340757423',
|
|
'9618462184',
|
|
'8779775797',
|
|
'6376339978',
|
|
'8696055451',
|
|
'9314703936',
|
|
'8888938111',
|
|
'9911998649',
|
|
'9410012233',
|
|
'8538008054',
|
|
'8263028860',
|
|
'9672969490',
|
|
'8652235956',
|
|
'8472950515',
|
|
'9911948062',
|
|
'9501190932',
|
|
'9629950027',
|
|
'8327766946',
|
|
'8657627212',
|
|
'9845902285',
|
|
'6290511698',
|
|
'9041378580',
|
|
'8308305091',
|
|
'7890285582',
|
|
'9769591901',
|
|
'6200175050',
|
|
'8970552629',
|
|
'9826045047',
|
|
'7897876200',
|
|
'9935134301',
|
|
'7859940470',
|
|
'9760643464',
|
|
'9412203271',
|
|
'8378849883',
|
|
'7738304013',
|
|
'8052797812',
|
|
'9760272717',
|
|
'9993030333',
|
|
'6307416235',
|
|
'8294408339',
|
|
'9666020326',
|
|
'9053671619',
|
|
'7290824495',
|
|
'9966766429',
|
|
'7302029208',
|
|
'9013122209',
|
|
'7298146436',
|
|
'7277188700',
|
|
'7252992389',
|
|
'8847572201',
|
|
'9966608912',
|
|
'9634001221',
|
|
'8674986750',
|
|
'8607881639',
|
|
'9004727456',
|
|
'8381032649',
|
|
'8960616876',
|
|
'8197107405',
|
|
'8309880262',
|
|
'9794665474',
|
|
'8421740313',
|
|
'8008860018',
|
|
'8806790970',
|
|
'6364684207',
|
|
'9677108693',
|
|
'7002144047',
|
|
'8016909549',
|
|
'7631371518',
|
|
'9348246006',
|
|
'7407241239',
|
|
'6392524873',
|
|
'9582947428',
|
|
'8617493069',
|
|
'8888788495',
|
|
'7004674891',
|
|
'9746549327',
|
|
'9828862783',
|
|
'9048594337',
|
|
'7014596144',
|
|
'9737753331',
|
|
'9555198050',
|
|
'7076128076',
|
|
'9992397044',
|
|
'7028327217',
|
|
'8080290405',
|
|
'8750750105',
|
|
'8904853033',
|
|
'7250490304',
|
|
'9977662759',
|
|
'7622082442',
|
|
'8076931066',
|
|
'9671493943',
|
|
'7904321338',
|
|
'7501263431',
|
|
'8248970627',
|
|
'7307822995',
|
|
'9538903351',
|
|
'9053520567',
|
|
'8374383446',
|
|
'7905790492',
|
|
'9536772915',
|
|
'9729510980',
|
|
'7220964201',
|
|
'9634718751',
|
|
'9896834406',
|
|
'9313840546',
|
|
'9598253590',
|
|
'7797726019',
|
|
'8005518332',
|
|
'9058957223',
|
|
'7979042997',
|
|
'7973489844',
|
|
'8756917442',
|
|
'8630780338',
|
|
'6290711165',
|
|
'8587860178',
|
|
'9651307306',
|
|
'8965065006',
|
|
'7229906004',
|
|
'9037647675',
|
|
'9585383624',
|
|
'7991157767',
|
|
'8699208918',
|
|
'7309224964',
|
|
'7979752450',
|
|
'9566190755',
|
|
'9587363627',
|
|
'7090128805',
|
|
'9716631844',
|
|
'8506991361',
|
|
'9473259442',
|
|
'7906855218',
|
|
'8318084449',
|
|
'7704819693',
|
|
'9019707803',
|
|
'9101358383',
|
|
'8925627274',
|
|
'7077754242',
|
|
'8171299347',
|
|
'9405177300',
|
|
'9655966259',
|
|
'8960443680',
|
|
'7028233936',
|
|
'9806888287',
|
|
'9699403523',
|
|
'8145540478',
|
|
'9836347718',
|
|
'8813888420',
|
|
'9595095808',
|
|
'8371979105',
|
|
'9004000435',
|
|
'9178524087',
|
|
'8240267199',
|
|
'8423583627',
|
|
'8421755705',
|
|
'7004479560',
|
|
'7415829565',
|
|
'8888944063',
|
|
'8896906317',
|
|
'9746803521',
|
|
'9522335613',
|
|
'9583969143',
|
|
'7063221313',
|
|
'9944463033',
|
|
'8655627158',
|
|
'9842147374',
|
|
'9382461957',
|
|
'8486053727',
|
|
'9639946146',
|
|
'9953816844',
|
|
'8157077248',
|
|
'8095474388',
|
|
'9662697286',
|
|
'7840912866',
|
|
'9514451845',
|
|
'9660345955',
|
|
'9496985241',
|
|
'9080120340',
|
|
'8239732331',
|
|
'7021337703',
|
|
'9113836269',
|
|
'7384707306',
|
|
'8299253789',
|
|
'9087903939',
|
|
'8652273223',
|
|
'9775718145',
|
|
'9594559800',
|
|
'7767896172',
|
|
'7003369286',
|
|
'8005654625',
|
|
'9413955437',
|
|
'7000725948',
|
|
'8279874706',
|
|
'7982581777',
|
|
'8076111592',
|
|
'8847248458',
|
|
'9033449985',
|
|
'7017137299',
|
|
'9789986909',
|
|
'7380952976',
|
|
'8891484678',
|
|
'9535735175',
|
|
'9832430781',
|
|
'9875470983',
|
|
'8329759793',
|
|
'9920453826',
|
|
'9624567368',
|
|
'8126665817',
|
|
'7000491483',
|
|
'9021519181',
|
|
'9795321488',
|
|
'9088022337',
|
|
'9658739242',
|
|
'7092795596',
|
|
'7488193052',
|
|
'9846632814',
|
|
'9080416659',
|
|
'7795138744',
|
|
'8779719568',
|
|
'7776827867',
|
|
'9767404085',
|
|
'9541114937',
|
|
'8017126419',
|
|
'7503373003',
|
|
'8000869063',
|
|
'7318842710',
|
|
'9998124492',
|
|
'8132801931',
|
|
'09820203584',
|
|
'9987572072',
|
|
'8356075939',
|
|
'9550003895',
|
|
'9962004269',
|
|
'9810641170',
|
|
'8010825581',
|
|
'8141236956',
|
|
'7200354700',
|
|
'8056041788',
|
|
'9355530688',
|
|
'8482054822',
|
|
'9885354942',
|
|
'7503990327',
|
|
'9941335128',
|
|
'9466380012',
|
|
'8143009103',
|
|
'7837001323',
|
|
'8434054530',
|
|
'8085858738',
|
|
'8008664455',
|
|
'9973652511',
|
|
'9418682658',
|
|
'7018343435',
|
|
'9920860404',
|
|
'9944547105',
|
|
'9809292176',
|
|
'9825400186',
|
|
'8128319876',
|
|
'9946387732',
|
|
'9700406175',
|
|
'9468167200',
|
|
'9166657637',
|
|
'9982642468',
|
|
'9034369071',
|
|
'7742087441',
|
|
'7742498652',
|
|
'9314029090',
|
|
'8858550557',
|
|
'9576541254',
|
|
'8085979182',
|
|
'9419249722',
|
|
'9041474450',
|
|
'7508082288',
|
|
'9622230924',
|
|
'9032333315',
|
|
'8328682011',
|
|
'8770602224',
|
|
'9872256786',
|
|
'9097467935',
|
|
'9774340277',
|
|
'9550767670',
|
|
'9861101279',
|
|
'9791275020',
|
|
'9774079640',
|
|
'9082447690',
|
|
'8286575884',
|
|
'9679886985',
|
|
'8477079231',
|
|
'8777367007',
|
|
'8086297134',
|
|
'7003365322',
|
|
'8818852337',
|
|
'8186055757',
|
|
'8191039708',
|
|
'9839845136',
|
|
'9718171641',
|
|
'9890349943',
|
|
'7719862608',
|
|
'9515059501',
|
|
'9655366620',
|
|
'6205412970',
|
|
'8287231348',
|
|
'8708192375',
|
|
'9908592404',
|
|
'7618939534',
|
|
'7876847631',
|
|
'8340168340',
|
|
'7010530488',
|
|
'8847610592',
|
|
'9262967213',
|
|
'9873667487',
|
|
'8670974585',
|
|
'9048271597',
|
|
'8077465559',
|
|
'8553139355',
|
|
'9462028174',
|
|
'9699841178',
|
|
'9949841295',
|
|
'9872901229',
|
|
'9656219600',
|
|
'8401080867',
|
|
'8420013036',
|
|
'9579419422',
|
|
'9600928645',
|
|
'9472415666',
|
|
'8088885317',
|
|
'9395954735',
|
|
'9063720822',
|
|
'9691475140',
|
|
'9573856146',
|
|
'8380081552',
|
|
'9015573860',
|
|
'9972769001',
|
|
'9693315050',
|
|
'9952062780',
|
|
'9891769472',
|
|
'9785982687',
|
|
'9339450549',
|
|
'9648458555',
|
|
'9640105000',
|
|
'8089787903',
|
|
'9939806494',
|
|
'9635661566',
|
|
'9730160448',
|
|
'9876422416',
|
|
'9874578654',
|
|
'7797701092',
|
|
'9719468661',
|
|
'8093342373',
|
|
'7377662443',
|
|
'9926126127',
|
|
'9872560733',
|
|
'9852986547',
|
|
'8219984042',
|
|
'9175040431',
|
|
'7795503438',
|
|
'9480998844',
|
|
'7483007322',
|
|
'9901603928',
|
|
'9926803798',
|
|
'8050927190',
|
|
'7828406974',
|
|
'8050039355',
|
|
'9685599786',
|
|
'9719640365',
|
|
'9654812803',
|
|
'9161500268',
|
|
'9919568629',
|
|
'9026276455',
|
|
'9415930958',
|
|
'7037231333',
|
|
'9450436055',
|
|
'8958166596',
|
|
'9760129367',
|
|
'9927958548',
|
|
'8971019143',
|
|
'9559846039',
|
|
'9457818136',
|
|
'9882483470',
|
|
'9935770990',
|
|
'6387029263',
|
|
'9874318019',
|
|
'8981800987',
|
|
'8240380412',
|
|
'7890573180',
|
|
'8016133222',
|
|
'8334823000',
|
|
'8617262894',
|
|
'7003367637',
|
|
'9886488776',
|
|
'8820999179',
|
|
'9836722750',
|
|
'9832277243',
|
|
'7439481795',
|
|
'9735164362',
|
|
'9800839771',
|
|
'8670669017',
|
|
'8293107261',
|
|
'9746324554',
|
|
'9941777544',
|
|
'9540100261',
|
|
'9995469377',
|
|
'9597693787',
|
|
'8695022229',
|
|
'9499049784',
|
|
'8093809386',
|
|
'7003759296',
|
|
'7303490852',
|
|
'7594091275',
|
|
'9867868397',
|
|
'9975243832',
|
|
'9359944353',
|
|
'9026949796',
|
|
'9793036317',
|
|
'7875627905',
|
|
'9514464462',
|
|
'8553211267',
|
|
'8805227340',
|
|
'9821342238',
|
|
'8192951909',
|
|
'9969367572',
|
|
'9257129317',
|
|
'7620916520',
|
|
'9867757714',
|
|
'9011952139',
|
|
'7696414546',
|
|
'9111850712',
|
|
'8889023428',
|
|
'8880250892',
|
|
'9982663634',
|
|
'8250031245',
|
|
'8507016122',
|
|
'9265670383',
|
|
'9108112857',
|
|
'7016416965',
|
|
'6392011531',
|
|
'9610430003',
|
|
'7908162017',
|
|
'9398560524',
|
|
'8116202772',
|
|
'7002193351',
|
|
'7306805383',
|
|
'8208832433',
|
|
'7014923077',
|
|
'9961402290',
|
|
'9805911715',
|
|
'7984360141',
|
|
'7016543331',
|
|
'8349905877',
|
|
'9721448227',
|
|
'9948750393',
|
|
'9626580728',
|
|
'7455812183',
|
|
'8885171431',
|
|
'9264213090',
|
|
'9884117179',
|
|
'6206197771',
|
|
'8887792156',
|
|
'7905907826',
|
|
'8126399711',
|
|
'9953309348',
|
|
'9621038474',
|
|
'9919955975',
|
|
'7975931440',
|
|
'9492098621',
|
|
'9994081506',
|
|
'8073273799',
|
|
'9036852625',
|
|
'7874339667',
|
|
'7034024478',
|
|
'7001556678',
|
|
'7705025488',
|
|
'8969014609',
|
|
'7440329896',
|
|
'8780794198',
|
|
'8420665650',
|
|
'8486990332',
|
|
'7061408391',
|
|
'7076115650',
|
|
'7505741072',
|
|
'9735863983',
|
|
'8248337205',
|
|
'9966629117',
|
|
'9747213722',
|
|
'8810297905',
|
|
'7405934624',
|
|
'8141238763',
|
|
'7744816904',
|
|
'6000136164',
|
|
'7908774247',
|
|
'8015136776',
|
|
'9566966952',
|
|
'9874809209',
|
|
'9885855533',
|
|
'9633497568',
|
|
'7697936563',
|
|
'7838899239',
|
|
'8838408187',
|
|
'8356868018',
|
|
'9723449000',
|
|
'9536499995',
|
|
'9398806564',
|
|
'8958003440',
|
|
'9952539978',
|
|
'9870691792',
|
|
'8750231554',
|
|
'8939071097',
|
|
'7667925407',
|
|
'7003086498',
|
|
'8826080497',
|
|
'7665392360',
|
|
'8754778275',
|
|
'7032013503',
|
|
'9552293291',
|
|
'7566350865',
|
|
'8848120731',
|
|
'6305292452',
|
|
'9502001878',
|
|
'7619236114',
|
|
'9988844507',
|
|
'8958194140',
|
|
'9284065436',
|
|
'7240683183',
|
|
'9450746126',
|
|
'8983870700',
|
|
'9064894769',
|
|
'8794415179',
|
|
'7002971012',
|
|
'7977497087',
|
|
'9821355537',
|
|
'9909002343',
|
|
'9035044939',
|
|
'9948431590',
|
|
'8688126146',
|
|
'8904212889',
|
|
'9674722001',
|
|
'7523966114',
|
|
'8667643434',
|
|
'8754569868',
|
|
'9860479851',
|
|
'7800927756',
|
|
'9730149927',
|
|
'9095818919',
|
|
'9890977536',
|
|
'9963378042',
|
|
'8921360239',
|
|
'8458939361',
|
|
'7097955620',
|
|
'9001513193',
|
|
'6305568729',
|
|
'8887802664',
|
|
'7021327858',
|
|
'9599673312',
|
|
'8714384316',
|
|
'6239746149',
|
|
'7675981689',
|
|
'8467953899',
|
|
'7010516982',
|
|
'9582335571',
|
|
'9585350253',
|
|
'9877683527',
|
|
'8354848633',
|
|
'9917112434',
|
|
'8939364289',
|
|
'9633690301',
|
|
'9832624557',
|
|
'8208493432',
|
|
'8906752192',
|
|
'8299430126',
|
|
'9947677581',
|
|
'9496359351',
|
|
'9678333735',
|
|
'9948387127',
|
|
'8340781363',
|
|
'9632464212',
|
|
'9922088202',
|
|
'8630506388',
|
|
'7977649195',
|
|
'9885990901',
|
|
'9164946431',
|
|
'8459300374',
|
|
'9618922242',
|
|
'8888453552',
|
|
'8077718701',
|
|
'7980332616',
|
|
'7018199698',
|
|
'8077038387',
|
|
'8375903858',
|
|
'8973109001',
|
|
'9959007143',
|
|
'9642496117',
|
|
'7800002526',
|
|
'8487008787',
|
|
'7636900180',
|
|
'8870594951',
|
|
'8793730177',
|
|
'8886212140',
|
|
'7388994598',
|
|
'9599493252',
|
|
'9037334503',
|
|
'9700700421',
|
|
'6303491114',
|
|
'7849957305',
|
|
'9833943913',
|
|
'9723288097',
|
|
'8383099506',
|
|
'9658235967',
|
|
'9041178993',
|
|
'8879283716',
|
|
'9171252502',
|
|
'6304940285',
|
|
'7306776675',
|
|
'8867421597',
|
|
'9990081934',
|
|
'8240535486',
|
|
'8445044123',
|
|
'7907232781',
|
|
'7776877778',
|
|
'7028489655',
|
|
'9064515180',
|
|
'8668658991',
|
|
'9944851287',
|
|
'7905453356',
|
|
'8657283214',
|
|
'8760996262',
|
|
'9824358582',
|
|
'8269782660',
|
|
'9768438442',
|
|
'7676045709',
|
|
'6393242250',
|
|
'9021987882',
|
|
'7906183255',
|
|
'8423812124',
|
|
'9410000483',
|
|
'7034500045',
|
|
'9557774589',
|
|
'7868086318',
|
|
'8217764225',
|
|
'7003270432',
|
|
'8867595962',
|
|
'9523634393',
|
|
'7403841470',
|
|
'9877562987',
|
|
'8682060674',
|
|
'7892965240',
|
|
'9001803347',
|
|
'9669420322',
|
|
'8956720336',
|
|
'9505832483',
|
|
'6398534110',
|
|
'9902480821',
|
|
'7080474852',
|
|
'7988345700',
|
|
'9330565653',
|
|
'9404435883',
|
|
'7075575727',
|
|
'9747929455',
|
|
'7997203036',
|
|
'9888366635',
|
|
'9647672408',
|
|
'9973681562',
|
|
'8961976825',
|
|
'7679458335',
|
|
'6291666829',
|
|
'9705348229',
|
|
'9131329719',
|
|
'8095432641',
|
|
'9169719573',
|
|
'9748355862',
|
|
'7440842607',
|
|
'8272937828',
|
|
'9996336288',
|
|
'7568049696',
|
|
'9025849189',
|
|
'7402534841',
|
|
'8617880984',
|
|
'9038951952',
|
|
'8250126328',
|
|
'7904013371',
|
|
'9538543796',
|
|
'8668118465',
|
|
'6900739816',
|
|
'8970767977',
|
|
'9809731645',
|
|
'9832103576',
|
|
'9575359595',
|
|
'8278675602',
|
|
'9337830679',
|
|
'7407323519',
|
|
'7418887589',
|
|
'9003857783',
|
|
'7676660066',
|
|
'7338512943',
|
|
'9765757541',
|
|
'9001492309',
|
|
'9043185326',
|
|
'9567268965',
|
|
'6361194582',
|
|
'8700865923',
|
|
'9566288568',
|
|
'9360646104',
|
|
'9791133954',
|
|
'9629719173',
|
|
'9027226167',
|
|
'9808785323',
|
|
'9962961285',
|
|
'9907871323',
|
|
'9970765020',
|
|
'9650334728',
|
|
'9315476514',
|
|
'9836800970',
|
|
'9614956019',
|
|
'9839759494',
|
|
'9212259813',
|
|
'8149178974',
|
|
'9703500500',
|
|
'9414981024',
|
|
'8860882278',
|
|
'9988053040',
|
|
'9874548111',
|
|
'9452962043',
|
|
'8950574767',
|
|
'8208555096',
|
|
'8805336112',
|
|
'7588737149',
|
|
'7030434020',
|
|
'8181819623',
|
|
'9549777724',
|
|
'9699341614',
|
|
'9140460418',
|
|
'9167661174',
|
|
'9922790006',
|
|
'9022973386',
|
|
'9890411087',
|
|
'9167558464',
|
|
'9890960642',
|
|
'9028145939',
|
|
'8169317066',
|
|
'7506422204',
|
|
'9096356761',
|
|
'9764135172',
|
|
'8007900346',
|
|
'9545853555',
|
|
'9922227345',
|
|
'9403631120',
|
|
'8669131724',
|
|
'7735443803',
|
|
'8562820821',
|
|
'9770979718',
|
|
'7014962289',
|
|
'7610955614',
|
|
'9614048131',
|
|
'9640515091',
|
|
'9892222097',
|
|
'8108208177',
|
|
'8431515458',
|
|
'8758731437',
|
|
'9666676815',
|
|
'8910751763',
|
|
'7799662128',
|
|
'8592091984',
|
|
'7756828674',
|
|
'8129567643',
|
|
'9010489802',
|
|
'9060483484',
|
|
'7208389859',
|
|
'9567345680',
|
|
'9897919115',
|
|
'7207431737',
|
|
'8530163305',
|
|
'6352174122',
|
|
'8128397725',
|
|
'9992471515',
|
|
'7020906089',
|
|
'9302338707',
|
|
'9753960165',
|
|
'7007788718',
|
|
'9399349862',
|
|
'7704992299',
|
|
'9039079009',
|
|
'9340815828',
|
|
'9518181926',
|
|
'9936004438',
|
|
'9414473725',
|
|
'9026125181',
|
|
'9616118555',
|
|
'8979765444',
|
|
'7306189611',
|
|
'7972975733',
|
|
'8535048686',
|
|
'8528372521',
|
|
'9695930887',
|
|
'9149049954',
|
|
'7908006933',
|
|
'9482745888',
|
|
'9113822913',
|
|
'9045247005',
|
|
'9494499118',
|
|
'8870773427',
|
|
'9559411120',
|
|
'9506247941',
|
|
'9640928818',
|
|
'9541795614',
|
|
'8886395997',
|
|
'7396921382',
|
|
'9981935840',
|
|
'9396693955',
|
|
'9769644394',
|
|
'9075791986',
|
|
'9413317455',
|
|
'8840269788',
|
|
'9558505287',
|
|
'9398887816',
|
|
'8983288567',
|
|
'9621464020',
|
|
'8001413247',
|
|
'8802745497',
|
|
'7812930885',
|
|
'7012796647',
|
|
'7990115254',
|
|
'7607707869',
|
|
'8178102659',
|
|
'7248819219',
|
|
'9585643537',
|
|
'7001449161',
|
|
'9832524021',
|
|
'9010921582',
|
|
'6394920110',
|
|
'7276095151',
|
|
'7062432668',
|
|
'7980107636',
|
|
'7479846938',
|
|
'9746172252',
|
|
'7060373234',
|
|
'8476021231',
|
|
'9452263764',
|
|
'9080803744',
|
|
'9642424261',
|
|
'9526611096',
|
|
'8627059425',
|
|
'7979817807',
|
|
'9050487963',
|
|
'7018254315',
|
|
'8010876614',
|
|
'7877144449',
|
|
'8688168377',
|
|
'8788954452',
|
|
'8955382352',
|
|
'7063465747',
|
|
'9304727982',
|
|
'9915969563',
|
|
'9034251321',
|
|
'9056126155',
|
|
'9886074446',
|
|
'9692028866',
|
|
'9505397386',
|
|
'9634767337',
|
|
'8210375661',
|
|
'8429109473',
|
|
'7355706341',
|
|
'7979079968',
|
|
'8874763727',
|
|
'8210627962',
|
|
'7838534042',
|
|
'9542225186',
|
|
'7003894656',
|
|
'8755205383',
|
|
'7976325031',
|
|
'9310288433',
|
|
'8955243224',
|
|
'7004330447',
|
|
'7002509366',
|
|
'9925935935',
|
|
'8714040802',
|
|
'7793930633',
|
|
'8597712070',
|
|
'6280640797',
|
|
'9624836623',
|
|
'9619701043',
|
|
'8299215575',
|
|
'7985040853',
|
|
'9092173090',
|
|
'9648695630',
|
|
'8074454659',
|
|
'9875393746',
|
|
'9544584244',
|
|
'7267868551',
|
|
'7977860373',
|
|
'9592432529',
|
|
'7027235063',
|
|
'8807420485',
|
|
'6001071916',
|
|
'6207600652',
|
|
'9043689287',
|
|
'8851984232',
|
|
'6381085378',
|
|
'9846479424',
|
|
'9880702083',
|
|
'9654732405',
|
|
'9895875868',
|
|
'9401976660',
|
|
'9461935414',
|
|
'7275364975',
|
|
'9614832170',
|
|
'9366112550',
|
|
'8940341476',
|
|
'8711081472',
|
|
'6397459328',
|
|
'6397784699',
|
|
'6300026966',
|
|
'9167338615',
|
|
'7976166841',
|
|
'9000573151',
|
|
'8420946659',
|
|
'7737679906',
|
|
'6381083830',
|
|
'8979280034',
|
|
'7000339296',
|
|
'7904718617',
|
|
'7295850800',
|
|
'7008775158',
|
|
'9922981499',
|
|
'9048263351',
|
|
'8171913291',
|
|
'9950183470',
|
|
'9687170872',
|
|
'8754401697',
|
|
'8600182807',
|
|
'9989440777',
|
|
'8005901702',
|
|
'9862676055',
|
|
'7980017832',
|
|
'8200217355',
|
|
'9908324195',
|
|
'8879414089',
|
|
'9677161561',
|
|
'9025030704',
|
|
'8006808666',
|
|
'9587107699',
|
|
'9503663703',
|
|
'8428986985',
|
|
'9767530894',
|
|
'9029842043',
|
|
'9579007288',
|
|
'9021165357',
|
|
'9819180971',
|
|
'8149498096',
|
|
'8433874997',
|
|
'8605694169',
|
|
'9096363506',
|
|
'7622926961',
|
|
'9747157152',
|
|
'9787978393',
|
|
'7027020028',
|
|
'9550658545',
|
|
'8094701130',
|
|
'9830290500',
|
|
'9542258518',
|
|
'9745660007',
|
|
'9836859442',
|
|
'9952799586',
|
|
'9988962290',
|
|
'9569391607',
|
|
'9032831088',
|
|
'9893004511',
|
|
'9472866778',
|
|
'9550232263',
|
|
'9966800822',
|
|
'9728005852',
|
|
'7383954136',
|
|
'9865243319',
|
|
'9687613204',
|
|
'8921745621',
|
|
'8907278030',
|
|
'8930339900',
|
|
'8386960732',
|
|
'9887086978',
|
|
'9509256387',
|
|
'9671205424',
|
|
'7988518181',
|
|
'8930843243',
|
|
'7014872949',
|
|
'9828871618',
|
|
'9496352747',
|
|
'9746408260',
|
|
'9828407135',
|
|
'9785848631',
|
|
'9847702926',
|
|
'9034510415',
|
|
'9829396369',
|
|
'8860600410',
|
|
'9437110192',
|
|
'9948482356',
|
|
'8002656217',
|
|
'9149664188',
|
|
'9592576620',
|
|
'9030555545',
|
|
'7099032169',
|
|
'8006541104',
|
|
'9160197008',
|
|
'7795227901',
|
|
'8102289002',
|
|
'6200650772',
|
|
'9771493669',
|
|
'9835132454',
|
|
'9835403338',
|
|
'9304737212',
|
|
'8928027023',
|
|
'8658951488',
|
|
'8250091475',
|
|
'9033766086',
|
|
'9666759960',
|
|
'9561503171',
|
|
'9644696766',
|
|
'8770502354',
|
|
'9652765992',
|
|
'9647498197',
|
|
'7869824675',
|
|
'7660041918',
|
|
'8105993055',
|
|
'7356761447',
|
|
'8527490789',
|
|
'8081519797',
|
|
'9960021285',
|
|
'7600030178',
|
|
'9727860250',
|
|
'7001736147',
|
|
'9039767217',
|
|
'7283082999',
|
|
'9131081095',
|
|
'8778567551',
|
|
'9101589276',
|
|
'9420453887',
|
|
'9618841697',
|
|
'9483954031',
|
|
'8218387881',
|
|
'8958820987',
|
|
'8507459005',
|
|
'9759805881',
|
|
'6302183691',
|
|
'7007883807',
|
|
'8077120541',
|
|
'9674560523',
|
|
'8011964522',
|
|
'9561133711',
|
|
'8010506658',
|
|
'7021292123',
|
|
'7008764820',
|
|
'9917608264',
|
|
'9045766404',
|
|
'9417555152',
|
|
'8495849567',
|
|
'8086760121',
|
|
'8075814131',
|
|
'9390378902',
|
|
'8089986900',
|
|
'6281718782',
|
|
'8087962908',
|
|
'7657042534',
|
|
'7005011082',
|
|
'9881558869',
|
|
'9011974294',
|
|
'9284644473',
|
|
'9096086900',
|
|
'9167411656',
|
|
'9156072283',
|
|
'8090658735',
|
|
'8777524829',
|
|
'9946603073',
|
|
'8209330963',
|
|
'9846951958',
|
|
'9750280966',
|
|
'9088070810',
|
|
'7900289545',
|
|
'7309628265',
|
|
'9996957519',
|
|
'9910908093',
|
|
'9049343940',
|
|
'8888414743',
|
|
'8927715618',
|
|
'9805872210',
|
|
'9717435050',
|
|
'7906094663',
|
|
'8860899061',
|
|
'9744135078',
|
|
'7908093164',
|
|
'9408806683',
|
|
'9744143754',
|
|
'8248413679',
|
|
'8139976403',
|
|
'9977253732',
|
|
'8095849809',
|
|
'9893466798',
|
|
'9964545629',
|
|
'9980461490',
|
|
'9900408786',
|
|
'9450995413',
|
|
'7017570898',
|
|
'9611067664',
|
|
'9259278539',
|
|
'9871434113',
|
|
'9335644607',
|
|
'9639100024',
|
|
'9548745628',
|
|
'9839313176',
|
|
'9580311678',
|
|
'9557391517',
|
|
'9760923143',
|
|
'9882349772',
|
|
'9564466276',
|
|
'8017466077',
|
|
'9007062481',
|
|
'8902702572',
|
|
'9674135546',
|
|
'8101202772',
|
|
'9735204070',
|
|
'9830717041',
|
|
'9600836262',
|
|
'7797654995',
|
|
'7405520205',
|
|
'9727763213',
|
|
'8485999993',
|
|
'9048124645',
|
|
'8130657810',
|
|
'8273934527',
|
|
'7558032075',
|
|
'9958738352',
|
|
'7898521787',
|
|
'7904905648',
|
|
'8374126579',
|
|
'9958909985',
|
|
'7610904555',
|
|
'8910061729',
|
|
'8178681748',
|
|
'6394863039',
|
|
'9920887656',
|
|
'8527902454',
|
|
'9732738685',
|
|
'9909985521',
|
|
'9370859498',
|
|
'9028668634',
|
|
'9033860658',
|
|
'8770323274',
|
|
'9930567144',
|
|
'9082268736',
|
|
'8976551131',
|
|
'9014856686',
|
|
'6238137430',
|
|
'9101545247',
|
|
'8433051619',
|
|
'9977178016',
|
|
'8096722771',
|
|
'9677364643',
|
|
'8086421953',
|
|
'6306589183',
|
|
'7034274176',
|
|
'9491979611',
|
|
'8123600475',
|
|
'8951504351',
|
|
'8957267280',
|
|
'8825106765',
|
|
'6207508554',
|
|
'6309648839',
|
|
'9719222649',
|
|
'8653879722',
|
|
'6290710227',
|
|
'9497271169',
|
|
'9995291433',
|
|
'9553134110',
|
|
'8219123743',
|
|
'9136542808',
|
|
'8075322595',
|
|
'7483665078',
|
|
'9782467192',
|
|
'7976014593',
|
|
'9116431001',
|
|
'7789016694',
|
|
'9338494643',
|
|
'8883644050',
|
|
'8087450012',
|
|
'9100532974',
|
|
'9694574147',
|
|
'7878363829',
|
|
'8605597556',
|
|
'9998562246',
|
|
'9900279666',
|
|
'7906483387',
|
|
'9666554332',
|
|
'8896666618',
|
|
'6265322278',
|
|
'9612857445',
|
|
'8910412093',
|
|
'8329794030',
|
|
'8850167946',
|
|
'9985399477',
|
|
'7339820298',
|
|
'9814607014',
|
|
'6284332613',
|
|
'9084986118',
|
|
'7903945556',
|
|
'9929951242',
|
|
'8446525756',
|
|
'7338340197',
|
|
'7903506185',
|
|
'8219750478',
|
|
'9495343065',
|
|
'9073530126',
|
|
'9007115646',
|
|
'9123993468',
|
|
'9182765354',
|
|
'9046211802',
|
|
'8056646214',
|
|
'9149085080',
|
|
'8907366701',
|
|
'9983744434',
|
|
'9610005506',
|
|
'9679853087',
|
|
'9306721599',
|
|
'8840129908',
|
|
'6295265681',
|
|
'8904442532',
|
|
'7002187201',
|
|
'7218072880',
|
|
'8709362274',
|
|
'8897470642',
|
|
'8801628494',
|
|
'7989674607',
|
|
'8267872011',
|
|
'7034858457',
|
|
'8094576213',
|
|
'8140630034',
|
|
'8441025895',
|
|
'9112346462',
|
|
'9902999510',
|
|
'9847243784',
|
|
'8555931496',
|
|
'7005586522',
|
|
'7008143636',
|
|
'8898333752',
|
|
'8795699001',
|
|
'9890938681',
|
|
'6385785603',
|
|
'8867766041',
|
|
'9533590940',
|
|
'8360201450',
|
|
'8148733961',
|
|
'8328184495',
|
|
'9960131969',
|
|
'9739403599',
|
|
'6309583275',
|
|
'8617351089',
|
|
'9082548253',
|
|
'8600469637',
|
|
'8837481903',
|
|
'9831595712',
|
|
'8153993008',
|
|
'8348892246',
|
|
'9892800013',
|
|
'8972128018',
|
|
'9599126582',
|
|
'7789822506',
|
|
'7226982676',
|
|
'7032111672',
|
|
'8876144162',
|
|
'9747321950',
|
|
'7776973504',
|
|
'7897413610',
|
|
'7907101198',
|
|
'7022536498',
|
|
'8555091483',
|
|
'9061627592',
|
|
'7001041613',
|
|
'7869468392',
|
|
'9400908189',
|
|
'9673747159',
|
|
'8097265809',
|
|
'8357902126',
|
|
'7908097419',
|
|
'8310663569',
|
|
'6282538604',
|
|
'8975617221',
|
|
'9875488750',
|
|
'9555823738',
|
|
'9000026626',
|
|
'9743398905',
|
|
'8240320711',
|
|
'9767342584',
|
|
'9827982557',
|
|
'8949063332',
|
|
'8233322501',
|
|
'6296401096',
|
|
'9633303531',
|
|
'8638890157',
|
|
'7013733024',
|
|
'9766147636',
|
|
'7980840839',
|
|
'8157896980',
|
|
'9875631019',
|
|
'9704858962',
|
|
'7702037691',
|
|
'7001646289',
|
|
'8375859667',
|
|
'9176009182',
|
|
'9676061724',
|
|
'8393827313',
|
|
'9952812337',
|
|
'8088049383',
|
|
'9479711700',
|
|
'9528466050',
|
|
'9081389117',
|
|
'8930063785',
|
|
'8983544466',
|
|
'8087961156',
|
|
'7675981455',
|
|
'6290208027',
|
|
'9366586976',
|
|
'7905363313',
|
|
'9034911604',
|
|
'9985009357',
|
|
'7736762050',
|
|
'8271473951',
|
|
'8407952157',
|
|
'8348935863',
|
|
'8667593193',
|
|
'9573541933',
|
|
'9833969602',
|
|
'9865418935',
|
|
'9874392262',
|
|
'7769898899',
|
|
'9050282341',
|
|
'9325807443',
|
|
'8308383984',
|
|
'9103796510',
|
|
'8194931513',
|
|
'9986479141',
|
|
'9839525935',
|
|
'8007679737',
|
|
'8699805380',
|
|
'7987212014',
|
|
'6397716512',
|
|
'8309296170',
|
|
'7447850229',
|
|
'8551831231',
|
|
'9774643539',
|
|
'9574357925',
|
|
'8507619783',
|
|
'7838368078',
|
|
'7620532517',
|
|
'9908690619',
|
|
'09045983548',
|
|
'7908186006',
|
|
'9440671289',
|
|
'9703690009',
|
|
'8975628554',
|
|
'9766863925',
|
|
'9664538805',
|
|
'9022778439',
|
|
'9146176753',
|
|
'8732810252',
|
|
'9806615150',
|
|
'9948535296',
|
|
'9830076114',
|
|
'8271271150',
|
|
'7797792827',
|
|
'7871747141',
|
|
'7009780835',
|
|
'9140998956',
|
|
'8102122665',
|
|
'9963264290',
|
|
'8197393296',
|
|
'9638151459',
|
|
'9163939565',
|
|
'9704455609',
|
|
'7219075817',
|
|
'9746813390',
|
|
'9761412141',
|
|
'9730114338',
|
|
'8250344587',
|
|
'7890462526',
|
|
'9745573496',
|
|
'9163676334',
|
|
'8617474311',
|
|
'6290172383',
|
|
'9656671935',
|
|
'9759873479',
|
|
'8910171624',
|
|
'7982021820',
|
|
'8400849837',
|
|
'7819845309',
|
|
'7799181721',
|
|
'9082996602',
|
|
'9626136675',
|
|
'9561414044',
|
|
'9694954262',
|
|
'8813056005',
|
|
'8605525125',
|
|
'6305322316',
|
|
'9773125848',
|
|
'9566520394',
|
|
'9526151289',
|
|
'9579200025',
|
|
'8600565050',
|
|
'9398440593',
|
|
'9067429975',
|
|
'8946037189',
|
|
'7074434879',
|
|
'9552054441',
|
|
'9064012400',
|
|
'8135846584',
|
|
'9381156638',
|
|
'8825914545',
|
|
'8688855044',
|
|
'9149075576',
|
|
'9704701483',
|
|
'9612557943',
|
|
'8348860179',
|
|
'9897261655',
|
|
'9079882534',
|
|
'6003389732',
|
|
'7003092683',
|
|
'7798073728',
|
|
'8296873237',
|
|
'8108063232',
|
|
'9779740303',
|
|
'8480919201',
|
|
'9529937259',
|
|
'9052852844',
|
|
'9642036389',
|
|
'9041849910',
|
|
'9559224460',
|
|
'9600359303',
|
|
'9970033329',
|
|
'9600048792',
|
|
'8112266045',
|
|
'9911495528',
|
|
'9884148081',
|
|
'8149704229',
|
|
'9988880675',
|
|
'9258489644',
|
|
'9560227350',
|
|
'9959793800',
|
|
'9810760599',
|
|
'8948694982',
|
|
'8052122122',
|
|
'8607311122',
|
|
'8003037756',
|
|
'9874131064',
|
|
'9337839881',
|
|
'9896109189',
|
|
'9782432401',
|
|
'9823197867',
|
|
'9793447799',
|
|
'9702060880',
|
|
'9991221729',
|
|
'9372312313',
|
|
'8909246046',
|
|
'6375876835',
|
|
'9713099787',
|
|
'8879321480',
|
|
'9168114777',
|
|
'9270488943',
|
|
'8087460058',
|
|
'8108868915',
|
|
'8976260486',
|
|
'8976160347',
|
|
'8888216204',
|
|
'9665788319',
|
|
'9766352123',
|
|
'9503455203',
|
|
'9664564315',
|
|
'8240340242',
|
|
'7875498111',
|
|
'7019515154',
|
|
'8008937395',
|
|
'8492939989',
|
|
'9546433401',
|
|
'8101016865',
|
|
'9931489011',
|
|
'7509387121',
|
|
'8469974455',
|
|
'9746929637',
|
|
'9168544894',
|
|
'9058376360',
|
|
'6204964439',
|
|
'8619272564',
|
|
'8931049149',
|
|
'8250446990',
|
|
'9767126731',
|
|
'9981677410',
|
|
'8962880672',
|
|
'9353912172',
|
|
'8460779885',
|
|
'9033047443',
|
|
'8866522301',
|
|
'9604245480',
|
|
'7053170006',
|
|
'7275480470',
|
|
'8077772160',
|
|
'8307694959',
|
|
'09539915918',
|
|
'9209090809',
|
|
'7385496567',
|
|
'9840633455',
|
|
'7389948860',
|
|
'8126690599',
|
|
'9259777657',
|
|
'6204010995',
|
|
'8335954921',
|
|
'9528193003',
|
|
'7200683143',
|
|
'7895073846',
|
|
'9525072978',
|
|
'6280498362',
|
|
'9113124970',
|
|
'7508424566',
|
|
'8171135576',
|
|
'8208192896',
|
|
'8484080796',
|
|
'8918273485',
|
|
'8409804848',
|
|
'7776895393',
|
|
'9130374945',
|
|
'9948990706',
|
|
'7980300193',
|
|
'8075870687',
|
|
'7012408141',
|
|
'7219382502',
|
|
'8778236976',
|
|
'8879260899',
|
|
'9874167662',
|
|
'7076945890',
|
|
'9538023171',
|
|
'9562795927',
|
|
'7904407399',
|
|
'8919290298',
|
|
'8074493453',
|
|
'7978327471',
|
|
'9319377778',
|
|
'7904721840',
|
|
'9163072171',
|
|
'9326146523',
|
|
'6261606434',
|
|
'9816615018',
|
|
'9655866222',
|
|
'7980109507',
|
|
'9039528405',
|
|
'9350081891',
|
|
'9310120236',
|
|
'9061755523',
|
|
'8562999395',
|
|
'8957819902',
|
|
'9722650013',
|
|
'9998397809',
|
|
'6207202833',
|
|
'8345052839',
|
|
'8050720442',
|
|
'6291846260',
|
|
'7357023699',
|
|
'8847632771',
|
|
'8882136125',
|
|
'8054220874',
|
|
'8299215257',
|
|
'6280377030',
|
|
'9919099975',
|
|
'8945073414',
|
|
'7000875384',
|
|
'7709413216',
|
|
'7079889035',
|
|
'8847494946',
|
|
'9855460645',
|
|
'7291019799',
|
|
'9148482833',
|
|
'8449395959',
|
|
'7985247050',
|
|
'9835634626',
|
|
'9500552759',
|
|
'7524845579',
|
|
'7355014764',
|
|
'8876404206',
|
|
'7247012411',
|
|
'8439524278',
|
|
'9494808816',
|
|
'9718610496',
|
|
'9562557837',
|
|
'9790901619',
|
|
'7240121202',
|
|
'8850166641',
|
|
'9982215284',
|
|
'9304470043',
|
|
'9971060662',
|
|
'8948906743',
|
|
'9260986298',
|
|
'9871895629',
|
|
'8871525878',
|
|
'7021702913',
|
|
'9924685700',
|
|
'8224046977',
|
|
'7000161759',
|
|
'8876261814',
|
|
'9567706731',
|
|
'8304046266',
|
|
'9641229055',
|
|
'9673183396',
|
|
'7008850441',
|
|
'9821530846',
|
|
'8686751537',
|
|
'9064976268',
|
|
'9217001400',
|
|
'9632372636',
|
|
'7560907207',
|
|
'9607280074',
|
|
'8417929654',
|
|
'8145039233',
|
|
'8891714144',
|
|
'8950236866',
|
|
'8871314731',
|
|
'8898780547',
|
|
'9848732721',
|
|
'7276764260',
|
|
'8051527787',
|
|
'7204807040',
|
|
'8360772974',
|
|
'7042972214',
|
|
'9569126908',
|
|
'9348434989',
|
|
'7738324879',
|
|
'7005308963',
|
|
'8617593093',
|
|
'9091798311',
|
|
'8698985879',
|
|
'7899540486',
|
|
'9022433523',
|
|
'7906677642',
|
|
'8630321313',
|
|
'9163727872',
|
|
'9728668629',
|
|
'9641150740',
|
|
'9628075574',
|
|
'8318026457',
|
|
'8709847845',
|
|
'7488982774',
|
|
'7065194546',
|
|
'9524122720',
|
|
'7629972287',
|
|
'6290911987',
|
|
'9101040497',
|
|
'8667267055',
|
|
'9306567376',
|
|
'9996737091',
|
|
'9793439111',
|
|
'8759469477',
|
|
'7709882230',
|
|
'9067975062',
|
|
'9977940038',
|
|
'6301619597',
|
|
'9744996816',
|
|
'9764039372',
|
|
'7447615173',
|
|
'7651813511',
|
|
'9058194703',
|
|
'9527476022',
|
|
'9994201879',
|
|
'9848872786',
|
|
'7794948619',
|
|
'9179480007',
|
|
'9539544337',
|
|
'8698094589',
|
|
'8623954025',
|
|
'7013537447',
|
|
'8238981651',
|
|
'9137630751',
|
|
'9047905005',
|
|
'9995924380',
|
|
'9890525312',
|
|
'9029985477',
|
|
'7304595659',
|
|
'9930923726',
|
|
'9701641051',
|
|
'8200789760',
|
|
'7418145851',
|
|
'9526596165',
|
|
'9841192092',
|
|
'9804599249',
|
|
'9812432100',
|
|
'9582210058',
|
|
'9884235323',
|
|
'9660902085',
|
|
'9662675611',
|
|
'9879361172',
|
|
'9773501855',
|
|
'9435831263',
|
|
'9386059364',
|
|
'9040238636',
|
|
'8709696090',
|
|
'7764041375',
|
|
'9774044692',
|
|
'9746663469',
|
|
'7306955523',
|
|
'9843109972',
|
|
'9840777813',
|
|
'9846830400',
|
|
'9727703613',
|
|
'9962448986',
|
|
'7275137639',
|
|
'9645340340',
|
|
'9414126224',
|
|
'9991170800',
|
|
'9995344966',
|
|
'9896972369',
|
|
'9255150440',
|
|
'8432075242',
|
|
'7736884613',
|
|
'8955497967',
|
|
'9050000414',
|
|
'7742848684',
|
|
'8290956700',
|
|
'9929431555',
|
|
'9896696956',
|
|
'9818861015',
|
|
'9728132062',
|
|
'9136068772',
|
|
'9652375738',
|
|
'9703787005',
|
|
'7837046161',
|
|
'8901118989',
|
|
'9177452515',
|
|
'9060202023',
|
|
'7677776585',
|
|
'9304103788',
|
|
'9507975441',
|
|
'9583317339',
|
|
'8099414272',
|
|
'9797632861',
|
|
'8168513746',
|
|
'9911604401',
|
|
'7696765595',
|
|
'9853932323',
|
|
'7903391880',
|
|
'9620686814',
|
|
'8689921672',
|
|
'6294365499',
|
|
'6305419541',
|
|
'8957075620',
|
|
'8891479990',
|
|
'8830057494',
|
|
'8401956526',
|
|
'6388012297',
|
|
'9745372726',
|
|
'9790853548',
|
|
'8446904544',
|
|
'7708990404',
|
|
'6296051535',
|
|
'8868028786',
|
|
'9832932143',
|
|
'9423065961',
|
|
'7339475636',
|
|
'9503612123',
|
|
'7893838771',
|
|
'9970716189',
|
|
'9064286830',
|
|
'9899308804',
|
|
'6394265286',
|
|
'7488665905',
|
|
'8420287789',
|
|
'9838659983',
|
|
'7907307207',
|
|
'7850826443',
|
|
'8530780535',
|
|
'8757081969',
|
|
'8619596362',
|
|
'7558881743',
|
|
'8158078272',
|
|
'8240310206',
|
|
'7657822306',
|
|
'7510360503',
|
|
'9219549754',
|
|
'8528896635',
|
|
'8105867279',
|
|
'7558841918',
|
|
'8790201267',
|
|
'8369082341',
|
|
'7906902456',
|
|
'8140401680',
|
|
'9895459007',
|
|
'6295892352',
|
|
'8197552964',
|
|
'9663348498',
|
|
'0996228256',
|
|
'8374047422',
|
|
'9247160175',
|
|
'8317684650',
|
|
'9715559785',
|
|
'9819542460',
|
|
'9922671500',
|
|
'9820842305',
|
|
'9552838148',
|
|
'9860676064',
|
|
'9720396490',
|
|
'7878772602',
|
|
'9845029845',
|
|
'8086604551',
|
|
'9805088166',
|
|
'8887600437',
|
|
'7702276112',
|
|
'9034514291',
|
|
'9048944090',
|
|
'7373227823',
|
|
'9310051004',
|
|
'9010603660',
|
|
'9918447755',
|
|
'8874029000',
|
|
'9582545464',
|
|
'9542929396',
|
|
'9014339587',
|
|
'9987770667',
|
|
'9143713504',
|
|
'8978271414',
|
|
'9961100813',
|
|
'9690228471',
|
|
'7017020359',
|
|
'9890796160',
|
|
'9009114859',
|
|
'9977069599',
|
|
'9439344440',
|
|
'7010775034',
|
|
'8821818332',
|
|
'9538446437',
|
|
'7828961732',
|
|
'8618312204',
|
|
'9886545328',
|
|
'9761000310',
|
|
'9599915166',
|
|
'9919115451',
|
|
'7838457878',
|
|
'8310076813',
|
|
'8105205456',
|
|
'8840363438',
|
|
'9838046820',
|
|
'8892394294',
|
|
'9008466347',
|
|
'8197948108',
|
|
'9410259566',
|
|
'9805566490',
|
|
'7248850568',
|
|
'9459812034',
|
|
'9540614815',
|
|
'9062481852',
|
|
'9038260059',
|
|
'9940091889',
|
|
'7908977085',
|
|
'9674870982',
|
|
'8777280802',
|
|
'9735214928',
|
|
'9038482675',
|
|
'8697415688',
|
|
'9593555888',
|
|
'9749081047',
|
|
'8511000195',
|
|
'8124124934',
|
|
'9544547253',
|
|
'9510817563',
|
|
'9746215250',
|
|
'9971597414',
|
|
'9718075948',
|
|
'9655425273',
|
|
'9791926467',
|
|
'9847568319',
|
|
'9033789448',
|
|
'9843972820',
|
|
'8547061183',
|
|
'8130301464',
|
|
'9582371312',
|
|
'9033229315',
|
|
'9648868486',
|
|
'9760329061',
|
|
'9727701451',
|
|
'9095614647',
|
|
'8821906880',
|
|
'7304629850',
|
|
'8410411963',
|
|
'9071602884',
|
|
'8447353965',
|
|
'9706534622',
|
|
'7001309930',
|
|
'7040529110',
|
|
'7644976352',
|
|
'7086015308',
|
|
'7838464772',
|
|
'7266930428',
|
|
'9960651678',
|
|
'8347378070',
|
|
'8097248143',
|
|
'7084719186',
|
|
'6201085614',
|
|
'8910961355',
|
|
'8460605262',
|
|
'9606247232',
|
|
'8108508396',
|
|
'9995906238',
|
|
'8918343540',
|
|
'8667460270',
|
|
'9108825964',
|
|
'9901237114',
|
|
'8156963981',
|
|
'7798942869',
|
|
'7974672617',
|
|
'7739503368',
|
|
'8436159348',
|
|
'9998242326',
|
|
'8227828648',
|
|
'9942246653',
|
|
'6280242151',
|
|
'9500608032',
|
|
'8637526787',
|
|
'9567959720',
|
|
'7989665830',
|
|
'9686843150',
|
|
'9966986825',
|
|
'9917223395',
|
|
'9720500499',
|
|
'7011786352',
|
|
'9649923129',
|
|
'8409683430',
|
|
'8494962702',
|
|
'9909666651',
|
|
'9337374893',
|
|
'9140009519',
|
|
'8439297768',
|
|
'7985097364',
|
|
'7015344232',
|
|
'8374450453',
|
|
'9884306214',
|
|
'9552001814',
|
|
'7876348004',
|
|
'9878789392',
|
|
'7060804831',
|
|
'9045452004',
|
|
'8595226160',
|
|
'7678020992',
|
|
'9444401144',
|
|
'8699558955',
|
|
'9706579784',
|
|
'8000471070',
|
|
'9833458158',
|
|
'8754639514',
|
|
'7907583819',
|
|
'6382384654',
|
|
'9635573358',
|
|
'9170695546',
|
|
'7569770067',
|
|
'9123574131',
|
|
'8910862049',
|
|
'8802608330',
|
|
'8262990100',
|
|
'7039299163',
|
|
'7059158526',
|
|
'9095034149',
|
|
'8087561123',
|
|
'7829932459',
|
|
'7276315402',
|
|
'6371648818',
|
|
'9875592114',
|
|
'8697175538',
|
|
'8507540239',
|
|
'9864197424',
|
|
'7583944458',
|
|
'9568544788',
|
|
'7306795834',
|
|
'9743032644',
|
|
'8006590105',
|
|
'8924859875',
|
|
'9789923892',
|
|
'9946676563',
|
|
'9306974171',
|
|
'9519950713',
|
|
'7352731818',
|
|
'7062967259',
|
|
'9887570636',
|
|
'9733812727',
|
|
'8890264221',
|
|
'7358624342',
|
|
'7373262518',
|
|
'8369307235',
|
|
'8369660448',
|
|
'9588889817',
|
|
'8356805467',
|
|
'7379819160',
|
|
'8050899313',
|
|
'7259638615',
|
|
'8083665049',
|
|
'8501828833',
|
|
'9899863896',
|
|
'9943094456',
|
|
'7987008134',
|
|
'6289772788',
|
|
'8981469755',
|
|
'9100561156',
|
|
'8698248325',
|
|
'7997017157',
|
|
'7013865699',
|
|
'8200070885',
|
|
'9635673296',
|
|
'9792398639',
|
|
'8910908911',
|
|
'9116226638',
|
|
'7774841114',
|
|
'8573979155',
|
|
'8172988614',
|
|
'8917245952',
|
|
'6351190793',
|
|
'8668333478',
|
|
'9358858740',
|
|
'9042589754',
|
|
'9850310386',
|
|
'8853797912',
|
|
'9579299112',
|
|
'7032949490',
|
|
'9653360573',
|
|
'8287733242',
|
|
'6260348267',
|
|
'9539382793',
|
|
'8176086239',
|
|
'6382222476',
|
|
'7654006282',
|
|
'8302800177',
|
|
'9974799654',
|
|
'9838968737',
|
|
'9128549692',
|
|
'9977068640',
|
|
'9631426384',
|
|
'8446946881',
|
|
'8838784522',
|
|
'8103577276',
|
|
'7972097083',
|
|
'9647449885',
|
|
'8793290506',
|
|
'8157888576',
|
|
'9496356689',
|
|
'9960696979',
|
|
'7905850981',
|
|
'8777517023',
|
|
'8271806464',
|
|
'9743258395',
|
|
'8094228344',
|
|
'9455214605',
|
|
'9175432084',
|
|
'7992212694',
|
|
'9958645069',
|
|
'6386514886',
|
|
'9004089917',
|
|
'8197223798',
|
|
'9092752067',
|
|
'7080837140',
|
|
'8421831103',
|
|
'7976926807',
|
|
'9624915713',
|
|
'9772050449',
|
|
'7093684824',
|
|
'9786699971',
|
|
'9768409845',
|
|
'9966691576',
|
|
'8008517366',
|
|
'8319396339',
|
|
'9659736361',
|
|
'8908189754',
|
|
'8965945604',
|
|
'7980929349',
|
|
'7418872095',
|
|
'9168794280',
|
|
'9552645120',
|
|
'9310629228',
|
|
'9038594116',
|
|
'9618266033',
|
|
'7978260985',
|
|
'7411582409',
|
|
'9080387230',
|
|
'9912485239',
|
|
'7745086082',
|
|
'9897448819',
|
|
'7004475810',
|
|
'7028600360',
|
|
'9895089448',
|
|
'9999182422',
|
|
'9075783600',
|
|
'9160806600',
|
|
'7800004484',
|
|
'8943053600',
|
|
'7508686935',
|
|
'8698111295',
|
|
'8687386325',
|
|
'9066601772',
|
|
'7975490107',
|
|
'7903020800',
|
|
'9923993106',
|
|
'8087391926',
|
|
'9846166862',
|
|
'8137024767',
|
|
'7738776711',
|
|
'9322357726',
|
|
'9454294989',
|
|
'8433488980',
|
|
'6232132995',
|
|
'9961869566',
|
|
'9573710035',
|
|
'7717602307',
|
|
'8451932699',
|
|
'9453257310',
|
|
'9811042216',
|
|
'6295427103',
|
|
'8381841030',
|
|
'8149452504',
|
|
'9009989800',
|
|
'8536905812',
|
|
'9985037472',
|
|
'8826339365',
|
|
'9866205297',
|
|
'8484935178',
|
|
'8949381379',
|
|
'8459888609',
|
|
'9205079808',
|
|
'8609312900',
|
|
'7547806542',
|
|
'7908089209',
|
|
'7043824737',
|
|
'8286842581',
|
|
'9841809656',
|
|
'9559595915',
|
|
'7044941482',
|
|
'8759084059',
|
|
'8089799613',
|
|
'9140921468',
|
|
'8898293702',
|
|
'8800305712',
|
|
'7011828349',
|
|
'7397896005',
|
|
'9733019231',
|
|
'7218836355',
|
|
'9659495513',
|
|
'9654683006',
|
|
'8581909934',
|
|
'9666188358',
|
|
'9972400536',
|
|
'9874515322',
|
|
'7567415207',
|
|
'7893843558',
|
|
'8147033146',
|
|
'9188073380',
|
|
'9966672936',
|
|
'9663522018',
|
|
'9500849318',
|
|
'8297112636',
|
|
'7506041783',
|
|
'9686436264',
|
|
'9108530998',
|
|
'8837823832',
|
|
'9164797575',
|
|
'8806923152',
|
|
'9072498393',
|
|
'9056237688',
|
|
'7001921722',
|
|
'9539800776',
|
|
'8700196282',
|
|
'8502882280',
|
|
'8872573476',
|
|
'9328666296',
|
|
'8454081937',
|
|
'7795820776',
|
|
'8870963878',
|
|
'9113645571',
|
|
'8652211935',
|
|
'8129248847',
|
|
'9391507721',
|
|
'9808157505',
|
|
'7975029929',
|
|
'9340003189',
|
|
'7799172476',
|
|
'8087465198',
|
|
'9904466286',
|
|
'9686833007',
|
|
'9760875632',
|
|
'9712331801',
|
|
'9764006774',
|
|
'9823533622',
|
|
'9845706746',
|
|
'9960573612',
|
|
'9585415498',
|
|
'9564777763',
|
|
'9771458230',
|
|
'9891839406',
|
|
'9906092123',
|
|
'9838592375',
|
|
'9884586162',
|
|
'9838667999',
|
|
'9688293144',
|
|
'9022459849',
|
|
'8889486669',
|
|
'9909011597',
|
|
'9491194423',
|
|
'8054324553',
|
|
'9551262025',
|
|
'8528427779',
|
|
'7666291915',
|
|
'7506264492',
|
|
'8668218715',
|
|
'8087790008',
|
|
'9930037272',
|
|
'7276490972',
|
|
'9619071754',
|
|
'9011311346',
|
|
'9511711974',
|
|
'7083234339',
|
|
'8380868343',
|
|
'9867196552',
|
|
'7057719517',
|
|
'9833436281',
|
|
'8976309804',
|
|
'9769702961',
|
|
'9730449171',
|
|
'9970598520',
|
|
'7003460090',
|
|
'9014356679',
|
|
'9447483112',
|
|
'9773017800',
|
|
'7730874227',
|
|
'7218792465',
|
|
'8460106221',
|
|
'8345963763',
|
|
'8356970882',
|
|
'9826497437',
|
|
'7278684861',
|
|
'8892452599',
|
|
'6291955244',
|
|
'9707743464',
|
|
'8698711480',
|
|
'7448412234',
|
|
'7449630226',
|
|
'8884562391',
|
|
'8870832568',
|
|
'7803911121',
|
|
'7017116220',
|
|
'9760834169',
|
|
'9719027296',
|
|
'8109350410',
|
|
'8013727363',
|
|
'7060725446',
|
|
'8223915954',
|
|
'7200782884',
|
|
'9981697978',
|
|
'9891146517',
|
|
'9123401808',
|
|
'9989996039',
|
|
'8954426965',
|
|
'8906708824',
|
|
'9918424849',
|
|
'7828566513',
|
|
'9046857474',
|
|
'7305606249',
|
|
'9428784993',
|
|
'8309889858',
|
|
'9159927933',
|
|
'9009446108',
|
|
'9720460847',
|
|
'7040370301',
|
|
'8100352236',
|
|
'8889169858',
|
|
'9403845143',
|
|
'8760067799',
|
|
'9977779113',
|
|
'9749465628',
|
|
'8847829760',
|
|
'8094084184',
|
|
'8053482497',
|
|
'9812570443',
|
|
'8770072194',
|
|
'9584552945',
|
|
'9815725044',
|
|
'7394921020',
|
|
'9442934325',
|
|
'7777949222',
|
|
'9919690084',
|
|
'9982323023',
|
|
'7009891082',
|
|
'7398423424',
|
|
'9792236984',
|
|
'9146230202',
|
|
'8600864590',
|
|
'9821694115',
|
|
'8335961142',
|
|
'9576997887',
|
|
'9685892153',
|
|
'9664866767',
|
|
'9829272704',
|
|
'7002056359',
|
|
'7690852513',
|
|
'9100787190',
|
|
'9310043702',
|
|
'7278601577',
|
|
'8709164819',
|
|
'8607688322',
|
|
'8885619234',
|
|
'8708997223',
|
|
'8013880346',
|
|
'8085592142',
|
|
'8210743898',
|
|
'9457461509',
|
|
'9462545171',
|
|
'9518822958',
|
|
'7340230985',
|
|
'7250143525',
|
|
'8969677261',
|
|
'9540773779',
|
|
'9877156329',
|
|
'9310632048',
|
|
'7277465123',
|
|
'8143271134',
|
|
'7068483904',
|
|
'8503005716',
|
|
'6398579013',
|
|
'8395845239',
|
|
'8580721559',
|
|
'7007492764',
|
|
'7986752856',
|
|
'9560944962',
|
|
'9953754624',
|
|
'7737838363',
|
|
'8813099145',
|
|
'9656295018',
|
|
'9993890332',
|
|
'9779948655',
|
|
'9639367267',
|
|
'9595970514',
|
|
'9059825085',
|
|
'9737218389',
|
|
'9372807682',
|
|
'6380327358',
|
|
'7907219993',
|
|
'7001722366',
|
|
'7045282085',
|
|
'6290445635',
|
|
'6290990070',
|
|
'7508482992',
|
|
'9752848856',
|
|
'8906690091',
|
|
'9123910956',
|
|
'8924032911',
|
|
'9358567744',
|
|
'8879243598',
|
|
'7306314842',
|
|
'9446176077',
|
|
'9450634383',
|
|
'9745071801',
|
|
'9994058578',
|
|
'9109685600',
|
|
'7076094261',
|
|
'9550463403',
|
|
'9348052028',
|
|
'9345854788',
|
|
'7076877343',
|
|
'9597849302',
|
|
'9744914132',
|
|
'8700457993',
|
|
'9140100631',
|
|
'8882082392',
|
|
'8425007642',
|
|
'9759380722',
|
|
'6380290782',
|
|
'8097168717',
|
|
'9494670441',
|
|
'8511122408',
|
|
'9677119581',
|
|
'9101452773',
|
|
'9052567775',
|
|
'9149202011',
|
|
'8949087779',
|
|
'6001627314',
|
|
'8329752082',
|
|
'9897799920',
|
|
'9539828799',
|
|
'8013904947',
|
|
'8146617935',
|
|
'9832401998',
|
|
'7458083524',
|
|
'8015358545',
|
|
'9058906501',
|
|
'9585955028',
|
|
'7002638623',
|
|
'9027390854',
|
|
'9606504948',
|
|
'6289226464',
|
|
'9388386658',
|
|
'6909685303',
|
|
'9359139536',
|
|
'6381316690',
|
|
'7696609597',
|
|
'6282226910',
|
|
'9601788236',
|
|
'9560434001',
|
|
'9551276932',
|
|
'8600923904',
|
|
'9804263951',
|
|
'8296290772',
|
|
'7409871178',
|
|
'7020650869',
|
|
'8801210008',
|
|
'7387721586',
|
|
'7015536482',
|
|
'9420886423',
|
|
'9017787800',
|
|
'7984106109',
|
|
'9420837551',
|
|
'9822112710',
|
|
'9922296340',
|
|
'9619031403',
|
|
'8331896989',
|
|
'9830190649',
|
|
'9032906837',
|
|
'9979759681',
|
|
'9548499995',
|
|
'9732013332',
|
|
'9050135959',
|
|
'9991453634',
|
|
'9550340401',
|
|
'9888283427',
|
|
'8804742010',
|
|
'9866982273',
|
|
'9778981314',
|
|
'9954807329',
|
|
'9796229000',
|
|
'9814638240',
|
|
'9041955855',
|
|
'9966449544',
|
|
'9789939298',
|
|
'9953331401',
|
|
'9727772834',
|
|
'9095271820',
|
|
'8866236967',
|
|
'8826386801',
|
|
'9982478161',
|
|
'8901378151',
|
|
'8594023454',
|
|
'9846507514',
|
|
'9729379699',
|
|
'9983313576',
|
|
'8955066527',
|
|
'7801048061',
|
|
'9783929200',
|
|
'9908224315',
|
|
'9983267000',
|
|
'9497577641',
|
|
'9587010909',
|
|
'9896462030',
|
|
'9996648196',
|
|
'9605347247',
|
|
'9526747827',
|
|
'8210057756',
|
|
'9155683091',
|
|
'9441939866',
|
|
'9006632666',
|
|
'9636510847',
|
|
'9603530803',
|
|
'9032977321',
|
|
'9908233227',
|
|
'8210407548',
|
|
'9959312850',
|
|
'8699483238',
|
|
'8008389083',
|
|
'9304336536',
|
|
'7091090777',
|
|
'8540826878',
|
|
'9888811002',
|
|
'9063378889',
|
|
'8876382701',
|
|
'9048727017',
|
|
'7501024457',
|
|
'8116696755',
|
|
'9591857365',
|
|
'9947400561',
|
|
'9344154518',
|
|
'9911889930',
|
|
'7993477047',
|
|
'8297160843',
|
|
'7358372200',
|
|
'8368906209',
|
|
'9670138991',
|
|
'7875588024',
|
|
'9992543244',
|
|
'8800161495',
|
|
'7419319333',
|
|
'8093319311',
|
|
'9158788825',
|
|
'8309143331',
|
|
'8888437830',
|
|
'8308864238',
|
|
'8617462701',
|
|
'8123884685',
|
|
'7302184292',
|
|
'9867558692',
|
|
'6296230409',
|
|
'8867145938',
|
|
'7432948348',
|
|
'9616150011',
|
|
'9110140392',
|
|
'9634560472',
|
|
'6206004575',
|
|
'9802557501',
|
|
'7398840737',
|
|
'6200697418',
|
|
'6002538609',
|
|
'8306567656',
|
|
'9174976678',
|
|
'9911837972',
|
|
'9198572036',
|
|
'9988223202',
|
|
'9036670023',
|
|
'8240085583',
|
|
'8707259203',
|
|
'7900957749',
|
|
'9500849816',
|
|
'8142873280',
|
|
'8086138568',
|
|
'8866134911',
|
|
'7015352173',
|
|
'9390078076',
|
|
'9048467238',
|
|
'7044741933',
|
|
'9083692919',
|
|
'9867043117',
|
|
'9869330195',
|
|
'9766413235',
|
|
'9980092145',
|
|
'9368903860',
|
|
'7905768114',
|
|
'9945426569',
|
|
'9546643031',
|
|
'8398989293',
|
|
'9309228801',
|
|
'9719060300',
|
|
'9896844644',
|
|
'9032702946',
|
|
'8449785136',
|
|
'9884928223',
|
|
'9847343266',
|
|
'9889022665',
|
|
'9600088998',
|
|
'9015212692',
|
|
'8988036595',
|
|
'8447194813',
|
|
'8148723251',
|
|
'7879131511',
|
|
'8792656682',
|
|
'9160001100',
|
|
'9727707678',
|
|
'9744943643',
|
|
'9747622992',
|
|
'9834636317',
|
|
'9028338918',
|
|
'8287430910',
|
|
'6290422689',
|
|
'9847242372',
|
|
'7000491712',
|
|
'9880124800',
|
|
'8547554481',
|
|
'7477466606',
|
|
'7411346537',
|
|
'7869598223',
|
|
'8871022312',
|
|
'9844847563',
|
|
'6361050288',
|
|
'7259291367',
|
|
'7974805348',
|
|
'9916555766',
|
|
'9559914399',
|
|
'7088440099',
|
|
'9695977799',
|
|
'7007449050',
|
|
'9773456244',
|
|
'9452664881',
|
|
'8562936824',
|
|
'9548856057',
|
|
'9919802719',
|
|
'9984223330',
|
|
'9591069115',
|
|
'9058999504',
|
|
'9582119114',
|
|
'9759164012',
|
|
'9674449701',
|
|
'9038224662',
|
|
'9933416121',
|
|
'7439939437',
|
|
'9749362736',
|
|
'9629538899',
|
|
'9585156007',
|
|
'9840886835',
|
|
'8489919958',
|
|
'9711015621',
|
|
'9020258223',
|
|
'8589041140',
|
|
'9953820542',
|
|
'9994784214',
|
|
'7007501810',
|
|
'9773848846',
|
|
'9427233104',
|
|
'9599645951',
|
|
'9946631857',
|
|
'9068397142',
|
|
'7089278489',
|
|
'8374603658',
|
|
'8779675182',
|
|
'7004152123',
|
|
'8756309477',
|
|
'7796863236',
|
|
'8638094675',
|
|
'9985225525',
|
|
'9811077196',
|
|
'8874734444',
|
|
'9381863784',
|
|
'9961409734',
|
|
'9987917231',
|
|
'9361551933',
|
|
'8970115042',
|
|
'9265507426',
|
|
'8919958745',
|
|
'7892967216',
|
|
'9182617418',
|
|
'9381885366',
|
|
'8073259475',
|
|
'9458888552',
|
|
'9346111975',
|
|
'8210336586',
|
|
'9989601649',
|
|
'9948869103',
|
|
'9478830199',
|
|
'7003763470',
|
|
'7089411881',
|
|
'8271182899',
|
|
'9621216580',
|
|
'9229292692',
|
|
'8077723685',
|
|
'9743110363',
|
|
'9567453729',
|
|
'7303642407',
|
|
'9890750508',
|
|
'9100669212',
|
|
'8340492676',
|
|
'7842342343',
|
|
'9158219012',
|
|
'7000456493',
|
|
'6395967280',
|
|
'8198050839',
|
|
'8839342714',
|
|
'6284392975',
|
|
'9284894366',
|
|
'9976627976',
|
|
'7594026062',
|
|
'7386117905',
|
|
'8792671418',
|
|
'8511087122',
|
|
'9136162196',
|
|
'9373195152',
|
|
'9353384767',
|
|
'8472053719',
|
|
'6297182580',
|
|
'7744025686',
|
|
'9920105009',
|
|
'8591140616',
|
|
'9822822662',
|
|
'9838985193',
|
|
'8247434698',
|
|
'6005239526',
|
|
'7840803204',
|
|
'7891608861',
|
|
'6000854636',
|
|
'7003167252',
|
|
'9368497466',
|
|
'8309451595',
|
|
'8494826739',
|
|
'9967489086',
|
|
'7508380352',
|
|
'7737603505',
|
|
'9168999899',
|
|
'7908705054',
|
|
'8185815011',
|
|
'8908537464',
|
|
'7306792983',
|
|
'8639388455',
|
|
'7736260378',
|
|
'9730492973',
|
|
'9075843693',
|
|
'9034401609',
|
|
'7903529732',
|
|
'8113000041',
|
|
'8602021551',
|
|
'6263938457',
|
|
'7810897479',
|
|
'9054158711',
|
|
'8385813674',
|
|
'9166400104',
|
|
'7006066461',
|
|
'7003781281',
|
|
'7900660515',
|
|
'9904930069',
|
|
'7777960196',
|
|
'9008152999',
|
|
'9748817016',
|
|
'7003007785',
|
|
'9860084603',
|
|
'9126560153',
|
|
'9964668482',
|
|
'7044967410',
|
|
'8509382933',
|
|
'9698689766',
|
|
'9609092291',
|
|
'8249066743',
|
|
'8329296016',
|
|
'8266974395',
|
|
'6302839817',
|
|
'9995490892',
|
|
'7019057632',
|
|
'9631947323',
|
|
'7738621957',
|
|
'9137893650',
|
|
'7679630303',
|
|
'9455304643',
|
|
'6300094970',
|
|
'7754966561',
|
|
'9623623029',
|
|
'8141391927',
|
|
'9521255711',
|
|
'9604820920',
|
|
'7278948287',
|
|
'7770053353',
|
|
'7506362820',
|
|
'9094239354',
|
|
'7002561141',
|
|
'7228052781',
|
|
'8801520249',
|
|
'9898401590',
|
|
'9620170746',
|
|
'7799991997',
|
|
'9503334524',
|
|
'9330848698',
|
|
'8617572327',
|
|
'7073991551',
|
|
'7007014540',
|
|
'9060705124',
|
|
'8082433716',
|
|
'9791883878',
|
|
'8638532785',
|
|
'7755953227',
|
|
'9869956113',
|
|
'9058177776',
|
|
'7907489509',
|
|
'8687993933',
|
|
'8432357410',
|
|
'8547471840',
|
|
'9947607025',
|
|
'8056477708',
|
|
'9730502088',
|
|
'9538417380',
|
|
'8116030183',
|
|
'9706929499',
|
|
'9850898946',
|
|
'9714204761',
|
|
'8757894191',
|
|
'9725157390',
|
|
'8979831937',
|
|
'9986629625',
|
|
'7016106468',
|
|
'9930955235',
|
|
'7219322662',
|
|
'7356358157',
|
|
'8143197057',
|
|
'7399514666',
|
|
'9309119535',
|
|
'8989677930',
|
|
'8128632034',
|
|
'8187873707',
|
|
'7977015427',
|
|
'9635535494',
|
|
'8388080963',
|
|
'9746883800',
|
|
'8088819707',
|
|
'7355719112',
|
|
'8590257353',
|
|
'9251777729',
|
|
'8883222922',
|
|
'8951472974',
|
|
'9028466101',
|
|
'9860888127',
|
|
'8777725804',
|
|
'8252111164',
|
|
'8778347005',
|
|
'7567455989',
|
|
'7987970120',
|
|
'9960597076',
|
|
'9797577057',
|
|
'7384157156',
|
|
'9473089123',
|
|
'9700145100',
|
|
'8600316247',
|
|
'9008515897',
|
|
'9677874623',
|
|
'8089323732',
|
|
'9939930618',
|
|
'9182585892',
|
|
'7044915936',
|
|
'9329237702',
|
|
'6264941758',
|
|
'7558875386',
|
|
'9712504720',
|
|
'7020105027',
|
|
'8095417001',
|
|
'8110854546',
|
|
'6392453275',
|
|
'8307878307',
|
|
'8303922039',
|
|
'9990153576',
|
|
'8405967907',
|
|
'7007506746',
|
|
'9381901486',
|
|
'9303211309',
|
|
'8981307957',
|
|
'8181000691',
|
|
'8106998330',
|
|
'9819650582',
|
|
'8667051440',
|
|
'9907002209',
|
|
'6207063447',
|
|
'8880948912',
|
|
'8754340736',
|
|
'9585469777',
|
|
'9164008977',
|
|
'9645520031',
|
|
'9479977973',
|
|
'7219140824',
|
|
'8273024464',
|
|
'9545114813',
|
|
'7001370319',
|
|
'9659422430',
|
|
'9834901122',
|
|
'9048025297',
|
|
'9782160015',
|
|
'7090171886',
|
|
'8258058538',
|
|
'7569777650',
|
|
'9993635052',
|
|
'8402804957',
|
|
'6366198815',
|
|
'9499831919',
|
|
'7980321327',
|
|
'8639296477',
|
|
'8486634259',
|
|
'7356258081',
|
|
'8791529182',
|
|
'8617445850',
|
|
'9330158030',
|
|
'9664224013',
|
|
'9150111545',
|
|
'7896849557',
|
|
'6397027694',
|
|
'7815953635',
|
|
'9810957523',
|
|
'8077835073',
|
|
'8589081233',
|
|
'7549583029',
|
|
'9538344595',
|
|
'9464748456',
|
|
'9599057535',
|
|
'7725999901',
|
|
'9911900411',
|
|
'8125803161',
|
|
'9368029856',
|
|
'9820432736',
|
|
'9804269889',
|
|
'9036980130',
|
|
'9413546925',
|
|
'9766143432',
|
|
'7507069979',
|
|
'9729825699',
|
|
'9463925140',
|
|
'9545890202',
|
|
'8055803316',
|
|
'9893997873',
|
|
'8929401850',
|
|
'9997303415',
|
|
'8655727963',
|
|
'9885524348',
|
|
'8224001655',
|
|
'8420173940',
|
|
'9831574723',
|
|
'9819887001',
|
|
'9922959157',
|
|
'9619184867',
|
|
'9960355004',
|
|
'9819194747',
|
|
'7276650002',
|
|
'9670193178',
|
|
'9404211779',
|
|
'8708074285',
|
|
'8218390210',
|
|
'8949100540',
|
|
'8805821993',
|
|
'8431203022',
|
|
'8390619119',
|
|
'8115150365',
|
|
'7509814202',
|
|
'7822004927',
|
|
'9123121967',
|
|
'8125447539',
|
|
'9820138934',
|
|
'9530002426',
|
|
'8469862241',
|
|
'7708674124',
|
|
'9452681521',
|
|
'9595189324',
|
|
'8129695764',
|
|
'7278946293',
|
|
'8383079831',
|
|
'9800133672',
|
|
'8976645021',
|
|
'9108775708',
|
|
'8511599878',
|
|
'8005603252',
|
|
'9140800272',
|
|
'8871608319',
|
|
'8090800712',
|
|
'9140225472',
|
|
'8279498972',
|
|
'9519258822',
|
|
'9336914028',
|
|
'9838263803',
|
|
'9098297585',
|
|
'7903286108',
|
|
'7988065751',
|
|
'8755422880',
|
|
'8073683323',
|
|
'9828597685',
|
|
'9304943022',
|
|
'8817412529',
|
|
'9525939458',
|
|
'7022462429',
|
|
'9602485849',
|
|
'9624251446',
|
|
'9666557570',
|
|
'7259459959',
|
|
'9775362236',
|
|
'9733366314',
|
|
'8435315936',
|
|
'7034540114',
|
|
'8638295589',
|
|
'9742432540',
|
|
'7036952601',
|
|
'9024378827',
|
|
'8108947483',
|
|
'8240019281',
|
|
'8928086373',
|
|
'7506149474',
|
|
'9557167736',
|
|
'9890387894',
|
|
'9593211751',
|
|
'7890043283',
|
|
'7909086736',
|
|
'6393091159',
|
|
'7003098015',
|
|
'8085374282',
|
|
'9416637847',
|
|
'6354384235',
|
|
'9694815155',
|
|
'7588254498',
|
|
'8768570941',
|
|
'8670502356',
|
|
'9883531932',
|
|
'9447713192',
|
|
'7908458303',
|
|
'9899025603',
|
|
'9528811293',
|
|
'9649333404',
|
|
'9805749805',
|
|
'9927194124',
|
|
'7278028783',
|
|
'8320487547',
|
|
'7999765291',
|
|
'9368489281',
|
|
'7985312642',
|
|
'7842392134',
|
|
'8865858987',
|
|
'8950622889',
|
|
'9380008684',
|
|
'7011527271',
|
|
'9630140352',
|
|
'7973311611',
|
|
'9773828281',
|
|
'8376969170',
|
|
'9642173919',
|
|
'8218906572',
|
|
'9058320223',
|
|
'8423777796',
|
|
'8872589766',
|
|
'9503150317',
|
|
'7897503301',
|
|
'9340208577',
|
|
'9182135523',
|
|
'9153836177',
|
|
'8109909209',
|
|
'9313649973',
|
|
'8708975602',
|
|
'8707535826',
|
|
'8928872438',
|
|
'9899428419',
|
|
'8617622830',
|
|
'8944895763',
|
|
'7018896613',
|
|
'9735145311',
|
|
'7905609307',
|
|
'6386122397',
|
|
'7986797051',
|
|
'7063190407',
|
|
'8072311130',
|
|
'9549144699',
|
|
'9010391183',
|
|
'8670448299',
|
|
'8618048726',
|
|
'7206686807',
|
|
'9503933159',
|
|
'6294398174',
|
|
'7745060451',
|
|
'7980723433',
|
|
'9154044471',
|
|
'9897770207',
|
|
'9664201332',
|
|
'9930727174',
|
|
'7869991103',
|
|
'6398911192',
|
|
'8083138095',
|
|
'8670672813',
|
|
'8019814972',
|
|
'9769882764',
|
|
'9967879030',
|
|
'8016134868',
|
|
'8975908594',
|
|
'9804077691',
|
|
'9820332053',
|
|
'8507181007',
|
|
'9620881061',
|
|
'7395879895',
|
|
'6282885472',
|
|
'9050925455',
|
|
'8220839191',
|
|
'6351148740',
|
|
'6369971844',
|
|
'8696422143',
|
|
'9653128459',
|
|
'9967846628',
|
|
'6388768326',
|
|
'8906790401',
|
|
'8779636327',
|
|
'9663219141',
|
|
'7008400964',
|
|
'6375746091',
|
|
'8554942703',
|
|
'8707652772',
|
|
'9860978067',
|
|
'9544616630',
|
|
'9819127612',
|
|
'9625507980',
|
|
'9992609707',
|
|
'8709957199',
|
|
'8309918481',
|
|
'9971429517',
|
|
'8748970624',
|
|
'9894409113',
|
|
'7977016189',
|
|
'9641871273',
|
|
'7015403014',
|
|
'9304464896',
|
|
'9592328102',
|
|
'9798913849',
|
|
'9795414751',
|
|
'7003329625',
|
|
'8296209953',
|
|
'7994318496',
|
|
'9917714313',
|
|
'9869108385',
|
|
'7305786602',
|
|
'9657678654',
|
|
'9985066343',
|
|
'8919936805',
|
|
'9923576477',
|
|
'8005976211',
|
|
'9392960557',
|
|
'8873284520',
|
|
'9892700631',
|
|
'7906769593',
|
|
'7503000666',
|
|
'9398579409',
|
|
'9884791266',
|
|
'7356812465',
|
|
'6289016780',
|
|
'9247784194',
|
|
'8386055999',
|
|
'9966180509',
|
|
'8606713826',
|
|
'8727887973',
|
|
'8758490805',
|
|
'9346663484',
|
|
'8360678290',
|
|
'7546975860',
|
|
'8600220182',
|
|
'8888309897',
|
|
'9673614016',
|
|
'9769837621',
|
|
'9096814892',
|
|
'9821481341',
|
|
'9022581993',
|
|
'9890871788',
|
|
'9518581462',
|
|
'9822558837',
|
|
'9698437743',
|
|
'8436485152',
|
|
'9163112900',
|
|
'8886848533',
|
|
'9995559782',
|
|
'9989867316',
|
|
'9467774753',
|
|
'8697949405',
|
|
'7278046553',
|
|
'9177255766',
|
|
'9636697461',
|
|
'9887147004',
|
|
'9034937088',
|
|
'9909415334',
|
|
'9887363569',
|
|
'8249336258',
|
|
'9805146732',
|
|
'9938846961',
|
|
'9718698999',
|
|
'8809418611',
|
|
'9894566321',
|
|
'9909006764',
|
|
'8010194557',
|
|
'9726231143',
|
|
'9899987661',
|
|
'9597344010',
|
|
'9544849404',
|
|
'8510998484',
|
|
'7615992864',
|
|
'9829122555',
|
|
'8769409296',
|
|
'9866331991',
|
|
'9828864077',
|
|
'8547305299',
|
|
'8708423074',
|
|
'9887181070',
|
|
'9700078429',
|
|
'9828060026',
|
|
'8235383735',
|
|
'9534810783',
|
|
'8011371114',
|
|
'9705553693',
|
|
'7002482616',
|
|
'8982327181',
|
|
'9658666981',
|
|
'8559070109',
|
|
'9401299108',
|
|
'9358060190',
|
|
'9100551583',
|
|
'9546226925',
|
|
'9848365900',
|
|
'9642727108',
|
|
'9386653563',
|
|
'9796629733',
|
|
'7005244134',
|
|
'9308948675',
|
|
'9830515059',
|
|
'6300608299',
|
|
'9061836493',
|
|
'9586770169',
|
|
'7001249581',
|
|
'9967469804',
|
|
'9895008235',
|
|
'8118808982',
|
|
'9975326708',
|
|
'9372096602',
|
|
'8099908498',
|
|
'9020294469',
|
|
'7470600299',
|
|
'9101460292',
|
|
'9116956429',
|
|
'8420281360',
|
|
'7760246099',
|
|
'9154111546',
|
|
'9175575731',
|
|
'9101822166',
|
|
'9089934655',
|
|
'7057444559',
|
|
'6205946835',
|
|
'9974849046',
|
|
'6305020735',
|
|
'9768156767',
|
|
'7666392384',
|
|
'9692006705',
|
|
'8298596225',
|
|
'6386039427',
|
|
'9144550357',
|
|
'9051839967',
|
|
'8789250783',
|
|
'8630730554',
|
|
'9045395299',
|
|
'9034775564',
|
|
'8897023267',
|
|
'8597341206',
|
|
'6299129834',
|
|
'7017111796',
|
|
'8009979719',
|
|
'9074615778',
|
|
'7836802169',
|
|
'7240869908',
|
|
'8356925026',
|
|
'8578816289',
|
|
'8354994972',
|
|
'7676256024',
|
|
'8129492603',
|
|
'7673930929',
|
|
'7056242357',
|
|
'7265997572',
|
|
'8075123569',
|
|
'9714834750',
|
|
'7568806411',
|
|
'9773402157',
|
|
'7507507958',
|
|
'9022464886',
|
|
'9664395548',
|
|
'8624804845',
|
|
'9405478786',
|
|
'9833344001',
|
|
'8275522244',
|
|
'9897160643',
|
|
'9972725433',
|
|
'9738010182',
|
|
'9986760312',
|
|
'9739071188',
|
|
'9914307547',
|
|
'7981216583',
|
|
'9867665957',
|
|
'8923386233',
|
|
'9933355965',
|
|
'9034552234',
|
|
'9723378692',
|
|
'9747055577',
|
|
'9310805234',
|
|
'9791808891',
|
|
'9728328007',
|
|
'8770122474',
|
|
'9874364403',
|
|
'9665121712',
|
|
'9522720871',
|
|
'9888955771',
|
|
'8847372721',
|
|
'9029418903',
|
|
'9573855771',
|
|
'9988573532',
|
|
'9946894757',
|
|
'8423454041',
|
|
'9051957055',
|
|
'7352522339',
|
|
'8250692253',
|
|
'9860944250',
|
|
'9916516368',
|
|
'9743665543',
|
|
'9738575852',
|
|
'8319488107',
|
|
'9620070703',
|
|
'9452526050',
|
|
'9536992063',
|
|
'9719100261',
|
|
'8299177492',
|
|
'9555729029',
|
|
'9759411966',
|
|
'7905397483',
|
|
'9839126478',
|
|
'9451780418',
|
|
'9932028550',
|
|
'9007219899',
|
|
'8629925747',
|
|
'9944466818',
|
|
'7980730993',
|
|
'9051944118',
|
|
'9836354441',
|
|
'9932026587',
|
|
'9232581632',
|
|
'9831055512',
|
|
'7980985641',
|
|
'9830204425',
|
|
'8052631314',
|
|
'9873160525',
|
|
'9050320007',
|
|
'9788884027',
|
|
'9810606572',
|
|
'9994121196',
|
|
'8680063446',
|
|
'9744104401',
|
|
'9659332237',
|
|
'8200230527',
|
|
'8943668351',
|
|
'6282493917',
|
|
'8574343433',
|
|
'8839394461',
|
|
'8008786476',
|
|
'9967809719',
|
|
'9857946486',
|
|
'9351565150',
|
|
'8824248835',
|
|
'7985572842',
|
|
'8595374949',
|
|
'8866091015',
|
|
'8688861163',
|
|
'8580914031',
|
|
'7439667976',
|
|
'8777731490',
|
|
'6300299392',
|
|
'9182284520',
|
|
'9074709538',
|
|
'8273866145',
|
|
'7738151078',
|
|
'8828662325',
|
|
'7983905626',
|
|
'7025460875',
|
|
'7569069190',
|
|
'9929040122',
|
|
'9983343997',
|
|
'8452061392',
|
|
'9767496127',
|
|
'9700717144',
|
|
'9795558640',
|
|
'8077374481',
|
|
'8917481892',
|
|
'7208187603',
|
|
'7873350983',
|
|
'7602834199',
|
|
'7989806403',
|
|
'9844444634',
|
|
'8769803009',
|
|
'9305112367',
|
|
'8770332048',
|
|
'7084704250',
|
|
'7532883913',
|
|
'9309810682',
|
|
'7300357480',
|
|
'7012678283',
|
|
'9594254606',
|
|
'7504494336',
|
|
'8856929425',
|
|
'9947677985',
|
|
'9161051515',
|
|
'8707630305',
|
|
'7715066818',
|
|
'7001175496',
|
|
'7259476667',
|
|
'9350346880',
|
|
'7900092008',
|
|
'9728639511',
|
|
'8923546426',
|
|
'7768029011',
|
|
'9567209498',
|
|
'9922266652',
|
|
'9677554756',
|
|
'7204321929',
|
|
'9660196395',
|
|
'9206205202',
|
|
'7985958471',
|
|
'8943041837',
|
|
'9755710772',
|
|
'9754055544',
|
|
'8807776681',
|
|
'8148283731',
|
|
'9503060670',
|
|
'9770779774',
|
|
'9111888046',
|
|
'9551599122',
|
|
'7003554708',
|
|
'7005815226',
|
|
'9913708010',
|
|
'7870680998',
|
|
'7002719193',
|
|
'9602671219',
|
|
'7479383010',
|
|
'7509533429',
|
|
'9766663559',
|
|
'6266013841',
|
|
'9044462640',
|
|
'9920891811',
|
|
'9714143452',
|
|
'8423686588',
|
|
'9635615272',
|
|
'8582906381',
|
|
'7869441257',
|
|
'9043643985',
|
|
'9633214602',
|
|
'6391415008',
|
|
'9900828536',
|
|
'9634040640',
|
|
'7002519620',
|
|
'7033523272',
|
|
'8581805899',
|
|
'7972181219',
|
|
'9167348842',
|
|
'9977794344',
|
|
'7799598977',
|
|
'6383543898',
|
|
'8981535558',
|
|
'8268228385',
|
|
'9822921693',
|
|
'9594063997',
|
|
'8219818057',
|
|
'9618486801',
|
|
'9563311814',
|
|
'7411200946',
|
|
'9898228095',
|
|
'8360470377',
|
|
'8233915285',
|
|
'9894803623',
|
|
'7006629527',
|
|
'6385484402',
|
|
'8200548223',
|
|
'8609889315',
|
|
'9562918032',
|
|
'9064776058',
|
|
'8532851320',
|
|
'8848007512',
|
|
'8967310383',
|
|
'9106917151',
|
|
'7499630485',
|
|
'9566550790',
|
|
'9000097162',
|
|
'8103696935',
|
|
'9930454198',
|
|
'9846665074',
|
|
'8496923216',
|
|
'9895542461',
|
|
'7007878098',
|
|
'9531599383',
|
|
'8961696032',
|
|
'9313537114',
|
|
'9211030968',
|
|
'8504967171',
|
|
'9173567963',
|
|
'9665729012',
|
|
'9126465993',
|
|
'7486878874',
|
|
'7792074330',
|
|
'9666986639',
|
|
'9496111709',
|
|
'9881172828',
|
|
'9110181347',
|
|
'9987944435',
|
|
'9746573793',
|
|
'6295699984',
|
|
'9696559620',
|
|
'7988728648',
|
|
'8888809756',
|
|
'7417167176',
|
|
'8698757564',
|
|
'9782102223',
|
|
'9888552810',
|
|
'9062327375',
|
|
'9718211105',
|
|
'9556532388',
|
|
'7299706035',
|
|
'7666415678',
|
|
'8465901568',
|
|
'9980171669',
|
|
'9986785866',
|
|
'7698987373',
|
|
'9924715920',
|
|
'6206726050',
|
|
'7980065475',
|
|
'8868820806',
|
|
'9550021679',
|
|
'9701917112',
|
|
'9832093231',
|
|
'7449116990',
|
|
'9012514134',
|
|
'9775967222',
|
|
'8017119262',
|
|
'9014284063',
|
|
'8586949891',
|
|
'9573682452',
|
|
'9999895946',
|
|
'9336988489',
|
|
'7795526467',
|
|
'6282673312',
|
|
'9820777281',
|
|
'9352101132',
|
|
'6290601760',
|
|
'9012208787',
|
|
'8608590406',
|
|
'9946315313',
|
|
'7337657931',
|
|
'8867971760',
|
|
'7887903036',
|
|
'9921688759',
|
|
'9809955875',
|
|
'8601412120',
|
|
'8340521975',
|
|
'9638704734',
|
|
'7010924511',
|
|
'9712274911',
|
|
'9883393664',
|
|
'8938855488',
|
|
'8876995895',
|
|
'8838185186',
|
|
'7026268070',
|
|
'7537820206',
|
|
'7722047166',
|
|
'9916992706',
|
|
'8333933823',
|
|
'9095888007',
|
|
'9959092220',
|
|
'6303243909',
|
|
'9750744785',
|
|
'7385535761',
|
|
'8013717320',
|
|
'9091438845',
|
|
'9888309434',
|
|
'9795405537',
|
|
'9315101511',
|
|
'8699010624',
|
|
'8400448510',
|
|
'9080215548',
|
|
'8891227092',
|
|
'9654907776',
|
|
'8445225187',
|
|
'9944512791',
|
|
'7980383187',
|
|
'7823005981',
|
|
'8793388653',
|
|
'9435983196',
|
|
'8894533177',
|
|
'8876278956',
|
|
'8090266652',
|
|
'7351519104',
|
|
'8638695189',
|
|
'8097518648',
|
|
'8623032961',
|
|
'8077810524',
|
|
'7393820818',
|
|
'8507005631',
|
|
'9694133666',
|
|
'9960005784',
|
|
'7600459112',
|
|
'9618327557',
|
|
'8509407025',
|
|
'7376742410',
|
|
'9068101006',
|
|
'9008507918',
|
|
'7976315693',
|
|
'9948530452',
|
|
'7736079550',
|
|
'9962075780',
|
|
'9664144896',
|
|
'9561004872',
|
|
'7796488719',
|
|
'7276177958',
|
|
'7502184778',
|
|
'7769802535',
|
|
'9983131070',
|
|
'9048273246',
|
|
'8974566387',
|
|
'7058363236',
|
|
'7972020414',
|
|
'9366189088',
|
|
'9175777600',
|
|
'9325664351',
|
|
'7888356769',
|
|
'6238433191',
|
|
'9810548566',
|
|
'7066478027',
|
|
'8140529717',
|
|
'7066240941',
|
|
'9731976675',
|
|
'9996269689',
|
|
'7860720925',
|
|
'8457900904',
|
|
'8789393302',
|
|
'9000585979',
|
|
'8082397997',
|
|
'8341350459',
|
|
'8927050479',
|
|
'9853607924',
|
|
'8943999543',
|
|
'9720766800',
|
|
'9739254376',
|
|
'9935272228',
|
|
'9992220252',
|
|
'9820320352',
|
|
'9820979148',
|
|
'7208769374',
|
|
'7800780028',
|
|
'9829297472',
|
|
'9278820009',
|
|
'9351646392',
|
|
'9435570101',
|
|
'9785428644',
|
|
'9582488402',
|
|
'9177340172',
|
|
'9988364063',
|
|
'7006399935',
|
|
'9561352935',
|
|
'9555338789',
|
|
'9870616191',
|
|
'9767449809',
|
|
'7020666742',
|
|
'9850360722',
|
|
'9702958110',
|
|
'7719919262',
|
|
'9823366771',
|
|
'9049099199',
|
|
'7506642007',
|
|
'9822418729',
|
|
'9730700820',
|
|
'8055357679',
|
|
'9881825634',
|
|
'9730779360',
|
|
'9960183317',];
|
|
|
|
|
|
|
|
if(!$depot){
|
|
Mail::to('shailesh.sirsikar1@cipla.com')->send(new NeblogisticDepotTmMapping($post));
|
|
return response()->json(['status' => 'mapping error', 'message' => 'Data not submitted. You are not mapped to a depot. Please contact system administrator']);
|
|
}
|
|
|
|
if (in_array($post['doctor_mobile_number'], $phones)) {
|
|
return response()->json([
|
|
'status' => 'failure',
|
|
'message' => 'The phone number you used belongs to a Cipla employee and cannot be used as a doctor\'s phone number.'
|
|
]);
|
|
}
|
|
|
|
if ($post['do_you_need_more_than_5_nebulizers'] === 'No') {
|
|
$count = DB::table('neblogistic')
|
|
->where('msl_code', $post['msl_code'])
|
|
->whereMonth('created_at', date('m'))
|
|
->whereYear('created_at', date('Y'))
|
|
->whereIn('status', ['Requested', 'L1 Approved', 'Approved'])
|
|
->sum('no_of_nebulizer');
|
|
|
|
$remaining = 5 - $count;
|
|
if ($remaining <= 0) {
|
|
return response()->json(['status' => 'failure', 'message' => 'You have already reached the monthly limit of 5 nebulizers for this doctor.' ]);
|
|
}
|
|
if ($post['no_of_nebulizer'] > $remaining) {
|
|
return response()->json(['status' => 'failure', 'message' => 'Only {$remaining} more nebulizer(s) can be requested this month.' ]);
|
|
}
|
|
}
|
|
|
|
|
|
$datatosave = [
|
|
//'record_id' => '',
|
|
// 'request_type' => $post[''],
|
|
'emp_id' => $post['emp_id'],
|
|
'user_id' => $post['user_id'],
|
|
'hierarchy_id' => $post['hierarchy_id'],
|
|
'emp_name' => $post['employee_name'],
|
|
'emp_phone' => $post['employee_phone'],
|
|
'emp_email' => $post['employee_email'],
|
|
'abm_name' => $post['abm_name'],
|
|
'abm_email' => $post['abm_email'],
|
|
'rbm_name' => $post['rbm_name'],
|
|
'msl_code' => $post['msl_code'],
|
|
'form_submit_type' => $post['form_submit_type'],
|
|
'doctor_name' => $post['dr_name'],
|
|
'doctor_phone' => $post['doctor_mobile_number'],
|
|
'doctor_speciality' => $post['speciality'],
|
|
'nebulizer_purpose' => $post['for_what_purpose_nebulisers_will_be_used_by_dr'],
|
|
// 'patient_name' => $post[''],
|
|
// 'patient_phone' => $post[''],
|
|
'type_of_nebulizer' => $post['type_of_nebuliser'],
|
|
'no_of_nebulizer' => $post['no_of_nebulizer'],
|
|
'value_of_parcel' => $post['value_of_the_parcel'],
|
|
'address_type' => $post['address_type'],
|
|
'address_building' => $post['building_name'],
|
|
'address_line_1' => $post['address_line_1'],
|
|
'address_line_2' => $post['address_line_2'],
|
|
// 'address_landmark' => $post[''],
|
|
'address_state' => $post['state'],
|
|
'address_city' => $post['city'],
|
|
'address_pin_code' => $post['pin_code'],
|
|
'clinic_hospital_name' => $post['clinic_hospital_home_name'],
|
|
// 'address_landmark' => $post['landmark'],
|
|
// 'pickup_type' => $post[''],
|
|
// 'pickup_building' => $post[''],
|
|
// 'pickup_line_1' => $post[''],
|
|
// 'pickup_line_2' => $post[''],
|
|
// 'pickup_landmark' => $post[''],
|
|
// 'pickup_state' => $post[''],
|
|
// 'pickup_city' => $post[''],
|
|
// 'pickup_pin_code' => $post[''],
|
|
'status' => $post['status'],
|
|
// 'rejected_reason' => $post[''],
|
|
'team' => $post['team'],
|
|
'geolocation_latitude' => $post['geolocation_latitude'],
|
|
'geolocation_longitude' => $post['geolocation_longitude'],
|
|
'geolocation_address' => $post['geolocation_address'],
|
|
'geolocation_json' => $post['geolocation_json'],
|
|
'depot_id' => $depot->id,
|
|
'depot_name' => $depot->name,
|
|
'old_employee_code' => $post['emp_id'],
|
|
'more_than_5_nebulizer' => $post['do_you_need_more_than_5_nebulizers'],
|
|
// 'transporter'
|
|
'remarks' => $post['remarks'],
|
|
'paramedic_alternate_contact_number' => $post['paramedic_alternate_contact_number']
|
|
];
|
|
|
|
Log::debug(print_r($datatosave, true));
|
|
|
|
if (!empty($post['upload_request_letter'])) {
|
|
$datatosave['request_letter'] = $post['upload_request_letter'];
|
|
} elseif (!empty($post['existing_letter'])) {
|
|
$datatosave['request_letter'] = $post['existing_letter'];
|
|
}
|
|
|
|
$request->session()->put('formdata', $formdata);
|
|
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
|
|
$post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
|
|
Log::debug(print_r($post, true));
|
|
// $finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
// Log::debug(print_r($finfo, true));
|
|
// if($finfo->status == 'success') {
|
|
if (!empty($post['submission_id'])) {
|
|
$subid = $post['submission_id'];
|
|
DB::table('neblogistic')->where('submission_id', $post['submission_id'])->update($datatosave);
|
|
|
|
$finfo = null;
|
|
if ($post['status'] != 'Partially Saved') {
|
|
$post['record_id'] = $post['submission_id'];
|
|
unset($post['submission_id']);
|
|
unset($post['id']);
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
$datatosave['submission_id'] = $finfo->data->submission->id;
|
|
$datatosave['abm_user_id'] = $finfo->data->submission->workflow_next_approver;
|
|
DB::table('neblogistic')->where('id', $subid)->update($datatosave);
|
|
Log::debug("Updating Neblogistics 2");
|
|
Log::debug(print_r($finfo, true));
|
|
}else{
|
|
DB::table('neblogistic')->where('id', $post['submission_id'])->update($datatosave);
|
|
}
|
|
|
|
} else {
|
|
//create mysql dynamo
|
|
$insertedId = DB::table('neblogistic')->insertGetId($datatosave);
|
|
if (!empty($datatosave['request_letter'])) {
|
|
$newLetterUrl = $this->neblogisticPrefixRequestLetterOnS3($datatosave['request_letter'], $insertedId);
|
|
if ($newLetterUrl !== $datatosave['request_letter']) {
|
|
$datatosave['request_letter'] = $newLetterUrl;
|
|
DB::table('neblogistic')->where('id', $insertedId)->update(['request_letter' => $newLetterUrl]);
|
|
}
|
|
}
|
|
// Log INSERT operation
|
|
NeblogisticAuditService::logInsert($insertedId, $datatosave, $request);
|
|
|
|
$finfo = null;
|
|
$res = false;
|
|
|
|
if ($post['status'] != 'Partially Saved') {
|
|
$post['record_id'] = $insertedId;
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
}
|
|
// Get old data before update
|
|
$oldData = DB::table('neblogistic')->where('id', $insertedId)->first();
|
|
$oldDataArray = $oldData ? json_decode(json_encode($oldData), true) : null;
|
|
|
|
$submissionId = isset($finfo->data->submission->id) ? $finfo->data->submission->id : null;
|
|
$abmid = isset($finfo->data->submission->workflow_next_approver) ? $finfo->data->submission->workflow_next_approver : null;
|
|
|
|
if ($post['status'] != 'Partially Saved') {
|
|
$res = DB::table('neblogistic')->where('id', $insertedId)->update(['submission_id' => $submissionId, 'abm_user_id' => $abmid]);
|
|
}
|
|
// Log UPDATE operation
|
|
if ($res) {
|
|
NeblogisticAuditService::logUpdate(
|
|
$insertedId,
|
|
$oldDataArray,
|
|
['submission_id' => $submissionId],
|
|
['submission_id' => ['old' => $oldDataArray['submission_id'] ?? null, 'new' => $submissionId]],
|
|
$request
|
|
);
|
|
}
|
|
|
|
Log::debug("Creating Neblogistics");
|
|
Log::debug(print_r($finfo, true));
|
|
}
|
|
|
|
if($post['status'] != 'Partially Saved'){
|
|
if (empty($post['submission_id']) && !empty($datatosave['submission_id'])) {
|
|
$post['submission_id'] = $datatosave['submission_id'];
|
|
}
|
|
// Mail::to($datatosave['emp_email'])->send(new Neblogistic($post));
|
|
// Mail::to($datatosave['abm_email'])->cc('ravigulhane1983@gmail.com')->send(new NeblogisticAbm($post));
|
|
// DB::table('neblogistic')
|
|
// ->where('submission_id', $post['submission_id'])
|
|
// ->update(['email_sent' => 1]);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
// } else {
|
|
// if($finfo->statusCode == 401) {
|
|
// return response()->json(['status' => 'failure', 'message' => $finfo->data ]);
|
|
// }
|
|
// return response()->json(['status' => 'failure']);
|
|
// }
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if($formdata->form_id == '1748871942-6e9199c8-89c4-44ac-8c70-5d5df140d70a') {
|
|
// echo "<pre>";
|
|
// print_r($formdata);
|
|
// exit;
|
|
$id = DB::table('team3_nebmitra_doctors')
|
|
->insertGetId([
|
|
'user_id'=> $post['user_id'],
|
|
'hierarchy_id' => $post['hierarchy_id'],
|
|
'doctor_name' => $post['chemist_name'],
|
|
'mobile_number' => $post['mobile_number'],
|
|
// 'speciality' => $post['speciality'],
|
|
// 'degree' => $post['degree'],
|
|
'type' => 'chemist',
|
|
'location' => $post['location'],
|
|
'micro_interior'=> $post['micro_interior'],
|
|
'state'=> $post['state']
|
|
]);
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'name' => $post['chemist_name'],
|
|
'type' => 'nebmitra_chemist',
|
|
'user_id' => $post['user_id'],
|
|
'msl_code' => 'NEBMITRA_CHEMIST_'.$id,
|
|
'phone' => $post['mobile_number']
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
$contactid = $cont->data->item->id;
|
|
$positioncode = $cont->data->item->position;
|
|
|
|
|
|
DB::table('team3_nebmitra_doctors')
|
|
->where('id', $id)
|
|
->update([
|
|
'contact_id' => $contactid,
|
|
'position_code' => $positioncode
|
|
]);
|
|
|
|
Log::debug(print_r(['Add Chemist'], true));
|
|
Log::debug(print_r($contactid, true));
|
|
Log::debug(print_r($post, true));
|
|
Log::debug(print_r($contactdata, true));
|
|
Log::debug(print_r($cont, true));
|
|
Log::debug(print_r(['Add Chemist End'], true));
|
|
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1750326824-c1c033e6-9d6e-4647-b0dd-d3d28e6953e5') {
|
|
|
|
$dummyformid = '1777352315-9ef1a37a-70b0-4fbc-8b72-1ddd78ce0573';
|
|
|
|
$dummyPost = $post;
|
|
|
|
if (!empty($dummyPost['doctor_name'])) {
|
|
$dummyPost['contact_id'] = $dummyPost['doctor_name'];
|
|
}
|
|
|
|
if (!empty($dummyPost['dummyformid'])) {
|
|
$dummyPost['id'] = $dummyPost['dummyformid'];
|
|
}
|
|
|
|
$processedDummyPost = $this->processformdata($dummyformid, $dummyPost, $formdata->user_id, $formdata->partition);
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $processedDummyPost, 'entity_id' => $dummyformid, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
$post['proxy_formid'] = $finfo->data->submission->id;
|
|
Log::debug(print_r(['dummyformlogs'], true));
|
|
|
|
Log::debug(print_r(['formdata' => $processedDummyPost], true));
|
|
Log::debug(print_r($finfo, true));
|
|
|
|
|
|
if($finfo->status != 'success') {
|
|
if($finfo->statusCode == 401) {
|
|
return response()->json(['status' => 'failure', 'message' => $finfo->data ]);
|
|
}
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
|
|
}
|
|
|
|
if($formdata->form_id == '1777713876-e5a33d1a-8d00-4800-9b88-e78815ece1d4') {
|
|
|
|
$dummyformid = '1777958143-ac54e629-bc33-4201-9610-742562431581';
|
|
|
|
$dummyPost = $post;
|
|
|
|
if (!empty($dummyPost['center_name'])) {
|
|
$dummyPost['contact_id'] = $dummyPost['center_name'];
|
|
}
|
|
|
|
if (!empty($dummyPost['dummyformid'])) {
|
|
$dummyPost['id'] = $dummyPost['dummyformid'];
|
|
}
|
|
|
|
$processedDummyPost = $this->processformdata($dummyformid, $dummyPost, $formdata->user_id, $formdata->partition);
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $processedDummyPost, 'entity_id' => $dummyformid, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
Log::debug(print_r(['formdata' => $processedDummyPost, 'entity_id' => $dummyformid, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ], true));
|
|
Log::debug(print_r($finfo, true));
|
|
$post['proxy_formid'] = $finfo->data->submission->id;
|
|
Log::debug(print_r(['dummyformlogs'], true));
|
|
|
|
Log::debug(print_r(['formdata' => $processedDummyPost], true));
|
|
Log::debug(print_r($finfo, true));
|
|
|
|
|
|
if($finfo->status != 'success') {
|
|
if($finfo->statusCode == 401) {
|
|
return response()->json(['status' => 'failure', 'message' => $finfo->data ]);
|
|
}
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
|
|
}
|
|
|
|
Log::debug(print_r($formdata, true));
|
|
$request->session()->put('formdata', $formdata);
|
|
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
|
|
$post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
|
|
Log::debug(print_r($post, true));
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
|
|
Log::debug(print_r($finfo, true));
|
|
if($finfo->status == 'success') {
|
|
return response()->json(['status' => 'success']);
|
|
} else {
|
|
if($finfo->statusCode == 401) {
|
|
return response()->json(['status' => 'failure', 'message' => $finfo->data ]);
|
|
}
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
}
|
|
|
|
public function ajaxsubmitmultiple(Request $request) {
|
|
//return response()->json(['status' => 'error']);
|
|
$post = $request->except('_token');
|
|
$formdata = $request->session()->get('formdata');
|
|
$formdata->form_id = $post['form_id'];
|
|
// if($formdata->partition == 'rapport-copd') {
|
|
// return response()->json(['status' => 'failure']);
|
|
// }
|
|
if(isset($post['user_id']) && $post['user_id'] != '') {
|
|
$formdata->user_id = $post['user_id'];
|
|
}
|
|
$request->session()->put('formdata', $formdata);
|
|
Log::debug(print_r($formdata, true));
|
|
|
|
//return response()->json(['status' => 'error', 'data' => $formdata]);
|
|
$files = $request->file();
|
|
foreach($files as $fname => $file) {
|
|
$post[$fname] = $this->_uploadMedia($request, $fname, 'form/'.$post['form_id'].'/'.$fname);
|
|
}
|
|
|
|
if($formdata->form_id == '1741323247-1a1a77b7-ba13-40db-a8bf-9f56fa1181ed') {
|
|
$post['upload_screening_data'] = explode(",", $post['upload_screening_data']);
|
|
}
|
|
|
|
if ($formdata->form_type == 'enrollment_form') {
|
|
$contacts = [];
|
|
foreach ($post['contact_id'] as $i => $contact_id) {
|
|
$row = [ 'contact_id' => $contact_id ];
|
|
foreach ($post as $key => $value) {
|
|
if (in_array($key, ['contact_id', 'user_id', 'hierarchy_id'])) { continue; }
|
|
if (is_array($value)) {
|
|
$row[$key] = $value[$i] ?? 'No';
|
|
}
|
|
}
|
|
$contacts[] = $row;
|
|
}
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users') ->select("access_token") ->where("domain", $domain) ->where("permissions", 'like', '%contact_create%') ->orderBy('updated_at', 'desc') ->first();
|
|
foreach ($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'] ?? null,
|
|
'hierarchy' => $post['hierarchy_id'] ?? null,
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
foreach ($contact as $key => $value) {
|
|
if ($key !== 'contact_id') {
|
|
$contactdata[$key] = $value;
|
|
}
|
|
}
|
|
// Log::info('CONTACT UPDATE PAYLOAD', $contactdata);
|
|
LambdaRequest::postrequest( 'contact', 'contact/update', $contactdata, $token->access_token );
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if ($formdata->form_id == '1775980892-f0346e7e-e9e5-4f85-9924-beb91fcb8fda') {
|
|
|
|
$categoryField = 'po5_novel_meeting';
|
|
|
|
$selectedContacts = [];
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (!empty($post['doctor_name_' . $i])) {
|
|
$selectedContacts[] = $post['doctor_name_' . $i];
|
|
}
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
$token = DB::table('users')
|
|
->select("access_token")
|
|
->where("domain", $domain)
|
|
->where("permissions", 'like', '%contact_create%')
|
|
->orderBy('updated_at', 'desc')
|
|
->first();
|
|
|
|
$previousEntries = \App\Helpers\Formhelper::getMultiformData(
|
|
$formdata->partition,
|
|
$formdata->form_id,
|
|
$formdata->user_id
|
|
);
|
|
|
|
$previousContactIdsWithCategory = [];
|
|
$contactIdToSubmissionId = [];
|
|
|
|
if (
|
|
isset($previousEntries->data) &&
|
|
isset($previousEntries->data->submissions) &&
|
|
is_array($previousEntries->data->submissions)
|
|
) {
|
|
foreach ($previousEntries->data->submissions as $submission) {
|
|
if (
|
|
isset($submission->formdata) &&
|
|
is_object($submission->formdata) &&
|
|
isset($submission->formdata->contact_id)
|
|
) {
|
|
|
|
if (
|
|
isset($submission->formdata->$categoryField) &&
|
|
$submission->formdata->$categoryField == 'Yes'
|
|
) {
|
|
|
|
// ✅ FIX: handle array contact_id
|
|
$contactIds = (array) $submission->formdata->contact_id;
|
|
|
|
foreach ($contactIds as $cid) {
|
|
if (!empty($cid)) {
|
|
$previousContactIdsWithCategory[] = $cid;
|
|
$contactIdToSubmissionId[$cid] = $submission->id;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$deselectedContacts = array_diff($previousContactIdsWithCategory, $selectedContacts);
|
|
|
|
$existingSelectedContacts = [];
|
|
$newSelectedContacts = [];
|
|
|
|
foreach ($selectedContacts as $contact_id) {
|
|
if (isset($contactIdToSubmissionId[$contact_id])) {
|
|
$existingSelectedContacts[] = $contact_id;
|
|
} else {
|
|
$newSelectedContacts[] = $contact_id;
|
|
}
|
|
}
|
|
|
|
$sequencedContacts = array_merge(
|
|
array_values($deselectedContacts),
|
|
$existingSelectedContacts,
|
|
$newSelectedContacts
|
|
);
|
|
|
|
// ✅ FIX: keep ids aligned
|
|
$ids = [];
|
|
foreach ($sequencedContacts as $contact_id) {
|
|
$ids[] = $contactIdToSubmissionId[$contact_id] ?? null;
|
|
}
|
|
|
|
${$categoryField} = [];
|
|
foreach ($sequencedContacts as $contact_id) {
|
|
if (in_array($contact_id, $deselectedContacts)) {
|
|
${$categoryField}[] = 'No';
|
|
} else {
|
|
${$categoryField}[] = 'Yes';
|
|
}
|
|
}
|
|
|
|
foreach (array_merge($existingSelectedContacts, $newSelectedContacts) as $contact_id) {
|
|
|
|
$availability = null;
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (
|
|
!empty($post['doctor_name_' . $i]) &&
|
|
$post['doctor_name_' . $i] == $contact_id
|
|
) {
|
|
$availability = $post['breathefree_is_available_' . $i] ?? null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
$categoryField => 'Yes',
|
|
'id' => $contact_id,
|
|
];
|
|
|
|
if (!empty($availability)) {
|
|
$contactdata['po5_breathefree_is_available'] = $availability;
|
|
}
|
|
|
|
LambdaRequest::postrequest(
|
|
'contact',
|
|
'contact/update',
|
|
$contactdata,
|
|
$token->access_token
|
|
);
|
|
}
|
|
|
|
foreach ($deselectedContacts as $contact_id) {
|
|
|
|
$availability = null;
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (
|
|
!empty($post['doctor_name_' . $i]) &&
|
|
$post['doctor_name_' . $i] == $contact_id
|
|
) {
|
|
$availability = $post['breathefree_is_available_' . $i] ?? null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
$categoryField => 'No',
|
|
'id' => $contact_id,
|
|
];
|
|
|
|
if (!empty($availability)) {
|
|
$contactdata['po5_breathefree_is_available'] = $availability;
|
|
}
|
|
|
|
LambdaRequest::postrequest(
|
|
'contact',
|
|
'contact/update',
|
|
$contactdata,
|
|
$token->access_token
|
|
);
|
|
}
|
|
|
|
$post['contact_id'] = $sequencedContacts;
|
|
$post['id'] = $ids;
|
|
$post[$categoryField] = ${$categoryField};
|
|
}
|
|
|
|
if ($formdata->form_id == '1775984811-b4153c49-48d9-4295-b075-b83b2e913bae') {
|
|
|
|
$categoryField = 'po5_ace_meeting';
|
|
|
|
$selectedContacts = [];
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (!empty($post['doctor_name_' . $i])) {
|
|
$selectedContacts[] = $post['doctor_name_' . $i];
|
|
}
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
$token = DB::table('users')
|
|
->select("access_token")
|
|
->where("domain", $domain)
|
|
->where("permissions", 'like', '%contact_create%')
|
|
->orderBy('updated_at', 'desc')
|
|
->first();
|
|
|
|
$previousEntries = \App\Helpers\Formhelper::getMultiformData(
|
|
$formdata->partition,
|
|
$formdata->form_id,
|
|
$formdata->user_id
|
|
);
|
|
|
|
$previousContactIdsWithCategory = [];
|
|
$contactIdToSubmissionId = [];
|
|
|
|
if (
|
|
isset($previousEntries->data) &&
|
|
isset($previousEntries->data->submissions) &&
|
|
is_array($previousEntries->data->submissions)
|
|
) {
|
|
foreach ($previousEntries->data->submissions as $submission) {
|
|
if (
|
|
isset($submission->formdata) &&
|
|
is_object($submission->formdata) &&
|
|
isset($submission->formdata->contact_id)
|
|
) {
|
|
|
|
if (
|
|
isset($submission->formdata->$categoryField) &&
|
|
$submission->formdata->$categoryField == 'Yes'
|
|
) {
|
|
|
|
// ✅ FIX: handle array contact_id
|
|
$contactIds = (array) $submission->formdata->contact_id;
|
|
|
|
foreach ($contactIds as $cid) {
|
|
if (!empty($cid)) {
|
|
$previousContactIdsWithCategory[] = $cid;
|
|
$contactIdToSubmissionId[$cid] = $submission->id;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$deselectedContacts = array_diff($previousContactIdsWithCategory, $selectedContacts);
|
|
|
|
$existingSelectedContacts = [];
|
|
$newSelectedContacts = [];
|
|
|
|
foreach ($selectedContacts as $contact_id) {
|
|
if (isset($contactIdToSubmissionId[$contact_id])) {
|
|
$existingSelectedContacts[] = $contact_id;
|
|
} else {
|
|
$newSelectedContacts[] = $contact_id;
|
|
}
|
|
}
|
|
|
|
$sequencedContacts = array_merge(
|
|
array_values($deselectedContacts),
|
|
$existingSelectedContacts,
|
|
$newSelectedContacts
|
|
);
|
|
|
|
// ✅ FIX: keep ids aligned
|
|
$ids = [];
|
|
foreach ($sequencedContacts as $contact_id) {
|
|
$ids[] = $contactIdToSubmissionId[$contact_id] ?? null;
|
|
}
|
|
|
|
${$categoryField} = [];
|
|
foreach ($sequencedContacts as $contact_id) {
|
|
if (in_array($contact_id, $deselectedContacts)) {
|
|
${$categoryField}[] = 'No';
|
|
} else {
|
|
${$categoryField}[] = 'Yes';
|
|
}
|
|
}
|
|
|
|
foreach (array_merge($existingSelectedContacts, $newSelectedContacts) as $contact_id) {
|
|
|
|
$availability = null;
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (
|
|
!empty($post['doctor_name_' . $i]) &&
|
|
$post['doctor_name_' . $i] == $contact_id
|
|
) {
|
|
$availability = $post['breathefree_is_available_' . $i] ?? null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
$categoryField => 'Yes',
|
|
'id' => $contact_id,
|
|
];
|
|
|
|
if (!empty($availability)) {
|
|
$contactdata['po5_breathefree_is_available'] = $availability;
|
|
}
|
|
|
|
LambdaRequest::postrequest(
|
|
'contact',
|
|
'contact/update',
|
|
$contactdata,
|
|
$token->access_token
|
|
);
|
|
}
|
|
|
|
foreach ($deselectedContacts as $contact_id) {
|
|
|
|
$availability = null;
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (
|
|
!empty($post['doctor_name_' . $i]) &&
|
|
$post['doctor_name_' . $i] == $contact_id
|
|
) {
|
|
$availability = $post['breathefree_is_available_' . $i] ?? null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
$categoryField => 'No',
|
|
'id' => $contact_id,
|
|
];
|
|
|
|
if (!empty($availability)) {
|
|
$contactdata['po5_breathefree_is_available'] = $availability;
|
|
}
|
|
|
|
LambdaRequest::postrequest(
|
|
'contact',
|
|
'contact/update',
|
|
$contactdata,
|
|
$token->access_token
|
|
);
|
|
}
|
|
|
|
$post['contact_id'] = $sequencedContacts;
|
|
$post['id'] = $ids;
|
|
$post[$categoryField] = ${$categoryField};
|
|
}
|
|
|
|
if($formdata->form_id == '1728057395-75288ee5-a1a6-4210-9073-430d96fbc636') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'pulmosmart_g' => isset($post['pulmosmart_g'][$i])?'Yes':'No' ];
|
|
}
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $formdata->form_id, 'user_id' => $post['user_id'], 'partition' => 'rapport-pulmocare' ]);
|
|
$pulmosmart_g = [];
|
|
$id = [];
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
//'hierarchy' => $post['hierarchy_id'],
|
|
'pulmosmart_g' => $contact['pulmosmart_g'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
if($contact['pulmosmart_g'] == 'Yes') {
|
|
$pulmosmart_g[] = 'Yes';
|
|
} else {
|
|
$pulmosmart_g[] = 'No';
|
|
}
|
|
$found = false;
|
|
foreach($history->data->submissions as $his) {
|
|
if($his->formdata->cont_id == $contact['contact_id']) {
|
|
$id[] = $his->id;
|
|
$found = true;
|
|
}
|
|
}
|
|
if(!$found) {
|
|
$id[] = '';
|
|
}
|
|
}
|
|
$post['id'] = $id;
|
|
$post['pulmosmart_g'] = $pulmosmart_g;
|
|
|
|
//return response()->json(['status' => 'success', 'history' => $history, 'post' => $post]);
|
|
}
|
|
|
|
if($formdata->form_id == '1729328418-92e5a1fd-8a62-4ba5-a0a7-99362654159d') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = [ 'contact_id' => $contact_id,
|
|
'eptus_adboard' => isset($post['eptus_adboard'][$i])?'Yes':'No',
|
|
'sitazit_ddm_adboard' => isset($post['sitazit_ddm_adboard'][$i])?'Yes':'No',
|
|
'sitazit_ddm_pmos' => isset($post['sitazit_ddm_pmos'][$i])?'Yes':'No',
|
|
'ziten_pmos' => isset($post['ziten_pmos'][$i])?'Yes':'No',
|
|
'mr' => isset($post['mr'][$i])?'Yes':'No',
|
|
'eptus_webinar_speakerattendee' => isset($post['eptus_webinar_speakerattendee'][$i])?'Yes':'No',
|
|
'eptus_rtm_speakerattendee' => isset($post['eptus_rtm_speakerattendee'][$i])?'Yes':'No',
|
|
'ziten_ecme_speakerattendee' => isset($post['ziten_ecme_speakerattendee'][$i])?'Yes':'No',
|
|
'eptus_isp_attendee' => isset($post['eptus_isp_attendee'][$i])?'Yes':'No',
|
|
'sitazit_ddm_isp_attendee' => isset($post['sitazit_ddm_isp_attendee'][$i])?'Yes':'No',
|
|
'whd_clinic' => isset($post['whd_clinic'][$i])?'Yes':'No',
|
|
'wdd_clinic' => isset($post['wdd_clinic'][$i])?'Yes':'No',
|
|
'social_connect' => isset($post['social_connect'][$i])?'Yes':'No',
|
|
'hidden_gems' => isset($post['hidden_gems'][$i])?'Yes':'No',
|
|
];
|
|
}
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
//'hierarchy' => $post['hierarchy_id'],
|
|
'eptus_adboard' => $contact['eptus_adboard'],
|
|
'mr' => $contact['mr'],
|
|
'sitazit_ddm_adboard' => $contact['sitazit_ddm_adboard'],
|
|
'sitazit_ddm_pmos' => $contact['sitazit_ddm_pmos'],
|
|
'ziten_pmos' => $contact['ziten_pmos'],
|
|
'eptus_webinar_speakerattendee' => $contact['eptus_webinar_speakerattendee'],
|
|
'eptus_rtm_speakerattendee' => $contact['eptus_rtm_speakerattendee'],
|
|
'ziten_ecme_speakerattendee' => $contact['ziten_ecme_speakerattendee'],
|
|
'eptus_isp_attendee' => $contact['eptus_isp_attendee'],
|
|
'sitazit_ddm_isp_attendee' => $contact['sitazit_ddm_isp_attendee'],
|
|
'whd_clinic' => $contact['whd_clinic'],
|
|
'wdd_clinic' => $contact['wdd_clinic'],
|
|
'social_connect' => $contact['social_connect'],
|
|
'hidden_gems' => $contact['hidden_gems'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1716267411-74ef7199-6298-4bae-8c8b-c069a405c864') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'proxym_tuesday' => isset($post['proxym_tuesday'][$i])?'Yes':'No', 'galact_saturday' => isset($post['galact_saturday'][$i])?'Yes':'No', 'celol_d3_thursday' => isset($post['celol_d3_thursday'][$i])?'Yes':'No' ];
|
|
// , 'ferium_xt_thursday' => isset($post['ferium_xt_thursday'][$i])?'Yes':'No'
|
|
}
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'hierarchy' => $post['hierarchy_id'],
|
|
'proxym_tuesday' => $contact['proxym_tuesday'],
|
|
// 'ferium_xt_thursday' => $contact['ferium_xt_thursday'],
|
|
'galact_saturday' => $contact['galact_saturday'],
|
|
'celol_d3_thursday' => $contact['celol_d3_thursday'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1770113055-b65a4310-83e0-49ad-ad98-6a226beb2bc3') {
|
|
$contacts = [];
|
|
foreach($post['doctor_name'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'glycohale_power_punch' => 'Yes', 'dr_potential_for_glycohale' => $post['dr_potential_for_glycohale_in_units'][$i] ];
|
|
}
|
|
// return response()->json(['status' => 'failure', 'history' => $contacts, 'post' => $post]);
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'hierarchy' => $post['hierarchy_id'],
|
|
'glycohale_power_punch' => $contact['glycohale_power_punch'],
|
|
'dr_potential_for_glycohale' => $contact['dr_potential_for_glycohale'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
// return response()->json(['status' => 'success']);
|
|
// return response()->json(['status' => 'success', 'contacts' => $contacts]);
|
|
|
|
}
|
|
|
|
//["rtm","telma_ln_ecme","zita_ecme"]
|
|
if($formdata->form_id == '1721281521-a4a857d7-84d7-4e4c-9df3-4e9c9f999d64') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'zita_ecme' => isset($post['zita_ecme'][$i])?'Yes':'No', 'telma_ln_ecme' => isset($post['telma_ln_ecme'][$i])?'Yes':'No', 'rtm' => isset($post['rtm'][$i])?'Yes':'No' ];
|
|
}
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$post['contact_id'] = [];
|
|
$post['zita_ecme'] = [];
|
|
$post['telma_ln_ecme'] = [];
|
|
$post['rtm'] = [];
|
|
foreach($contacts as $i => $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
//'hierarchy' => $post['hierarchy_id'],
|
|
'zita_ecme' => $contact['zita_ecme'],
|
|
'telma_ln_ecme' => $contact['telma_ln_ecme'],
|
|
'rtm' => $contact['rtm'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
$post['contact_id'][$i] = $contact['contact_id'];
|
|
$post['zita_ecme'][$i] = $contact['zita_ecme'];
|
|
$post['telma_ln_ecme'][$i] = $contact['telma_ln_ecme'];
|
|
$post['rtm'][$i] = $contact['rtm'];
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1750240655-f1f14358-8e47-4583-975f-655d081db904') {
|
|
// echo "<pre>";
|
|
// print_r($post);
|
|
// exit;
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'consent_given_for_camp' => isset($post['obesity_screening_camp'][$i])?'Yes':'No'];
|
|
}
|
|
|
|
// return response()->json(['data' => $contacts]);
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$post['contact_id'] = [];
|
|
$post['consent_given_for_camp'] = [];
|
|
foreach($contacts as $i => $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'consent_given_for_camp' => $contact['consent_given_for_camp'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1716267411-74ef7199-6298-4bae-c2c-c069a405c864') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'c2c' => isset($post['c2c'][$i])?'Yes':'No' ];
|
|
}
|
|
Log::debug(print_r(['contact_id'], true));
|
|
Log::debug(print_r($contacts, true));
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'hierarchy' => $post['hierarchy_id'],
|
|
'c2c' => $contact['c2c'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
Log::debug(print_r(['contactdata'], true));
|
|
Log::debug(print_r($contactdata, true));
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1724905805-b20d0e50-0370-4b1b-8352-a16365cc624c') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
if(isset($post['orofer_fcm_cme'][$i]) && $post['orofer_fcm_cme'][$i] == 'Yes') {
|
|
$contacts[] = ['contact_id' => $contact_id, 'orofer_fcm_cme' => isset($post['orofer_fcm_cme'][$i])?'Yes':'No' ];
|
|
}
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'hierarchy' => $post['hierarchy_id'],
|
|
'orofer_fcm_cme' => $contact['orofer_fcm_cme'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1723015306-c8d90868-1c50-4820-ab96-474cdff8e543') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'glycoquic_f' => isset($post['glycoquic_f'][$i])?'Yes':'No' ];
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'glycoquic_f' => $contact['glycoquic_f'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a') {
|
|
$existing = DB::table('team3_nebyatra_doctors')->select("mobile_number", "doctor_name")->where('user_id', $formdata->user_id)->get();
|
|
$existing_mobile = [];
|
|
$existing_doctors = [];
|
|
foreach($existing as $exi) {
|
|
$existing_mobile[] = $exi->mobile_number;
|
|
$existing_doctors[] = $exi->doctor_name;
|
|
}
|
|
if(is_array($post['doctor_name']) ) {
|
|
$matched_phones = [];
|
|
$matched_names = [];
|
|
foreach($post['doctor_name'] as $dn) {
|
|
if(in_array($dn, $existing_doctors)) {
|
|
$matched_names[] = $dn;
|
|
}
|
|
}
|
|
foreach($post['mobile_number'] as $dn) {
|
|
if(in_array($dn, $existing_mobile)) {
|
|
$matched_phones[] = $dn;
|
|
}
|
|
}
|
|
if(sizeof($matched_names) > 0 || sizeof($matched_phones) > 0) {
|
|
$msg = 'Some Mobile numbers or Doctor names you entered already exists.';
|
|
if(sizeof($matched_names) > 0 ) {
|
|
$msg .= ' Duplicate doctor names are : '.implode(', ', $matched_names);
|
|
}
|
|
if(sizeof($matched_phones) > 0 ) {
|
|
$msg .= ' Duplicate mobile numbers are : '.implode(', ', $matched_phones);
|
|
}
|
|
return response()->json(['status' => 'failure', 'message' => $msg]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if($formdata->form_id == '1724650115-d03fe369-7c66-478b-8e99-c9fd9dab9dc1') {
|
|
$contacts = [];
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$contLen = isset($post['contact_id']) ? sizeof($post['contact_id']) : 0;
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
if(isset($post['doctor_name'])) {
|
|
foreach($post['doctor_name'] as $i => $doctor_name) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'name' => $doctor_name,
|
|
'allergy_care' => 'Yes',
|
|
'msl_code' => $post['doctor_msl'][$i],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
$post['contact_id'][$contLen] = $cont->data->item->id;
|
|
$post['msl_code'][$contLen] = $cont->data->item->msl_code;
|
|
$post['distributed_the_coupons'][$contLen] = isset($post['doctor_distributed'][$i]) ? $post['doctor_distributed'][$i] : '';
|
|
$contLen++;
|
|
}
|
|
unset($post['doctor_name']);
|
|
unset($post['doctor_msl']);
|
|
unset($post['doctor_distributed']);
|
|
}
|
|
Log::debug(print_r($post, true));
|
|
//exit;
|
|
}
|
|
|
|
if($formdata->form_id == '1755612216-4cfb5429-9401-40b1-9374-37d65fecbc0c') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'nebulizer_distribution_con' => isset($post['nebulizer_distribution_con'][$i])?'Yes':'No' ];
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'nebulizer_distribution_con' => $contact['nebulizer_distribution_con'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1768816889-343321b6-6dde-4e9a-845e-645a47932700') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'emanzen_thursday' => isset($post['emanzen_thursday'][$i])?'Yes':'No' ];
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'emanzen_thursday' => $contact['emanzen_thursday'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1772548223-15a3e319-3ae0-48ba-a553-c640b99e9b62') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'fitjoint_knee_adaption' => isset($post['fitjoint_knee_adaption'][$i])?'Yes':'No' ];
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'fitjoint_knee_adaption' => $contact['fitjoint_knee_adaption'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1773740254-07da2335-4ff7-42e4-8937-b43dfb218a5a') {
|
|
|
|
Log::debug('STEP 1: Initial POST');
|
|
Log::debug(print_r($post, true));
|
|
|
|
$contacts = [];
|
|
|
|
foreach($post['contact_id'] as $i => $cid) {
|
|
|
|
$isChecked = isset($post['orofer_tuesday_enrol'][$i]);
|
|
|
|
// ✅ Build structured array like contact update
|
|
$contacts[] = [
|
|
'contact_id' => $cid,
|
|
'orofer_tuesday_enrol' => $isChecked ? 'Yes' : 'No'
|
|
];
|
|
|
|
Log::debug("Index $i => Contact: $cid => " . ($isChecked ? 'Yes' : 'No'));
|
|
}
|
|
|
|
// ✅ IMPORTANT: send full structured data
|
|
$post['contacts'] = $contacts;
|
|
|
|
// ❌ Optional: remove old arrays if not needed
|
|
// unset($post['contact_id']);
|
|
// unset($post['orofer_tuesday_enrol']);
|
|
|
|
Log::debug('STEP 2: Final POST for submission');
|
|
Log::debug(print_r($post, true));
|
|
|
|
// ========================
|
|
// CONTACT UPDATE (same logic reused)
|
|
// ========================
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
$token = DB::table('users')
|
|
->select("access_token")
|
|
->where("domain", $domain)
|
|
->where("permissions", 'like', '%contact_create%')
|
|
->orderBy('updated_at', 'desc')
|
|
->first();
|
|
|
|
foreach($contacts as $contact) {
|
|
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'orofer_tuesday_enrol' => $contact['orofer_tuesday_enrol'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
|
|
Log::debug('Updating Contact');
|
|
Log::debug(print_r($contactdata, true));
|
|
|
|
LambdaRequest::postrequest(
|
|
'contact',
|
|
'contact/update',
|
|
$contactdata,
|
|
$token->access_token
|
|
);
|
|
}
|
|
|
|
Log::debug('STEP 3: POST');
|
|
Log::debug(print_r($post, true));
|
|
}
|
|
|
|
if($formdata->form_id == '1768820353-9e26cf7b-73c0-4d34-a2f3-5ca559afa560') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'galact_thursday' => isset($post['galact_thursday'][$i])?'Yes':'No' ];
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'galact_thursday' => $contact['galact_thursday'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1724855317-a89d683c-b91a-4a62-95c1-3edc589f6d30') {
|
|
$brand_name=[];
|
|
$company_name=[];
|
|
$qty_cipla_brand=[];
|
|
$competitor_brand=[];
|
|
$qty_of_competitor_brand=[];
|
|
$net_value=[];
|
|
$scheme=[];
|
|
$bb = '';
|
|
foreach($post['brand_name'] as $i => $brand) {
|
|
if($post['qty_of_competitor_brand'][$i] > 0 || $post['net_value'][$i] > 0) {
|
|
$brand_name[] = $brand;
|
|
$company_name[] = $post['company_name'][$i];
|
|
$qty_cipla_brand[] = ($bb != $brand) ? $post['qty_cipla_brand'][$i] : 0;
|
|
$competitor_brand[] = $post['competitor_brand'][$i];
|
|
$qty_of_competitor_brand[] = $post['qty_of_competitor_brand'][$i];
|
|
$net_value[] = $post['net_value'][$i];
|
|
$scheme[] = $post['scheme'][$i];
|
|
$bb = $brand;
|
|
}
|
|
}
|
|
$post['brand_name'] = $brand_name;
|
|
$post['company_name'] = $company_name;
|
|
$post['qty_cipla_brand'] = $qty_cipla_brand;
|
|
$post['competitor_brand'] = $competitor_brand;
|
|
$post['qty_of_competitor_brand'] = $qty_of_competitor_brand;
|
|
$post['net_value'] = $net_value;
|
|
$post['scheme'] = $scheme;
|
|
|
|
unset($post['brand_brand_name']);
|
|
unset($post['brand_qty_cipla_brand']);
|
|
$post['speciality'] = implode(',', $post['speciality']);
|
|
}
|
|
|
|
if($formdata->form_id == '1764312102-2f7e9477-fa29-4040-b5da-b15df9e06b78') {
|
|
Log::debug(print_r('newrcpa', true));
|
|
Log::debug(print_r($post, true));
|
|
|
|
// Build brand → Cipla qty / value maps from original data
|
|
$brandQtyMap = [];
|
|
$brandValueMap = [];
|
|
|
|
$a = $post['qty_cipla_brand'];
|
|
$r = [];
|
|
$prev = null;
|
|
foreach ($a as $v) {
|
|
if ($prev !== null && $v == $prev) { // use == instead of ===
|
|
$r[] = $v;
|
|
}
|
|
$prev = $v;
|
|
}
|
|
$post['qty_cipla_brand'] = $r;
|
|
|
|
$a = $post['value_cipla_brand'];
|
|
$r = [];
|
|
$prev = null;
|
|
foreach ($a as $v) {
|
|
if ($prev !== null && $v == $prev) { // use == instead of ===
|
|
$r[] = $v;
|
|
}
|
|
$prev = $v;
|
|
}
|
|
$post['value_cipla_brand'] = $r;
|
|
|
|
// Build maps based on brand_name aligned with qty_cipla_brand & value_cipla_brand
|
|
if (!empty($post['brand_name'])) {
|
|
foreach ($post['brand_name'] as $i => $brand) {
|
|
|
|
// Map qty: first non-zero, non-empty occurrence per brand
|
|
if (!isset($brandQtyMap[$brand]) && isset($post['qty_cipla_brand'][$i])) {
|
|
$q = $post['qty_cipla_brand'][$i];
|
|
if ($q !== '' && $q !== null && (float)$q != 0) {
|
|
$brandQtyMap[$brand] = $q;
|
|
}
|
|
}
|
|
|
|
// Map value: first non-zero, non-empty occurrence per brand
|
|
if (!isset($brandValueMap[$brand]) && isset($post['value_cipla_brand'][$i])) {
|
|
$v = $post['value_cipla_brand'][$i];
|
|
if ($v !== '' && $v !== null && (float)$v != 0) {
|
|
$brandValueMap[$brand] = $v;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Now rebuild arrays keeping only rows where competitor qty/net_value > 0,
|
|
// and putting Cipla qty/value only once per brand.
|
|
|
|
$brand_name = [];
|
|
$company_name = [];
|
|
$qty_cipla_brand = [];
|
|
$value_cipla_brand = [];
|
|
$competitor_brand = [];
|
|
$qty_of_competitor_brand = [];
|
|
$net_value = [];
|
|
|
|
$lastBrand = null;
|
|
|
|
foreach ($post['brand_name'] as $i => $brand) {
|
|
|
|
// Keep only rows where competitor side has some business
|
|
if (
|
|
(isset($post['qty_of_competitor_brand'][$i]) && $post['qty_of_competitor_brand'][$i] > 0) ||
|
|
(isset($post['net_value'][$i]) && $post['net_value'][$i] > 0)
|
|
) {
|
|
// Always push competitor-side details
|
|
$brand_name[] = $brand;
|
|
$company_name[] = $post['company_name'][$i] ?? '';
|
|
$competitor_brand[] = $post['competitor_brand'][$i] ?? '';
|
|
$qty_of_competitor_brand[] = $post['qty_of_competitor_brand'][$i] ?? 0;
|
|
$net_value[] = $post['net_value'][$i] ?? 0;
|
|
|
|
// Cipla side: only once per brand
|
|
if ($lastBrand !== $brand) {
|
|
//$++;
|
|
$qty_cipla_brand[] = $brandQtyMap[$brand] ?? 0;
|
|
$value_cipla_brand[] = $brandValueMap[$brand] ?? 0;
|
|
$lastBrand = $brand;
|
|
} else {
|
|
// For subsequent rows of the same brand, no duplicate Cipla qty/value
|
|
$qty_cipla_brand[] = 0;
|
|
$value_cipla_brand[] = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Overwrite $post with the cleaned arrays
|
|
$post['brand_name'] = $brand_name;
|
|
$post['company_name'] = $company_name;
|
|
$post['qty_cipla_brand'] = $qty_cipla_brand;
|
|
$post['value_cipla_brand'] = $value_cipla_brand;
|
|
$post['competitor_brand'] = $competitor_brand;
|
|
$post['qty_of_competitor_brand'] = $qty_of_competitor_brand;
|
|
$post['net_value'] = $net_value;
|
|
|
|
// Clean up extra fields coming from the form
|
|
unset($post['brand_brand_name']);
|
|
unset($post['brand_qty_cipla_brand']); // if present
|
|
|
|
// Keep speciality as is (line is actually redundant but harmless)
|
|
$post['speciality'] = $post['speciality'];
|
|
|
|
Log::debug(print_r('afterloop', true));
|
|
Log::debug(print_r($post, true));
|
|
}
|
|
|
|
|
|
|
|
if($formdata->form_id == '1733208092-c845d632-06b3-44a7-8056-d652b4d323b2') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'gfb_dpi' => isset($post['gfb_dpi'][$i])?'Yes':'No' ];
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'gfb_dpi' => $contact['gfb_dpi'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1733913729-781fd9c1-7921-45b8-8df4-9a5488e25e83') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'innospacer_dr' => isset($post['innospacer_dr'][$i])?'Yes':'No' ];
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'innospacer_dr' => $contact['innospacer_dr'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1743150903-b86a4a1b-85b7-48f6-8f43-57ac709ae8a8') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
$contacts[] = ['contact_id' => $contact_id, 'voltido_lhc' => isset($post['voltido_lhc'][$i])?'Yes':'No' ];
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'voltido_lhc' => $contact['voltido_lhc'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($formdata->form_id == '1761883527-dc4bc1e1-4333-4db9-b2da-e3480d2da9cc') {
|
|
|
|
Log::info('CATEGORY e3480d2da9cc:', [$post['category']]);
|
|
|
|
$attributes = [
|
|
'SB Dr Tagging' => 'po5_synchrobreathe',
|
|
'Ciphaler Dr Tagging' => 'po5_ciphaler'
|
|
];
|
|
|
|
$category = $post['category'];
|
|
|
|
$categoryField = $attributes[$category] ?? null;
|
|
if (!$categoryField) {
|
|
return response()->json(['status' => 'error', 'message' => 'Invalid category'], 400);
|
|
}
|
|
|
|
$selectedContacts = [];
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (!empty($post['doctor_' . $i])) {
|
|
$selectedContacts[] = $post['doctor_' . $i];
|
|
}
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
$token = DB::table('users')
|
|
->select("access_token")
|
|
->where("domain", $domain)
|
|
->where("permissions", 'like', '%contact_create%')
|
|
->orderBy('updated_at', 'desc')
|
|
->first();
|
|
|
|
// Get all previous submissions for this user/form/partition *once*
|
|
$previousEntries = \App\Helpers\Formhelper::getMultiformData($formdata->partition, $formdata->form_id, $formdata->user_id);
|
|
//echo '<pre>'; print_r($previousEntries); exit;
|
|
// Gather list of previous contact IDs where this categoryField was Yes, and keep mapping to their submission IDs
|
|
$previousContactIdsWithCategory = [];
|
|
$contactIdToSubmissionId = [];
|
|
if (
|
|
isset($previousEntries->data)
|
|
&& isset($previousEntries->data->submissions)
|
|
&& is_array($previousEntries->data->submissions)
|
|
) {
|
|
foreach ($previousEntries->data->submissions as $submission) {
|
|
if (
|
|
isset($submission->formdata) && is_object($submission->formdata) &&
|
|
isset($submission->formdata->contact_id) && !empty($submission->formdata->contact_id)
|
|
) {
|
|
// Only interested in those for this category for "Yes"
|
|
if ($submission->formdata->category == $category) {
|
|
$previousContactIdsWithCategory[] = $submission->formdata->contact_id;
|
|
$contactIdToSubmissionId[$submission->formdata->contact_id] = $submission->id;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Sequence: Put deselected contacts first (those which were previously Yes but not in current selection)
|
|
$deselectedContacts = array_diff($previousContactIdsWithCategory, $selectedContacts);
|
|
|
|
// Then put existing still-selected contacts (selected & previously "Yes")
|
|
$existingSelectedContacts = [];
|
|
$newSelectedContacts = [];
|
|
foreach ($selectedContacts as $contact_id) {
|
|
if (isset($contactIdToSubmissionId[$contact_id])) {
|
|
$existingSelectedContacts[] = $contact_id;
|
|
} else {
|
|
$newSelectedContacts[] = $contact_id;
|
|
}
|
|
}
|
|
|
|
// Final sequence: [deselectedContacts ("No")], [existingSelectedContacts ("Yes")], [newSelectedContacts ("Yes")]
|
|
$sequencedContacts = array_merge(array_values($deselectedContacts), $existingSelectedContacts, $newSelectedContacts);
|
|
|
|
// Build ids array to match $sequencedContacts:
|
|
$ids = [];
|
|
foreach ($sequencedContacts as $contact_id) {
|
|
if (isset($contactIdToSubmissionId[$contact_id])) {
|
|
$ids[] = $contactIdToSubmissionId[$contact_id];
|
|
}
|
|
// else {
|
|
// $ids[] = null;
|
|
// }
|
|
}
|
|
|
|
// Build categoryField values to match sequenced order
|
|
${$categoryField} = [];
|
|
foreach ($sequencedContacts as $contact_id) {
|
|
if (in_array($contact_id, $deselectedContacts)) {
|
|
${$categoryField}[] = 'No';
|
|
} else {
|
|
${$categoryField}[] = 'Yes';
|
|
}
|
|
}
|
|
|
|
// Update "Yes" for selected contacts (existing & new)
|
|
foreach (array_merge($existingSelectedContacts, $newSelectedContacts) as $contact_id) {
|
|
|
|
// get breathefree value for this contact
|
|
$availability = null;
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (
|
|
!empty($post['doctor_' . $i]) &&
|
|
$post['doctor_' . $i] == $contact_id
|
|
) {
|
|
$availability = $post['breathefree_is_available_' . $i] ?? null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
$categoryField => 'Yes',
|
|
'id' => $contact_id,
|
|
];
|
|
|
|
// ✅ add only if present
|
|
if (!empty($availability)) {
|
|
$contactdata['po5_breathefree_is_available'] = $availability;
|
|
}
|
|
|
|
LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token->access_token);
|
|
}
|
|
|
|
// Update "No" for deselectedContacts
|
|
// foreach (array_merge($existingSelectedContacts, $newSelectedContacts) as $contact_id) {
|
|
foreach ($deselectedContacts as $contact_id){
|
|
// get breathefree value for this contact
|
|
$availability = null;
|
|
for ($i = 1; $i <= 20; $i++) {
|
|
if (
|
|
!empty($post['doctor_' . $i]) &&
|
|
$post['doctor_' . $i] == $contact_id
|
|
) {
|
|
$availability = $post['breathefree_is_available_' . $i] ?? null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
$categoryField => 'No',
|
|
'id' => $contact_id,
|
|
];
|
|
|
|
// ✅ add only if present
|
|
if (!empty($availability)) {
|
|
$contactdata['po5_breathefree_is_available'] = $availability;
|
|
}
|
|
|
|
LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token->access_token);
|
|
}
|
|
|
|
|
|
// Assign arrays to $post with matching sequence: contact_id, id, $categoryField (deselected first, then kept/new)
|
|
$post['contact_id'] = $sequencedContacts;
|
|
$post['id'] = $ids;
|
|
$post[$categoryField] = ${$categoryField};
|
|
// echo '<pre>'; print_r($post); exit;
|
|
//echo "<pre>"; print_r($post); print_r($contacts); exit;
|
|
//return response()->json(['status' => 'success', 'post' => $post, 'contactIdToSubmissionId' => $contactIdToSubmissionId, 'deselectedContacts' => $deselectedContacts]);
|
|
}
|
|
|
|
if ($formdata->form_id == '1762175787-4051d820-93c7-4295-8100-019574d9ca3e') {
|
|
Log::debug(print_r('test', true));
|
|
|
|
$attributes = [
|
|
'DPI Competition Dr' => 'dpi_competition_dr',
|
|
'MDI Competition Dr' => 'mdi_competition_dr',
|
|
'Respi Phy Upgradation Dr' => 'respi_phy_upgradation_dr',
|
|
'LABA/LAMA Competition Dr' => 'labalama_competition_dr',
|
|
];
|
|
|
|
$category = $post['category'];
|
|
Log::debug(print_r('formdata', true));
|
|
|
|
Log::debug(print_r($post, true));
|
|
|
|
$categoryField = $attributes[$category] ?? null;
|
|
if (!$categoryField) {
|
|
return response()->json(['status' => 'error', 'message' => 'Invalid category'], 400);
|
|
}
|
|
|
|
$selectedContacts = [];
|
|
for ($i = 1; $i <= 5; $i++) {
|
|
if (!empty($post['doctor_' . $i])) {
|
|
$selectedContacts[] = $post['doctor_' . $i];
|
|
}
|
|
}
|
|
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
|
|
$token = DB::table('users')
|
|
->select("access_token")
|
|
->where("domain", $domain)
|
|
->where("permissions", 'like', '%contact_create%')
|
|
->orderBy('updated_at', 'desc')
|
|
->first();
|
|
|
|
// Get all previous submissions for this user/form/partition *once*
|
|
$previousEntries = \App\Helpers\Formhelper::getMultiformData($formdata->partition, $formdata->form_id, $formdata->user_id);
|
|
//echo '<pre>'; print_r($previousEntries); exit;
|
|
// Gather list of previous contact IDs where this categoryField was Yes, and keep mapping to their submission IDs
|
|
$previousContactIdsWithCategory = [];
|
|
$contactIdToSubmissionId = [];
|
|
if (
|
|
isset($previousEntries->data)
|
|
&& isset($previousEntries->data->submissions)
|
|
&& is_array($previousEntries->data->submissions)
|
|
) {
|
|
foreach ($previousEntries->data->submissions as $submission) {
|
|
if (
|
|
isset($submission->formdata) && is_object($submission->formdata) &&
|
|
isset($submission->formdata->contact_id) && !empty($submission->formdata->contact_id)
|
|
) {
|
|
// Only interested in those for this category for "Yes"
|
|
if ($submission->formdata->category == $category) {
|
|
$previousContactIdsWithCategory[] = $submission->formdata->contact_id;
|
|
$contactIdToSubmissionId[$submission->formdata->contact_id] = $submission->id;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Sequence: Put deselected contacts first (those which were previously Yes but not in current selection)
|
|
$deselectedContacts = array_diff($previousContactIdsWithCategory, $selectedContacts);
|
|
|
|
// Then put existing still-selected contacts (selected & previously "Yes")
|
|
$existingSelectedContacts = [];
|
|
$newSelectedContacts = [];
|
|
foreach ($selectedContacts as $contact_id) {
|
|
if (isset($contactIdToSubmissionId[$contact_id])) {
|
|
$existingSelectedContacts[] = $contact_id;
|
|
} else {
|
|
$newSelectedContacts[] = $contact_id;
|
|
}
|
|
}
|
|
|
|
// Final sequence: [deselectedContacts ("No")], [existingSelectedContacts ("Yes")], [newSelectedContacts ("Yes")]
|
|
$sequencedContacts = array_merge(array_values($deselectedContacts), $existingSelectedContacts, $newSelectedContacts);
|
|
|
|
// Build ids array to match $sequencedContacts:
|
|
$ids = [];
|
|
foreach ($sequencedContacts as $contact_id) {
|
|
if (isset($contactIdToSubmissionId[$contact_id])) {
|
|
$ids[] = $contactIdToSubmissionId[$contact_id];
|
|
}
|
|
// else {
|
|
// $ids[] = null;
|
|
// }
|
|
}
|
|
|
|
// Build categoryField values to match sequenced order
|
|
${$categoryField} = [];
|
|
foreach ($sequencedContacts as $contact_id) {
|
|
if (in_array($contact_id, $deselectedContacts)) {
|
|
${$categoryField}[] = 'No';
|
|
} else {
|
|
${$categoryField}[] = 'Yes';
|
|
}
|
|
}
|
|
|
|
// Update "Yes" for selected contacts (existing & new)
|
|
foreach (array_merge($existingSelectedContacts, $newSelectedContacts) as $contact_id) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
$categoryField => 'Yes',
|
|
'id' => $contact_id,
|
|
];
|
|
LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token->access_token);
|
|
|
|
}
|
|
|
|
|
|
// Update "No" for deselectedContacts
|
|
foreach ($deselectedContacts as $contact_id) {
|
|
|
|
Log::debug(print_r('contact_id', true));
|
|
Log::debug(print_r($contact_id, true));
|
|
|
|
Log::debug(print_r('categoryField', true));
|
|
Log::debug(print_r($categoryField, true));
|
|
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
$categoryField => 'No',
|
|
'id' => $contact_id,
|
|
];
|
|
LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token->access_token);
|
|
|
|
// Also update the formdata submission (if found)
|
|
if (isset($contactIdToSubmissionId[$contact_id])) {
|
|
$submissionId = $contactIdToSubmissionId[$contact_id];
|
|
// Try to get the previous formdata for the submission (look back in previousEntries)
|
|
$prevFormdata = null;
|
|
foreach ($previousEntries->data->submissions as $submission) {
|
|
if ($submission->id == $submissionId) {
|
|
$prevFormdata = (array) $submission->formdata;
|
|
break;
|
|
}
|
|
}
|
|
if ($prevFormdata !== null) {
|
|
$prevFormdata[$categoryField] = 'No';
|
|
LambdaRequest::postrequest('form', 'formentity/updatesubmission', [
|
|
'submission_id' => $submissionId,
|
|
'formdata' => $prevFormdata,
|
|
], $token->access_token);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Assign arrays to $post with matching sequence: contact_id, id, $categoryField (deselected first, then kept/new)
|
|
$post['contact_id'] = $sequencedContacts;
|
|
$post['id'] = $ids;
|
|
$post[$categoryField] = ${$categoryField};
|
|
//echo '<pre>'; print_r($post); exit;
|
|
//echo "<pre>"; print_r($post); print_r($contacts); exit;
|
|
//return response()->json(['status' => 'success', 'post' => $post, 'contactIdToSubmissionId' => $contactIdToSubmissionId, 'deselectedContacts' => $deselectedContacts]);
|
|
}
|
|
|
|
|
|
|
|
// if($formdata->form_id == '1761818463-f0735d63-1912-4cb0-a181-6dc55751c375') {
|
|
// $contacts = [];
|
|
// foreach($post['contact_id'] as $i => $contact_id) {
|
|
// // $contacts[] = ['contact_id' => $contact_id, 'engagement_wishlist' => isset($post['engagement_wishlist'][$i])?'Yes':'No' ];
|
|
// if (!empty($post['engagement_wishlist'][$i])) {
|
|
// $contacts[] = [
|
|
// 'contact_id' => $contact_id,
|
|
// 'engagement_wishlist' => 'Yes'
|
|
// ];
|
|
// }
|
|
// }
|
|
|
|
// Log::debug('Contact List');
|
|
// Log::debug(print_r($contacts, true));
|
|
|
|
// list($application, $domain) = explode("-", $formdata->partition);
|
|
// $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
// foreach($contacts as $contact) {
|
|
// $contactdata = [
|
|
// 'domain' => $domain,
|
|
// 'application' => $application,
|
|
// 'user_id' => $post['user_id'],
|
|
// 'engagement_wishlist' => $contact['engagement_wishlist'],
|
|
// 'id' => $contact['contact_id'],
|
|
// ];
|
|
// $cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
// }
|
|
// // return response()->json(['status' => 'success']);
|
|
// }
|
|
|
|
|
|
if($formdata->form_id == '1761824966-7f47b36c-ad44-4544-a924-68ece3c8800f' || $formdata->form_id == '1761818463-f0735d63-1912-4cb0-a181-6dc55751c375') {
|
|
$previousEntries = \App\Helpers\Formhelper::getMultiformData($formdata->partition, $formdata->form_id, $formdata->user_id);
|
|
$contIdToSubmissionId = [];
|
|
if (isset($previousEntries->data) && isset($previousEntries->data->submissions) && is_array($previousEntries->data->submissions)) {
|
|
foreach ($previousEntries->data->submissions as $submission) {
|
|
if (isset($submission->formdata->cont_id) && isset($submission->id)) {
|
|
$contIdToSubmissionId[$submission->formdata->cont_id] = $submission->id;
|
|
}
|
|
}
|
|
}
|
|
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
if (isset($post['engagement_wishlist'][$i]) && $post['engagement_wishlist'][$i] === 'Yes') {
|
|
$submission_id = isset($contIdToSubmissionId[$contact_id]) ? $contIdToSubmissionId[$contact_id] : null;
|
|
$contacts[] = ['contact_id' => $contact_id, 'engagement_wishlist' => 'Yes', 'submission_id' => $submission_id];
|
|
}
|
|
}
|
|
list($application, $domain) = explode("-", $formdata->partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
foreach($contacts as $contact) {
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'engagement_wishlist' => $contact['engagement_wishlist'],
|
|
'id' => $contact['contact_id'],
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
}
|
|
|
|
// For each $contIdToSubmissionId where engagement_wishlist is not yes, update engagement_wishlist as no
|
|
// And for all such, add to the $post arrays after completed above
|
|
$existingContactIdsWithYes = array_column($contacts, 'contact_id');
|
|
$noContactsToAddToPost = [];
|
|
foreach ($contIdToSubmissionId as $contact_id => $submission_id) {
|
|
// Check if this contact is in $contacts with engagement_wishlist 'Yes'
|
|
$found = false;
|
|
foreach ($contacts as $contact) {
|
|
if ($contact['contact_id'] == $contact_id && $contact['engagement_wishlist'] === 'Yes') {
|
|
$found = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$found) {
|
|
// Not found → engagement_wishlist should be 'No'
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $post['user_id'],
|
|
'engagement_wishlist' => 'No',
|
|
'id' => $contact_id,
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
|
|
// Also add this contact to be appended to the $post arrays
|
|
$noContactsToAddToPost[] = [
|
|
'contact_id' => $contact_id,
|
|
'engagement_wishlist' => 'No',
|
|
'submission_id' => $submission_id
|
|
];
|
|
}
|
|
}
|
|
|
|
// We need to order contacts so that those whose contact_id is in previousEntries (i.e., have submission_id) come first
|
|
$existing = [];
|
|
$new = [];
|
|
|
|
foreach ($contacts as $contact) {
|
|
if (!empty($contact['submission_id'])) {
|
|
$existing[] = $contact;
|
|
} else {
|
|
$new[] = $contact;
|
|
}
|
|
}
|
|
// Add the NO contacts to the beginning, because they have submission_id
|
|
foreach($noContactsToAddToPost as $noContact) {
|
|
$existing[] = $noContact;
|
|
}
|
|
// Merge, with existing first, then new
|
|
$ordered = array_merge($existing, $new);
|
|
$post['contact_id'] = [];
|
|
$post['engagement_wishlist'] = [];
|
|
$post['id'] = [];
|
|
|
|
foreach ($ordered as $i => $contact) {
|
|
$post['contact_id'][$i] = $contact['contact_id'];
|
|
$post['engagement_wishlist'][$i] = $contact['engagement_wishlist'];
|
|
$post['id'][$i] = $contact['submission_id'];
|
|
}
|
|
//echo "<pre>"; print_r($post); print_r($contacts); exit;
|
|
// return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1746001897-24df50bc-525b-4e7b-869b-0e7f245d4892') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
if (isset($post['ardc_bf_competition_dr_list_check'][$i])) {
|
|
$contacts[] = $contact_id;
|
|
//$ardc_bf_competition[] = $post['ardc_bf_competition_dr_list_check'][$i];
|
|
}
|
|
}
|
|
$post['contact_id'] = $contacts;
|
|
// Log::debug(print_r($post, true));
|
|
// Log::debug(json_encode( ['formdata' => $post, 'entity_id' => $post['form_id'], 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]));
|
|
// echo "<pre>";
|
|
// print_r($post);
|
|
// exit;
|
|
}
|
|
|
|
if($formdata->form_id == '1747894284-6839e2eb-810b-4b3d-84d4-9f0e74273e03') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
if (isset($post['voltido_trio_15_dr_tagging'][$i])) {
|
|
$contacts[] = $contact_id;
|
|
}
|
|
}
|
|
$post['contact_id'] = $contacts;
|
|
// echo "<pre>";
|
|
// print_r($post);
|
|
// exit;
|
|
|
|
}
|
|
|
|
if($formdata->form_id == '1745215404-0264587a-e7ce-4039-83c7-74d215e23785') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
if (isset($post['smart_clinic'][$i])) {
|
|
$contacts[] = $contact_id;
|
|
//$ardc_bf_competition[] = $post['ardc_bf_competition_dr_list_check'][$i];
|
|
}
|
|
}
|
|
$post['contact_id'] = $contacts;
|
|
//return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1768891186-e0ac4546-6cf4-4665-aac9-066bdb5f25ea') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
if (isset($post['foracort_g_ciphaler'][$i])) {
|
|
$contacts[] = $contact_id;
|
|
//$ardc_bf_competition[] = $post['ardc_bf_competition_dr_list_check'][$i];
|
|
}
|
|
}
|
|
$post['contact_id'] = $contacts;
|
|
Log::debug(print_r(['foracort_g_ciphaler test data'], true));
|
|
Log::debug(print_r($post, true));
|
|
// return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
if($formdata->form_id == '1749123523-2d5a05d5-5a4b-42be-90cd-c5d016c53222') {
|
|
$contacts = [];
|
|
foreach($post['contact_id'] as $i => $contact_id) {
|
|
if (isset($post['ardc_bf_collaboration'][$i])) {
|
|
$contacts[] = $contact_id;
|
|
}
|
|
}
|
|
$post['contact_id'] = $contacts;
|
|
}
|
|
|
|
// if($formdata->form_id == '1751877063-4f70951b-2d8a-45d7-904e-677fa469d30c') {
|
|
// $contacts = [];
|
|
// foreach($post['contact_id'] as $i => $contact_id) {
|
|
// if (isset($post['voltido_trio_patient'][$i])) {
|
|
// $contacts[] = $contact_id;
|
|
// }
|
|
// }
|
|
// $post['contact_id'] = $contacts;
|
|
// }
|
|
|
|
// if($formdata->form_id == '1751877063-4f70951b-2d8a-45d7-904e-677fa469d30c') {
|
|
// $contacts = [];
|
|
// foreach($post['contact_id'] as $i => $contact_id) {
|
|
// if (isset($post['voltido_trio_patient'][$i])) {
|
|
// $contacts[] = ['contact_id' => $contact_id, 'voltido_trio_patient' => isset($post['voltido_trio_patient'][$i])?'Yes':'No' ];
|
|
// }
|
|
// }
|
|
|
|
// list($application, $domain) = explode("-", $formdata->partition);
|
|
// $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
|
|
// foreach($contacts as $contact) {
|
|
// $contactdata = [
|
|
// 'domain' => $domain,
|
|
// 'application' => $application,
|
|
// 'user_id' => $post['user_id'],
|
|
// 'voltido_trio_patient' => $contact['voltido_trio_patient'],
|
|
// 'id' => $contact['contact_id'],
|
|
// ];
|
|
// $cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
// }
|
|
// // return response()->json(['status' => 'success']);
|
|
// }
|
|
|
|
if($formdata->form_id == '1751877063-4f70951b-2d8a-45d7-904e-677fa469d30c') {
|
|
$contact_id = [];
|
|
$voltido_trio_patient = [];
|
|
$id = [];
|
|
if (!empty($post['id']) && is_array($post['id'])) {
|
|
foreach($post['id'] as $ci => $did) {
|
|
$id[] = $did;
|
|
$i = array_search($ci, $post['contact_id']);
|
|
if ($i !== false) {
|
|
$contact_id[] = $post['contact_id'][$i];
|
|
$voltido_trio_patient[] = $post['voltido_trio_patient'][$i] ?? 'No';
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach($post['voltido_trio_patient'] as $i => $ad) {
|
|
if(!empty($ad) && !in_array($post['contact_id'][$i], $contact_id) ) {
|
|
$contact_id[] = $post['contact_id'][$i];
|
|
$voltido_trio_patient[] = $ad;
|
|
}
|
|
}
|
|
if(sizeof($id) > 0) {
|
|
$post['id'] = $id;
|
|
}
|
|
$post['contact_id'] = $contact_id;
|
|
// $post['contact_name'] = $contact_name;
|
|
$post['voltido_trio_patient'] = $voltido_trio_patient;
|
|
Log::debug(print_r($post, true));
|
|
//return response()->json(['status' => 'failure']);
|
|
}
|
|
|
|
if($formdata->form_id == '1751535971-9f06067c-3632-4126-830b-9f767650ae42') {
|
|
$chemist_id = [];
|
|
$chemist_name = [];
|
|
$activity_done = [];
|
|
$id = [];
|
|
//Log::debug(print_r($post, true));
|
|
if (!empty($post['id']) && is_array($post['id'])) {
|
|
foreach($post['id'] as $ci => $did) {
|
|
$id[] = $did;
|
|
$i = array_search($ci, $post['chemist_id']);
|
|
if ($i !== false) {
|
|
$chemist_id[] = $post['chemist_id'][$i];
|
|
$chemist_name[] = $post['chemist_name'][$i];
|
|
$activity_done[] = $post['activity_done'][$i];
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach($post['activity_done'] as $i => $ad) {
|
|
if(!empty($ad) && !in_array($post['chemist_id'][$i], $chemist_id) ) {
|
|
$chemist_id[] = $post['chemist_id'][$i];
|
|
$chemist_name[] = $post['chemist_name'][$i];
|
|
$activity_done[] = $ad;
|
|
}
|
|
}
|
|
$post['id'] = $id;
|
|
$post['chemist_id'] = $chemist_id;
|
|
$post['chemist_name'] = $chemist_name;
|
|
$post['activity_done'] = $activity_done;
|
|
// Log::debug(print_r($post, true));
|
|
// return response()->json(['status' => 'failure']);
|
|
}
|
|
|
|
if ($formdata->form_id == '1757310587-2f18dc06-9107-4553-a0cb-11ac90b09dda') {
|
|
$submitData = [
|
|
'form_id' => '1757934154-bdf4d06a-e633-433a-ad84-682761924bfc',
|
|
'user_id' => $post['user_id'] ?? '',
|
|
'total_eas_hcps_april_sep_for_cresar_grp' => $post['total_eas_hcps_april_sep_for_cresar_grp'] ?? '',
|
|
'total_eas_hcps_april_sep_for_empacip_grp' => $post['total_eas_hcps_april_sep_for_empacip_grp'] ?? '',
|
|
'eas_hcps_met_mtd_sep25_for_cresar_grp' => $post['eas_hcps_met_mtd_sep25_for_cresar_grp'] ?? '',
|
|
'eas_hcps_met_mtd_sep25_for_empacip_grp' => $post['eas_hcps_met_mtd_sep25_for_empacip_grp'] ?? '',
|
|
'eas_hcps_met_twice_mtd_sep25_for_cresar_grp' => $post['eas_hcps_met_twice_mtd_sep25_for_cresar_grp'] ?? '',
|
|
'eas_hcps_met_twice_mtd_sep25_for_empacip_grp' => $post['eas_hcps_met_twice_mtd_sep25_for_empacip_grp'] ?? '',
|
|
];
|
|
if (!empty($post['eas_hcp_id'])) {
|
|
$submitData['id'] = $post['eas_hcp_id'];
|
|
}
|
|
LambdaRequest::postrequest('form', 'formentity/submitform', [
|
|
'formdata' => $submitData,
|
|
'entity_id' => $submitData['form_id'],
|
|
'user_id' => $submitData['user_id'],
|
|
'partition' => $formdata->partition ?? ''
|
|
]);
|
|
}
|
|
|
|
|
|
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
|
|
$post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
|
|
Log::debug(print_r($post, true));
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitmultipleform', ['formdata' => $post, 'entity_id' => $post['form_id'], 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
Log::debug(print_r($finfo, true));
|
|
if($finfo->status == 'success') {
|
|
return response()->json(['status' => 'success']);
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public function approvereject(Request $request) {
|
|
$formdata = $request->session()->get('formdata');
|
|
$post = $request->all();
|
|
//$user = DB::table('users')->where('domain', str_replace('rapport-', '',$formdata->partition ) )->first();
|
|
|
|
|
|
if($post['form_id'] == '1718178830-d871301e-312b-4a60-nebmitra-15afa4ce6163'){
|
|
Log::info("view nebmitra form" . print_r($post, true));
|
|
|
|
$response = LambdaRequest::getrequest('form', 'formentity/getsubmissiondetails',
|
|
['form_id' => $post['form_id'], 'partition' => 'rapport-team3', 'id' => $post['id']]
|
|
);
|
|
|
|
Log::info("response of gsd" . print_r($response, true));
|
|
|
|
|
|
$sub_status = '';
|
|
if($post['action'] == 'approve'){
|
|
$sub_status = 'Approved';
|
|
}elseif($post['action'] == 'reject'){
|
|
$sub_status = 'Rejected';
|
|
}
|
|
|
|
$data = (array) $response->data->submission->formdata;
|
|
$data['submission_status'] = $sub_status;
|
|
$data['id'] = $post['id'];
|
|
$data['reason'] = $post['reason'];
|
|
|
|
$finfo = LambdaRequest::postrequest( 'form', 'formentity/submitform',
|
|
[
|
|
'formdata' => $data,
|
|
'entity_id' => $post['form_id'],
|
|
'user_id' => $data['user_id'],
|
|
'partition' => 'rapport-team3'
|
|
]
|
|
);
|
|
Log::info("Lambda response: " . print_r($finfo, true));
|
|
return response()->json($finfo);
|
|
}
|
|
|
|
if($post['form_id'] == '1750914801-153443b9-94d0-4dcb-b3f3-4fa11588a0a9'){
|
|
Log::info("view neblogistic form" . print_r($post, true));
|
|
// return response()->json('success');
|
|
|
|
if($post['countofneb'] <= 5){
|
|
$sub_status = '';
|
|
if($post['action'] == 'approve'){
|
|
$sub_status = 'L1 Approved';
|
|
}elseif($post['action'] == 'reject'){
|
|
$sub_status = 'Rejected';
|
|
}
|
|
|
|
$data['status'] = $sub_status;
|
|
$data['id'] = $post['id'];
|
|
$data['user_id'] = $post['user_id'];
|
|
$finfo = LambdaRequest::postrequest( 'form', 'formentity/submitform',
|
|
[
|
|
'formdata' => $data,
|
|
'entity_id' => $post['form_id'],
|
|
'user_id' => $data['user_id'],
|
|
'partition' => 'rapport-team3'
|
|
]
|
|
);
|
|
|
|
DB::table('neblogistic')
|
|
->where('submission_id', $post['id'])
|
|
->update(['status' => $sub_status == 'Approved' ? 'L1 Approved' : 'Rejected']);
|
|
Log::info("Lambda response: " . print_r($finfo, true));
|
|
}
|
|
}
|
|
|
|
if(isset($post['user_id']) && !empty($post['user_id'])) {
|
|
$finfo = LambdaRequest::postrequest(
|
|
'form',
|
|
'formentity/approvereject',
|
|
[
|
|
'submission_id' => $post['id'],
|
|
'form_id' => $post['form_id'],
|
|
'action' => $post['action'],
|
|
'user_id' => $post['user_id'],
|
|
'partition' => $formdata->partition
|
|
]
|
|
);
|
|
} else {
|
|
list($app, $domain) = explode('-', $formdata->partition);
|
|
$user = DB::table('users')->select("access_token")->where('domain', $domain )->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
Log::debug(print_r($formdata, true));
|
|
$finfo = LambdaRequest::postrequest(
|
|
'form',
|
|
'formentity/approvereject',
|
|
[
|
|
'submission_id' => $post['id'],
|
|
'form_id' => $post['form_id'],
|
|
'action' => $post['action']
|
|
],
|
|
$user[0]->access_token
|
|
);
|
|
Log::debug(print_r($user, true));
|
|
}
|
|
|
|
// if ($post['form_id'] == '1750914801-153443b9-94d0-4dcb-b3f3-4fa11588a0a9') {
|
|
// $status = ($post['action'] == 'reject') ? 'Rejected' : 'L1 Approved';
|
|
// DB::table('neblogistic')
|
|
// ->where('submission_id', $post['id'])
|
|
// ->update(['status' => $status]);
|
|
// return response()->json($post);
|
|
// }
|
|
|
|
Log::debug("---------------- FINFO -----------------");
|
|
Log::debug(print_r($finfo, true));
|
|
Log::debug("---------------- POST -----------------");
|
|
Log::debug(print_r($post, true));
|
|
Log::debug(print_r($formdata, true));
|
|
|
|
return response()->json($post);
|
|
}
|
|
|
|
public function approverejectmultiple(Request $request) {
|
|
$post = $request->all();
|
|
foreach($post['ids'] as $id) {
|
|
LambdaRequest::postrequest('form', 'formentity/approvereject', ['submission_id' => $id, 'form_id' => $post['form_id'], 'action' => $post['action'] ], Auth::user()->access_token);
|
|
}
|
|
return response()->json($post);
|
|
}
|
|
|
|
public function allaprovers(Request $request) {
|
|
$post = $request->all();
|
|
$allapprovers = LambdaRequest::postrequest('form', 'formentity/allapprovers', ['submission_id' => $post['submission_id'], 'form_id' => $post['form_id'] ], Auth::user()->access_token);
|
|
return response()->json($allapprovers->data->approvals);
|
|
}
|
|
|
|
protected function processformdata($form, $post, $user_id = 0, $partition = '' ) {
|
|
switch($form) {
|
|
case '1711609582-e93dba24-9c98-43e7-b97a-b22d64d9b9fc':
|
|
case '1711609582-e93dba24-9c98-43e7-neb2-b22d64d9b9fc':
|
|
list($application, $domain) = explode("-", $partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $user_id,
|
|
'name' => $post['chemist_name'],
|
|
'current_business' => $post['current_business'],
|
|
'type' => 'chemist',
|
|
'category' => isset($post['category']) ? $post['category'] : '',
|
|
'msl_code' => strtotime("now").'-'.rand(1000,9999)
|
|
];
|
|
if(isset($post['id'])) {
|
|
$contactdata['id'] = $post['contact_id'];
|
|
unset($post['contact_id']);
|
|
$contact = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
} else {
|
|
$contact = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
}
|
|
$post['contact_id'] = $contact->data->item->id;
|
|
break;
|
|
case '1711947857-4fbd5d43-d176-4ec7-aff2-e4dec4b6e02a':
|
|
list($application, $domain) = explode("-", $partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $user_id,
|
|
'name' => $post['chemist_name'],
|
|
'current_business' => $post['current_business'],
|
|
'type' => 'chemist',
|
|
'doctor_name' => $post['doctor_name'],
|
|
'category' => $post['category'],
|
|
'doctor_msl_code' => $post['msl_code'],
|
|
'doctor_speciality' => $post['speciality'],
|
|
'msl_code' => strtotime("now").'-'.rand(1000,9999)
|
|
];
|
|
if(isset($post['id'])) {
|
|
$contactdata['id'] = $post['contact_id'];
|
|
unset($post['contact_id']);
|
|
$contact = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
} else {
|
|
$contact = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
}
|
|
$post['contact_id'] = $contact->data->item->id;
|
|
break;
|
|
case '1654748343-81b065ee-e05c-431c-a44d-706afc1c16f4':
|
|
if($post['contact_id'] == 'other') {
|
|
$post['contact_id'] = '';
|
|
}
|
|
break;
|
|
case '1650365556-f06dde85-6138-4dae-9c23-5067e318c522':
|
|
case '1660360290-f06dde85-6138-4dae-9c23-5067e318c522':
|
|
$post[ $post['brand_name'].'-current' ] = $post['current_business_value'];
|
|
$post[ $post['brand_name'].'-potential' ] = $post['potential_business_value'];
|
|
break;
|
|
case '1653655221-724ec5b4-fccb-4a88-bf25-cf894fa27a77':
|
|
$brands = ['Hinex DM' => 'hinex-dm', 'Hinex HP' => 'hinex-hp', 'Hinex ST' => 'hinex-st', 'Hinex ST +' => 'hinex-st+'];
|
|
foreach($post['brand'] as $i => $brand) {
|
|
foreach($brands as $bname => $bkey) {
|
|
if($bname == $brand)
|
|
$post[$bkey][$i] = $post['units'][$i];
|
|
else
|
|
$post[$bkey][$i] = 0;
|
|
}
|
|
}
|
|
break;
|
|
case '1655958637-c41fb1b6-4ddc-42d3-aa2a-563c1cf5e4c9':
|
|
Log::debug(print_r($post, true));
|
|
if(array_key_exists('chemist_name', $post) ) {
|
|
$chemistformdata = [];
|
|
$chemistformdata['form_id'] = '1654747635-9d7133e4-a641-4865-aeed-021bb34d8960';
|
|
$chemistformdata['record_date'] = $post['record_date'];
|
|
$chemistformdata['chemist_name'] = $post['chemist_name'];
|
|
$chemistformdata['dapasach_units'] = $post['dapasach_strips'];
|
|
$chemistformdata['dapasach_m_units'] = $post['dapasach_m_strips'];
|
|
$chemistformdata['dapasach_s_units'] = $post['dapasach_s_strips'];
|
|
Log::debug(print_r($chemistformdata, true));
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitmultipleform', ['formdata' => $chemistformdata, 'entity_id' => $chemistformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
}
|
|
|
|
$rxformdata = [];
|
|
$rxformdata['form_id'] = '1657032612-8a539e63-fc5e-47c2-96f9-b4454cea7591';
|
|
$rxformdata['record_date'] = $post['record_date'];
|
|
$rxformdata['no_of_dapasach_rx'] = $post['no_of_dapasach_rx'];
|
|
$rxformdata['no_of_dapasach_m_rx'] = $post['no_of_dapasach_m_rx'];
|
|
$rxformdata['no_of_dapasach_s_rx'] = $post['no_of_dapasach_s_rx'];
|
|
$rxformdata['dapasach_units_made_available'] = $post['dapasach_units_made_available'];
|
|
$rxformdata['dapasach_m_units_made_available'] = $post['dapasach_m_units_made_available'];
|
|
$rxformdata['dapasach_s_units_made_available'] = $post['dapasach_s_units_made_available'];
|
|
Log::debug(print_r($rxformdata, true));
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $rxformdata, 'entity_id' => $rxformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
|
|
unset($post['chemist_name']);
|
|
unset($post['dapasach_units']);
|
|
unset($post['dapasach_m_units']);
|
|
unset($post['dapasach_s_units']);
|
|
unset($post['no_of_dapasach_rx']);
|
|
unset($post['no_of_dapasach_m_rx']);
|
|
unset($post['no_of_dapasach_s_rx']);
|
|
unset($post['dapasach_units_made_available']);
|
|
unset($post['dapasach_m_units_made_available']);
|
|
Log::debug(print_r($post, true));
|
|
break;
|
|
case '1659513453-1f5e2584-fb76-4075-b040-6sg6e34a5423':
|
|
if($post['customer_type'] == 'Doctor') {
|
|
$post['doctor_count'] = 1;
|
|
$post['retailer_count'] = 0;
|
|
} else {
|
|
$post['doctor_count'] = 0;
|
|
$post['retailer_count'] = 1;
|
|
}
|
|
break;
|
|
case '1659513016-1f5e2584-fb76-4075-b040-a9a4e34a7458':
|
|
case '1659538834-fb8bd30a-a719-4285-8d74-063462930c1d':
|
|
if($post['customer_type'] == 'Doctor') {
|
|
$post['doctor_count'] = 1;
|
|
$post['retailer_count'] = 0;
|
|
} else {
|
|
$post['doctor_count'] = 0;
|
|
$post['retailer_count'] = 1;
|
|
}
|
|
|
|
$prefix = '';
|
|
if($post['brand_selected'] == 'DAPASACH FRANCHISE') {
|
|
$prefix = 'dapasach_';
|
|
if($post['customer_type'] == 'Retailer') {
|
|
$post[$prefix.'pob_dapasach'] = $post['pob_dapasach'];
|
|
$post[$prefix.'pob_dapasach_s'] = $post['pob_dapasach_s'];
|
|
$post[$prefix.'pob_dapasach_m'] = $post['pob_dapasach_m'];
|
|
}
|
|
} else if($post['brand_selected'] == 'METOLAR FRANCHISE') {
|
|
$prefix = 'metolar_';
|
|
if($post['customer_type'] == 'Retailer') {
|
|
$post[$prefix.'pob_metolar_trio'] = $post['pob_metolar_trio'];
|
|
$post[$prefix.'pob_metolar_3d'] = $post['pob_metolar_3d'];
|
|
}
|
|
}
|
|
$post[$prefix.'doctor_count'] = $post['doctor_count'];
|
|
$post[$prefix.'retailer_count'] = $post['retailer_count'];
|
|
break;
|
|
case '1663562771-bd3aeb6b-2495-4b82-9ce8-7ba159700a7a':
|
|
$post[strtolower($post['brand']).'_count'] = 1;
|
|
$post[strtolower($post['brand']).'_business_potential'] = $post['business_potential'];
|
|
break;
|
|
case '1663833303-3503e11a-ca91-4bb7-ac85-bc9bc36d9997':
|
|
if($post['doctor_activity'] == 'Yes' || $post['rx_generated'] == 'Yes') {
|
|
$rxformdata = [];
|
|
$rxformdata['form_id'] = '1665645874-53e8b736-a061-4231-b209-f229083a883c';
|
|
$rxformdata['record_date'] = empty($post['rx_date']) ? $post['activity_rx_date'] : $post['rx_date'];
|
|
$rxformdata['contact_id'] = $post['contact_id'];
|
|
$rxformdata['no_of_dapasach_rx'] = ($post['rx_generated'] == 'Yes') ? $post['no_of_dapasach_rx'] : 0;
|
|
$rxformdata['no_of_dapasach_m_rx'] = ($post['rx_generated'] == 'Yes') ? $post['no_of_dapasach_m_rx'] : 0;
|
|
$rxformdata['no_of_dapasach_s_rx'] = ($post['rx_generated'] == 'Yes') ? $post['no_of_dapasach_s_rx'] : 0;
|
|
$rxformdata['doctor_activity'] = $post['doctor_activity'];
|
|
$rxformdata['activity_name'] = isset($post['activity_name']) ? $post['activity_name'] : '';
|
|
Log::debug(print_r($rxformdata, true));
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $rxformdata, 'entity_id' => $rxformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
}
|
|
|
|
if($post['converted_count'] == 1) {
|
|
$rxformdata = [];
|
|
$rxformdata['form_id'] = '1665653958-93e66eae-f0ad-4792-ae91-87f9ae787380';
|
|
$rxformdata['record_date'] = $post['conversion_date'];
|
|
$rxformdata['contact_id'] = $post['contact_id'];
|
|
$rxformdata['converted_count'] = $post['converted_count'];
|
|
Log::debug(print_r($rxformdata, true));
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $rxformdata, 'entity_id' => $rxformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
}
|
|
|
|
break;
|
|
case '1669979078-e991fc27-e8c1-4120-9883-b42af09244d0':
|
|
$post[strtolower($post['brand_name'])] = $post['no_of_rx'];
|
|
break;
|
|
case '1669979081-e991fc27-e8c1-4120-9883-b42af09244d3':
|
|
case '1689236085-9aaa37ba-601b-4414-b1fc-a26e9cc722df':
|
|
if(isset($post['execution_done']) && $post['execution_done'] == 'yes' && isset($post['activity_type'])) {
|
|
$post[$post['activity_type']] = 1;
|
|
}
|
|
break;
|
|
|
|
case '1672032315-9b267137-4b81-425c-afb4-a4c0fa701372':
|
|
if($post['powerof5'] == 'Yes') {
|
|
$post['powerof5_duolin_rx'] = $post['duolin_rx'];
|
|
$post['powerof5_glycohale_f_rx'] = $post['glycohale_f_rx'];
|
|
$post['powerof5_maxiflo_rx'] = $post['maxiflo_rx'];
|
|
$post['powerof5_maxiflo_sb_rx'] = $post['maxiflo_sb_rx'];
|
|
$post['powerof5_asthalin_rx'] = $post['asthalin_rx'];
|
|
$post['powerof5_glycohale_fb_rx'] = $post['glycohale_fb_rx'];
|
|
}
|
|
break;
|
|
case '1675171879-850cf63f-864d-42e1-82e7-2a60e92712b6':
|
|
$post['launched_count'] = [];
|
|
foreach($post['contact_id'] as $i => $c) {
|
|
$post['launched_count'][] = $post['launched'][$i] == 'Yes' ? 1 : 0;
|
|
}
|
|
break;
|
|
case '1672051617-b274ae94-8706-4f0f-8e65-6e4380f7c005':
|
|
case '1673857541-fe4fef4b-6b1c-4326-96ec-f71634ee91db':
|
|
if($post['is_hridayam_doctor'] == 'Yes') {
|
|
$rxformdata = $post;
|
|
$rxformdata['form_id'] = '1672051617-b274ae94-8704-4f0f-8e85-6e4380f7c4543';
|
|
LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $rxformdata, 'entity_id' => $rxformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
}
|
|
break;
|
|
// case '1758515400-da19c8cc-4109-4840-9222-afd342f33213':
|
|
// $ptformdata = $post;
|
|
// $ptformdata['form_id'] = '1761142083-5aa0d6f8-5641-41fb-868d-37690a1e8b4d'; //Proxyformid
|
|
// $ptformdata['contact_id'] = $post['hospital_name'];
|
|
// LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $ptformdata, 'entity_id' => $ptformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
// break;
|
|
case '1758515400-da19c8cc-4109-4840-9222-afd342f33213':
|
|
$ptformdata = $post;
|
|
if(isset($post['proxy_submission_id'])) {
|
|
$ptformdata['id'] = $post['proxy_submission_id'];
|
|
}
|
|
$ptformdata['form_id'] = '1761142083-5aa0d6f8-5641-41fb-868d-37690a1e8b4d'; //Proxyformid
|
|
$ptformdata['contact_id'] = $post['hospital_name'];
|
|
Log::debug(print_r(["ptformdata"], true));
|
|
Log::debug(print_r(['formdata' => $ptformdata, 'entity_id' => $ptformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ], true));
|
|
$response = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $ptformdata, 'entity_id' => $ptformdata['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
Log::debug(print_r(["proxyforoutput"], true));
|
|
Log::debug(print_r($response, true));
|
|
// exit;
|
|
$post['proxy_submission_id'] = $response->data->submission->id;
|
|
break;
|
|
case '1653655224-724ec5b3-fccb-4a88-bf28-cf894fa27a78':
|
|
$contacts = [];
|
|
$indamet_80_rx = [];
|
|
$indamet_160_rx = [];
|
|
$indamet_320_rx = [];
|
|
$doctor_tagging = [];
|
|
$campaign = [];
|
|
foreach($post['contact_id'] as $i => $c) {
|
|
if($post['indamet_80_rx'][$i] > 0 || $post['indamet_160_rx'][$i] > 0 || $post['indamet_320_rx'][$i] > 0) {
|
|
$contacts[] = $c;
|
|
$indamet_80_rx[] = $post['indamet_80_rx'][$i];
|
|
$indamet_160_rx[] = $post['indamet_160_rx'][$i];
|
|
$indamet_320_rx[] = $post['indamet_320_rx'][$i];
|
|
$doctor_tagging[] = $post['doctor_tagging'][$i];
|
|
$campaign[] = $post['campaign'][$i];
|
|
}
|
|
}
|
|
$post['contact_id'] = $contacts;
|
|
$post['indamet_80_rx'] = $indamet_80_rx;
|
|
$post['indamet_160_rx'] = $indamet_160_rx;
|
|
$post['indamet_320_rx'] = $indamet_320_rx;
|
|
$post['doctor_tagging'] = $doctor_tagging;
|
|
$post['campaign'] = $campaign;
|
|
break;
|
|
case '1691224392-9d29fc1f-23ae-4702-bc23-55ccdd85dab4':
|
|
if(isset($post['execution_date'])) {
|
|
$first_post = $post;
|
|
foreach($post['contact_id'] as $k => $v) {
|
|
if($k == 0) {
|
|
$first_post['contact_id'] = $v;
|
|
$first_post['id'] = $post['id'][$k];
|
|
$first_post['speciality'] = $post['speciality'][$k];
|
|
$first_post['group_id'] = $post['group_id'][$k];
|
|
$first_post['no_of_paramedics'] = $post['no_of_paramedics'][$k];
|
|
$first_post['first_executed'] = 'yes';
|
|
$first_post['first_planned'] = 'yes';
|
|
} else {
|
|
$thispost = $post;
|
|
$thispost['contact_id'] = $v;
|
|
$thispost['id'] = $post['id'][$k];
|
|
$thispost['speciality'] = $post['speciality'][$k];
|
|
$thispost['group_id'] = $post['group_id'][$k];
|
|
$thispost['no_of_paramedics'] = $post['no_of_paramedics'][$k];
|
|
LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $thispost, 'entity_id' => $thispost['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
}
|
|
}
|
|
$post = $first_post;
|
|
} else {
|
|
$first_post = $post;
|
|
$group_id = strtotime("now").'-'.rand(1000000,9999999);
|
|
foreach($post['contact_id'] as $k => $v) {
|
|
if($k == 0) {
|
|
$first_post['contact_id'] = $v;
|
|
$first_post['speciality'] = $post['speciality'][$k];
|
|
$first_post['group_id'] = $group_id;
|
|
$first_post['first_planned'] = 'yes';
|
|
} else {
|
|
$thispost = $post;
|
|
$thispost['contact_id'] = $v;
|
|
$thispost['speciality'] = $post['speciality'][$k];
|
|
$thispost['group_id'] = $group_id;
|
|
LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $thispost, 'entity_id' => $thispost['form_id'], 'user_id' => $user_id, 'partition' => $partition ]);
|
|
}
|
|
}
|
|
$post = $first_post;
|
|
}
|
|
break;
|
|
case '1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a':
|
|
if(is_array($post['doctor_name']) ) {
|
|
$execCount = sizeof($post['doctor_name']);
|
|
$planed = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => '1713425460-8bdf7394-01b5-48f3-8985-343b465dd685', 'user_id' => $user_id, 'partition' => $partition, 'id' => $post['plan_id'] ]);
|
|
$plandata = $planed->data->formdata;
|
|
Log::debug(print_r($plandata, true));
|
|
if(isset($plandata->execution_count)) {
|
|
$plandata->execution_count += $execCount;
|
|
} else {
|
|
$plandata->execution_count = $execCount;
|
|
}
|
|
$plandata->id = $post['plan_id'];
|
|
LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => (array)$plandata, 'entity_id' => '1713425460-8bdf7394-01b5-48f3-8985-343b465dd685', 'user_id' => $user_id, 'partition' => $partition ]);
|
|
// $post['plan_id'] = [];
|
|
// foreach($post['doctor_name'] as $i => $dn) {
|
|
// $post['plan_id'][] = $plandata->id;
|
|
// $post['plan_date'][] = $plandata->record_date;
|
|
// // DB::table('team3_nebyatra_doctors')->updateOrInsert(
|
|
// // ['user_id' => $user_id, 'mobile_number' => $post['mobile_number'][$i] ],
|
|
// // ['doctor_name' => $dn, 'email_id' => $post['email_id'][$i], 'speciality' => $post['speciality'][$i], 'location' => $post['location'][$i], 'district' => $post['district'][$i], 'state' => $post['state'][$i], 'date_added' => $post['record_date'][$i] ]
|
|
// // );
|
|
// }
|
|
|
|
}
|
|
break;
|
|
}
|
|
|
|
return $post;
|
|
}
|
|
|
|
public function nebmitrahistory(Request $request) {
|
|
$form_id = $request->input('form_id', '');
|
|
$user_id = $request->input('user_id', '');
|
|
$partition = $request->input('partition', '');
|
|
$doctor_id = $request->input('doctor_id', '');
|
|
$params = ['form_id' => $form_id, 'user_id' => $user_id, 'partition' => $partition];
|
|
if (!empty($doctor_id)) {
|
|
$params['filters'] = ['formdata.doctor_id' => $doctor_id];
|
|
}
|
|
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', $params);
|
|
return response()->json(['form' => $history->data->form, 'questions' => $history->data->questions, 'submissions' => $history->data->submissions, 'form_id' => $form_id]);
|
|
}
|
|
|
|
public function history(Request $request) {
|
|
$formdata = $request->session()->get('formdata');
|
|
Log::debug(print_r($formdata, true));
|
|
$form_id = $request->input('form_id', $formdata->form_id);
|
|
$formdata->form_id = $form_id;
|
|
$request->session()->put('formdata', $formdata);
|
|
//echo '<pre>'; print_r($formdata); exit;
|
|
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
//echo '<pre>'; print_r($history); print_r($formdata); exit;
|
|
//Log::debug(print_r($history, true));
|
|
if($form_id == '1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a') {
|
|
$plan_id = $request->input('plan_id', '');
|
|
$submissions = [];
|
|
foreach($history->data->submissions as $sub) {
|
|
if(isset($sub->formdata->plan_id) && $sub->formdata->plan_id == $plan_id) {
|
|
$submissions[] = $sub;
|
|
}
|
|
}
|
|
$data = ['form' => $history->data->form, 'questions' => $history->data->questions, 'submissions' => $submissions, 'formname' => $history->data->formname, 'form_id' => $form_id ];
|
|
} else {
|
|
$data = ['form' => $history->data->form, 'questions' => $history->data->questions, 'submissions' => $history->data->submissions, 'formname' => $history->data->formname, 'form_id' => $form_id ];
|
|
}
|
|
|
|
if($request->input('export', false)) {
|
|
$exceldata = [];
|
|
$exceldata[] = [$formdata->title];
|
|
$exceldata[] = [''];
|
|
$headers = ['Submission Date', 'Submitted By', 'Approval Status'];
|
|
foreach($history->data->questions as $question) {
|
|
$headers[] = $question->label;
|
|
}
|
|
$exceldata[] = $headers;
|
|
foreach($history->data->submissions as $submission) {
|
|
$row = [];
|
|
$row[] = $submission->createdAt;
|
|
$row[] = isset($submission->user_info->name) ? $submission->user_info->name : '';
|
|
$row[] = isset($submission->workflow_status) ? $submission->workflow_status : '';
|
|
foreach($history->data->questions as $q => $v) {
|
|
$row[] = isset($submission->formdata->{$q}) ? $submission->formdata->{$q} : '-';
|
|
}
|
|
$exceldata[] = $row;
|
|
}
|
|
return Excel::download(new InvoicesExport($exceldata), $formdata->title.'.xlsx');
|
|
}
|
|
|
|
if (\View::exists('form.'.$formdata->partition.'.'.$formdata->form_id.'-history')) {
|
|
return view('form.'.$formdata->partition.'.'.$formdata->form_id.'-history')->with($data);
|
|
} elseif (\View::exists('form.'.$formdata->form_id.'-history')) {
|
|
return view('form.'.$formdata->form_id.'-history')->with($data);
|
|
} else {
|
|
return view('form.history')->with($data);
|
|
}
|
|
//return view('form.history')->with();
|
|
//echo '<pre>'; print_r($history); print_r($formdata); exit;
|
|
}
|
|
|
|
public function edit(Request $request) {
|
|
$formdata = $request->session()->get('formdata');
|
|
//Log::debug(print_r($formdata, true));
|
|
$id = $request->input('id', false);
|
|
//'user_id' => $formdata->user_id,
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => $formdata->form_id, 'partition' => $formdata->partition, 'id' => $id ]);
|
|
$formdata->title = $finfo->data->formdata->title;
|
|
//Log::debug(print_r($finfo->data->formdata, true));
|
|
if (\View::exists('form.'.$formdata->partition.'.'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->partition.'.'.$formdata->form_id)->with(['questions' => $finfo->data->questions,'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id, 'formdata' => $finfo->data->formdata ]);
|
|
} elseif (\View::exists('form.'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->form_id)->with(['questions' => $finfo->data->questions,'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id, 'formdata' => $finfo->data->formdata ]);
|
|
} else {
|
|
return view('form.common')->with(['questions' => $finfo->data->questions, 'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id, 'formdata' => $finfo->data->formdata ]);
|
|
}
|
|
}
|
|
|
|
protected function get_additional_info($formdata) {
|
|
switch($formdata->form_id) {
|
|
case '63c2ff17-a69c-4b47-af33-1d9909c608b6':
|
|
case 'eaef2abf-f16b-414c-b6a5-df3fd2282b2e':
|
|
$hierarchy = LambdaRequest::getrequest('ums', 'hierarchy/hierarchy_below_me', ['partition' => $formdata->partition, 'user_id' => $formdata->user_id ]);
|
|
$team = [];
|
|
foreach($hierarchy->data->hierarchies as $hie) {
|
|
if(isset($hie->owner_info->id)) {
|
|
$team[$hie->owner_info->id] = ['name' => $hie->owner_info->name, 'code' => $hie->owner_info->employee_code ];
|
|
}
|
|
}
|
|
return ['team' => $team];
|
|
break;
|
|
case '1653655221-724ec5b4-fccb-4a88-bf25-cf894fa27a77':
|
|
|
|
return [];
|
|
break;
|
|
|
|
default:
|
|
return [];
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getformfielddata(Request $request) {
|
|
$post = $request->except('_token');
|
|
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $post['form_id'], 'user_id' => $post['user_id'], 'partition' => $post['partition'] ]);
|
|
$submission = [];
|
|
foreach($history->data->submissions as $sub) {
|
|
if($sub->formdata->record_date == strtotime($post['record_date']) ) {
|
|
$submission = (array)$sub->formdata;
|
|
$submission['submission_id'] = $sub->id;
|
|
}
|
|
}
|
|
|
|
return response()->json(['submission' => $submission, 'submissions' => $history->data->submissions, 'record_date' => strtotime($post['record_date']) ]);
|
|
}
|
|
|
|
public function metricreport(Request $request) {
|
|
$post = $request->input();
|
|
Log::debug(print_r($post, true));
|
|
$token = $request->header('Authorization');
|
|
if($token != '') {
|
|
$request->session()->put('metric_access_key', $token);
|
|
} elseif(array_key_exists('authorization', $post)) {
|
|
$token = $post['authorization'];
|
|
$request->session()->put('metric_access_key', $token);
|
|
} else {
|
|
$token = $request->session()->get('metric_access_key');
|
|
}
|
|
// $post['charttype'] = isset($post['charttype']) ? $post['charttype'] : 'leaderboard'
|
|
// $post['chart'] = isset($post['chart']) ? $post['chart'] : 'leaderboard'
|
|
|
|
//Log::debug('Token is:' . $token);
|
|
$download = (isset($post['download']) && $post['download'] == 1) ? 1 : 0;
|
|
$email = (isset($post['email']) && $post['email'] == 1) ? 1 : 0;
|
|
$s3 = (isset($post['s3']) && $post['s3'] == 1) ? 1 : 0;
|
|
unset($post['download']);
|
|
unset($post['email']);
|
|
unset($post['s3']);
|
|
|
|
$response = LambdaRequest::postrequest('metric', 'metric_report/view', $post, $token);
|
|
//Log::debug(print_r($response, true));
|
|
//echo '<pre>'; print_r($response); print_r($post); exit;
|
|
|
|
$breadcrumbs = [];
|
|
if(isset($post['hid'])){
|
|
if($request->session()->has('leaderboard_breadcrumbs')) {
|
|
$breadcrumbs = $request->session()->get('leaderboard_breadcrumbs');
|
|
}
|
|
$breadcrumbs[$post['level']] = ['hid' => $post['hid'], 'username' => $post['username'], 'level' => $post['level'] ];
|
|
$request->session()->put('leaderboard_breadcrumbs', $breadcrumbs);
|
|
$breadcrumbs = array_filter($breadcrumbs, function($k) use($post) { return $k >= $post['level']; }, ARRAY_FILTER_USE_KEY);
|
|
krsort($breadcrumbs);
|
|
}
|
|
|
|
|
|
if($download) {
|
|
$exceldata = [];
|
|
$exceldata[] = [$response->data->graph->name];
|
|
$exceldata[] = ['Report: '.ucwords($response->data->graph->agg_type).' Report'];
|
|
$exceldata[] = ['Type: '.ucwords($response->data->graph->type).' Metric'];
|
|
foreach($response->data->periods as $v) {
|
|
if($post['period'] == $v->value) {
|
|
$exceldata[] = ['Period: '.ucwords($v->label)];
|
|
}
|
|
}
|
|
$exceldata[] = [''];
|
|
switch($response->data->post->type) {
|
|
case 'leaderboard':
|
|
$headings = ["Rank", "User", "Designation", 'Zone', 'Region', "Area", "Territory", "Units", "Percent"];
|
|
foreach($response->data->graph->metrics as $metric) {
|
|
$headings[] = $metric->display;
|
|
}
|
|
$exceldata[] = $headings;
|
|
foreach($response->data->graph->values as $val) {
|
|
$row = [(string)$val->rank, (string)$val->user->name, $val->user->designation];
|
|
$user = $val->user;
|
|
$row[] = isset($user->positions->Zone) ? $user->positions->Zone : '-';
|
|
$row[] = isset($user->positions->Region) ? $user->positions->Region : '-';
|
|
$row[] = isset($user->positions->Area) ? $user->positions->Area : '-';
|
|
$row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
|
|
|
|
$row[] = (string)round($val->score, 2);
|
|
$row[] = (string)$response->data->graph->values[0]->rank != 0 ? ($response->data->graph->values[0]->rank == 1 ? ($response->data->graph->values[0]->score ? ceil(($val->score/$response->data->graph->values[0]->score)*100) : 0) : ($response->data->graph->values[1]->score ? ceil(($val->score/$response->data->graph->values[1]->score)*100) : 0 ) ) : 0;
|
|
|
|
foreach($response->data->graph->metrics as $metric) {
|
|
$row[] = isset($val->stats->{$metric->metric}) ? $val->stats->{$metric->metric} : '-';
|
|
//$row[] = isset($metric->stats->{$user->id}) ? $metric->stats->{$user->id} : '-';
|
|
}
|
|
|
|
$exceldata[] = $row;
|
|
}
|
|
|
|
//echo '<pre>'; print_r($exceldata); exit;
|
|
break;
|
|
case 'trend':
|
|
$headings = ['Periods'];
|
|
if($response->data->graph->type == 'grouped') {
|
|
foreach($response->data->graph->values as $met) {
|
|
$headings[] = $met->metric;
|
|
}
|
|
$exceldata[] = $headings;
|
|
foreach($response->data->graph->values[0]->stats as $i => $stat) {
|
|
$row = [$stat->x];
|
|
foreach($response->data->graph->values as $met) {
|
|
$row[] = isset($met->stats[$i])?$met->stats[$i]->y:0;
|
|
}
|
|
$exceldata[] = $row;
|
|
}
|
|
} else {
|
|
$headings[] = $response->data->graph->label;
|
|
$exceldata[] = $headings;
|
|
foreach($response->data->graph->values as $i => $val) {
|
|
$exceldata[] = [$val->x, $val->y];
|
|
}
|
|
}
|
|
break;
|
|
case 'graphical':
|
|
if($response->data->graph->type == 'grouped') {
|
|
$exceldata[] = ['Metric Name', 'Units', 'Percent'];
|
|
$total = 0;
|
|
foreach($response->data->graph->values as $val) {
|
|
$total = $total + $val->value;
|
|
}
|
|
foreach($response->data->graph->values as $val) {
|
|
$exceldata[] = [$val->label, $val->value, (string)round(($val->value/$total)*100, 2)];
|
|
}
|
|
}
|
|
break;
|
|
case 'details':
|
|
if($response->data->graph->chart == 'tabular') {
|
|
$headers = ['User', 'Employee Code', 'Designation', 'Zone', 'Region', "Area", "Territory"];
|
|
foreach($response->data->graph->values->metrics as $metric) {
|
|
$headers[] = $metric->metric;
|
|
}
|
|
$exceldata[] = $headers;
|
|
foreach($response->data->graph->values->users as $user) {
|
|
$row = [];
|
|
$row[] = $user->name;
|
|
$row[] = $user->employee_code;
|
|
$row[] = $user->designation;
|
|
$row[] = isset($user->positions->Zone) ? $user->positions->Zone : '-';
|
|
$row[] = isset($user->positions->Region) ? $user->positions->Region : '-';
|
|
$row[] = isset($user->positions->Area) ? $user->positions->Area : '-';
|
|
$row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
|
|
foreach($response->data->graph->values->metrics as $metric) {
|
|
$row[] = isset($metric->stats->{$user->id}) ? $metric->stats->{$user->id} : '-';
|
|
}
|
|
$exceldata[] = $row;
|
|
}
|
|
}
|
|
break;
|
|
case 'contacts':
|
|
if($response->data->graph->chart == 'contacts') {
|
|
//echo '<pre>'; print_r($response->data->graph->values); exit;
|
|
|
|
$headers = ['Doctor', 'MSL Code', 'User', 'Employee Code', 'Email', 'Designation', 'Manager 1 Name', 'Manager 1 Emp Code', 'Manager 1 Email', 'Manager 2 Name', 'Manager 2 Emp Code', 'Manager 2 Email', 'Zone', 'Region', "Area", "Territory"];
|
|
foreach($response->data->graph->values->metrics as $metric) {
|
|
$headers[] = $metric->metric;
|
|
}
|
|
$exceldata[] = $headers;
|
|
foreach($response->data->graph->values->contacts as $contact) {
|
|
$row = [];
|
|
$row[] = $contact->name;
|
|
$row[] = $contact->msl_code;
|
|
|
|
if(!isset($response->data->graph->values->users->{$contact->id})) {
|
|
continue;
|
|
}
|
|
|
|
$user = $response->data->graph->values->users->{$contact->id};
|
|
|
|
$row[] = $user->name;
|
|
$row[] = $user->employee_code;
|
|
$row[] = $user->email;
|
|
$row[] = $user->designation;
|
|
|
|
$row[] = isset($user->manager1->name) ? $user->manager1->name : '-';
|
|
$row[] = isset($user->manager1->employee_code) ? $user->manager1->employee_code : '-';
|
|
$row[] = isset($user->manager1->email) ? $user->manager1->email : '-';
|
|
$row[] = isset($user->manager2->name) ? $user->manager2->name : '-';
|
|
$row[] = isset($user->manager2->employee_code) ? $user->manager2->employee_code : '-';
|
|
$row[] = isset($user->manager2->email) ? $user->manager2->email : '-';
|
|
|
|
$row[] = isset($user->positions->Zone) ? $user->positions->Zone : '-';
|
|
$row[] = isset($user->positions->Region) ? $user->positions->Region : '-';
|
|
$row[] = isset($user->positions->Area) ? $user->positions->Area : '-';
|
|
$row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
|
|
|
|
foreach($response->data->graph->values->metrics as $metric) {
|
|
$row[] = isset($metric->stats->{$contact->id}) ? $metric->stats->{$contact->id} : '-';
|
|
}
|
|
$exceldata[] = $row;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
//echo '<pre>'; print_r($exceldata); exit;
|
|
$data = new \StdClass;
|
|
$data->sender_name = 'Rapport Support';
|
|
$data->sender_email = 'support@stratawiz.com';
|
|
$data->subject = 'Attached Report';
|
|
$data->body = '';
|
|
|
|
$report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
|
|
$data->attachment = $report;
|
|
$data->attachment_name = 'report.xlsx';
|
|
|
|
//Mail::to( str_replace(Auth::user()->domain.'-','', Auth::user()->email) )->send(new ReportExcel($data));
|
|
//Mail::to( 'ravigulhane1983@gmail.com' )->send(new ReportExcel($data));
|
|
if($s3) {
|
|
$filename = 'reports/'.strtotime("now").'-report.xlsx';
|
|
$res = Excel::store(new InvoicesExport($exceldata), 'public/'.$filename);
|
|
Log::debug(print_r($res, true));
|
|
Log::debug('/storage/'.$filename);
|
|
return response()->json(['sent' => 'yes', 'filename' => '/storage/'.$filename]);
|
|
} else {
|
|
Mail::to( $response->data->user->email )->send(new ReportExcel($data));
|
|
return response()->json(['sent' => 'yes']);
|
|
}
|
|
|
|
} else {
|
|
$colors = ['FECD00', '01C14B', 'FF8050', '4A5CD0', '707070'];
|
|
$post = array_merge((array)$response->data->post,$post);
|
|
if(isset($post['metrics']) ) {
|
|
$post['metrics'] = explode(',', $post['metrics']);
|
|
}
|
|
return view('metricreport.appreport')->with(['periods' => $response->data->periods, 'charts' => $response->data->available_charts, 'graph' => $response->data->graph, 'post' => $post, 'colors' => $colors, 'breadcrumbs' => $breadcrumbs]);
|
|
}
|
|
}
|
|
|
|
public function metriclist(Request $request) {
|
|
$post = $request->input();
|
|
$token = $request->header('Authorization');
|
|
if($token != '') {
|
|
$request->session()->put('metric_access_key', $token);
|
|
} else {
|
|
$token = $request->session()->get('metric_access_key');
|
|
}
|
|
$reports = LambdaRequest::getrequest('metric', 'metric_report/list', $post, $token);
|
|
//echo '<pre>'; print_r($reports); exit;
|
|
//$reports = $this->getlambda('get', 'metric', 'metric_report', 'list');
|
|
return view('metricreport.appreportlist')->with(['metrics' => $reports->data->metrics]);
|
|
|
|
}
|
|
|
|
public function preview(Request $request) {
|
|
$data = $request->input('data');
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/preview', ['data' => $data]);
|
|
|
|
// echo '<pre>'; print_r($finfo); exit;
|
|
$formdata = $finfo->data->formdata;
|
|
$formdata->user_info = $finfo->data->user_info;
|
|
$formdata->link_type = 'form';
|
|
$formdata->is_approval = 'yes';
|
|
$formdata->title = $finfo->data->formdata->form_name;
|
|
$params = ['questions' => $finfo->data->questions, 'form' => $formdata, 'id' => $finfo->data->formdata->submission_id, 'form_id' => $finfo->data->formdata->form_id, 'submitted_formdata'=> isset($finfo->data->submitted_data) ? $finfo->data->submitted_data : []];
|
|
|
|
if (\View::exists('form.'.$formdata->partition.'.preview-'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->partition.'.preview-'.$formdata->form_id)->with($params);
|
|
} elseif (\View::exists('form.preview-'.$formdata->form_id)) {
|
|
return view('form.preview-'.$formdata->form_id)->with($params);
|
|
} elseif (\View::exists('form.'.$formdata->partition.'.'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->partition.'.'.$formdata->form_id)->with($params);
|
|
} elseif (\View::exists('form.'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->form_id)->with($params);
|
|
} elseif (\View::exists('form.preview-'.$formdata->form_id)) {
|
|
return view('form.preview-'.$formdata->form_id)->with($params);
|
|
} else{
|
|
return view('form.common')->with($params);
|
|
}
|
|
// if (\View::exists('form.'.$formdata->form_id)) {
|
|
// return view('form.'.$formdata->form_id)->with($params);
|
|
// } else {
|
|
// return view('form.common')->with($params);
|
|
// }
|
|
}
|
|
|
|
protected function deliverpersonalization($formdata, $questions, $personalizations) {
|
|
$additional_info = $this->get_additional_info($formdata);
|
|
//echo '<pre>'; print_r($formdata); print_r($questions); print_r($personalizations); exit;
|
|
$data = ['questions' => $questions, 'form' => $formdata, 'form_id' => $formdata->form_id, 'personalizations' => $personalizations ];
|
|
if(sizeof($additional_info) > 0) {
|
|
$data['additional'] = $additional_info;
|
|
}
|
|
if (\View::exists('form.'.$formdata->partition.'.personalization-'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->partition.'.personalization-'.$formdata->form_id)->with($data);
|
|
} elseif (\View::exists('form.personalization-'.$formdata->form_id)) {
|
|
return view('form.personalization-'.$formdata->form_id)->with($data);
|
|
} else {
|
|
return view('form.personalization')->with($data);
|
|
}
|
|
}
|
|
|
|
public function submitpersonalized(Request $request) {
|
|
$post = $request->except('_token');
|
|
$files = $request->file();
|
|
$images = [];
|
|
foreach($files as $fname => $file) {
|
|
$post[$fname] = $this->_uploadMediaLocal($request, $fname, 'public/personalized/'.$post['form_id'].'/'.$fname);
|
|
$images[] = $fname;
|
|
}
|
|
if(isset($post['cropped'])) {
|
|
foreach($post['cropped'] as $name => $cropp) {
|
|
if(isset($cropp) && !empty($cropp)) {
|
|
$data = explode( ',', $cropp );
|
|
$image = base64_decode( $data[1] );
|
|
$filename = strtotime("now").'-'.Str::random(64).'.png';
|
|
Storage::disk('public')->put('personalized/'.$post['form_id'].'/'.$name.'/'.$filename, $image);
|
|
$post[$name] = '/storage/personalized/'.$post['form_id'].'/'.$name.'/'.$filename;
|
|
$post['cropped-'.$name] = $post[$name];
|
|
}
|
|
//$form_info['cropped-'.$name] = '/storage/personalized/'.$post['form_id'].'/'.$name.'/'.$filename;
|
|
}
|
|
unset($post['cropped']);
|
|
}
|
|
$post['images_fields'] = $images;
|
|
$post['form_info'] = json_decode($post['form_info']);
|
|
$request->session()->put('form_info', $post);
|
|
|
|
return response()->json($post);
|
|
}
|
|
|
|
public function submitpersonalizedimages(Request $request) {
|
|
$post = $request->except('_token');
|
|
$formdata = $request->session()->get('formdata');
|
|
$form_info = $request->session()->get('form_info');
|
|
//echo '<pre>'; print_r($post); print_r($form_info); echo '</pre>'; exit;
|
|
foreach($form_info['images_fields'] as $im ) {
|
|
Log::debug(print_r($im, true));
|
|
$data = explode( ',', $post[$im] );
|
|
$image = base64_decode( $data[1] );
|
|
$filename = pathinfo($form_info[$im]);
|
|
$filename = $filename['basename'];
|
|
Storage::disk('public')->put('personalized/'.$post['form_id'].'/'.$im.'/cropped-'.$filename, $image);
|
|
$form_info['cropped-'.$im] = str_replace($filename, 'cropped-'.$filename, $form_info[$im]);
|
|
}
|
|
$request->session()->put('form_info', $form_info);
|
|
return redirect('/form/generatepersonalization');
|
|
}
|
|
|
|
public function generatepersonalization(Request $request) {
|
|
$post = $request->all();
|
|
$formdata = $request->session()->get('formdata');
|
|
$form_info = $request->session()->get('form_info');
|
|
|
|
Log::debug(print_r(['testpo'], true));
|
|
Log::debug(print_r($formdata, true));
|
|
Log::debug(print_r($form_info, true));
|
|
|
|
|
|
//echo '<pre>'; print_r($post); print_r($form_info); echo '</pre>'; exit;
|
|
$filename_prefix = 'combined';
|
|
if($form_info['form_id'] == '1739769123-c3c567f1-5d53-471b-bf69-5714c71e726e') {
|
|
if($form_info['dr_name'] == 'other') {
|
|
$filename_prefix = 'other';
|
|
} else {
|
|
$token = DB::table('users')->select("access_token")->where("domain", 'vitalis1')->where("permissions", 'like', '%contact_get_one%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$cont = LambdaRequest::getrequest('contact', 'contact/get_one', ['partition'=>'rapport-vitalis1', 'id'=>$form_info['dr_name'] ], $token[0]->access_token);
|
|
$filename_prefix = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '_', $cont->data->item->name)));
|
|
}
|
|
|
|
switch($form_info['form_info']->id) {
|
|
case '1739774514-c73f9f60-3c36-4c25-9a7b-bdd233be8bce':
|
|
$form_info['dr_name'] = isset($cont->data->item->dia_beat_it_coupon_code) ? $cont->data->item->dia_beat_it_coupon_code : 'CIPDT15160';
|
|
break;
|
|
case '1739774396-4ab417c8-180c-420f-b2c8-21cb14f27851':
|
|
$form_info['dr_name'] = isset($cont->data->item->jaanch_diabetes_coupon_code) ? $cont->data->item->jaanch_diabetes_coupon_code : 'CIPJD15160';
|
|
break;
|
|
case '1739772228-2d6ab664-ab17-4b08-ae2f-2e701c78ca74':
|
|
$form_info['dr_name'] = isset($cont->data->item->healthy_heart_coupon_code) ? $cont->data->item->healthy_heart_coupon_code : 'CIPJH15160';
|
|
break;
|
|
}
|
|
//echo '<pre>'; print_r($post); print_r($formdata); print_r($form_info); print_r($cont); echo '</pre>'; exit;
|
|
}
|
|
$genareted_image = [];
|
|
$pdf_images = [];
|
|
$finfo = null;
|
|
$contactMap = [];
|
|
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
|
|
$post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $form_info, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
Log::debug(print_r(['testpocontact'], true));
|
|
Log::debug(print_r($finfo, true));
|
|
if(isset($finfo->data->submission->contacts) && count($finfo->data->submission->contacts) > 0) {
|
|
// $form_info['doctor_name'] = $finfo->data->submission->contacts[0]->name ?? '';
|
|
foreach($finfo->data->submission->contacts as $c) {
|
|
if(isset($c->id)) {
|
|
foreach($form_info as $k => $fi) {
|
|
if($fi == $c->id) {
|
|
$form_info[$k] = $c->name ?? '';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Log::debug(print_r($contactMap, true));
|
|
}
|
|
|
|
|
|
foreach($form_info['form_info']->templates as $i => $template) {
|
|
$temp = pathinfo($template);
|
|
if(!file_exists(storage_path('app/public/personalized/'.$form_info['form_id'].'/template-'.$form_info['form_info']->id.'_'.$i.'.'.$temp['extension'] ))) {
|
|
//Log::debug(print_r($form_info['form_info'], true));
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, $template);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // good edit, thanks!
|
|
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // also, this seems wise considering output is image.
|
|
$data = curl_exec($ch);
|
|
curl_close($ch);
|
|
Storage::disk('public')->put('personalized/'.$form_info['form_id'].'/template-'.$form_info['form_info']->id.'_'.$i.'.'.$temp['extension'], $data);
|
|
}
|
|
|
|
$folder = storage_path('app/public/personalized/'.$form_info['form_id']);
|
|
$templatename = 'template-'.$form_info['form_info']->id.'_'.$i.'.'.$temp['extension'];
|
|
$outputImage = $this->retimage($folder.'/'.$templatename);
|
|
$w = imagesx($outputImage);
|
|
$h = imagesy($outputImage);
|
|
//echo '<pre>'; print_r(json_decode($form_info['form_info']->positions[$i])); echo '</pre>'; exit;
|
|
$positions = json_decode($form_info['form_info']->positions[$i]);
|
|
|
|
$maskimages = [];
|
|
foreach($positions as $pos) {
|
|
if($pos->type == 'image' && isset($pos->fill) && $pos->fill == 'mask') {
|
|
$maskimages[] = $pos;
|
|
}
|
|
}
|
|
if(sizeof($maskimages) > 0) {
|
|
$tempimage = imagecreatetruecolor($w, $h);
|
|
}
|
|
foreach($maskimages as $pos) {
|
|
$image = storage_path( str_replace('/storage', 'app/public', $form_info['cropped-'.$pos->field_name] ) );
|
|
$photoimg = $this->retimage( $image );
|
|
$photosize = getimagesize( $image );
|
|
imagecopyresized($tempimage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
|
|
}
|
|
if(sizeof($maskimages) > 0) {
|
|
imagecopyresized($tempimage,$outputImage,0,0,0,0,$w,$h,$w,$h);
|
|
$outputImage = $tempimage;
|
|
}
|
|
|
|
|
|
|
|
// if($form_info['form_id'] == '1743147283-6e501154-053c-4e99-bcfe-c7e3d432f704') { //
|
|
// echo '<pre>'; print_r(json_decode($form_info['form_info']->positions[$i])); exit;
|
|
// }
|
|
//echo '<pre>'; print_r($form_info); exit;
|
|
foreach(json_decode($form_info['form_info']->positions[$i]) as $pos) {
|
|
switch($pos->type) {
|
|
case 'image':
|
|
// $image = storage_path( str_replace('/storage', 'app/public', $form_info['cropped-'.$pos->field_name] ) );
|
|
// $photoimg = $this->retimage( $image );
|
|
// $photosize = getimagesize( $image );
|
|
// if(isset($pos->fill) && $pos->fill == 'mask') {
|
|
// // $w = imagesx($outputImage);
|
|
// // $h = imagesy($outputImage);
|
|
// // $tempimage = imagecreatetruecolor($w, $h);
|
|
// // imagecopyresized($tempimage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
|
|
// // imagecopyresized($tempimage,$outputImage,0,0,0,0,$w,$h,$w,$h);
|
|
// // $outputImage = $tempimage;
|
|
// // //imagedestroy($tempimage);
|
|
// } else {
|
|
// $image = storage_path( str_replace('/storage', 'app/public', $form_info['cropped-'.$pos->field_name] ) );
|
|
// $photoimg = $this->retimage( $image );
|
|
// $photosize = getimagesize( $image );
|
|
// imagecopyresized($outputImage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
|
|
// }
|
|
if(!(isset($pos->fill) && $pos->fill == 'mask')) {
|
|
$image = storage_path( str_replace('/storage', 'app/public', $form_info['cropped-'.$pos->field_name] ) );
|
|
$photoimg = $this->retimage( $image );
|
|
$photosize = getimagesize( $image );
|
|
imagecopyresized($outputImage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
|
|
}
|
|
break;
|
|
case 'text':
|
|
case 'date':
|
|
if(isset($form_info['form_info']->createpdf) && isset($form_info['form_info']->createpdf[$i]) && $form_info['form_info']->createpdf[$i] == 'yes' && isset($form_info['form_info']->addlink) && $form_info['form_info']->addlink[$i] == 'yes' && $form_info['form_info']->linkfield[$i] == $pos->field_name) {
|
|
$linkvalue = $form_info[$pos->field_name];
|
|
} else if(isset($form_info[$pos->field_name])) {
|
|
$font = storage_path('app').'/fonts/'.$pos->font;
|
|
$pos->color = explode('-',$pos->color);
|
|
$white = imagecolorallocate($outputImage, $pos->color[0], $pos->color[1], $pos->color[2]);
|
|
$text = $form_info[$pos->field_name];
|
|
|
|
// if(isset($contactMap[$text]) && $contactMap[$text] != '') {
|
|
// $text = $contactMap[$text];
|
|
// Log::debug(print_r(['testpocase'], true));
|
|
// Log::debug(print_r([$text], true));
|
|
// }
|
|
|
|
if(isset($pos->prefix) && !empty($pos->prefix)) {
|
|
$text = $pos->prefix . $text;
|
|
}
|
|
if($pos->type == 'date') {
|
|
$text = date($pos->format, strtotime($text));
|
|
}
|
|
if(isset($pos->suffix) && !empty($pos->suffix)) {
|
|
$text = $text . $pos->suffix;
|
|
}
|
|
$angle = isset($pos->angle) ? $pos->angle : 0;
|
|
$size = $pos->size;
|
|
// Check if pos has max_width set, and reduce font size if text does not fit
|
|
if (isset($pos->max_width) && $pos->max_width > 0) {
|
|
$currentSize = $size;
|
|
$box = imagettfbbox($currentSize, $angle, $font, $text);
|
|
$textWidth = abs($box[4] - $box[0]);
|
|
while ($textWidth > $pos->max_width && $currentSize > 5) { // don't go below 5pt
|
|
$currentSize--;
|
|
$box = imagettfbbox($currentSize, $angle, $font, $text);
|
|
$textWidth = abs($box[4] - $box[0]);
|
|
}
|
|
$size = $currentSize;
|
|
}
|
|
|
|
if(isset($pos->align) && $pos->align == 'center') {
|
|
$box = imagettfbbox($size, 0, $font, $text);
|
|
$pos->x = explode('-', $pos->x);
|
|
$pos->x = $pos->x[0] + (($pos->x[1] - $pos->x[0]) - $box[2])/2;
|
|
}
|
|
Log::debug(print_r([$pos->size, $angle, $pos->x, $pos->y, $white, $font, $text], true));
|
|
imagettftext($outputImage, $pos->size, $angle, $pos->x, $pos->y, $white, $font, $text);
|
|
//imagettftext($outputImage, $pos->size, 0, $pos->x, $pos->y, $white, $font, $text);
|
|
|
|
// if($form_info['form_id'] == '1743147283-6e501154-053c-4e99-bcfe-c7e3d432f704') { //
|
|
// echo '<pre>'; print_r([$outputImage, $pos->size, 0, $pos->x, $pos->y, $white, $font, $text]); exit;
|
|
// }
|
|
|
|
|
|
//echo '<pre>'; print_r([ $pos->color[0], $pos->color[1], $pos->color[2]]); echo '</pre>'; exit;
|
|
}
|
|
break;
|
|
|
|
case 'multiline':
|
|
if(isset($form_info[$pos->field_name])) {
|
|
$font = storage_path('app').'/fonts/'.$pos->font;
|
|
$pos->color = explode('-',$pos->color);
|
|
$white = imagecolorallocate($outputImage, $pos->color[0], $pos->color[1], $pos->color[2]);
|
|
$text = $form_info[$pos->field_name];
|
|
$lines = wordwrap($text, $pos->linechars, "\n", true);
|
|
$xPosition = $pos->x;
|
|
$yPosition = $pos->y;
|
|
foreach (explode("\n", $lines) as $line) {
|
|
imagettftext($outputImage, $pos->size, 0, $xPosition, $yPosition, $white, $font, $line);
|
|
$yPosition += $pos->linehieght;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
$filename = 'generated-'.strtotime("now").'_'.$i.'.png';
|
|
$genareted_image[] = $filename;
|
|
if(isset($form_info['form_info']->createpdf[$i]) && $form_info['form_info']->createpdf[$i] == 'yes') {
|
|
$pdf_images[] = $folder.'/'.$filename;
|
|
}
|
|
imagepng($outputImage, $folder.'/'.$filename);
|
|
imagedestroy($outputImage);
|
|
}
|
|
|
|
//echo '<pre>'; print_r($genareted_image); exit;
|
|
|
|
$form_info['genareted_image'] = $genareted_image;
|
|
$form_info['pdf_images'] = $pdf_images;
|
|
|
|
if(isset($form_info['form_info']->createpdf) && count($form_info['form_info']->createpdf) > 0 && in_array('yes', $form_info['form_info']->createpdf) ) {
|
|
//echo 'convert '.implode(' ', $form_info['pdf_images']).' -quality 100 '.$folder.'/'.'combined-'.strtotime("now").'.pdf'; exit;
|
|
$pdffile = $filename_prefix.'-'.strtotime("now").'.pdf';
|
|
if(count($form_info['pdf_images']) > 1) {
|
|
exec('convert '.implode(' ', $form_info['pdf_images']).' -quality 100 '.$folder.'/'.$pdffile);
|
|
$form_info['pdf_file'] = $pdffile;
|
|
} else if(!isset($linkvalue)) {
|
|
exec('convert '.implode(' ', $form_info['pdf_images']).' -quality 100 '.$folder.'/'.$pdffile);
|
|
$form_info['pdf_file'] = $pdffile;
|
|
} else {
|
|
exec('php /home/ubuntu/createpdf/testpdf.php '.$w.' '.$h.' '.$form_info['pdf_images'][0].' '.$folder.'/'.$pdffile .' "'. $linkvalue.'"');
|
|
Log::debug('php /home/ubuntu/createpdf/testpdf.php '.$w.' '.$h.' '.$form_info['pdf_images'][0].' '.$folder.'/'.$pdffile .' "'. $linkvalue.'"');
|
|
//exec('convert '.implode(' ', $form_info['pdf_images']).' -quality 100 '.$folder.'/'.$pdffile);
|
|
$form_info['pdf_file'] = $pdffile;
|
|
}
|
|
}
|
|
$form_info['personalization_id'] = $form_info['form_info']->id;
|
|
Log::debug(print_r($form_info, true));
|
|
//echo '<pre>'; print_r($form_info); echo '</pre>'; exit;
|
|
unset($form_info['form_info']);
|
|
|
|
// $form_info['form_info']->positions = json_decode('[{"x":"100-279","y":"485","align":"center","size":20,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"event_date_date"},{"x":"100-279","y":"526","align":"center","size":22,"type":"text","font":"klavika-light.ttf","color":"110-23-19","field_name":"event_date_year"},{"x":"340-514","y":"485","align":"center","size":20,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"venue_line_3"},{"x":"584-767","y":"480","align":"center","size":18,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"venue_line_1"},{"x":"584-767","y":"508","align":"center","size":18,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"venue_line_2"},{"x":"584-767","y":"535","align":"center","size":18,"type":"text","font":"klavika-medium.ttf","color":"110-23-19","field_name":"venue_line_3"},{"x":"264-613","y":"910","align":"center","size":11,"type":"text","font":"gadugib.ttf","color":"0-0-0","field_name":"speaker_details_line_1"},{"x":"264-613","y":"930","align":"center","size":11,"type":"text","font":"gadugib.ttf","color":"0-0-0","field_name":"speaker_details_line_2"},{"x":"264-613","y":"950","align":"center","size":11,"type":"text","font":"gadugib.ttf","color":"0-0-0","field_name":"speaker_details_line_3"},{"x":"264-613","y":"970","align":"center","size":11,"type":"text","font":"gadugib.ttf","color":"0-0-0","field_name":"speaker_details_line_4"},{"x":362,"width":154,"y":658,"type":"image","fill":"mask","height":154,"field_name":"speaker_image"},{"x":"259-618","y":"873","align":"center","size":23,"type":"text","font":"klavika-medium.ttf","color":"255-255-255","field_name":"speaker_name"}]');
|
|
|
|
|
|
//return view('form.download')->with('image_url', 'personalized/'.$form_info['form_id'].'/'.$form_info['genareted_image']);
|
|
|
|
$request->session()->put('form_info', $form_info);
|
|
return redirect('/form/downloadpersonalization');
|
|
}
|
|
|
|
public function downloadpersonalization(Request $request) {
|
|
$form_info = $request->session()->get('form_info');
|
|
$formdata = $request->session()->get('formdata');
|
|
//Log::debug(print_r($form_info, true));
|
|
//Log::debug(print_r($formdata, true));
|
|
$folder = storage_path('app/public/personalized/'.$form_info['form_id']);
|
|
|
|
$paths = [];
|
|
if(isset($form_info['pdf_file'])) {
|
|
$paths[] = $folder.'/'.$form_info['pdf_file'];
|
|
}
|
|
foreach($form_info['genareted_image'] as $image) {
|
|
$paths[] = $folder.'/'.$image;
|
|
}
|
|
|
|
if($form_info['form_id'] == '1682181475-19f5d784-6fbb-4a6e-bf04-a448ff7c83fe') {
|
|
switch($form_info['personalization_id']) {
|
|
case '1682267328-bd38fe94-1b2e-47c1-a8bb-8ba361432cc7':
|
|
$ppts[] = ["path" => '/ChestApprise/Home_Maintenance_Nebulization_Regional.pptx', "name" => 'Home_Maintenance_Nebulization_Regional.pptx' ];
|
|
$ppts[] = ["path" => '/ChestApprise/Nebulized_mucoactive_drugs_in_mucus_management_-_2023.pptx', "name" => 'Nebulized_mucoactive_drugs_in_mucus_management_-_2023.pptx' ];
|
|
break;
|
|
case '1682267328-bd38fe95-1b2e-47c2-a8bb-8ba361432cc8':
|
|
$ppts[] = ["path" => '/ChestConnect/Home_Maintenance_Nebulization_Regional.pptx', "name" => 'Home_Maintenance_Nebulization_Regional.pptx' ];
|
|
$ppts[] = ["path" => '/ChestConnect/Nb_Antibiotic_focusing_Tob.pptx', "name" => 'Nb_Antibiotic_focusing_Tob.pptx' ];
|
|
break;
|
|
case '1682267328-bd38fe96-1b2e-47c3-a8bb-8ba361432cc9':
|
|
$ppts[] = ["path" => '/EducatetoElevate/GINA_2022_Imp_of_ICS_in_asthma.pptx', "name" => 'GINA_2022_Imp_of_ICS_in_asthma.pptx' ];
|
|
$ppts[] = ["path" => '/EducatetoElevate/Nebulized_mucoactive_drugs_in_mucus_management_-_2023.pptx', "name" => 'Nebulized_mucoactive_drugs_in_mucus_management_-_2023.pptx' ];
|
|
break;
|
|
case '1682267328-bd38fe97-1b2e-47c4-a8bb-8ba361432cc6':
|
|
$ppts[] = ["path" => '/PediaConnect/GINA_2022_Pediatric_brief.pptx', "name" => 'GINA_2022_Pediatric_brief.pptx' ];
|
|
$ppts[] = ["path" => '/PediaConnect/Nebulized_mucoactive_drugs_in_mucus_management_-_2023.pptx', "name" => 'Nebulized_mucoactive_drugs_in_mucus_management_-_2023.pptx' ];
|
|
break;
|
|
case '1682685456-f9dce443-bcee-462f-925e-ad148dad08f4':
|
|
$ppts[] = ["path" => '/Assemble/Assemble_to_Adapt_ppt.pptx', "name" => 'Assemble_to_Adapt_ppt.pptx' ];
|
|
break;
|
|
}
|
|
foreach($ppts as $ppt) {
|
|
$paths[] = $folder.'/'.$ppt['path'];
|
|
}
|
|
}
|
|
|
|
if($request->input('action') == 'email') {
|
|
// Create PHPMailer instance
|
|
$provider = CredentialProvider::defaultProvider();
|
|
$gAWS_SES_client = SesClient::factory(array(
|
|
'version'=> 'latest',
|
|
'region' => 'ap-south-1',
|
|
'credentials' => $provider
|
|
));
|
|
|
|
|
|
//$myArrayToAdresses = ["ravigulhane1983@gmail.com"];
|
|
Log::debug(print_r($request->all(), true) );
|
|
$myArrayToAdresses = [$request->input('email')];
|
|
|
|
$ppts = [];
|
|
$ppthtml = '';
|
|
|
|
if($form_info['form_id'] == '1682181475-19f5d784-6fbb-4a6e-bf04-a448ff7c83fe') {
|
|
foreach($ppts as $ppt) {
|
|
$ppthtml .= '<a href="https://stage.buildrapport.co/storage/personalized/1682181475-19f5d784-6fbb-4a6e-bf04-a448ff7c83fe' .$ppt['path'].'" download>'.$ppt['name'].'</a><br />';
|
|
}
|
|
}
|
|
|
|
|
|
$myFromAdress = 'Rapport Support <virtualengage@stratawiz.com>';
|
|
$mySubject = 'Generated Assets for Upcoming Event';
|
|
$myHTMLBody = '<p>Dear,</p>
|
|
<p>We hope this email finds you well. As part of our commitment to making our upcoming event a success, we are pleased to provide you with a few generated assets that we believe will be useful.</p>
|
|
<p>Attached to this email you will find:</p>
|
|
<ul>
|
|
<li>Invitations: We have included a customized invitation that you can share with your attendees. It includes all the details of the event.</li>
|
|
<li>Thank You Letter: We have also attached a thank you letter that you can use to express your gratitude to attendees and sponsors after the event.</li>
|
|
<li>Presentation PPT: Lastly, we have included a presentation PowerPoint that you can use to promote the event or share with your attendees. below are the links to download the PPT.</li>
|
|
</ul>
|
|
<p>
|
|
' . $ppthtml . '
|
|
</p>
|
|
<p>We believe that these assets will help you to promote the event more effectively and engage with your network more successfully. If you have any questions or concerns, please dont hesitate to reach out to your HO.</p>
|
|
<p>Thank you for your time and effort in organizing this event, and we look forward to working with you to make it a success.</p>
|
|
<p>Best regards,</p>';
|
|
|
|
$files = [ ["path" => $folder.'/'.$form_info['pdf_file'], "name" => $form_info['pdf_file'] ] ];
|
|
foreach($form_info['genareted_image'] as $image) {
|
|
$files[] = ["path" => $folder.'/'.$image, "name" => $image ];
|
|
}
|
|
|
|
// $zip = new \ZipArchive();
|
|
// $fileName = 'zipFile.zip';
|
|
// exec('rm ' . $folder.'/'.$fileName);
|
|
// if ($zip->open($folder.'/'.$fileName, \ZipArchive::CREATE)== TRUE){
|
|
// //$files = File::files(public_path('myFiles'));
|
|
// foreach ($files as $file){
|
|
// $zip->addFile($file['path'], $file['name']);
|
|
// }
|
|
// $zip->close();
|
|
// }
|
|
$myStringToAddresses = implode(",", $myArrayToAdresses);
|
|
|
|
$boundary = md5(time());
|
|
$html = $myHTMLBody;
|
|
//$html .= "<img src=\"cid:{$fileName}\">"; // Content-ID
|
|
$text = $mySubject;
|
|
|
|
$raw = '';
|
|
$raw .= "From:{$myFromAdress}\n";
|
|
$raw .= "To:{$myStringToAddresses}\n";
|
|
$raw .= "Subject:{$mySubject}\n";
|
|
$raw .= "MIME-Version: 1.0\n";
|
|
$raw .= "Content-Type: multipart/mixed; boundary=\"{$boundary}\"\n\n";
|
|
$raw .= "--{$boundary}\n";
|
|
|
|
$raw .= "Content-Type: multipart/alternative; boundary=\"sub_{$boundary}\"\n\n";
|
|
$raw .= "--sub_{$boundary}\n";
|
|
$raw .= "Content-Type: text/plain; charset=\"UTF-8\"\n";
|
|
$raw .= "\n";
|
|
$raw .= "{$text}\n";
|
|
$raw .= "\n";
|
|
$raw .= "--sub_{$boundary}\n";
|
|
$raw .= "Content-Type: text/html; charset=\"UTF-8\"\n";
|
|
$raw .= "Content-Disposition: inline\n";
|
|
$raw .= "\n";
|
|
$raw .= "{$html}\n";
|
|
$raw .= "\n";
|
|
$raw .= "--sub_{$boundary}--\n\n";
|
|
|
|
foreach ($files as $file) {
|
|
$myFileMimeInfo = finfo_open(FILEINFO_MIME_TYPE);
|
|
$myFileMimeType = finfo_file($myFileMimeInfo, $file['path']);
|
|
$myFileName = basename($file['path']);
|
|
$myDataAttachedFile = file_get_contents($file['path']);
|
|
//$myDataAttachedFile = chunk_split(base64_encode($myDataAttachedFile));
|
|
$raw .= "--{$boundary}\n";
|
|
$raw .= "Content-Type:{$myFileMimeType}; name=\"{$file['name']}\"\n"; // name
|
|
$raw .= "Content-Transfer-Encoding:base64\n";
|
|
$raw .= "Content-Disposition:attachment;filename=\"{$file['name']}\"\n"; // filename
|
|
#$raw .= "Content-Disposition:inline;name={$file_name}\n";
|
|
$raw .= "Content-ID:<{$file['name']}>\n";
|
|
$raw .= "\n";
|
|
$raw .= base64_encode($myDataAttachedFile) . "\n";
|
|
$raw .= "\n";
|
|
}
|
|
$raw .= "--{$boundary}--\n\n";
|
|
|
|
|
|
|
|
// $myStringToAddresses = implode(",", $myArrayToAdresses);
|
|
// $mySeparator = md5(time());
|
|
// $mySeparator_multipart = md5($mySubject . time());
|
|
|
|
// $myMessage = "";
|
|
|
|
// $myMessage .= "MIME-Version: 1.0\n";
|
|
|
|
// $myMessage .= "To: ".$myStringToAddresses."\n";
|
|
// $myMessage .= "From:".$myFromAdress."\n";
|
|
// $myMessage .= "Subject:".$mySubject."\n";
|
|
|
|
// $myMessage .= "Content-Type: multipart/mixed; boundary=\"".$mySeparator_multipart."\"\n";
|
|
// $myMessage .= "\n--".$mySeparator_multipart."\n";
|
|
|
|
// $myMessage .= "Content-Type: multipart/alternative; boundary=\"".$mySeparator."\"\n";
|
|
// $myMessage .= "\n--".$mySeparator."\n";
|
|
|
|
// $myMessage .= "Content-Type: text/html; charset=\"UTF-8\"\n";
|
|
// $myMessage .= "\n".$myHTMLBody."\n";
|
|
// $myMessage .= "\n--".$mySeparator."--\n";
|
|
|
|
// $myFileName = basename($folder.'/'.$fileName);
|
|
// $myDataAttachedFile = file_get_contents($folder.'/'.$fileName);
|
|
// $myDataAttachedFile = chunk_split(base64_encode($myDataAttachedFile));
|
|
|
|
// $myFileMimeInfo = finfo_open(FILEINFO_MIME_TYPE);
|
|
// $myFileMimeType = finfo_file($myFileMimeInfo, $folder.'/'.$fileName);
|
|
|
|
// $myMessage .= "--".$mySeparator_multipart."\n";
|
|
// $myMessage .= "Content-Type: ".$myFileMimeType."; name=\"".$myFileName."\"\n";
|
|
// $myMessage .= "Content-Disposition: attachment; filename=\"".$myFileName."\"\n";
|
|
// $myMessage .= "Content-Transfer-Encoding: base64\n\n";
|
|
// $myMessage .= $myDataAttachedFile."\n";
|
|
// $myMessage .= "--".$mySeparator_multipart."--";
|
|
|
|
|
|
$myArraySES = [
|
|
'Source' => $myFromAdress,
|
|
'Destinations' => $myArrayToAdresses,
|
|
'RawMessage' => [
|
|
'Data' => $raw
|
|
]
|
|
];
|
|
|
|
//echo "\n<HR>Trying to send mail via AAWS SES <BR>\n";
|
|
|
|
|
|
try{
|
|
//$myResult = true;
|
|
$myAPIResult = $gAWS_SES_client->sendRawEmail($myArraySES);
|
|
Log::debug(print_r($myAPIResult, true));
|
|
return response()->json(['status' => 'success']);
|
|
} catch (Exception $myObjError) {
|
|
//An error happened and the email did not get sent
|
|
$myErrorInfo = $myObjError->getMessage();
|
|
Log::debug(print_r($myErrorInfo, true));
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
//return response()->json(['status' => 'success']);
|
|
} else {
|
|
//echo '<prE>';print_r($form_info); exit;
|
|
$res = ['folder' => 'personalized/'.$form_info['form_id'].'/', 'images' => $form_info['genareted_image'] ];
|
|
$res['form_info'] = $form_info;
|
|
if(isset($form_info['pdf_file'])) {
|
|
$res['pdf_file'] = $form_info['pdf_file'];
|
|
}
|
|
if($form_info['form_id'] == '1682181475-19f5d784-6fbb-4a6e-bf04-a448ff7c83fe') {
|
|
$encripted = base64_encode(json_encode($paths));
|
|
$res['encripted'] = $encripted;
|
|
}
|
|
if (\View::exists('form.'.$formdata->partition.'.download-'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->partition.'.download-'.$formdata->form_id)->with($res);
|
|
} else {
|
|
return view('form.download')->with($res);
|
|
}
|
|
}
|
|
//return view('form.download')->with($res);
|
|
}
|
|
|
|
public function downloadtempletepdf(Request $request) {
|
|
$post = $request->all();
|
|
$id = $post['id'];
|
|
$formdata = $request->session()->get('formdata');
|
|
$finfo = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'id' => $id ]);
|
|
//echo '<pre>'; print_r($finfo); exit;
|
|
foreach($finfo->data->personalizations as $pers) {
|
|
if($pers->id == $finfo->data->formdata->personalization_id) {
|
|
$personalisation = $pers;
|
|
}
|
|
}
|
|
|
|
$genareted_image = [];
|
|
$pdf_images = [];
|
|
foreach($personalisation->templates as $i => $template) {
|
|
$temp = pathinfo($template);
|
|
if(!file_exists(storage_path('app/public/personalized/'.$formdata->form_id.'/template-'.$personalisation->id.'_'.$i.'.'.$temp['extension'] ))) {
|
|
//Log::debug(print_r($form_info['form_info'], true));
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, $template);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // good edit, thanks!
|
|
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // also, this seems wise considering output is image.
|
|
$data = curl_exec($ch);
|
|
curl_close($ch);
|
|
Storage::disk('public')->put('personalized/'.$formdata->form_id.'/template-'.$personalisation->id.'_'.$i.'.'.$temp['extension'], $data);
|
|
}
|
|
|
|
$folder = storage_path('app/public/personalized/'.$formdata->form_id);
|
|
$templatename = 'template-'.$personalisation->id.'_'.$i.'.'.$temp['extension'];
|
|
$outputImage = $this->retimage($folder.'/'.$templatename);
|
|
$templatesize = getimagesize( $folder.'/'.$templatename );
|
|
$pdfparams = ["width"=>$templatesize[0],"height"=>$templatesize[1]];
|
|
|
|
//echo '<pre>'; print_r($templatesize); echo '</pre>'; exit;
|
|
$positions = json_decode($personalisation->positions[$i]);
|
|
$maskimages = [];
|
|
foreach($positions as $pos) {
|
|
if($pos->type == 'image' && isset($pos->fill) && $pos->fill == 'mask') {
|
|
$maskimages[] = $pos;
|
|
}
|
|
}
|
|
if(sizeof($maskimages) > 0) {
|
|
$w = imagesx($outputImage);
|
|
$h = imagesy($outputImage);
|
|
$tempimage = imagecreatetruecolor($w, $h);
|
|
}
|
|
foreach($maskimages as $pos) {
|
|
$image = storage_path( str_replace('/storage', 'app/public', $finfo->data->formdata->{$pos->field_name} ) );
|
|
$photoimg = $this->retimage( $image );
|
|
$photosize = getimagesize( $image );
|
|
imagecopyresized($tempimage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
|
|
}
|
|
if(sizeof($maskimages) > 0) {
|
|
imagecopyresized($tempimage,$outputImage,0,0,0,0,$w,$h,$w,$h);
|
|
$outputImage = $tempimage;
|
|
}
|
|
foreach(json_decode($personalisation->positions[$i]) as $pos) {
|
|
// if($pos->field_name == 'link') {
|
|
// $pdfparams['link_params_x'] = $pos->x;
|
|
// $pdfparams['link_params_y'] = $pos->y;
|
|
// $pdfparams['link_params_url'] = $finfo->data->formdata->{$pos->field_name};
|
|
// continue;
|
|
// }
|
|
switch($pos->type) {
|
|
case 'image':
|
|
if(!(isset($pos->fill) && $pos->fill == 'mask')) {
|
|
$image = storage_path( str_replace('/storage', 'app/public', $finfo->data->formdata->{$pos->field_name} ) );
|
|
$photoimg = $this->retimage( $image );
|
|
$photosize = getimagesize( $image );
|
|
imagecopyresized($outputImage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]);
|
|
}
|
|
break;
|
|
case 'text':
|
|
case 'date':
|
|
if(isset($finfo->data->formdata->{$pos->field_name})) {
|
|
$font = storage_path('app').'/fonts/'.$pos->font;
|
|
$pos->color = explode('-',$pos->color);
|
|
$white = imagecolorallocate($outputImage, $pos->color[0], $pos->color[1], $pos->color[2]);
|
|
$text = $finfo->data->formdata->{$pos->field_name};
|
|
if(isset($pos->prefix) && !empty($pos->prefix)) {
|
|
$text = $pos->prefix . $text;
|
|
}
|
|
if($pos->type == 'date') {
|
|
$text = date($pos->format, strtotime($text));
|
|
}
|
|
if(isset($pos->suffix) && !empty($pos->suffix)) {
|
|
$text = $text . $pos->suffix;
|
|
}
|
|
if(isset($pos->align) && $pos->align == 'center') {
|
|
$box = imagettfbbox($pos->size, 0, $font, $text);
|
|
$pos->x = explode('-', $pos->x);
|
|
$pos->x = $pos->x[0] + (($pos->x[1] - $pos->x[0]) - $box[2])/2;
|
|
}
|
|
imagettftext($outputImage, $pos->size, 0, $pos->x, $pos->y, $white, $font, $text);
|
|
}
|
|
break;
|
|
|
|
case 'multiline':
|
|
if(isset($finfo->data->formdata->{$pos->field_name})) {
|
|
$font = storage_path('app').'/fonts/'.$pos->font;
|
|
$pos->color = explode('-',$pos->color);
|
|
$white = imagecolorallocate($outputImage, $pos->color[0], $pos->color[1], $pos->color[2]);
|
|
$text = $form_info[$pos->field_name];
|
|
$lines = wordwrap($text, $pos->linechars, "\n", true);
|
|
$xPosition = $pos->x;
|
|
$yPosition = $pos->y;
|
|
foreach (explode("\n", $lines) as $line) {
|
|
imagettftext($outputImage, $pos->size, 0, $xPosition, $yPosition, $white, $font, $line);
|
|
$yPosition += $pos->linehieght;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
$filename = 'generated-'.strtotime("now").'_'.$i.'.png';
|
|
$genareted_image[] = $filename;
|
|
|
|
imagepng($outputImage, $folder.'/'.$filename);
|
|
imagedestroy($outputImage);
|
|
|
|
$res = ['folder' => 'personalized/'.$formdata->form_id.'/', 'images' => $genareted_image, 'form_info' => (array)$finfo->data->formdata ];
|
|
if (\View::exists('form.'.$formdata->partition.'.download-'.$formdata->form_id)) {
|
|
return view('form.'.$formdata->partition.'.download-'.$formdata->form_id)->with($res);
|
|
} else {
|
|
return view('form.download')->with($res);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function downloadpersonalizationzip($files, Request $request) {
|
|
$post = $request->input();
|
|
$files = json_decode(base64_decode($files));
|
|
|
|
$folder = storage_path('app/public/personalized');
|
|
$zip = new \ZipArchive();
|
|
$fileName = 'assets.zip';
|
|
exec('rm ' . $folder.'/'.$fileName);
|
|
if ($zip->open($folder.'/'.$fileName, \ZipArchive::CREATE)== TRUE){
|
|
//$files = File::files(public_path('myFiles'));
|
|
foreach ($files as $file){
|
|
$zip->addFile($file, basename($file));
|
|
}
|
|
$zip->close();
|
|
}
|
|
|
|
return response()->download($folder.'/'.$fileName);
|
|
|
|
// echo '<prE>'; print_r($files); exit;
|
|
}
|
|
|
|
protected function sanitizeForCSV($value) {
|
|
$value = trim($value);
|
|
if (preg_match('/^[=+\-@]/', $value)) {
|
|
return "'".$value;
|
|
}
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* Check if cache is working correctly
|
|
*/
|
|
protected function isCacheWorking() {
|
|
try {
|
|
$testKey = 'cache_test_' . time();
|
|
$testValue = 'test_' . rand(1000, 9999);
|
|
|
|
// Try to write and read from cache
|
|
Cache::put($testKey, $testValue, 10);
|
|
$retrieved = Cache::get($testKey);
|
|
|
|
// Clean up
|
|
Cache::forget($testKey);
|
|
|
|
return $retrieved === $testValue;
|
|
} catch (\Exception $e) {
|
|
Log::warning('Cache check failed: ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Rate limiting using cache
|
|
*/
|
|
protected function checkRateLimitCache($ip, $limit = 10, $window = 60) {
|
|
$cacheKey = 'downloaddata_rate_limit_' . md5($ip);
|
|
$currentTime = time();
|
|
|
|
$cacheData = Cache::get($cacheKey);
|
|
|
|
if (!$cacheData || !isset($cacheData['reset_at']) || $currentTime >= $cacheData['reset_at']) {
|
|
$cacheData = [
|
|
'count' => 0,
|
|
'reset_at' => $currentTime + $window
|
|
];
|
|
}
|
|
|
|
if ($cacheData['count'] >= $limit) {
|
|
$retryAfter = max(1, $cacheData['reset_at'] - $currentTime);
|
|
return [
|
|
'allowed' => false,
|
|
'retry_after' => $retryAfter
|
|
];
|
|
}
|
|
|
|
$cacheData['count']++;
|
|
$ttl = max($window, $cacheData['reset_at'] - $currentTime);
|
|
Cache::put($cacheKey, $cacheData, $ttl + 5);
|
|
|
|
return [
|
|
'allowed' => true,
|
|
'remaining' => $limit - $cacheData['count']
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Ensure rate_limit_logs table exists
|
|
*/
|
|
protected function ensureRateLimitTable() {
|
|
try {
|
|
// Check if table exists
|
|
if (!DB::getSchemaBuilder()->hasTable('rate_limit_logs')) {
|
|
DB::statement("CREATE TABLE IF NOT EXISTS `rate_limit_logs` (
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
|
`ip_hash` varchar(64) NOT NULL,
|
|
`endpoint` varchar(255) NOT NULL,
|
|
`request_count` int(11) NOT NULL DEFAULT 0,
|
|
`reset_at` int(11) NOT NULL,
|
|
`created_at` timestamp NULL DEFAULT NULL,
|
|
`updated_at` timestamp NULL DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ip_endpoint` (`ip_hash`, `endpoint`),
|
|
KEY `reset_at` (`reset_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
|
|
}
|
|
} catch (\Exception $e) {
|
|
Log::error('Failed to create rate_limit_logs table: ' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Rate limiting using database
|
|
*/
|
|
protected function checkRateLimitDatabase($ip, $endpoint, $limit = 10, $window = 60) {
|
|
try {
|
|
$this->ensureRateLimitTable();
|
|
|
|
$ipHash = md5($ip);
|
|
$currentTime = time();
|
|
$oneMinuteAgo = $currentTime - 60; // 1 minute ago in seconds
|
|
|
|
// First, delete all entries before 1 minute (older than 1 minute)
|
|
// Delete entries where created_at is older than 1 minute ago
|
|
DB::table('rate_limit_logs')
|
|
->where('endpoint', $endpoint)
|
|
->where('created_at', '<', date('Y-m-d H:i:s', $oneMinuteAgo))
|
|
->delete();
|
|
|
|
// Calculate total number of records in the table for this endpoint
|
|
$totalRecords = DB::table('rate_limit_logs')
|
|
->where('endpoint', $endpoint)
|
|
->count();
|
|
|
|
// If total records is more than or equal to 10, return 429 response
|
|
if ($totalRecords >= $limit) {
|
|
return [
|
|
'allowed' => false,
|
|
'retry_after' => 60, // Retry after 1 minute
|
|
'remaining' => 0
|
|
];
|
|
}
|
|
|
|
// If less than 10, make an entry and continue
|
|
DB::table('rate_limit_logs')->insert([
|
|
'ip_hash' => $ipHash,
|
|
'endpoint' => $endpoint,
|
|
'request_count' => 1,
|
|
'reset_at' => $currentTime + $window,
|
|
'created_at' => date('Y-m-d H:i:s'),
|
|
'updated_at' => date('Y-m-d H:i:s')
|
|
]);
|
|
|
|
return [
|
|
'allowed' => true,
|
|
'remaining' => $limit - $totalRecords - 1
|
|
];
|
|
|
|
} catch (\Exception $e) {
|
|
Log::error('Database rate limiting failed: ' . $e->getMessage());
|
|
// If database fails, allow the request (fail open)
|
|
return ['allowed' => true, 'remaining' => $limit];
|
|
}
|
|
}
|
|
|
|
public function downloaddata(Request $request) {
|
|
// Rate limiting: 10 requests per minute per IP
|
|
$ip = $request->ip() ?? $request->header('X-Forwarded-For') ?? $request->server('REMOTE_ADDR') ?? 'unknown';
|
|
// Handle X-Forwarded-For header which can contain multiple IPs
|
|
if (strpos($ip, ',') !== false) {
|
|
$ips = array_map('trim', explode(',', $ip));
|
|
$ip = $ips[0];
|
|
}
|
|
$ip = trim($ip);
|
|
|
|
// Check rate limit - try cache first, fallback to database
|
|
$rateLimitResult = null;
|
|
$useCache = true;
|
|
$endpoint = 'downloaddata';
|
|
|
|
// Static variable to cache the cache check result (avoid checking on every request)
|
|
// static $cacheWorking = null;
|
|
// if ($cacheWorking === null) {
|
|
// $cacheWorking = $this->isCacheWorking();
|
|
// }
|
|
|
|
// if ($cacheWorking) {
|
|
// $rateLimitResult = $this->checkRateLimitCache($ip, 10, 60);
|
|
// // If cache check fails, try database
|
|
// if (!$rateLimitResult || !isset($rateLimitResult['allowed'])) {
|
|
// $cacheWorking = false; // Mark cache as not working
|
|
// }
|
|
// }
|
|
|
|
// // If cache is not working or cache check failed, use database
|
|
// if (!$cacheWorking || !$rateLimitResult || !isset($rateLimitResult['allowed'])) {
|
|
// $rateLimitResult = $this->checkRateLimitDatabase($ip, $endpoint, 10, 60);
|
|
// }
|
|
|
|
$rateLimitResult = $this->checkRateLimitDatabase($ip, $endpoint, 10, 60);
|
|
// If rate limit exceeded, return 429
|
|
if (!$rateLimitResult['allowed']) {
|
|
$retryAfter = $rateLimitResult['retry_after'];
|
|
return response()->json([
|
|
'error' => 'Rate limit exceeded',
|
|
'message' => 'Too many requests. Please try again in ' . $retryAfter . ' seconds.',
|
|
'retry_after' => $retryAfter
|
|
], 429)->header('Retry-After', $retryAfter)
|
|
->header('X-RateLimit-Limit', '10')
|
|
->header('X-RateLimit-Remaining', '0');
|
|
}
|
|
|
|
$formdata = $request->session()->get('formdata');
|
|
//$request->session()->put('finfo', $finfo);
|
|
$post = $request->all();
|
|
// Log::debug(print_r($formdata, true));
|
|
// if(is_array($formdata)) {
|
|
// $formdata = (object)$formdata;
|
|
// }
|
|
|
|
|
|
|
|
if (is_object($formdata) && property_exists($formdata, 'form_id')) {
|
|
$form_id = $request->input('form_id', $formdata->form_id);
|
|
} else {
|
|
return response()->json([
|
|
'error' => 'Form data not found',
|
|
'message' => 'Form information was not found or not valid.'
|
|
], 404);
|
|
}
|
|
if(($form_id == '1718178830-d871301e-312b-4a60-9c68-15afa4ce6163' && (in_array('1655449173-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449172-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449171-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449687-6ea4a5f3-4eb6-48b0-9bd5-2ddf08e44ef79', $formdata->roles) || in_array('1655449685-6ea4a5f3-4eb6-48b0-9bd5-2ddf08e44ef75', $formdata->roles) || in_array('1655449682-6ea4a5f3-4eb6-48b0-9bd5-2ddf08e44ef7', $formdata->roles) || in_array('1655449171-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449172-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449173-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449174-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449175-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449176-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449177-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449178-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449179-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) ) ) ||
|
|
(($form_id == '1713425460-8bdf7394-01b5-48f3-8985-343b465dd685' || $form_id == '1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a') && (in_array('1655449175-a39a5017-8232-4d58-edm-90d06bc733d0', $formdata->roles) || in_array('1655445669-148e5dc2-3983-4ec6-bfho-a52c494a92132', $formdata->roles) || in_array('1655449179-a39a5017-8232-4d58-rbm-90d06bc733d0', $formdata->roles) ) ) ) {
|
|
$finfo = $request->session()->get('finfo');
|
|
$history = LambdaRequest::postrequest('form', 'formentity/getforminfo', ['finfo' => $finfo, 'limit' => 99999]);
|
|
//echo '<pre>'; print_r($finfo); exit;
|
|
} else {
|
|
$serviceParams = [
|
|
'form_id' => $form_id,
|
|
'user_id' => $formdata->user_id,
|
|
'partition' => $formdata->partition,
|
|
'team_report' => 1,
|
|
'json_file' => 1
|
|
];
|
|
if (isset($formdata->all_data_access) && $formdata->all_data_access == true) {
|
|
$serviceParams['alldata'] = 1;
|
|
}
|
|
$startdate = $request->input('startdate', '');
|
|
$enddate = $request->input('enddate', '');
|
|
if($startdate != '' && $enddate != '') {
|
|
$serviceParams['date_range'] = [$startdate, $enddate];
|
|
}
|
|
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', $serviceParams);
|
|
// echo '<pre>'; print_r($history); exit;
|
|
|
|
$history->data->submissions = json_decode(file_get_contents( $history->data->submission_json ), false);
|
|
$history->data->submissions = $history->data->submissions->submissions;
|
|
}
|
|
//echo '<pre>';
|
|
// Log::debug(print_r($serviceParams, true));
|
|
// echo '<pre>'; print_r($formdata); exit;
|
|
$exceldata = [];
|
|
$exceldata[] = [$formdata->title];
|
|
|
|
$exceldata[] = [''];
|
|
$headers = ['Submission Date', 'Submitted By', 'Employee Code', 'Approval Status'];
|
|
if(isset($history->data) && isset($history->data->form) && isset($history->data->form->show_position) && $history->data->form->show_position === 'yes'){
|
|
$headers = array_merge( $headers, ['Territory', 'Area', 'Region', 'Zone'] );
|
|
}
|
|
foreach($history->data->questions as $question) {
|
|
$headers[] = $question->label;
|
|
}
|
|
$exceldata[] = $headers;
|
|
foreach($history->data->submissions as $submission) {
|
|
$row = [];
|
|
$row[] = $submission->createdAt;
|
|
$row[] = isset($submission->user_info->name) ? $submission->user_info->name : '';
|
|
$row[] = isset($submission->user_info->employee_code) ? $submission->user_info->employee_code : '';
|
|
$row[] = isset($submission->workflow_status) ? $submission->workflow_status : '';
|
|
if(isset($history->data) && isset($history->data->form) && isset($history->data->form->show_position) && $history->data->form->show_position === 'yes'){
|
|
$row[] = isset($submission->territory) ? $submission->territory : '';
|
|
$row[] = isset($submission->area) ? $submission->area : '';
|
|
$row[] = isset($submission->region) ? $submission->region : '';
|
|
$row[] = isset($submission->zone) ? $submission->zone : '';
|
|
}
|
|
foreach($history->data->questions as $q => $v) {
|
|
$row[] = isset($submission->formdata->{$q}) ? $submission->formdata->{$q} : '-';
|
|
}
|
|
$exceldata[] = $row;
|
|
}
|
|
|
|
|
|
if(isset($post['email']) && $post['email'] == 1) {
|
|
$report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
|
|
$data = new \StdClass;
|
|
$data->sender_name = 'Rapport Support';
|
|
$data->sender_email = 'support@stratawiz.com';
|
|
$data->subject = 'Attached Report';
|
|
$data->body = '';
|
|
$data->attachment = $report;
|
|
$data->attachment_name = 'report.xlsx';
|
|
|
|
Mail::to( $history->data->user_details[0]->email )->send(new ReportExcel($data));
|
|
|
|
response()->json(['status' => 'success']);
|
|
} else {
|
|
return Excel::download(new InvoicesExport($exceldata), $formdata->title.'.xlsx');
|
|
}
|
|
|
|
|
|
|
|
//echo $report;
|
|
// Excel::create($formdata->title, function($excel) {
|
|
// $excel->sheet('Form Data', function($sheet) {
|
|
// $sheet->fromArray($exceldata);
|
|
// });
|
|
// });
|
|
|
|
|
|
// Excel::create(new InvoicesExport($exceldata), 'public/'.$filename)->download('xlsx');
|
|
|
|
// $report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
|
|
// $data->attachment = $report;
|
|
// $data->attachment_name = 'report.xlsx';
|
|
|
|
// //Mail::to( str_replace(Auth::user()->domain.'-','', Auth::user()->email) )->send(new ReportExcel($data));
|
|
// //Mail::to( 'ravigulhane1983@gmail.com' )->send(new ReportExcel($data));
|
|
// if($s3) {
|
|
// $filename = 'reports/'.strtotime("now").'-report.xlsx';
|
|
// $res = Excel::store(new InvoicesExport($exceldata), 'public/'.$filename);
|
|
// Log::debug(print_r($res, true));
|
|
// Log::debug('/storage/'.$filename);
|
|
// return response()->json(['sent' => 'yes', 'filename' => '/storage/'.$filename]);
|
|
// } else {
|
|
// Mail::to( $response->data->user->email )->send(new ReportExcel($data));
|
|
// return response()->json(['sent' => 'yes']);
|
|
// }
|
|
|
|
|
|
|
|
// echo '<pre>'; print_r($history); print_r($formdata); exit;
|
|
|
|
// $form_id = $request->input('form_id', '');
|
|
// echo $form_id; exit;
|
|
}
|
|
|
|
protected function retimage($image) {
|
|
$size = getimagesize($image);
|
|
switch ($size['mime']) {
|
|
case 'image/jpeg':
|
|
$photoimg = imagecreatefromjpeg($image);
|
|
break;
|
|
case 'image/png':
|
|
$photoimg = imagecreatefrompng($image);
|
|
break;
|
|
case 'image/jpeg':
|
|
$photoimg = imagecreatefrompng($image);
|
|
break;
|
|
default:
|
|
# code...
|
|
break;
|
|
}
|
|
return $photoimg;
|
|
}
|
|
|
|
public function getdoctorlist(Request $request) {
|
|
|
|
$fields = $request->input('fields', '');
|
|
|
|
$params = [
|
|
'hierarchy' => $request->input('hierarchy', ''),
|
|
'partition' => $request->input('partition', ''),
|
|
];
|
|
|
|
if (!empty($fields)) {
|
|
$params['fields'] = $fields;
|
|
}
|
|
|
|
$response = LambdaRequest::getrequest(
|
|
'contact',
|
|
'contact/get_my_contacts',
|
|
$params
|
|
);
|
|
|
|
Log::debug(print_r(['getdoctorlist'], true));
|
|
Log::debug(print_r($response, true));
|
|
|
|
|
|
// $response = LambdaRequest::getrequest('contact', 'contact/get_my_contacts', ['hierarchy' => $request->input('hierarchy', ''), 'partition' => $request->input('partition', '') ]);
|
|
$docs = [];
|
|
foreach($response->data->items as $item) {
|
|
$docs[] = ['value' => $item->id, 'display' => $item->name, 'contact' => $item];
|
|
}
|
|
return response()->json($docs);
|
|
}
|
|
|
|
public function surveyhandle($finfo, Request $request) {
|
|
$request->session()->put('finfo', $finfo);
|
|
$finfo = LambdaRequest::postrequest('form', 'survey/getforminfo', ['finfo' => $finfo]);
|
|
// echo '<pre>'; print_r($finfo); exit;
|
|
$request->session()->put('formdata', $finfo->data->formdata);
|
|
if($finfo->status == 'success' && $finfo->data->formdata->link_type == 'form') {
|
|
//return $this->deliverform($finfo->data->formdata, $finfo->data->questions);
|
|
$formdata = $finfo->data->formdata;
|
|
$questions = $finfo->data->questions;
|
|
$data = ['questions' => $questions, 'form' => $formdata, 'form_id' => $formdata->form_id, 'id' => false];
|
|
if (\View::exists('srvey.'.$formdata->partition.'.'.$formdata->form_id)) {
|
|
return view('srvey.'.$formdata->partition.'.'.$formdata->form_id)->with($data);
|
|
} elseif (\View::exists('form.'.$formdata->form_id)) {
|
|
return view('srvey.'.$formdata->form_id)->with($data);
|
|
} else {
|
|
// return $data;
|
|
return view('srvey.common')->with($data);
|
|
}
|
|
|
|
} elseif($finfo->status == 'success' && $finfo->data->formdata->link_type == 'list') {
|
|
//echo '<pre>'; print_r($finfo->data); exit;
|
|
if (\View::exists('survey.list-'.$finfo->data->formdata->form_id)) {
|
|
return view('srvey.list-'.$finfo->data->formdata->form_id)->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey ]);
|
|
} else {
|
|
return view('srvey.list')->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey ]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function ajaxsurveysubmit(Request $request) {
|
|
$post = $request->except('_token');
|
|
$files = $request->file();
|
|
foreach($files as $fname => $file) {
|
|
$post[$fname] = $this->_uploadMedia($request, $fname, 'form/'.$post['form_id'].'/'.$fname);
|
|
}
|
|
if(isset($post['id']) && $post['id']=='') unset($post['id']);
|
|
$formdata = $request->session()->get('formdata');
|
|
if(isset($post['user_id']) && $post['user_id'] != '') {
|
|
$formdata->user_id = $post['user_id'];
|
|
}
|
|
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
|
|
$post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
|
|
$finfo = LambdaRequest::postrequest('form', 'survey/submitform', ['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
|
|
if($formdata->form_id == '1674212914-9f377f34-4762-4b40-team3-8b282d183332') {
|
|
unset($post['form_id']);
|
|
Log::debug(print_r($post, true));
|
|
//echo '<pre>'; print_r($post); exit;
|
|
$handler = curl_init();
|
|
curl_setopt($handler, CURLOPT_URL, "https://gnpdoctor.buildrapport.co/neblogisticsave/ciplatodoctor");
|
|
curl_setopt($handler, CURLOPT_POSTFIELDS, http_build_query($post));
|
|
curl_setopt($handler, CURLOPT_POST, 1);
|
|
curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
|
|
$response = curl_exec($handler);
|
|
Log::debug(print_r($response, true));
|
|
}
|
|
if($formdata->form_id == '1711710347-b4f08442-60dc-4a4c-a9c7-a759d95c5cad') {
|
|
unset($post['form_id']);
|
|
Log::debug(print_r($post, true));
|
|
$handler = curl_init();
|
|
curl_setopt($handler, CURLOPT_URL, "https://gnpdoctor.buildrapport.co/neblogisticsave/faultynebulizer");
|
|
curl_setopt($handler, CURLOPT_POSTFIELDS, http_build_query($post));
|
|
curl_setopt($handler, CURLOPT_POST, 1);
|
|
curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
|
|
$response = curl_exec($handler);
|
|
Log::debug(print_r($response, true));
|
|
}
|
|
|
|
if($finfo->status == 'success') {
|
|
return response()->json(['status' => 'success']);
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
}
|
|
|
|
public function quizhandle($finfo, Request $request) {
|
|
$request->session()->put('finfo', $finfo);
|
|
$finfo = LambdaRequest::postrequest('form', 'quiz/getforminfo', ['finfo' => $finfo]);
|
|
//echo '<pre>'; print_r($finfo); exit;
|
|
$request->session()->put('formdata', $finfo->data->formdata);
|
|
if($finfo->status == 'success' && $finfo->data->formdata->link_type == 'form') {
|
|
//return $this->deliverform($finfo->data->formdata, $finfo->data->questions);
|
|
$formdata = $finfo->data->formdata;
|
|
$questions = $finfo->data->questions;
|
|
$quiztype = isset($formdata->quiz_type) ? $formdata->quiz_type : 'quiz';
|
|
|
|
$data = ['questions' => $questions, 'form' => $formdata, 'form_id' => $formdata->form_id, 'id' => false];
|
|
if (\View::exists($quiztype.'.'.$formdata->partition.'.'.$formdata->form_id)) {
|
|
return view($quiztype.'.'.$formdata->partition.'.'.$formdata->form_id)->with($data);
|
|
} elseif (\View::exists($quiztype.'.'.$formdata->form_id)) {
|
|
return view($quiztype.'.'.$formdata->form_id)->with($data);
|
|
} else {
|
|
// return $data;
|
|
return view($quiztype.'.common')->with($data);
|
|
}
|
|
|
|
} elseif($finfo->status == 'success' && $finfo->data->formdata->link_type == 'list') {
|
|
//echo '<pre>'; print_r($finfo->data); exit;
|
|
if (\View::exists('quiz.list-'.$finfo->data->formdata->form_id)) {
|
|
return view('quiz.list-'.$finfo->data->formdata->form_id)->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey ]);
|
|
} else {
|
|
return view('quiz.list')->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey ]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function ajaxquizsubmit(Request $request) {
|
|
$post = $request->except('_token');
|
|
$formdata = $request->session()->get('formdata');
|
|
//print_r($formdata); exit;
|
|
|
|
|
|
if(isset($post['user_id']) && $post['user_id'] != '') {
|
|
$formdata->user_id = $post['user_id'];
|
|
}
|
|
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
|
|
//echo '<pre>'; print_r(['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]); exit;
|
|
$finfo = LambdaRequest::postrequest('form', 'quiz/submitform', ['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
|
|
//echo '<pre>'; print_r($finfo); exit;
|
|
if($finfo->status == 'success') {
|
|
return response()->json(['status' => 'success', 'submission' => $finfo->data->submission, 'answers' => $finfo->data->answers]);
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
}
|
|
|
|
public function zipmultiple(Request $request) {
|
|
$files = $request->input('files', []);
|
|
$response = LambdaRequest::postrequest('form', 'formentity/zipmultiple', ['files' => $files], '');
|
|
//Log::debug(print_r($response, true));
|
|
return response()->json($response->data);
|
|
}
|
|
|
|
public function competitioncontest(Request $request) {
|
|
$token = $request->header('Authorization');
|
|
if($token != '') {
|
|
$request->session()->put('metric_access_key', $token);
|
|
} else {
|
|
$token = $request->session()->get('metric_access_key');
|
|
}
|
|
|
|
$page = $request->input('page', 'scores');
|
|
switch($page) {
|
|
case 'scores':
|
|
$response = LambdaRequest::getrequest('competition', 'contest/list', ['scores' => 'yes'], $token);
|
|
return view('competition.appcontest', ['title' => 'Live Scores', 'scores' => $response->data->items, 'page' => $page]);
|
|
break;
|
|
case 'schedule':
|
|
$response = LambdaRequest::getrequest('competition', 'contest/list', [], $token);
|
|
return view('competition.appcontest', ['title' => 'Schedule', 'schedules' => $response->data->items, 'page' => $page]);
|
|
break;
|
|
case 'table':
|
|
$response = LambdaRequest::getrequest('ums', 'team/list', [], $token);
|
|
return view('competition.appcontest', ['title' => 'Points Table', 'teams' => $response->data->items, 'page' => $page]);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function iframeupload(Request $request) {
|
|
return view('form.iframeupload');
|
|
}
|
|
|
|
public function allsubmissions(Request $request) {
|
|
$post = $request->all();
|
|
$user = Auth::user();
|
|
$filters = $post;
|
|
unset($filters['partition']);
|
|
unset($filters['form_id']);
|
|
unset($filters['download']);
|
|
//print_r(['partition' => $post['partition'], 'form_id'=>$post['form_id'], 'filters' => json_encode($filters) ]); exit;
|
|
if($post['form_id'] == '1718178830-d871301e-312b-4a60-nebmitra-15afa4ce6163' && in_array("1655449175-a39a5017-8232-4d58-NEBMITRAABM-90d06bc733d0", json_decode($user->roles) )) {
|
|
$history = LambdaRequest::signedrequest('post', 'form', 'formentity/getallsubmissions', ['partition' => $post['partition'], 'form_id'=>$post['form_id'], 'hierarchy' => $user->hierarchy, 'filters' => json_encode($filters) ], 120);
|
|
} else {
|
|
$history = LambdaRequest::signedrequest('post', 'form', 'formentity/getallsubmissions', ['partition' => $post['partition'], 'form_id'=>$post['form_id'], 'limit' => 500, 'filters' => json_encode($filters) ], 360);
|
|
}
|
|
|
|
if ($post['form_id'] == '1713351143-9afc68f4-653f-491a-9e0e-a27d61ed1e07') {
|
|
$codes = [
|
|
'zadonase_tablets_10s',
|
|
'zadonase_tablets_10s_camp',
|
|
'quicnac_ab_tablets_100600_mg10s',
|
|
'quicnac_ab_tablets_100600_mg10s_camp',
|
|
'quicnac_tablets_600mg_10s',
|
|
'quicnac_tablets_600mg_10s_camp',
|
|
'pulmosmart_05_mg_pulmules_2_ml',
|
|
'pulmosmart_05_mg_pulmules_2_ml_camp',
|
|
'pulmosmart_1mg_pulmules_2_ml',
|
|
'pulmosmart_1mg_pulmules_2_ml_camp',
|
|
'budasure_l_05_mg_pulmules_2_ml',
|
|
'budasure_l_05_mg_pulmules_2_ml_camp',
|
|
'pulmosmart_200_pulmicaps_30s',
|
|
'pulmosmart_200_pulmicaps_30s_camp',
|
|
'pulmosmart_400_pulmicaps_30s',
|
|
'pulmosmart_400_pulmicaps_30s_camp',
|
|
'pulmosmart_dose_counter_mdi_200_inhaler',
|
|
'pulmosmart_dose_counter_mdi_200_inhaler_camp',
|
|
'pulmosmart_g',
|
|
'pulmosmart_g_camp',
|
|
'glycoquic_f',
|
|
'glycoquic_f_camp',
|
|
'iprasure_ls',
|
|
'iprasure_ls_camp',
|
|
'viloresp_200',
|
|
'viloresp_200_camp',
|
|
'pulmosmart_dose_counter_mdi_400_inhaler',
|
|
'pulmosmart_dose_counter_mdi_400_inhaler_camp',
|
|
'pulmosmart_pulmules_2_ml',
|
|
'pulmosmart_pulmules_2_ml_camp',
|
|
'innohaler_dpi_device',
|
|
'innohaler_dpi_device_camp',
|
|
'innospacer',
|
|
'innospacer_camp',
|
|
'budasure_pulmules_2ml',
|
|
'budasure_pulmules_2ml_camp',
|
|
'fibnib_capsules_100_10s',
|
|
'fibnib_capsules_100_10s_camp',
|
|
'fibnib_capsules_150_10s',
|
|
'fibnib_capsules_150_10s_camp',
|
|
'viloresp_pulmicaps_capsules_15_sale',
|
|
'viloresp_pulmicaps_capsules_15_sale_camp',
|
|
'iprasure_pulmules_25_ml',
|
|
'iprasure_pulmules_25_ml_camp',
|
|
'clearneb_pulmules_3_wv_4ml_amp',
|
|
'clearneb_pulmules_3_wv_4ml_amp_camp',
|
|
'glycoquic_pulmules_25mcg_2mlsales',
|
|
'glycoquic_pulmules_25mcg_2mlsales_camp',
|
|
'total_clinic_business',
|
|
'total_clinic_business_camp',
|
|
'total-camp-business_pts_value',
|
|
'total-clinic-business_pts_value',
|
|
'patient_rx_count',
|
|
'patient_rx_count_camp',
|
|
'total_competitor_business',
|
|
'total_competitor_business_camp',
|
|
];
|
|
if (isset($history->data->questions) && is_array($history->data->questions)) {
|
|
$history->data->questions = array_values(array_filter($history->data->questions, function($que) use ($codes) {
|
|
return !in_array($que->code ?? null, $codes);
|
|
}));
|
|
}
|
|
}
|
|
|
|
|
|
if(isset($post['download'])) {
|
|
$exceldata = [];
|
|
$headers = ['User Name','User Email','User Phone', 'Submitted On'];
|
|
foreach($history->data->questions as $que) {
|
|
$headers[] = $que->question;
|
|
}
|
|
$exceldata[] = $headers;
|
|
$submissions = json_decode(file_get_contents( $history->data->submission_json ), false);
|
|
//echo '<pre>'; print_r($submissions); exit;
|
|
foreach($submissions as $sub) {
|
|
$subs = [$sub->submitted_by, $sub->user_email, $sub->user_phone, $sub->submitted_on];
|
|
foreach($history->data->questions as $que) {
|
|
$subs[] = isset($que->code) && isset($sub->{$que->code}) ? $sub->{$que->code} : '-';
|
|
}
|
|
$exceldata[] = $subs;
|
|
}
|
|
$report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
|
|
$filename = 'reports/'.$post['form_id'].'-report.xlsx';
|
|
$res = Excel::store(new InvoicesExport($exceldata), 'public/'.$filename);
|
|
$headers = array( 'Content-Type: application/excel', );
|
|
return Response::download(storage_path('app/public')."/".$filename, $post['form_id'].'-report.xlsx', $headers);
|
|
} else {
|
|
//echo '<pre>'; print_r($history); exit;
|
|
if (\View::exists('form.'.$post['partition'].'.'.$post['form_id'].'-allsubmissions')) {
|
|
return view('form.'.$post['partition'].'.'.$post['form_id'].'-allsubmissions')->with((array)$history->data);
|
|
} elseif (\View::exists('form.'.$post['form_id'].'-allsubmissions')) {
|
|
return view('form.'.$post['form_id'].'-allsubmissions')->with((array)$history->data);
|
|
} else {
|
|
return view('form.allsubmissions')->with((array)$history->data);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function fullworkflow(Request $request) {
|
|
$post = $request->all();
|
|
$user = Auth::user();
|
|
$history = LambdaRequest::signedrequest('post', 'form', 'formentity/getallsubmissions', ['form_id' => $post['form_id'], 'approver' => Auth::user()->user_id, 'partition' => $post['partition']], 120);
|
|
//echo '<pre>'; print_r($history); exit;
|
|
if(isset($post['download'])) {
|
|
$exceldata = [];
|
|
$headers = ['User Name','User Email','User Phone', 'Submitted On'];
|
|
foreach($history->data->questions as $que) {
|
|
$headers[] = $que->question;
|
|
}
|
|
$exceldata[] = $headers;
|
|
$submissions = json_decode(file_get_contents( $history->data->submission_json ), false);
|
|
foreach($submissions as $sub) {
|
|
$subs = [$sub->submitted_by, $sub->user_email, $sub->user_phone, $sub->submitted_on];
|
|
foreach($history->data->questions as $que) {
|
|
$subs[] = $sub->{$que->code};
|
|
}
|
|
$exceldata[] = $subs;
|
|
}
|
|
$report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
|
|
$filename = 'reports/'.$post['form_id'].'-report.xlsx';
|
|
$res = Excel::store(new InvoicesExport($exceldata), 'public/'.$filename);
|
|
$headers = array( 'Content-Type: application/excel', );
|
|
return Response::download(storage_path('app/public')."/".$filename, $post['form_id'].'-report.xlsx', $headers);
|
|
} else {
|
|
//echo '<pre>'; print_r((array)$history->data); exit;
|
|
if (\View::exists('form.'.$post['partition'].'.'.$post['form_id'].'-fullworkflow')) {
|
|
return view('form.'.$post['partition'].'.'.$post['form_id'].'-fullworkflow')->with((array)$history->data);
|
|
} elseif (\View::exists('form.'.$post['form_id'].'-fullworkflow')) {
|
|
return view('form.'.$post['form_id'].'-fullworkflow')->with((array)$history->data);
|
|
} else {
|
|
return view('form.fullworkflow')->with((array)$history->data);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function uploadchunk(Request $request) {
|
|
$path = '';
|
|
$name = 'chunk_video';
|
|
$folder = 'chunk_video';
|
|
try {
|
|
if( $request->file($name) ) {
|
|
$path = $request->file($name)->store($folder);
|
|
$path = '/'.str_replace('public', 'storage', $path);
|
|
}
|
|
} catch (AwsException $e) {
|
|
Log::debug($e->getMessage());
|
|
}
|
|
return response()->json(['status' => 'success', 'filepath' => $path ]);
|
|
return $path;
|
|
}
|
|
|
|
public function respidoctorsearch(Request $request) {
|
|
$search = $request->input('q', '');
|
|
$user_id = $request->input('user_id', '');
|
|
$doctors = DB::table('copd_respi_clinic_others_tagg')
|
|
->select("id","name","msl_code","speciality","legacy_code")
|
|
->where('user_id', $user_id)
|
|
->where(function ($query) use ($search) {
|
|
$query->where('name', 'like', '%'.$search.'%')
|
|
->orWhere('email', 'like', '%'.$search.'%')
|
|
->orWhere('msl_code', 'like', '%'.$search.'%')
|
|
->orWhere('speciality', 'like', '%'.$search.'%')
|
|
->orWhere('legacy_code', 'like', '%'.$search.'%');
|
|
})->get();
|
|
return response()->json(['doctors' => $doctors]);
|
|
}
|
|
|
|
public function addrespidoctor(Request $request) {
|
|
$id = $request->input('id', '');
|
|
$partition = $request->input('partition', '');
|
|
$user_id = $request->input('user_id', '');
|
|
list($application, $domain) = explode("-", $partition);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$doctor = DB::table('copd_respi_clinic_others_tagg')->where('id', $id)->first();
|
|
$contactdata = [
|
|
'domain' => $domain,
|
|
'application' => $application,
|
|
'user_id' => $user_id,
|
|
'name' => $doctor->name,
|
|
'email' => $doctor->email,
|
|
'phone' => $doctor->phone,
|
|
'msl_code' => $doctor->msl_code,
|
|
'speciality' => $doctor->speciality,
|
|
'legacy_code' => $doctor->legacy_code,
|
|
'respi_clinic_dr' => 'Yes',
|
|
];
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
|
|
|
|
return response()->json(['contact' => $cont->data->item]);
|
|
}
|
|
|
|
public function getidrivedoctowisedownload(Request $request) {
|
|
$post = $request->all();
|
|
$token = $request->header('Authorization', false);
|
|
if($token) {
|
|
$response = LambdaRequest::postrequest('rcpa', 'reports/doctorwise_download', $post, $token);
|
|
return Response::json($response);
|
|
} else {
|
|
return Response::json(['error' => 'Unauthorized']);
|
|
}
|
|
|
|
}
|
|
|
|
public function nebmitraverification(Request $request) {
|
|
$user = Auth::user();
|
|
//echo '<pre>'; print_r($user); exit;
|
|
$post = ['partition' => 'rapport-'.$user->domain, 'form_id' => '1718178830-d871301e-312b-4a60-nebmitra-15afa4ce6163'];
|
|
$filters = ["formdata.submission_status" => "Invoice Uploded"];
|
|
if(in_array("1655449175-a39a5017-8232-4d58-NEBMITRAABM-90d06bc733d0", json_decode($user->roles) )) {
|
|
$filters['hierarchy'] = $user->hierarchy;
|
|
//$history = LambdaRequest::signedrequest('post', 'form', 'formentity/getallsubmissions', ['form_id' => $post['form_id'], 'partition' => $post['partition'], 'hierarchy' => $user->hierarchy], 120);
|
|
} else {
|
|
//$history = LambdaRequest::signedrequest('post', 'form', 'formentity/getallsubmissions', ['form_id' => $post['form_id'], 'partition' => $post['partition'], 'filters' => json_encode($filters)], 120);
|
|
}
|
|
$history = LambdaRequest::signedrequest('post', 'form', 'formentity/getallsubmissions', ['form_id' => $post['form_id'], 'partition' => $post['partition'], 'filters' => json_encode($filters)], 120);
|
|
//echo '<pre>'; print_r($history); exit;
|
|
if (\View::exists('form.'.$post['partition'].'.'.$post['form_id'].'-allsubmissions')) {
|
|
return view('form.'.$post['partition'].'.'.$post['form_id'].'-allsubmissions')->with((array)$history->data);
|
|
} elseif (\View::exists('form.'.$post['form_id'].'-allsubmissions')) {
|
|
return view('form.'.$post['form_id'].'-allsubmissions')->with((array)$history->data);
|
|
} else {
|
|
return view('form.allsubmissions')->with((array)$history->data);
|
|
}
|
|
|
|
//echo '<pre>'; print_r($history); exit;
|
|
}
|
|
|
|
public function ajaxdoctortagging(Request $request) {
|
|
$post = $request->except('_token');
|
|
list($application, $domain) = explode("-", $post['partition']);
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
$contactdata = $post;
|
|
$contactdata['domain'] = $domain;
|
|
$contactdata['application'] = $application;
|
|
unset($contactdata['partition']);
|
|
$cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
|
|
Log::debug(print_r($contactdata, true));
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
public function pulmocarecoachingtool(Request $request) {
|
|
$type = $request->input('type', 'feedback');
|
|
if($type == 'goal') {
|
|
return view('pulmocarecoachingtool.'.$type);
|
|
} else {
|
|
return view('pulmocarecoachingtool.'.$type);
|
|
}
|
|
}
|
|
|
|
public function read_invoices(Request $request) {
|
|
$data = $request->all();
|
|
|
|
$invoice = LambdaRequest::signedrequest('post', 'contact', 'contact/read_invoices', ['image_url' => 'https://did94hhhcgq1d.cloudfront.net'.str_replace('https://did94hhhcgq1d.cloudfront.net','', $data['image_url'])], 120);
|
|
Log::debug(print_r($invoice, true));
|
|
// $response = (object)[
|
|
// "status" => "success",
|
|
// "fields" => (object)[
|
|
// "name_of_chemist" => "DR G.M Dixit",
|
|
// "supply_from_stockist" => "Zufall; AND Pvt Ltd",
|
|
// "area" => "Vidhalan",
|
|
// "date" => "18/07 P.O"
|
|
// ],
|
|
// "products" => [
|
|
// (object)[
|
|
// "key" => "levolin-063-mg-respules",
|
|
// "value" => "LEVOLIN 0.63 MG RESPULE",
|
|
// "quantity" => "3 BOX"
|
|
// ],
|
|
// (object)[
|
|
// "key" => "budecort-respules-0",
|
|
// "value" => "BUDECORT 0.5 MG RESPULES",
|
|
// "quantity" => "3 BOX"
|
|
// ],
|
|
// (object)[
|
|
// "key" => "duolin-3-respule",
|
|
// "value" => "DUOLIN 3 RESPULES",
|
|
// "quantity" => "3 BOX"
|
|
// ],
|
|
// (object)[
|
|
// "key" => "budesal-1-mg-respules-2ml",
|
|
// "value" => "BUDESAL 1MG RESPULES",
|
|
// "quantity" => "1 BOX"
|
|
// ]
|
|
// ],
|
|
// "other" => [],
|
|
// "status" => "COMPLETE"
|
|
// ];
|
|
|
|
return Response::json($invoice->data->item);
|
|
}
|
|
|
|
/**
|
|
* Show the Neb Mitra doctors list page with DataTable and export button
|
|
*/
|
|
public function neb_mitra_doctors_list()
|
|
{
|
|
return view('form.doctors_list');
|
|
}
|
|
|
|
/**
|
|
* Return JSON data for DataTables from team3_nebmitra_doctors
|
|
*/
|
|
public function get_neb_mitra_doctors(Request $request)
|
|
{
|
|
$query = DB::table('team3_nebmitra_doctors');
|
|
$user_id = $request->input('user_id');
|
|
$all_data_access = $request->input('all_data_access');
|
|
$role = $request->input('role');
|
|
|
|
$neb1 = '1655449174-a39a5017-8232-4d58-a253-90d06bc733d0';
|
|
$neb2 = '1655449175-a39a5017-8232-4d58-a253-90d06bc733d0';
|
|
$nebarise = '1655449176-a39a5017-8232-4d58-a253-90d06bc733d0';
|
|
$nebmitraabm = '1655449175-a39a5017-8232-4d58-NEBMITRAABM-90d06bc733d0';
|
|
|
|
if(isset($role) && ($role == $neb1 || $role == $neb2 || $role == $nebarise)){
|
|
Log::debug(print_r(['user is neb abm'], true));
|
|
$abm = DB::table('team3_nebmitra_to_abm_mapping')
|
|
->select('mitra_user_id', 'mitra_hierarchy_id')
|
|
->where('abm_user_id', $user_id)
|
|
->get();
|
|
}
|
|
|
|
$hierarchy = LambdaRequest::getrequest('ums', 'hierarchy/hierarchy_below_me', ['partition' => 'rapport-team3', 'user_id' => $user_id ]);
|
|
if($all_data_access != '1') {
|
|
// Extract user_ids and hierarchy_ids from $hierarchy response
|
|
$user_ids = [];
|
|
$hierarchy_ids = [];
|
|
if (isset($hierarchy->data->hierarchies) && is_array($hierarchy->data->hierarchies)) {
|
|
|
|
if($role == $nebmitraabm){
|
|
foreach ($hierarchy->data->hierarchies as $hie) {
|
|
Log::debug(print_r(['hierarchies abm and row'], true));
|
|
|
|
// Add owner id if present
|
|
if (isset($hie->owner) && !empty($hie->owner)) {
|
|
$user_ids[] = $hie->owner;
|
|
}
|
|
// Always add hierarchy id
|
|
if (isset($hie->id) && !empty($hie->id)) {
|
|
$hierarchy_ids[] = $hie->id;
|
|
}
|
|
}
|
|
}else{
|
|
foreach($abm as $row){
|
|
Log::debug(print_r(['inside abm and row'], true));
|
|
|
|
if (isset($row->mitra_user_id) && !empty($row->mitra_user_id)) {
|
|
$user_ids[] = $row->mitra_user_id;
|
|
}
|
|
if (isset($row->mitra_hierarchy_id) && !empty($row->mitra_hierarchy_id)) {
|
|
$hierarchy_ids[] = $row->mitra_hierarchy_id;
|
|
}
|
|
}
|
|
}
|
|
Log::debug(print_r(['user and hierar'], true));
|
|
Log::debug(print_r($user_ids, true));
|
|
Log::debug(print_r($hierarchy_ids, true));
|
|
|
|
// Add OR conditions for user_id and hierarchy_id if any found
|
|
if (!empty($user_ids) || !empty($hierarchy_ids)) {
|
|
$query->where(function($q) use ($user_ids, $hierarchy_ids) {
|
|
if (!empty($user_ids)) {
|
|
$q->orWhereIn('user_id', $user_ids);
|
|
}
|
|
if (!empty($hierarchy_ids)) {
|
|
$q->orWhereIn('hierarchy_id', $hierarchy_ids);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
// DataTables server-side processing
|
|
$search = $request->input('search.value');
|
|
if ($search) {
|
|
$query->where(function($q) use ($search) {
|
|
$q->where('doctor_name', 'like', "%$search%")
|
|
->orWhere('mobile_number', 'like', "%$search%")
|
|
->orWhere('email_id', 'like', "%$search%")
|
|
->orWhere('speciality', 'like', "%$search%")
|
|
->orWhere('location', 'like', "%$search%")
|
|
->orWhere('district', 'like', "%$search%")
|
|
->orWhere('state', 'like', "%$search%")
|
|
->orWhere('pincode', 'like', "%$search%")
|
|
->orWhere('hq', 'like', "%$search%")
|
|
->orWhere('legacy_code', 'like', "%$search%")
|
|
->orWhere('uid', 'like', "%$search%")
|
|
->orWhere('degree', 'like', "%$search%")
|
|
->orWhere('gender', 'like', "%$search%")
|
|
->orWhere('position_code', 'like', "%$search%")
|
|
->orWhere('micro_interior', 'like', "%$search%")
|
|
|
|
->orWhere('nebulizing', 'like', "%$search%")
|
|
->orWhere('priority', 'like', "%$search%")
|
|
->orWhere('competition', 'like', "%$search%")
|
|
->orWhere('prescribed_brands', 'like', "%$search%")
|
|
->orWhere('other_prescribed_brands', 'like', "%$search%")
|
|
->orWhere('type_of_doctor_chemist', 'like', "%$search%")
|
|
;
|
|
});
|
|
}
|
|
|
|
$total = $query->count();
|
|
|
|
// Paging
|
|
$start = $request->input('start', 0);
|
|
$length = $request->input('length', 10);
|
|
$query->skip($start)->take($length);
|
|
|
|
// Ordering
|
|
if ($request->has('order')) {
|
|
$columns = $request->input('columns');
|
|
foreach ($request->input('order') as $order) {
|
|
$colIdx = $order['column'];
|
|
$dir = $order['dir'];
|
|
$colName = $columns[$colIdx]['data'];
|
|
$query->orderBy($colName, $dir);
|
|
}
|
|
}
|
|
|
|
$data = $query->get();
|
|
|
|
return response()->json([
|
|
'draw' => intval($request->input('draw')),
|
|
'recordsTotal' => $total,
|
|
'recordsFiltered' => $total,
|
|
'data' => $data,
|
|
]);
|
|
}
|
|
|
|
public function ajaxgetnebmitradocchem(Request $request)
|
|
{
|
|
$user_id = $request->input('user_id');
|
|
|
|
$baseQuery = DB::table('team3_nebmitra_doctors')
|
|
->where('status', 1)
|
|
->where('user_id', $user_id);
|
|
|
|
$totalRecords = $baseQuery->count();
|
|
|
|
$query = DB::table('team3_nebmitra_doctors')
|
|
->where('status', 1)
|
|
->where('user_id', $user_id);
|
|
|
|
$search = $request->input('search.value');
|
|
if ($search) {
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('doctor_name', 'like', "%$search%")
|
|
->orWhere('mobile_number', 'like', "%$search%")
|
|
->orWhere('email_id', 'like', "%$search%")
|
|
->orWhere('speciality', 'like', "%$search%")
|
|
->orWhere('location', 'like', "%$search%")
|
|
->orWhere('district', 'like', "%$search%")
|
|
->orWhere('state', 'like', "%$search%")
|
|
->orWhere('pincode', 'like', "%$search%")
|
|
->orWhere('hq', 'like', "%$search%")
|
|
->orWhere('legacy_code', 'like', "%$search%")
|
|
->orWhere('uid', 'like', "%$search%")
|
|
->orWhere('degree', 'like', "%$search%")
|
|
->orWhere('gender', 'like', "%$search%")
|
|
->orWhere('position_code', 'like', "%$search%")
|
|
->orWhere('micro_interior', 'like', "%$search%");
|
|
});
|
|
}
|
|
|
|
$filteredRecords = $query->count();
|
|
|
|
$start = $request->input('start', 0);
|
|
$length = $request->input('length', 10);
|
|
$query->skip($start)->take($length);
|
|
|
|
if ($request->has('order')) {
|
|
$columns = $request->input('columns');
|
|
foreach ($request->input('order') as $order) {
|
|
$colIdx = $order['column'];
|
|
$dir = $order['dir'];
|
|
$colName = $columns[$colIdx]['data'];
|
|
$query->orderBy($colName, $dir);
|
|
}
|
|
}
|
|
|
|
$data = $query->get();
|
|
|
|
return response()->json([
|
|
'draw' => intval($request->input('draw')),
|
|
'recordsTotal' => $totalRecords,
|
|
'recordsFiltered' => $filteredRecords,
|
|
'data' => $data,
|
|
]);
|
|
}
|
|
|
|
public function exportnebmitradocchem(Request $request)
|
|
{
|
|
$user_id = $request->input('user_id');
|
|
|
|
$filename = 'doctors_export_' . date('Ymd_His') . '.csv';
|
|
|
|
$columns = [
|
|
'id',
|
|
'legacy_code',
|
|
'type',
|
|
'nebulizing',
|
|
'priority',
|
|
'competition',
|
|
'prescribed_brands',
|
|
'other_prescribed_brands',
|
|
'type_of_doctor_chemist',
|
|
'doctor_name',
|
|
'mobile_number',
|
|
'email_id',
|
|
'speciality',
|
|
'degree',
|
|
'gender',
|
|
'no_of_visit',
|
|
'location',
|
|
'district',
|
|
'state',
|
|
'pincode',
|
|
'hq',
|
|
'micro_interior',
|
|
'position_code'
|
|
];
|
|
|
|
$headers = [
|
|
'ID',
|
|
'Legacy Code',
|
|
'Type',
|
|
'Nebulizing',
|
|
'Priority',
|
|
'Competition',
|
|
'Preferred Brands',
|
|
'Other Preferred Brands',
|
|
'Type of Doctor/Chemist',
|
|
'Doctor/Chemist Name',
|
|
'Mobile Number',
|
|
'Email ID',
|
|
'Speciality',
|
|
'Degree',
|
|
'Gender',
|
|
'No. of Visits',
|
|
'Location',
|
|
'District',
|
|
'State',
|
|
'Pincode',
|
|
'HQ',
|
|
'Micro Interior',
|
|
'Position Code'
|
|
];
|
|
|
|
$callback = function () use ($user_id, $columns, $headers) {
|
|
|
|
$file = fopen('php://output', 'w');
|
|
fputcsv($file, $headers);
|
|
|
|
// 🔹 SAME BASE QUERY AS AJAX
|
|
$query = DB::table('team3_nebmitra_doctors')
|
|
->select($columns)
|
|
->where('user_id', $user_id);
|
|
|
|
// 🔹 SAME SEARCH LOGIC
|
|
if (!empty(request('search'))) {
|
|
$search = request('search');
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('doctor_name', 'like', "%$search%")
|
|
->orWhere('mobile_number', 'like', "%$search%")
|
|
->orWhere('email_id', 'like', "%$search%")
|
|
->orWhere('speciality', 'like', "%$search%")
|
|
->orWhere('location', 'like', "%$search%")
|
|
->orWhere('district', 'like', "%$search%")
|
|
->orWhere('state', 'like', "%$search%")
|
|
->orWhere('pincode', 'like', "%$search%")
|
|
->orWhere('hq', 'like', "%$search%")
|
|
->orWhere('legacy_code', 'like', "%$search%")
|
|
->orWhere('uid', 'like', "%$search%")
|
|
->orWhere('degree', 'like', "%$search%")
|
|
->orWhere('gender', 'like', "%$search%")
|
|
->orWhere('position_code', 'like', "%$search%")
|
|
->orWhere('micro_interior', 'like', "%$search%");
|
|
});
|
|
}
|
|
|
|
$rows = $query->get();
|
|
|
|
foreach ($rows as $row) {
|
|
fputcsv($file, (array) $row);
|
|
}
|
|
|
|
fclose($file);
|
|
};
|
|
|
|
return response()->streamDownload($callback, $filename, [
|
|
'Content-Type' => 'text/csv',
|
|
'Cache-Control' => 'no-store, no-cache',
|
|
]);
|
|
}
|
|
|
|
public function ajaxupdatenebmitradoctors(Request $request)
|
|
{
|
|
$res = DB::table('team3_nebmitra_doctors')
|
|
->where('id', $request->doctor_id)
|
|
->update([
|
|
'doctor_name' => $request->input('doctor_name'),
|
|
'mobile_number' => $request->input('mobile_number'),
|
|
'email_id' => $request->input('email_id'),
|
|
'speciality' => $request->input('speciality'),
|
|
'degree' => $request->input('degree'),
|
|
'gender' => $request->input('gender'),
|
|
'location' => $request->input('location'),
|
|
'micro_interior' => $request->input('micro_interior'),
|
|
|
|
'nebulizing' => $request->nebulizing,
|
|
'priority' => $request->priority,
|
|
'competition' => $request->competition,
|
|
'prescribed_brands' => !empty($request->brands)
|
|
? implode(',', $request->brands)
|
|
: null,
|
|
'other_prescribed_brands' => $request->other_prescribed_brands ?: null,
|
|
'type_of_doctor_chemist' => $request->userType,
|
|
'is_edited' => 1
|
|
]);
|
|
|
|
return response()->json(['status' => 'success', 'data' => $res]);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Export all doctors as CSV
|
|
*/
|
|
public function export_neb_mitra_doctors(Request $request)
|
|
{
|
|
Log::debug('=== EXPORT START ===');
|
|
|
|
Log::debug('Request payload', $request->all());
|
|
|
|
$filename = 'doctors_export_' . date('Ymd_His') . '.csv';
|
|
|
|
$columns = [
|
|
'id', 'legacy_code', 'type', 'nebulizing', 'priority', 'competition',
|
|
'prescribed_brands', 'other_prescribed_brands',
|
|
'type_of_doctor_chemist', 'doctor_name', 'mobile_number', 'email_id',
|
|
'speciality', 'degree', 'gender', 'no_of_visit', 'location', 'district',
|
|
'state', 'pincode', 'hq', 'micro_interior', 'position_code',
|
|
'date_added', 'no_of_followups', 'last_followup_date'
|
|
];
|
|
|
|
$headers = [
|
|
'ID', 'Legacy Code', 'Type', 'Nebulizing', 'Priority', 'Competition',
|
|
'Preferred Brands of respules', 'Other Preferred Brands of respules',
|
|
'Type of Doctor/Chemist', 'Doctor/Chemist Name', 'Mobile Number',
|
|
'Email ID', 'Speciality', 'Degree', 'Gender', 'No. of Visits',
|
|
'Location', 'District', 'State', 'Pincode', 'HQ', 'Micro Interior',
|
|
'Position Code', 'Date Added', 'No. of Followups', 'Last Followup Date'
|
|
];
|
|
|
|
$user_id = $request->input('user_id');
|
|
$role = $request->input('role');
|
|
$all_data_access = $request->input('all_data_access');
|
|
|
|
Log::debug('User context', compact('user_id', 'role', 'all_data_access'));
|
|
|
|
$neb1 = '1655449174-a39a5017-8232-4d58-a253-90d06bc733d0';
|
|
$neb2 = '1655449175-a39a5017-8232-4d58-a253-90d06bc733d0';
|
|
$nebarise = '1655449176-a39a5017-8232-4d58-a253-90d06bc733d0';
|
|
$nebmitraabm = '1655449175-a39a5017-8232-4d58-NEBMITRAABM-90d06bc733d0';
|
|
|
|
$abm = collect();
|
|
|
|
if ($role == $neb1 || $role == $neb2 || $role == $nebarise) {
|
|
Log::debug('Role matched NEB ABM');
|
|
|
|
$abm = DB::table('team3_nebmitra_to_abm_mapping')
|
|
->select('mitra_user_id', 'mitra_hierarchy_id')
|
|
->where('abm_user_id', $user_id)
|
|
->get();
|
|
|
|
Log::debug('ABM mappings count: ' . $abm->count());
|
|
}
|
|
|
|
Log::debug('Calling hierarchy API');
|
|
|
|
$hierarchy = LambdaRequest::getrequest(
|
|
'ums',
|
|
'hierarchy/hierarchy_below_me',
|
|
['partition' => 'rapport-team3', 'user_id' => $user_id]
|
|
);
|
|
|
|
Log::debug('Hierarchy API response', (array) $hierarchy);
|
|
|
|
$callback = function () use (
|
|
$columns,
|
|
$headers,
|
|
$role,
|
|
$nebmitraabm,
|
|
$abm,
|
|
$hierarchy,
|
|
$all_data_access
|
|
) {
|
|
try {
|
|
|
|
Log::debug('--- STREAM CALLBACK START ---');
|
|
|
|
$file = fopen('php://output', 'w');
|
|
fputcsv($file, $headers);
|
|
|
|
$rows = DB::table('team3_nebmitra_doctors')->select($columns);
|
|
|
|
Log::debug('Base query created');
|
|
|
|
if ($all_data_access != '1') {
|
|
|
|
Log::debug('Applying hierarchy filter');
|
|
|
|
$user_ids = [];
|
|
$hierarchy_ids = [];
|
|
|
|
if (isset($hierarchy->data->hierarchies) && is_array($hierarchy->data->hierarchies)) {
|
|
|
|
Log::debug('Hierarchy count: ' . count($hierarchy->data->hierarchies));
|
|
|
|
if ($role == $nebmitraabm) {
|
|
Log::debug('Role = NEB MITRA ABM');
|
|
|
|
foreach ($hierarchy->data->hierarchies as $hie) {
|
|
Log::debug('Hierarchy row', (array) $hie);
|
|
|
|
if (!empty($hie->owner)) {
|
|
$user_ids[] = $hie->owner;
|
|
}
|
|
if (!empty($hie->id)) {
|
|
$hierarchy_ids[] = $hie->id;
|
|
}
|
|
}
|
|
} else {
|
|
Log::debug('Role = NEB ABM');
|
|
|
|
foreach ($abm as $row) {
|
|
Log::debug('ABM row', (array) $row);
|
|
|
|
if (!empty($row->mitra_user_id)) {
|
|
$user_ids[] = $row->mitra_user_id;
|
|
}
|
|
if (!empty($row->mitra_hierarchy_id)) {
|
|
$hierarchy_ids[] = $row->mitra_hierarchy_id;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
Log::warning('Hierarchy data missing or invalid');
|
|
}
|
|
|
|
Log::debug('Collected filters', [
|
|
'user_ids' => $user_ids,
|
|
'hierarchy_ids' => $hierarchy_ids
|
|
]);
|
|
|
|
if (!empty($user_ids) || !empty($hierarchy_ids)) {
|
|
$rows->where(function ($q) use ($user_ids, $hierarchy_ids) {
|
|
if (!empty($user_ids)) {
|
|
$q->orWhereIn('user_id', $user_ids);
|
|
}
|
|
if (!empty($hierarchy_ids)) {
|
|
$q->orWhereIn('hierarchy_id', $hierarchy_ids);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
Log::debug('Final SQL', [$rows->toSql(), $rows->getBindings()]);
|
|
|
|
$rows->orderBy('id')->chunk(500, function ($chunk) use ($file) {
|
|
Log::debug('Writing chunk of size: ' . $chunk->count());
|
|
|
|
foreach ($chunk as $row) {
|
|
fputcsv($file, (array) $row);
|
|
}
|
|
});
|
|
|
|
|
|
fclose($file);
|
|
|
|
Log::debug('--- STREAM CALLBACK END ---');
|
|
|
|
} catch (\Throwable $e) {
|
|
Log::error('EXPORT FAILED', [
|
|
'message' => $e->getMessage(),
|
|
'line' => $e->getLine(),
|
|
'file' => $e->getFile(),
|
|
'trace' => $e->getTraceAsString(),
|
|
]);
|
|
}
|
|
};
|
|
|
|
return response()->streamDownload($callback, $filename, [
|
|
'Content-Type' => 'text/csv',
|
|
'Cache-Control' => 'no-store, no-cache',
|
|
]);
|
|
}
|
|
|
|
|
|
|
|
public function delete_doctor_ajax(Request $request)
|
|
{
|
|
// Validate CSRF token (handled by Laravel middleware by default)
|
|
$id = $request->input('id');
|
|
$type = $request->input('type');
|
|
|
|
if (!$id || !$type) {
|
|
return response()->json(['status' => 'failure', 'message' => 'ID and type are required']);
|
|
}
|
|
|
|
try {
|
|
// Only allow doctor or chemist types for safety
|
|
if (!in_array($type, ['doctor', 'chemist'])) {
|
|
return response()->json(['status' => 'failure', 'message' => 'Invalid type']);
|
|
}
|
|
|
|
$affected = DB::table('team3_nebmitra_doctors')
|
|
->where('id', $id)
|
|
->where('type', $type)
|
|
->update(['status' => 0]);
|
|
|
|
$neb_contact = DB::table('team3_nebmitra_doctors')
|
|
->select('contact_id')
|
|
->where('id', $id)
|
|
->where('type', $type)
|
|
->first();
|
|
|
|
if ($neb_contact && !empty($neb_contact->contact_id)) {
|
|
$contact_id = $neb_contact->contact_id;
|
|
$domain = 'team3';
|
|
$token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_delete%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
|
|
LambdaRequest::getrequest('contact', 'contact/delete', ['id' => $contact_id], $token[0]->access_token);
|
|
}
|
|
|
|
if ($affected) {
|
|
return response()->json(['status' => 'success']);
|
|
} else {
|
|
return response()->json(['status' => 'failure', 'message' => 'Doctor not found or already deleted']);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return response()->json(['status' => 'failure', 'message' => $e->getMessage()]);
|
|
}
|
|
}
|
|
|
|
public function getnebcountajax(Request $request)
|
|
{
|
|
$mslCode = $request->input('mslcode');
|
|
|
|
if (!$mslCode) {
|
|
return response()->json([
|
|
'status' => 'failure',
|
|
'message' => 'MSL Code is required'
|
|
]);
|
|
}
|
|
|
|
try {
|
|
|
|
$data = DB::table('neblogistic')
|
|
->select('no_of_nebulizer')
|
|
->where('msl_code', $mslCode)
|
|
->whereMonth('created_at', date('m'))
|
|
->whereYear('created_at', date('Y'))
|
|
->whereIn('status', ['Requested', 'L1 Approved', 'Approved'])
|
|
->sum('no_of_nebulizer');
|
|
|
|
return response()->json([
|
|
'status' => 'success',
|
|
'message' => 'Neblogistics Count',
|
|
'count' => $data
|
|
]);
|
|
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'status' => 'failure',
|
|
'message' => $e->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function imagewithgeolocation(Request $request)
|
|
{
|
|
try {
|
|
if (!$request->boolean('upload_only')) {
|
|
return response()->json(['status' => 'ignored']);
|
|
}
|
|
|
|
$fname = 'upload_photo';
|
|
$formId = $request->input('form_id');
|
|
$address = $request->input('geolocation_address');
|
|
$font = storage_path('app/fonts/arial.ttf');
|
|
|
|
if (!$request->hasFile($fname)) {
|
|
return response()->json(['status' => 'error', 'message' => 'File not found'], 422);
|
|
}
|
|
|
|
$file = $request->file($fname);
|
|
if (!$file->isValid()) {
|
|
return response()->json(['status' => 'error', 'message' => 'Invalid file'], 422);
|
|
}
|
|
|
|
$relativePath = $this->_uploadMediaLocal(
|
|
$request,
|
|
$fname,
|
|
'public/geolocationproject/' . $formId . '/' . $fname
|
|
);
|
|
|
|
$relativePath = str_replace('storage/', 'public/', $relativePath);
|
|
$imagePath = storage_path('app/' . $relativePath);
|
|
|
|
if (!file_exists($imagePath)) {
|
|
throw new \Exception('Image not found: ' . $imagePath);
|
|
}
|
|
|
|
$mime = mime_content_type($imagePath);
|
|
if (in_array($mime, ['image/jpeg', 'image/jpg'])) {
|
|
$img = imagecreatefromjpeg($imagePath);
|
|
} elseif ($mime === 'image/png') {
|
|
$img = imagecreatefrompng($imagePath);
|
|
} else {
|
|
throw new \Exception("Unsupported image type: $mime");
|
|
}
|
|
|
|
$mime = mime_content_type($imagePath);
|
|
if (in_array($mime, ['image/jpeg', 'image/jpg'])) {
|
|
$img = imagecreatefromjpeg($imagePath);
|
|
|
|
/* FIX CAMERA ROTATION (EXIF) */
|
|
$exif = @exif_read_data($imagePath);
|
|
if (!empty($exif['Orientation'])) {
|
|
switch ($exif['Orientation']) {
|
|
case 3:
|
|
$img = imagerotate($img, 180, 0);
|
|
break;
|
|
case 6:
|
|
$img = imagerotate($img, -90, 0);
|
|
break;
|
|
case 8:
|
|
$img = imagerotate($img, 90, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
} elseif ($mime === 'image/png') {
|
|
$img = imagecreatefrompng($imagePath);
|
|
} else {
|
|
throw new \Exception("Unsupported image type: $mime");
|
|
}
|
|
|
|
|
|
// $color = imagecolorallocate($img, 255, 255, 255);
|
|
// imagettftext(
|
|
// $img,
|
|
// 16,
|
|
// 0,
|
|
// 20,
|
|
// imagesy($img) - 20,
|
|
// $color,
|
|
// $font,
|
|
// $address
|
|
// );
|
|
|
|
//
|
|
|
|
$imgWidth = imagesx($img);
|
|
$imgHeight = imagesy($img);
|
|
|
|
$fontSize = intval($imgHeight * 0.037);
|
|
$fontSize = max(34, min($fontSize, 120));
|
|
|
|
$paddingX = intval($imgWidth * 0.07);
|
|
$paddingY = intval($imgHeight * 0.05);
|
|
|
|
do {
|
|
$usableWidth = $imgWidth - ($paddingX * 2) - 6;
|
|
$maxCharsPerLine = intval($usableWidth / ($fontSize * 0.6));
|
|
|
|
$wrappedText = wordwrap($address, $maxCharsPerLine, "\n");
|
|
$lines = explode("\n", $wrappedText);
|
|
|
|
$lineHeight = intval($fontSize * 1.35);
|
|
$totalTextHeight = count($lines) * $lineHeight;
|
|
|
|
if ($totalTextHeight > ($imgHeight - ($paddingY * 2))) {
|
|
$fontSize -= 1;
|
|
} else {
|
|
break;
|
|
}
|
|
} while ($fontSize > 22);
|
|
|
|
$y = $imgHeight - $paddingY - $totalTextHeight;
|
|
$y = max($paddingY, $y);
|
|
|
|
$color = imagecolorallocate($img, 255, 255, 255);
|
|
|
|
foreach ($lines as $line) {
|
|
$bbox = imagettfbbox($fontSize, 0, $font, $line);
|
|
|
|
$minX = min($bbox[0], $bbox[2], $bbox[4], $bbox[6]);
|
|
$maxX = max($bbox[0], $bbox[2], $bbox[4], $bbox[6]);
|
|
$textWidth = $maxX - $minX;
|
|
|
|
$x = intval(($imgWidth - $textWidth) / 2) - $minX;
|
|
|
|
if ($x < $paddingX) {
|
|
$x = $paddingX;
|
|
}
|
|
|
|
if (($x + $textWidth) > ($imgWidth - $paddingX)) {
|
|
$x = $imgWidth - $paddingX - $textWidth;
|
|
}
|
|
|
|
imagettftext(
|
|
$img,
|
|
$fontSize,
|
|
0,
|
|
$x,
|
|
$y,
|
|
$color,
|
|
$font,
|
|
$line
|
|
);
|
|
|
|
$y += $lineHeight;
|
|
}
|
|
|
|
|
|
//
|
|
|
|
|
|
/* ---------- DATE TIME STAMP (FIXED) ---------- */
|
|
|
|
date_default_timezone_set('Asia/Kolkata');
|
|
|
|
$dateText = date('d M Y, h:i A');
|
|
|
|
/* Slightly larger, readable */
|
|
$dateFontSize = $fontSize;
|
|
// max(22, intval($fontSize * 0.65) + 3);
|
|
|
|
/* Align with address visual start */
|
|
$dateX = $paddingX;
|
|
|
|
/* Place below last address line */
|
|
$dateY = $y + intval($dateFontSize * 1.2);
|
|
|
|
/* Keep inside image */
|
|
if ($dateY > ($imgHeight - $paddingY)) {
|
|
$dateY = $imgHeight - $paddingY;
|
|
}
|
|
|
|
$dateColor = imagecolorallocate($img, 235, 235, 235);
|
|
|
|
imagettftext(
|
|
$img,
|
|
$dateFontSize,
|
|
0,
|
|
$dateX,
|
|
$dateY,
|
|
$dateColor,
|
|
$font,
|
|
$dateText
|
|
);
|
|
|
|
/* ------------------------------------------------ */
|
|
|
|
|
|
imagepng($img, $imagePath);
|
|
$stampedFile = new \Illuminate\Http\UploadedFile(
|
|
$imagePath,
|
|
basename($imagePath),
|
|
'image/png',
|
|
null,
|
|
true
|
|
);
|
|
|
|
$folder = 'form/' . $formId . '/' . $fname;
|
|
$path = $stampedFile->store($folder, 's3');
|
|
$path = env('AWS_URL') . '/' . $path;
|
|
|
|
return response()->json([
|
|
'status' => 'success',
|
|
'data' => [
|
|
$fname => $path
|
|
]
|
|
]);
|
|
|
|
} catch (\Throwable $e) {
|
|
Log::error('Image upload failed', [
|
|
'message' => $e->getMessage(),
|
|
'file' => $e->getFile(),
|
|
'line' => $e->getLine(),
|
|
]);
|
|
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => 'Unexpected error occurred.'
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function customdataandvideoform(Request $request)
|
|
{
|
|
Log::info("===== customdataandvideoform START =====");
|
|
Log::info("Request ID: " . uniqid("video_upload_"));
|
|
|
|
try {
|
|
|
|
$post = $request->except('_token');
|
|
$formdata = $request->session()->get('formdata');
|
|
if (empty(trim($post['orignal_doctor_name'] ?? '')) && empty(trim($post['name_of_other_doctor'] ?? '')))
|
|
{
|
|
return response()->json(['status'=>'failure','message'=>'Doctor name is required']);
|
|
}
|
|
|
|
Log::info("Incoming POST data keys: " . implode(",", array_keys($post)));
|
|
Log::info("Formdata from session: " . print_r($formdata, true));
|
|
|
|
$file_doctorname = $post['orignal_doctor_name'] != ''
|
|
? $post['orignal_doctor_name']
|
|
: ($post['name_of_other_doctor'] ?? 'unknown');
|
|
|
|
$file_doctorname = preg_replace('/[^A-Za-z0-9_-]/', '_', $file_doctorname);
|
|
$file_doctorname = trim($file_doctorname, '_');
|
|
|
|
$path = '';
|
|
$name = 'upload_video';
|
|
$folder = 'video';
|
|
|
|
// ✅ Log file presence
|
|
Log::info("Checking file input: {$name}");
|
|
Log::info("hasFile({$name}): " . ($request->hasFile($name) ? 'YES' : 'NO'));
|
|
|
|
if ($request->hasFile($name)) {
|
|
|
|
$file = $request->file($name);
|
|
|
|
Log::info("File found. Valid: " . ($file->isValid() ? 'YES' : 'NO'));
|
|
|
|
if (!$file->isValid()) {
|
|
Log::error("File upload invalid. Error code: " . $file->getError());
|
|
return response()->json(['status' => 'failure', 'message' => 'Invalid video file upload']);
|
|
}
|
|
|
|
$ext = $file->getClientOriginalExtension();
|
|
$originalName = $file->getClientOriginalName();
|
|
$mime = $file->getMimeType();
|
|
$size = $file->getSize();
|
|
|
|
Log::info("File details => OriginalName: {$originalName}, Ext: {$ext}, Mime: {$mime}, Size(bytes): {$size}");
|
|
|
|
$customFileName = $post['employee_code'] . '_' . $file_doctorname . '.' . $ext;
|
|
|
|
Log::info("Custom filename generated: {$customFileName}");
|
|
Log::info("Uploading to disk: s3 | folder: {$folder}");
|
|
|
|
// Store file temporarily locally
|
|
$localTmpDir = storage_path('app/tmp_video_uploads');
|
|
if (!file_exists($localTmpDir)) {
|
|
mkdir($localTmpDir, 0777, true);
|
|
}
|
|
$localTmpPath = $localTmpDir . '/' . $customFileName;
|
|
$file->move($localTmpDir, $customFileName);
|
|
|
|
// Use ffprobe to get video dimensions and rotation metadata
|
|
$ffprobeCmd = "ffprobe -v error -select_streams v:0 -show_entries stream=width,height:stream_tags=rotate:side_data=rotation,displaymatrix -of json " . escapeshellarg($localTmpPath);
|
|
$ffprobeOutput = shell_exec($ffprobeCmd);
|
|
Log::info("ffprobe output length: " . strlen($ffprobeOutput));
|
|
|
|
$video_width = null;
|
|
$video_height = null;
|
|
|
|
if ($ffprobeOutput) {
|
|
$data = json_decode($ffprobeOutput, true);
|
|
|
|
if (json_last_error() === JSON_ERROR_NONE && isset($data['streams'][0])) {
|
|
$stream = $data['streams'][0];
|
|
$video_width = isset($stream['width']) ? (int)$stream['width'] : null;
|
|
$video_height = isset($stream['height']) ? (int)$stream['height'] : null;
|
|
|
|
$originalWidth = $video_width;
|
|
$originalHeight = $video_height;
|
|
|
|
// Check for rotation in multiple places
|
|
$rotationValue = null;
|
|
|
|
// First check side_data rotation (more accurate)
|
|
if (isset($stream['side_data_list'])) {
|
|
foreach ($stream['side_data_list'] as $sideData) {
|
|
if (isset($sideData['rotation'])) {
|
|
$rotationValue = (int)$sideData['rotation'];
|
|
Log::info("Found rotation in side_data: {$rotationValue}°");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Fallback to stream tags if side_data not found
|
|
if ($rotationValue === null && isset($stream['tags']['rotate'])) {
|
|
$rotationValue = (int)$stream['tags']['rotate'];
|
|
Log::info("Found rotation in stream tags: {$rotationValue}°");
|
|
}
|
|
|
|
// If rotation is 90 or 270 degrees, swap width and height
|
|
if ($rotationValue !== null) {
|
|
$normalizedRotation = $rotationValue % 360;
|
|
if ($normalizedRotation < 0) {
|
|
$normalizedRotation += 360;
|
|
}
|
|
|
|
Log::info("Rotation value: {$rotationValue}°, Normalized: {$normalizedRotation}°");
|
|
|
|
// 90 or 270 degrees means portrait orientation - swap dimensions
|
|
if ($normalizedRotation == 90 || $normalizedRotation == 270) {
|
|
$temp = $video_width;
|
|
$video_width = $video_height;
|
|
$video_height = $temp;
|
|
Log::info("Video rotation detected: {$rotationValue}° (normalized: {$normalizedRotation}°), swapped dimensions from {$originalWidth}x{$originalHeight} to {$video_width}x{$video_height}");
|
|
}
|
|
}
|
|
|
|
$dimensions = "{$video_width}x{$video_height}";
|
|
Log::info("Final video dimensions after rotation check: {$dimensions}");
|
|
} else {
|
|
// Fallback to simple ffprobe if JSON parsing fails
|
|
Log::warning("JSON parsing failed, falling back to simple ffprobe");
|
|
$ffprobeCmdSimple = "ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0:s=x " . escapeshellarg($localTmpPath);
|
|
$dimensions = trim(shell_exec($ffprobeCmdSimple));
|
|
if ($dimensions && strpos($dimensions, 'x') !== false) {
|
|
$parts = explode('x', $dimensions);
|
|
$video_width = isset($parts[0]) ? (int)$parts[0] : null;
|
|
$video_height = isset($parts[1]) ? (int)$parts[1] : null;
|
|
}
|
|
}
|
|
} else {
|
|
Log::warning("ffprobe returned no output");
|
|
}
|
|
|
|
// Now store the file to S3 using Laravel's storage
|
|
$storedPath = null;
|
|
try {
|
|
$storedPath = Storage::disk('s3')->putFileAs($folder, new \Illuminate\Http\File($localTmpPath), $customFileName);
|
|
} catch (\Exception $ex) {
|
|
Log::error("Exception during S3 upload after ffprobe: " . $ex->getMessage());
|
|
// Clean up temp file
|
|
@unlink($localTmpPath);
|
|
return response()->json(['status' => 'failure', 'message' => 'S3 upload failed after ffprobe']);
|
|
}
|
|
// Clean up temp file after S3 upload
|
|
@unlink($localTmpPath);
|
|
// ✅ Try storing
|
|
|
|
//$storedPath = $file->storeAs($folder, $customFileName, 's3');
|
|
|
|
Log::info("storeAs() returned path: " . print_r($storedPath, true));
|
|
|
|
if (!$storedPath) {
|
|
Log::error("storeAs failed: storedPath empty/null");
|
|
return response()->json(['status' => 'failure', 'message' => 'S3 upload failed']);
|
|
}
|
|
|
|
// Optional: check if file exists in S3 after upload
|
|
$exists = Storage::disk('s3')->exists($storedPath);
|
|
Log::info("S3 exists check: " . ($exists ? "YES" : "NO"));
|
|
|
|
$path = env('AWS_URL') . '/' . $storedPath;
|
|
Log::info("Final video URL saved: {$path}");
|
|
|
|
$post['upload_video'] = $path;
|
|
|
|
} else {
|
|
Log::warning("No file uploaded in request for '{$name}'");
|
|
}
|
|
|
|
// Keep session data
|
|
$request->session()->put('formdata', $formdata);
|
|
|
|
if (isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
|
|
|
|
Log::info("Processing form data for submission...");
|
|
$post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
|
|
|
|
Log::info("Processed post payload: " . print_r($post, true));
|
|
|
|
$finfo = LambdaRequest::postrequest(
|
|
'form',
|
|
'formentity/submitform',
|
|
[
|
|
'formdata' => $post,
|
|
'entity_id' => $formdata->form_id,
|
|
'user_id' => $formdata->user_id,
|
|
'partition' => $formdata->partition
|
|
]
|
|
);
|
|
|
|
Log::info("Lambda response: " . print_r($finfo, true));
|
|
|
|
// Call vgreet/job_create with required params using real video dimensions
|
|
// Note: video_width and video_height are already extracted above with rotation handling
|
|
|
|
$personalisation = [
|
|
"portrait_frame_image" => "/vgreet/frames/vitaliss_frame_portrait.png",
|
|
"landscape_video_dimensions" => [
|
|
"width" => 1422,
|
|
"height" => 800
|
|
],
|
|
"type" => "video_frame",
|
|
"portrait_video_dimensions" => [
|
|
"width" => 800,
|
|
"height" => 1422
|
|
],
|
|
"landscape_frame_image" => "/vgreet/frames/vitaliss_frame_landscape.png"
|
|
];
|
|
|
|
// Determine portrait or landscape based on video dimensions
|
|
$orientation = null;
|
|
if ($video_width && $video_height) {
|
|
if ($video_height > $video_width) {
|
|
$orientation = 'portrait';
|
|
$frame_image = isset($personalisation['portrait_frame_image'])
|
|
? (strpos($personalisation['portrait_frame_image'], 's3://') === 0
|
|
? $personalisation['portrait_frame_image']
|
|
: "s3://rapportapp" . $personalisation['portrait_frame_image'])
|
|
: "s3://rapportapp/vgreet/frames/vitaliss_frame_portrait.png";
|
|
$frame_width = isset($personalisation['portrait_video_dimensions']['width'])
|
|
? $personalisation['portrait_video_dimensions']['width']
|
|
: 1422;
|
|
$frame_height = isset($personalisation['portrait_video_dimensions']['height'])
|
|
? $personalisation['portrait_video_dimensions']['height']
|
|
: 800;
|
|
$fontSize = 15; // tune as needed
|
|
} else {
|
|
$orientation = 'landscape';
|
|
$frame_image = isset($personalisation['landscape_frame_image'])
|
|
? (strpos($personalisation['landscape_frame_image'], 's3://') === 0
|
|
? $personalisation['landscape_frame_image']
|
|
: "s3://rapportapp" . $personalisation['landscape_frame_image'])
|
|
: "s3://rapportapp/vgreet/frames/vitaliss_frame_landscape.png";
|
|
$frame_width = isset($personalisation['landscape_video_dimensions']['width'])
|
|
? $personalisation['landscape_video_dimensions']['width']
|
|
: 800;
|
|
$frame_height = isset($personalisation['landscape_video_dimensions']['height'])
|
|
? $personalisation['landscape_video_dimensions']['height']
|
|
: 1422;
|
|
$fontSize = 20; // tune as needed
|
|
}
|
|
}
|
|
|
|
// Extract 'orignal_doctor_name' from $finfo's formdata if available
|
|
$doctor_name = null;
|
|
if (
|
|
isset($finfo->data->submission->formdata) &&
|
|
is_array($finfo->data->submission->formdata) &&
|
|
array_key_exists('orignal_doctor_name', $finfo->data->submission->formdata)
|
|
) {
|
|
$doctor_name = 'Doctor: ' . $finfo->data->submission->formdata['orignal_doctor_name'] . ' | City: ' . $finfo->data->submission->formdata['city'];
|
|
} elseif (
|
|
isset($finfo->data->submission->formdata) &&
|
|
is_object($finfo->data->submission->formdata) &&
|
|
property_exists($finfo->data->submission->formdata, 'orignal_doctor_name')
|
|
) {
|
|
$doctor_name = 'Doctor: ' . $finfo->data->submission->formdata->orignal_doctor_name . ' | City: ' . $finfo->data->submission->formdata->city;
|
|
}
|
|
|
|
// For this POC, we will log the expected operations:
|
|
Log::info("Video orientation: " . ($orientation ?? 'unknown'));
|
|
Log::info("Frame image to use: " . ($frame_image ?? 'none'));
|
|
|
|
// Set default font path (ensure this exists on your server or container)
|
|
$fontPath = storage_path('app/fonts/Poppins-Medium.ttf');
|
|
$processedFrameS3Path = null; // Initialize variable for processed frame S3 path
|
|
|
|
if ($doctor_name && isset($frame_image) && file_exists($fontPath)) {
|
|
// Download frame image from S3 to a temp location using Laravel Storage
|
|
$s3_relative_path = str_replace('s3://rapportapp/', '', $frame_image);
|
|
$frameTmpPath = sys_get_temp_dir() . '/' . uniqid('frame_') . '.png';
|
|
|
|
try {
|
|
// Use Laravel Storage instead of AWS S3 client
|
|
$frameContent = Storage::disk('s3')->get($s3_relative_path);
|
|
file_put_contents($frameTmpPath, $frameContent);
|
|
|
|
// Load image with transparency preservation
|
|
$im = imagecreatefrompng($frameTmpPath);
|
|
if ($im) {
|
|
// Enable alpha blending and save alpha channel to preserve transparency
|
|
imagealphablending($im, false);
|
|
imagesavealpha($im, true);
|
|
|
|
$fontSize = 18; // tune as needed
|
|
$fontColorRGB = [255, 255, 255]; // white
|
|
|
|
// Get text bounding box to calculate center
|
|
$bbox = imagettfbbox($fontSize, 0, $fontPath, $doctor_name);
|
|
$textWidth = $bbox[2] - $bbox[0];
|
|
$centerX = ($frame_width / 2) - ($textWidth / 2);
|
|
|
|
// Enable alpha blending for text rendering
|
|
imagealphablending($im, true);
|
|
|
|
// Print text at (centerX, y=50)
|
|
$color = imagecolorallocate($im, $fontColorRGB[0], $fontColorRGB[1], $fontColorRGB[2]);
|
|
imagettftext($im, $fontSize, 0, $centerX, 50, $color, $fontPath, $doctor_name);
|
|
|
|
// Disable alpha blending before saving to preserve transparency
|
|
imagealphablending($im, false);
|
|
imagesavealpha($im, true);
|
|
|
|
// Save new image to temp location with transparency
|
|
$outputFrame = sys_get_temp_dir() . '/' . uniqid('doctor_frame_') . '.png';
|
|
imagepng($im, $outputFrame, 9); // Use compression level 9 (0-9, 9 is best quality)
|
|
imagedestroy($im);
|
|
Log::info("Doctor name '$doctor_name' printed on frame: $outputFrame");
|
|
|
|
// Upload processed frame back to S3
|
|
try {
|
|
$processedFrameName = 'processed_' . uniqid() . '_' . $file_doctorname . '.png';
|
|
$uploadedPath = Storage::disk('s3')->putFileAs(
|
|
'vgreet/frames',
|
|
new \Illuminate\Http\File($outputFrame),
|
|
$processedFrameName
|
|
);
|
|
|
|
// Get full S3 URL
|
|
$processedFrameS3Path = env('AWS_URL') . '/' . $uploadedPath;
|
|
Log::info("Processed frame uploaded to S3: $processedFrameS3Path");
|
|
|
|
// Clean up temp files
|
|
@unlink($outputFrame);
|
|
@unlink($frameTmpPath);
|
|
} catch (\Exception $uploadEx) {
|
|
Log::error("Failed to upload processed frame to S3: " . $uploadEx->getMessage());
|
|
@unlink($outputFrame);
|
|
@unlink($frameTmpPath);
|
|
}
|
|
} else {
|
|
Log::warning("Could not load image from '$frameTmpPath'");
|
|
@unlink($frameTmpPath);
|
|
}
|
|
} catch (\Exception $ex) {
|
|
Log::error("Failed to fetch or process frame image: " . $ex->getMessage());
|
|
@unlink($frameTmpPath ?? '');
|
|
}
|
|
} else {
|
|
Log::info("Doctor name or frame or font file not available, skipping dynamic frame creation.");
|
|
}
|
|
|
|
$user_partition = !empty($finfo->data->submission->partition) ? explode('-', $finfo->data->submission->partition)[0] . '-' . explode('-', $finfo->data->submission->partition)[1] : null;
|
|
$jobParams = [
|
|
'video_id' => "1770791678-532ce634-58ef-4662-89b3-8aad4ddcfcd8",
|
|
'video_file_url' => $path, // S3 link of the uploaded video
|
|
'video_width' => $video_width,
|
|
'video_height' => $video_height,
|
|
'reference_entity' => 'form_submission',
|
|
'reference_id' => $finfo->data->submission->id ?? null,
|
|
'reference_partition' => $finfo->data->submission->partition ?? null,
|
|
'reference_to_update' => 'processed_video',
|
|
'reference_updated_flag' => 'has_video_processed',
|
|
'user_info' => $finfo->data->submission->user_info ?? null,
|
|
'user_partition' => $user_partition
|
|
];
|
|
|
|
// Add processed frame path to jobParams if available
|
|
if ($processedFrameS3Path) {
|
|
$jobParams['processed_frame_url'] = $processedFrameS3Path;
|
|
}
|
|
|
|
Log::info("Calling vgreet/job_create payload: " . print_r($jobParams, true));
|
|
|
|
//return response()->json(['status' => 'failure', 'jobParams' => $jobParams, 'finfo' => $finfo]);
|
|
$vgreetJobResp = LambdaRequest::postrequest(
|
|
'vgreet',
|
|
'job/create',
|
|
$jobParams
|
|
);
|
|
Log::info("vgreet/job_create response: " . print_r($vgreetJobResp, true));
|
|
|
|
if ($finfo->status == 'success') {
|
|
Log::info("===== customdataandvideoform SUCCESS =====");
|
|
return response()->json(['status' => 'success']);
|
|
} else {
|
|
Log::error("Lambda submission failed. Status: {$finfo->status}");
|
|
|
|
if (isset($finfo->statusCode) && $finfo->statusCode == 401) {
|
|
return response()->json(['status' => 'failure', 'message' => $finfo->data]);
|
|
}
|
|
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
|
|
} else {
|
|
Log::error("Session formdata missing or user_id empty");
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
|
|
} catch (\Throwable $e) {
|
|
Log::error("Exception in customdataandvideoform: " . $e->getMessage());
|
|
Log::error($e->getTraceAsString());
|
|
|
|
return response()->json([
|
|
'status' => 'failure',
|
|
'message' => 'Server error during upload'
|
|
]);
|
|
}
|
|
}
|
|
|
|
|
|
public function team2bfeducators(Request $request)
|
|
{
|
|
$region = $request->region;
|
|
|
|
$users = DB::table('team2_bf_educators')
|
|
->where('region', $region)
|
|
->select('name_of_employee', 'employee_code', 'designation')
|
|
->get();
|
|
|
|
return response()->json($users);
|
|
}
|
|
|
|
} |