Download zip

This commit is contained in:
ivan-sim
2024-04-16 16:00:23 +07:00
parent de59a1e69e
commit 9710ce9977
8 changed files with 1191 additions and 55 deletions

View File

@@ -34,6 +34,9 @@ use Modules\Internal\Transformers\RequestLogResource;
use App\Models\RequestLog;
use ZipArchive;
use File;
use PDF;
class ClaimController extends Controller
@@ -91,13 +94,13 @@ class ClaimController extends Controller
// (SELECT plans.code FROM plans WHERE plans.id = member_plans.plan_id LIMIT 1) AS plan_code
// '),
DB::raw('
(SELECT plans.code
FROM plans
(SELECT plans.code
FROM plans
WHERE plans.id IN (
SELECT member_plans.plan_id
FROM member_plans
SELECT member_plans.plan_id
FROM member_plans
WHERE member_plans.member_id = claim_requests.member_id
)
)
AND plans.service_code = claim_requests.service_code) AS plan_code
'),
DB::raw('
@@ -116,13 +119,103 @@ class ClaimController extends Controller
'claim_requests.status_claim_management as status',
)
->paginate($limit);
return response()->json(Helper::paginateResources($results));
}
public function downloadTemplate()
public function filesProvider(Request $request)
{
$limit = $request->has('per_page') ? $request->input('per_page') : 50;
$results = DB::table('request_logs')
->leftJoin('members', 'request_logs.member_id', '=', 'members.id')
->join('files', 'request_logs.id', '=', 'files.fileable_id')
// ->leftJoin('member_plans', 'member_plans.member_id', '=', 'members.id')
->when($request->input('search'), function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->orWhere('members.name', 'like', "%" . $search . "%");
$query->orWhere('request_logs.code', 'like', "%" . $search . "%");
$query->orWhere('members.member_id', 'like', "%" . $search . "%");
});
})
->when($request->has('orderBy'), function ($query) use ($request) {
$orderBy = $request->orderBy;
$direction = $request->order ?? 'asc';
$query->orderBy($orderBy, $direction);
})
->when($request->input('start_date') , function ($query, $start_date) {
$query->where(function ($query) use ($start_date) {
$query->where('request_logs.created_at', '>=', $start_date. ' 00:00:00');
});
})
->when($request->input('end_date') , function ($query, $end_date) {
$query->where(function ($query) use ($end_date) {
$query->where('request_logs.created_at', '<=', $end_date. ' 23:59:59');
});
})
->when($request->input('provider') , function ($query, $provider) {
$query->where(function ($query) use ($provider) {
$query->where('request_logs.organization_id', '=', $provider);
});
})
->where('files.fileable_type', '=', 'App\Models\RequestLog')
->where('request_logs.final_log', '=', '1')
->where('request_logs.status_final_log', '=', 'approved')
->select(
'files.original_name as files',
'files.id',
'files.id AS id_log',
'request_logs.code as code',
'members.name',
'request_logs.created_at',
DB::raw('
(SELECT organizations.name FROM organizations WHERE organizations.id = request_logs.organization_id LIMIT 1) AS provider
'),
'request_logs.status_final_log as status',
DB::raw("CONCAT('" . env('APP_URL') . "/storage/', path) as path")
)
->paginate($limit);
return response()->json(Helper::paginateResources($results));
}
public function downloadZip(Request $request)
{
$selectedRows = $request->selectedRows; // asumsi $selectedRows berisi array ID file yang dipilih
$files = [];
// Ambil path file dari database atau sumber lain sesuai dengan $selectedRows
$data = DB::table('files')
->whereIn('id', $selectedRows)
->select('path')
->get();
foreach ($data as $value) {
$files[] = storage_path('app/public/' . $value->path);
}
$zipFileName = 'downloaded_files.zip';
$zip = new ZipArchive();
if ($zip->open(storage_path('app/public/' . $zipFileName), ZipArchive::CREATE | ZipArchive::OVERWRITE)) {
foreach ($files as $file) {
$zip->addFile($file, basename($file));
}
$zip->close();
// Mengembalikan response berupa URL file zip
return response()->json(['file_url' => env('APP_URL').Storage::url($zipFileName)], 200);
} else {
return response()->json(['message' => 'Gagal membuat file ZIP.'], 500);
}
}
public function downloadTemplate()
{
return Helper::responseJson([
'file_name' => "Template - Claim - Management.xlsx",
@@ -155,7 +248,7 @@ class ClaimController extends Controller
'approval_by_claim_management' => auth()->user()->id,
'approval_date_claim_management' => date('Y-m-d H:i:s'),
]);
if ($affectedRows === 0) {
$check_status = DB::table('claim_requests')
->where('code','=', $row['code'])
@@ -183,16 +276,16 @@ class ClaimController extends Controller
$row['error'] = $e->getMessage();
if(!$row['code'])
{
$row['error'] = 'Kolom Code wajib isi';
$row['error'] = 'Kolom Code wajib isi';
}
if(!$row['qc'])
{
$row['error'] = 'Kolom QC wajib isi';
$row['error'] = 'Kolom QC wajib isi';
}
$result_rows[] = $row;
$failedRows[] = $row;
}
}
}
$response = [
'message' => 'File uploaded and data saved to database',
@@ -217,7 +310,7 @@ class ClaimController extends Controller
$row[] = $data[0][$i];
$header[] = $data[0][0];
}
$filed = [];
foreach ($header[0] as $value)
{
@@ -228,18 +321,18 @@ class ClaimController extends Controller
$filed[] = $modelColumn;
}
}
$result = [];
foreach ($row as $subarray) {
$trimmedSubarray = [];
for ($i = 0; $i < count($filed); $i++) {
$trimmedSubarray[$filed[$i]] = $subarray[$i] ? $subarray[$i] : null;
}
$result[] = $trimmedSubarray;
}
return $result;
}
}
public function exportClaimManagement(Request $request)
{
@@ -314,13 +407,13 @@ class ClaimController extends Controller
'),
'claim_requests.created_at',
DB::raw('
(SELECT plans.code
FROM plans
(SELECT plans.code
FROM plans
WHERE plans.id IN (
SELECT member_plans.plan_id
FROM member_plans
SELECT member_plans.plan_id
FROM member_plans
WHERE member_plans.member_id = claim_requests.member_id
)
)
AND plans.service_code = claim_requests.service_code) AS plan_code
'),
// DB::raw('
@@ -391,7 +484,7 @@ class ClaimController extends Controller
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$footerRow = WriterEntityFactory::createRowFromArray($footer, $style);
$writer->addRow($footerRow);
@@ -426,10 +519,10 @@ class ClaimController extends Controller
$headerRow = WriterEntityFactory::createRowFromArray($header, $style);
$writer->addRow($headerRow);
// ============================
foreach($request->params as $item)
{
$rowData = [
$item['code'],
$item['qc'],
@@ -461,7 +554,7 @@ class ClaimController extends Controller
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$footerRow = WriterEntityFactory::createRowFromArray($footer, $style);
$writer->addRow($footerRow);