start_date ? Carbon::parse($request->start_date)->toDateTimeString() : null; $end_date = $request->end_date ? Carbon::parse($request->end_date) : null; $requestLog = RequestLog::query() ->where('deleted_at', null) ->when($request->final_log, function ($q, $final_log) { $q->where('final_log', $final_log); }) ->when($request->start_date, function ($q) use ($request) { $q->where('created_at', '>=', $request->start_date); }) ->when($request->end_date, function ($q) use ($request) { $q->where('created_at', '<=', Carbon::parse($request->end_date)->addDay()); }) ->when($request->search, function ($q, $search) { $q->where(function ($subQuery) use ($search) { $subQuery->where('code', 'LIKE', '%' . $search . '%') ->orWhereHas('member', function ($subSubQuery) use ($search) { $subSubQuery->where('name', 'LIKE', '%' . $search . '%'); }); }); }) ->when($request->orderBy, function ($q, $orderBy) use ($request) { if (in_array($orderBy, ['submission_date', 'code', 'service_code', 'status'])) { $q->orderBy($orderBy, $request->order); } }) ->when(empty($request->orderBy), function ($q) { $q->orderBy('submission_date', 'desc'); }) ->when($request->service_code, function ($q, $service_code) { if ($service_code == 'IP') { $q->where('service_code', $service_code); } else { $q->where('service_code', '!=', 'IP'); } }) ->with(['member', 'files', 'service', 'member.currentPolicy']); $requestLog = $requestLog->paginate(); return Helper::paginateResources(ReportLogResource::collection($requestLog)); } /** * Show the form for creating a new resource. * @return Renderable */ public function create() { return view('internal::create'); } /** * Show the specified resource. * @param int $id * @return Renderable */ public function show($id) { $requestLog = RequestLog::findOrFail($id); $requestLog->load([ 'histories' => function ($history) { $history->latest(); }, 'files', 'member', 'member.currentPlan' => function($memberPlan) { $memberPlan->join('request_logs', 'request_logs.service_code', '=', 'plans.service_code'); }, // 'member.current_policy', 'claim', 'organization', ]); return Helper::responseJson(data: RequestLogShowResource::make($requestLog)); } /** * Show the form for editing the specified resource. * @param int $id * @return Renderable */ public function edit($id) { return view('internal::edit'); } /** * Update the specified resource in storage. * @param Request $request * @param int $id * @return Renderable */ public function update(Request $request, $id) { } /** * Remove the specified resource from storage. * @param int $id * @return Renderable */ public function destroy(Request $request, $id) { } /** * Generate Export Excel Request LOG */ public function generateDataRequestLogExcel(Request $request){ Helper::setCustomPHPIniSettings(); $file_name = 'Data Request LOG'; // Membuat penulis entitas Spout $writer = WriterEntityFactory::createXLSXWriter(); // Membuka penulis untuk menulis ke file $writer->openToFile(public_path('files/Report-Request-Final-LOG.xlsx')); $headerArray = [ 'Code', 'Member Name', 'Member Code', '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', 'Import By Excel' ]; // Sheet 1 $writer->getCurrentSheet()->setName('Data'); $headers_map_to_table_fields = $headerArray; $headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields); $writer->addRow($headerRow); $dataRequestLog = RequestLog::query() ->where('deleted_at', null) // ->whereHas('corporatePlan', function ($corporatePlan) use ($corporate_id) { // $corporatePlan->where('corporate_id', $corporate_id); // }) ->when($request->start_date, function ($q) use ($request) { $q->where('created_at', '>=', $request->start_date); }) ->when($request->end_date, function ($q) use ($request) { $q->where('created_at', '<=', Carbon::parse($request->end_date)->addDay()); }) ->with('member') ->orderBy('id', 'desc') ->get()->toArray(); foreach ($dataRequestLog as $index => $row){ $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'], 'deleted_at' => null])->get()->toArray(); $parsedDateTime = Carbon::parse($row['created_at']); $parsedDateTime->tz = 'Asia/Jakarta'; $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['approved_at']); $approveByFgl = '-'; if ($row['import_system']) { $approveByFgl = 'Import By Excel'; } else if ($row['final_log'] == 1 && $row['status_final_log'] == 'requested'){ $approveByFgl = '-'; } else if ($row['final_log'] == 1) { $approveByFgl = Helper::userName($row['approved_final_log_by']); } $rowData = [ $row['code'], // code $row['member'] ? $row['member']['name'] : '', // name $row['member'] ? $row['member']['member_id'] : '', // member id $formattedDateTime ? $formattedDateTime : "-" , // created at $row['approved_at'], // submission date 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 $approveByFgl, // 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['import_system'] == 1 ? 'True' : 'False', // status fgl ]; $row = WriterEntityFactory::createRowFromArray($rowData); $writer->addRow($row); } $writer->close(); return Helper::responseJson([ 'file_name' => "Data Request Log " . date('Y-m-d h:i:s'), "file_url" => url('files/Report-Request-Final-LOG.xlsx') ]); } }