From b8a72b81197bbf87f6f2bcde605834eeb15b5558 Mon Sep 17 00:00:00 2001 From: ivan-sim Date: Tue, 13 Jan 2026 10:48:37 +0700 Subject: [PATCH] TEst Update Search claim --- .../Api/InvoicePaymentController.php | 217 ++++++++++-------- 1 file changed, 118 insertions(+), 99 deletions(-) diff --git a/Modules/Internal/Http/Controllers/Api/InvoicePaymentController.php b/Modules/Internal/Http/Controllers/Api/InvoicePaymentController.php index 08dd2689..de169f9e 100644 --- a/Modules/Internal/Http/Controllers/Api/InvoicePaymentController.php +++ b/Modules/Internal/Http/Controllers/Api/InvoicePaymentController.php @@ -61,114 +61,133 @@ class InvoicePaymentController extends Controller } public function claim(Request $request) { - $limit = $request->has('per_page') ? $request->input('per_page') : 10; + $limit = $request->input('per_page', 10); + $results = DB::table('claim_requests') - ->leftJoin('request_logs', 'claim_requests.request_log_id','=', 'request_logs.id') - ->leftJoin('members', 'request_logs.member_id', '=', 'members.id') - ->leftJoin('invoice_payment_details', function ($join) { - $join->on('invoice_payment_details.claim_request_id', '=', 'claim_requests.id') - ->whereNull('invoice_payment_details.deleted_by') - ->orWhere('invoice_payment_details.deleted_by', 0); - }) - // ->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('claim_requests.code', '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'; + ->leftJoin('request_logs', 'claim_requests.request_log_id', '=', 'request_logs.id') + ->leftJoin('members', 'request_logs.member_id', '=', 'members.id') - $query->orderBy($orderBy, $direction); - }) - ->when($request->input('start_date') , function ($query, $start_date) { - $query->where(function ($query) use ($start_date) { - $query->where('claim_requests.created_at', '>=', $start_date); - }); - }) - ->when($request->input('end_date') , function ($query, $end_date) { - $query->where(function ($query) use ($end_date) { - $query->where('claim_requests.created_at', '<=', $end_date); - }); - }) - ->when($request->input('provider') , function ($query, $provider) { - $query->where(function ($query) use ($provider) { - $query->where('request_logs.organization_id', '=', $provider); - }); - }) - ->where('claim_management', '=', 1) - ->when($request->input('param') !== 'Edit', function ($query) { - $query->whereNotIn('claim_requests.id', function ($query) { - $query->select('claim_request_id') - ->from('invoice_payment_details'); - }); - }) - ->when($request->input('param') === 'Edit', function ($query) use ($request) { - $query->where(function ($q) use ($request) { - $q->whereNotIn('claim_requests.id', function ($subquery) { - $subquery->select('claim_request_id') - ->from('invoice_payment_details') - ->whereNull('invoice_payment_details.deleted_by') - ->orWhere('invoice_payment_details.deleted_by', 0); - }) - ->orWhereIn('claim_requests.id', function ($subquery) use ($request) { - $subquery->select('claim_request_id') - ->from('invoice_payment_details') - ->where('invoice_payment_details.invoice_payment_id', $request->input('invoiceID')) - ->whereNull('invoice_payment_details.deleted_by') - ->orWhere('invoice_payment_details.deleted_by', 0); + ->leftJoin('invoice_payment_details', function ($join) { + $join->on('invoice_payment_details.claim_request_id', '=', 'claim_requests.id') + ->where(function ($q) { + $q->whereNull('invoice_payment_details.deleted_by') + ->orWhere('invoice_payment_details.deleted_by', 0); + }); + }) + + ->when($request->filled('search'), function ($query) use ($request) { + $search = $request->search; + $query->where(function ($q) use ($search) { + $q->where('members.name', 'like', "%{$search}%") + ->orWhere('claim_requests.code', 'like', "%{$search}%") + ->orWhere('request_logs.code', 'like', "%{$search}%") + ->orWhere('members.member_id', 'like', "%{$search}%"); }); - }); - }) - ->select( - 'claim_requests.id', - 'request_logs.id AS id_log', - 'request_logs.code AS code_log', - 'claim_requests.code as code', - 'members.name', - DB::raw(' - (SELECT members.member_id FROM members WHERE members.id = claim_requests.member_id LIMIT 1) AS member_id - '), - 'claim_requests.created_at', - // DB::raw(' - // (SELECT plans.code FROM plans WHERE plans.id = member_plans.plan_id LIMIT 1) AS plan_code - // '), - DB::raw(' - (SELECT plans.code - FROM plans - WHERE plans.id IN ( - 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(' - (SELECT services.description FROM services WHERE services.code = claim_requests.service_code LIMIT 1) AS service_code - '), - DB::raw(' - (SELECT corporate_policies.code FROM corporate_policies WHERE corporate_policies.id = claim_requests.policy_id LIMIT 1) AS corporate_policies - '), - DB::raw(' - (SELECT organizations.name FROM organizations WHERE organizations.id = request_logs.organization_id LIMIT 1) AS provider - '), - DB::raw(' - (Select SUM(request_log_benefits.amount_approved) as tot_bill FROM request_log_benefits - WHERE request_log_benefits.request_log_id = request_logs.id and deleted_by is null) AS tot_bill - '), - 'claim_requests.status_claim_management as status', + }) + + ->when($request->filled('orderBy'), function ($query) use ($request) { + $query->orderBy($request->orderBy, $request->order ?? 'asc'); + }) + + ->when($request->filled('start_date'), fn ($q) => + $q->where('claim_requests.created_at', '>=', $request->start_date) ) - ->groupBy('claim_requests.id') - ->paginate($limit); + ->when($request->filled('end_date'), fn ($q) => + $q->where('claim_requests.created_at', '<=', $request->end_date) + ) + ->when($request->filled('provider'), fn ($q) => + $q->where('request_logs.organization_id', $request->provider) + ) + + ->where('claim_management', 1) + + ->when($request->input('param') !== 'Edit', function ($query) { + $query->whereNotIn('claim_requests.id', function ($q) { + $q->select('claim_request_id') + ->from('invoice_payment_details') + ->where(function ($s) { + $s->whereNull('deleted_by') + ->orWhere('deleted_by', 0); + }); + }); + }) + + ->when($request->input('param') === 'Edit', function ($query) use ($request) { + $query->where(function ($q) use ($request) { + + $q->whereNotIn('claim_requests.id', function ($sub) { + $sub->select('claim_request_id') + ->from('invoice_payment_details') + ->where(function ($s) { + $s->whereNull('deleted_by') + ->orWhere('deleted_by', 0); + }); + }) + + ->orWhereIn('claim_requests.id', function ($sub) use ($request) { + $sub->select('claim_request_id') + ->from('invoice_payment_details') + ->where('invoice_payment_id', $request->invoiceID) + ->where(function ($s) { + $s->whereNull('deleted_by') + ->orWhere('deleted_by', 0); + }); + }); + }); + }) + + ->select( + 'claim_requests.id', + 'request_logs.id AS id_log', + 'request_logs.code AS code_log', + 'claim_requests.code', + 'members.name', + 'members.member_id', + 'claim_requests.created_at', + + DB::raw('(SELECT plans.code + FROM plans + JOIN member_plans ON member_plans.plan_id = plans.id + WHERE member_plans.member_id = claim_requests.member_id + AND plans.service_code = claim_requests.service_code + LIMIT 1 + ) AS plan_code'), + + DB::raw('(SELECT services.description + FROM services + WHERE services.code = claim_requests.service_code + LIMIT 1 + ) AS service_code'), + + DB::raw('(SELECT corporate_policies.code + FROM corporate_policies + WHERE corporate_policies.id = claim_requests.policy_id + LIMIT 1 + ) AS corporate_policies'), + + DB::raw('(SELECT organizations.name + FROM organizations + WHERE organizations.id = request_logs.organization_id + LIMIT 1 + ) AS provider'), + + DB::raw('(SELECT COALESCE(SUM(amount_approved),0) + FROM request_log_benefits + WHERE request_log_id = request_logs.id + AND deleted_by IS NULL + ) AS tot_bill'), + + 'claim_requests.status_claim_management as status' + ) + + ->groupBy('claim_requests.id') + ->paginate($limit); return response()->json(Helper::paginateResources($results)); } + public function detail($id) { $invoice['invoice_payments'] = DB::table('invoice_payments')