update ecard dan daily monitoring

This commit is contained in:
2023-12-28 15:50:56 +07:00
parent 10f702f2f0
commit 19e9e334e2
18 changed files with 1146 additions and 133 deletions

View File

@@ -21,6 +21,7 @@ use PDF;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\File;
use Spatie\Browsershot\Browsershot;
class CorporateMemberController extends Controller
{
@@ -396,34 +397,68 @@ class CorporateMemberController extends Controller
}
public function sendAllECard(Request $request, $corporate_id){
$members = DB::table('members')
->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id')
->where('corporate_employees.corporate_id', $corporate_id)
->get()
->toArray();
$members = Member::with([
'currentPlan',
'currentPolicy',
'currentCorporate',
// 'currentPlan.corporateBenefits.benefit'
])->whereHas('currentCorporate', function ($query) use ($corporate_id) {
$query->where('corporate_id', $corporate_id);
})->get();
$data = [];
$countSuccesSend = 0;
foreach($members as $member){
$pdf = PDF::loadView('pdf.ecard', compact(['member']));
// Simpan file PDF ke direktori yang diinginkan
$pdfPath = storage_path('app/pdf/ecards/E-card-' . $member->name . '.pdf');
$pdfPath = storage_path('app/pdf/ecards/E-card-' . $member->name. '.pdf');
// Cek apakah file sudah ada
if (!File::exists($pdfPath)) {
$pdf = PDF::loadView('pdf.ecard', compact('member'));
$pdf = PDF::loadView('pdf.ecard', compact('member'))->setPaper('A5', 'portrait');
$pdf->save($pdfPath);
}
$dataEmail = [
'email' => $member->email,
// 'email' => $member->email,
'email' => 'tbfajri',
'name' => $member->name,
'subject' => 'Digital E Card '. $member->name,
'body' => '<h1>Hi ' . $member->name . '</h1>',
'body' => '<h1>Hi ' . $member->name . '</h1> <br> ini adalah uji coba kirim e-card' ,
'attach' => $pdfPath,
];
$sendEmail = Helper::sendEmailattachData($dataEmail);
}
if ($sendEmail === true){
$countSuccesSend ++;
return true;
File::delete($pdfPath);
} else {
$dataFaild = [
'email' => $member->email,
'name' => $member->name,
'message' => $sendEmail
];
array_push($data, $dataFaild);
}
}
$response = [
'data_fail_send' => count($data),
'message' => $data,
'data_succes_send' => $countSuccesSend,
];
return response()->json($response);
}
public function viewECard(Request $request, $member_id){
$member = Member::with([
'currentPlan',
'currentPolicy',
'currentCorporate',
// 'currentPlan.corporateBenefits.benefit'
])->find($member_id);
$pdf = PDF::loadView('pdf.ecard', compact('member'))->setPaper('A5', 'portrait');
return $pdf->download('Ecard - '.$member->full_name.'.pdf');
}
}

View File

