diff --git a/Modules/Internal/Http/Controllers/Api/ReportLogController.php b/Modules/Internal/Http/Controllers/Api/ReportLogController.php index 4407cdc0..e3872252 100644 --- a/Modules/Internal/Http/Controllers/Api/ReportLogController.php +++ b/Modules/Internal/Http/Controllers/Api/ReportLogController.php @@ -4,6 +4,7 @@ namespace Modules\Internal\Http\Controllers\Api; use App\Helpers\Helper; use App\Models\RequestLog; +use App\Models\RequestLogBenefit; use App\Models\Organization; use App\Models\Icd; use App\Services\ClaimService; @@ -149,11 +150,27 @@ class ReportLogController extends Controller // Membuat penulis entitas Spout $writer = WriterEntityFactory::createXLSXWriter(); // Membuka penulis untuk menulis ke file - $writer->openToFile(public_path('files/Data Request LOG.xlsx')); - + $writer->openToFile(public_path('files/Report-Request-Final-LOG.xlsx')); + $headerArray = [ + 'Code', + 'Member', + 'GL Create Time', + 'GL Submit Time', + 'GL Create By', + 'FGL Create Time', + 'FGL Submit Time', + 'FGL Created By', + 'Service', + 'Provider', + 'Document Qty', + 'Duration GL', + 'Duration FGL', + 'Status GL', + 'Status Final GL' + ]; // Sheet 1 $writer->getCurrentSheet()->setName('Data'); - $headers_map_to_table_fields = RequestLog::$listing_data_doc_headers; + $headers_map_to_table_fields = $headerArray; $headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields); $writer->addRow($headerRow); @@ -165,18 +182,44 @@ class ReportLogController extends Controller ->orderBy('id', 'desc') ->get()->toArray(); - // dd($dataRequestLog); foreach ($dataRequestLog as $index => $row){ - $serviceType = $this->getServiceName($row['service_code']); - + $serviceName = Helper::serviceName($row['service_code']); + $provider = Organization::where('id', $row['organization_id'])->first(); + $documentQty = File::where(['fileable_type' => 'App\Models\RequestLog', 'fileable_id' => $row['id']])->get()->toArray(); + $parsedDateTime = Carbon::parse($row['created_at']); + $formattedDateTime = $parsedDateTime->format('Y-m-d H:i:s'); + + $timeInsertBenefit = RequestLogBenefit::where('request_log_id', $row['id'])->first(); + + if ($timeInsertBenefit){ + $created_final_at = Carbon::parse($timeInsertBenefit->created_at); + $created_final_at = $created_final_at->format('Y-m-d H:i:s'); + + $durationFinalGl = Helper::differenceTime($timeInsertBenefit->created_at, $row['approved_final_log_at']); + } else { + $durationFinalGl = 0; + $created_final_at = false; + } + + $durationGl = Helper::differenceTime($formattedDateTime, $row['submission_date']); + + $rowData = [ - $row['id'], // id $row['code'], // code - $row['member']['name'], // name + $row['member'] ? $row['member']['name'] : '', // name + $formattedDateTime ? $formattedDateTime : "-" , // created at $row['submission_date'], // submission date - $serviceType, // service type - $row['payment_type_name'], // service type - $row['status'], // service type + Helper::userName($row['approved_by']), // created by + $created_final_at ? $created_final_at : "-", // fgl create time + $row['approved_final_log_at'] ? $row['approved_final_log_at'] : "", // fgl submit time + $row['final_log'] == 1 ? Helper::userName($row['approved_final_log_by']) : '-', // fgl create by + $serviceName, // service + $provider ? $provider->name : '-', // provider + count($documentQty), // dokument qty + $durationGl, // duration gl + $row['final_log'] == 1 ? $durationFinalGl : '-', // duration fgl + $row['status'] ?? '-', // status gl + $row['status_final_log'] ?? '-', // status fgl ]; $row = WriterEntityFactory::createRowFromArray($rowData); $writer->addRow($row); @@ -185,7 +228,7 @@ class ReportLogController extends Controller return Helper::responseJson([ 'file_name' => "Data Request Log " . date('Y-m-d h:i:s'), - "file_url" => url('files/Data Request LOG.xlsx') + "file_url" => url('files/Report-Request-Final-LOG.xlsx') ]); } diff --git a/Modules/Internal/Routes/api.php b/Modules/Internal/Routes/api.php index 5126ef8c..b3f9aa67 100644 --- a/Modules/Internal/Routes/api.php +++ b/Modules/Internal/Routes/api.php @@ -322,6 +322,7 @@ Route::prefix('internal')->group(function () { Route::prefix('report')->group(function () { Route::prefix('/logs')->group(function () { Route::get('/', [ReportLogController::class, 'index']); + Route::get('/export', [ReportLogController::class, 'generateDataRequestLogExcel']); }); }); diff --git a/Modules/Internal/Transformers/ReportLogResource.php b/Modules/Internal/Transformers/ReportLogResource.php index 056e9c4c..4b245ae9 100644 --- a/Modules/Internal/Transformers/ReportLogResource.php +++ b/Modules/Internal/Transformers/ReportLogResource.php @@ -50,7 +50,7 @@ class ReportLogResource extends JsonResource 'submission_date' => $this->submission_date, 'approved_by' => Helper::userName($this->approved_by), 'approved_final_log_at' => $this->approved_final_log_at, - 'approved_final_log_by' => Helper::userName($this->approved_final_log_by), + 'approved_final_log_by' => $this->final_log == 1 ? Helper::userName($this->approved_final_log_by) : '-', 'service_name' => $this->service ? $this->service->name : '', 'provider' => $provider ? $provider->name : '-', 'document_qty' => count($documentQty), diff --git a/database/migrations/2024_01_30_102516_add_coloum_to_request_logs.php b/database/migrations/2024_01_30_102516_add_coloum_to_request_logs.php index 65f73135..9dcebbe4 100644 --- a/database/migrations/2024_01_30_102516_add_coloum_to_request_logs.php +++ b/database/migrations/2024_01_30_102516_add_coloum_to_request_logs.php @@ -14,8 +14,8 @@ return new class extends Migration public function up() { Schema::table('request_logs', function (Blueprint $table) { - $table->dateTime('created_final_at'); - $table->bigInteger('created_final_by'); + $table->dateTime('created_final_at')->default(null); + $table->bigInteger('created_final_by')->default(null); }); } diff --git a/frontend/dashboard/src/pages/Report/Log/List.tsx b/frontend/dashboard/src/pages/Report/Log/List.tsx index 1aeb3e27..7e08842b 100644 --- a/frontend/dashboard/src/pages/Report/Log/List.tsx +++ b/frontend/dashboard/src/pages/Report/Log/List.tsx @@ -170,7 +170,7 @@ export default function List() { } const handleGetData = (type :string) => { - axios.get(`customer-service/request/data`) + axios.get(`report/logs/export`) .then((response) => { const link = document.createElement('a'); link.href = response.data.data.file_url; @@ -200,7 +200,7 @@ export default function List() { sx={{ p: 1.8 }} onClick={handleClick} > - Import + Export
)}