@@ -3,12 +3,14 @@
namespace Modules\Internal\Http\Controllers\Api;
use App\Models\DailyMonitoring;
use App\Models\RequestDailyMonitoring;
use App\Models\MedicalPlan;
use DB;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Validator;
use App\Models\File;
/**
* Bagaskoro BSD 27-10-2023
@@ -17,6 +19,7 @@ use Illuminate\Support\Facades\Validator;
*/
class DailyMonitoringController extends Controller
{
protected $path_for_store = 'public/lab_result';
protected function messages()
{
return [
@@ -88,21 +91,17 @@ class DailyMonitoringController extends Controller
/**
* Detail Monitoring List - by claim_code
*/
public function GetDetailMonitoringList(Request $request, $claim_code)
public function GetDetailMonitoringList(Request $request, $request_code)
{
// get claim request
$claim_request = DB::table('claim_requests')
// get id request log
$request_logs = DB::table('request_logs')
->select('id')
->where('code', $claim_code)
->where('code', $request_code)
->first();
// get claim
$claim = DB::table('claims')
->select('id')
->where('claim_request_id', empty($claim_request)==false ? $claim_request->id : '')
->first();
$detail_list = DailyMonitoring::where('claim_id', empty($claim) == false ? $claim->id : '')->orderBy("created_at", "desc")->get()->makeHidden(['updated_at']);
$detail_list = RequestDailyMonitoring::where('request_log_id', empty($request_logs) == false ? $request_logs->id : '')
->orderBy("created_at", "desc")
->get();
return response()->json([
'error' => false,
@@ -213,4 +212,194 @@ class DailyMonitoringController extends Controller
],500);
}
}
/**
* Add Detail Request LOG LIST
*/
public function AddDetailMonitoringListRequestLog(Request $request, $request_code)
{
$request->merge(['request_code' => $request_code]);
// validation rule
$validator = Validator::make($request->all(),[
'request_code' => 'required|exists:request_logs,code',
'subject' => 'required',
'body_temperature' => 'required|numeric',
'sistole' => 'required|numeric',
'diastole' => 'required|numeric',
'respiration_rate' => 'required|numeric',
'analysis' => 'required',
'medical_plan' => 'required',
'non_medikamentosa_plan' => 'required',
],$this->messages());
// validation error
if ($validator->fails()) {
return response()->json([
'error' => true,
'message' => $validator->getMessageBag()
],400);
}
// get claim request
$request_log = DB::table('request_logs')
->select('id')
->where('code', $request_code)
->first();
DB::beginTransaction();
try {
// insert claim daily monitoring
$db_response = RequestDailyMonitoring::create([
'request_log_id' => $request_log->id,
'subject' => $request->subject,
'sistole' => $request->sistole,
'diastole' => $request->diastole,
'body_temperature' => $request->body_temperature,
'respiration_rate' => $request->respiration_rate,
'analysis' => $request->analysis,
'lab_date' => $request->lab_date,
'provider' => $request->provider,
'examination' => $request->examination,
]);
// cek medical plan
$num_medical_plan = 0;
foreach ($request->medical_plan as $row) {
if ($row['medical_plan_str']) {
$num_medical_plan++;
}
}
if ($num_medical_plan == 0) {
DB::rollBack();
return response()->json([
'error' => true,
'message' => [
'medical_plan' => ['medical plan harus diisi']
],
'data' => []
],400);
}
// insert medical plan
foreach ($request->medical_plan as $row) {
DB::table('request_log_medical_plan')->insert([
'request_log_daily_monitoring_id' => $db_response->id,
'plan' => $row['medical_plan_str'],
'type' => 1,
'created_at' => date('Y-m-d'),
]);
}
// insert non medical plan
foreach ($request->non_medikamentosa_plan as $row) {
DB::table('request_log_medical_plan')->insert([
'request_log_daily_monitoring_id' => $db_response->id,
'plan' => $row['non_medikamentosa_plan_str'],
'type' => 2,
'created_at' => date('Y-m-d'),
]);
}
// insert file result
if ($request->confirmation_medical_leter){
foreach ($request->confirmation_medical_leter as $file) {
$name = 'labresult-' . uniqid();
$extension= $file->getClientOriginalExtension();
$fileName = $name . '.' . $extension;
$path = $file->storeAs($this->path_for_store, $fileName);
File::create([
'fileable_type' => 'App\Models\LaboratoriumResult',
'fileable_id' => $db_response->id,
'type' => 'confirmation-medical-letter',
'name' => $name,
'original_name' => $fileName,
'extension' => $extension,
'path' => $path,
]);
}
}
if ($request->medical_action_letter){
foreach ($request->medical_action_letter as $file) {
$name = 'labresult-' . uniqid();
$extension= $file->getClientOriginalExtension();
$fileName = $name . '.' . $extension;
$path = $file->storeAs($this->path_for_store, $fileName);
File::create([
'fileable_type' => 'App\Models\LaboratoriumResult',
'fileable_id' => $db_response->id,
'type' => 'medical-action-letter',
'name' => $name,
'original_name' => $fileName,
'extension' => $extension,
'path' => $path,
]);
// $file->storeAs($this->path_for_store, $fileName);
}
}
if ($request->result){
foreach ($request->result as $file) {
$name = 'labresult-' . uniqid();
$extension= $file->getClientOriginalExtension();
$fileName = $name . '.' . $extension;
$path = $file->storeAs($this->path_for_store, $fileName);
File::create([
'fileable_type' => 'App\Models\LaboratoriumResult',
'fileable_id' => $db_response->id,
'type' => 'laboratorium-result',
'name' => $name,
'original_name' => $fileName,
'extension' => $extension,
'path' => $path,
]);
// $file->storeAs($this->path_for_store, $fileName);
}
}
DB::commit();
return response()->json([
'error' => false,
'message' => "success",
'data' => []
],200);
}
catch (Exception $e) {
DB::rollBack();
return response()->json([
'error' => true,
'message' => $e->getMessage(),
'data' => []
],500);
}
}
/**
* Update Status Request LOG
*/
public function UpdateListRequestLog(Request $request, $request_code)
{
// get claim request
$request_log = DB::table('request_logs')
->where('code', $request_code)
->update(['discharge_date' => now()]);
if ($request_log) {
return response()->json([
'error' => false,
'message' => "success",
'data' => []
], 200);
} else {
return response()->json([
'error' => true,
'message' => $e->getMessage(),
'data' => []
],500);
}
}
}