whereHas('member', function ($query) use ($corporateId) { $query->whereHas('employeds', function ($corporateEmployee) use ($corporateId) { $corporateEmployee->where('corporate_id', $corporateId); }); }) ->where('status', 'requested') ->get(); $approveds = ClaimRequest::query() ->whereHas('member', function ($query) use ($corporateId) { $query->whereHas('employeds', function ($corporateEmployee) use ($corporateId) { $corporateEmployee->where('corporate_id', $corporateId); }); }) ->whereHas('claim', fn ($query) => $query->where('status', 'approved')) ->where('status', 'approved') ->get(); $rejecteds = ClaimRequest::query() ->whereHas('member', function ($query) use ($corporateId) { $query->whereHas('employeds', function ($corporateEmployee) use ($corporateId) { $corporateEmployee->where('corporate_id', $corporateId); }); }) ->whereHas('claim', fn ($query) => $query->where('status', 'declined')) ->where('status', 'approved') ->get(); $disbrusments = ClaimRequest::query() ->whereHas('member', function ($query) use ($corporateId) { $query->whereHas('employeds', function ($corporateEmployee) use ($corporateId) { $corporateEmployee->where('corporate_id', $corporateId); }); }) ->whereHas('claim', fn ($query) => $query->where('status', 'disbrusmented')) ->where('status', 'approved') ->get(); return Helper::responseJson([ 'requesteds' => count($requesteds), 'approveds' => count($approveds), 'rejecteds' => count($rejecteds), 'disbrusments' => count($disbrusments) ]); } public function claimDetail($corporate_id, $claimRequestId) { $claimRequestId = Crypt::decrypt($claimRequestId); $status = DB::table('claim_requests') ->leftJoin('claims', 'claim_requests.id', '=', 'claims.claim_request_id') ->leftJoin('members', 'claim_requests.member_id', '=', 'members.id') ->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id') ->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id') ->where('corporate_employees.corporate_id', '=', $corporate_id) ->where('claim_requests.id', '=', $claimRequestId) ->select( 'claim_requests.submission_date', DB::raw(' CASE WHEN claim_requests.status = "requested" THEN "requested" WHEN claim_requests.status = "approved" AND claims.status = "approved" THEN "approved" WHEN claim_requests.status = "approved" AND claims.status = "declined" THEN "declined" WHEN claim_requests.status = "approved" AND claims.status = "disbrusmented" THEN "disbrusmented" /*WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "pending"*/ WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "reviewed" ELSE "" END AS status ') ) ->first(); $results['status'] = $status; $timeline = DB::table('claim_logs') ->where('claim_logs.claim_request_id', '=', $claimRequestId) ->select( DB::raw(' CASE WHEN claim_logs.status = "requested" THEN "Request" WHEN claim_logs.status = "reviewed" THEN "Review" WHEN claim_logs.status = "approved" THEN "Approval" ELSE "-" END AS txt_status '), DB::raw(' CASE WHEN claim_logs.status = "requested" THEN "#159C9C" WHEN claim_logs.status = "reviewed" THEN "#0C53B7" WHEN claim_logs.status = "approved" THEN "#229A16" ELSE "-" END AS txt_status_color '), DB::raw(' CASE WHEN claim_logs.status = "requested" THEN "#00AB5529" WHEN claim_logs.status = "reviewed" THEN "#1890FF29" WHEN claim_logs.status = "approved" THEN "#54D62C29" ELSE "-" END AS txt_status_backgroundColor '), 'claim_logs.date', 'claim_logs.description', 'claim_logs.status' ) ->orderBy('claim_logs.id', 'desc') ->get(); $results['timeline'] = $timeline; $request_files = DB::table('claim_request_files') ->where('claim_request_files.claim_request_id', '=', $claimRequestId) ->get(); $results['request_files'] = $request_files; return Helper::responseJson($results); } public function claimDetailHistory($corporate_id, $claimRequestId) { $claimRequestId = Crypt::decrypt($claimRequestId); $member = DB::table('claim_requests') ->leftJoin('claims', 'claim_requests.id', '=', 'claims.claim_request_id') ->leftJoin('members', 'claim_requests.member_id', '=', 'members.id') ->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id') ->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id') ->where('corporate_employees.corporate_id', '=', $corporate_id) ->where('claim_requests.id', '=', $claimRequestId) ->select( 'claim_requests.code','members.member_id', 'members.name' ) ->first(); $results['member'] = $member; $claim_item = DB::table('claim_items') ->leftJoin('claims','claim_items.claim_id', '=', 'claims.id') ->leftJoin('benefits', 'claim_items.claim_itemable_id', '=', 'benefits.id') ->leftJoin('claim_requests', 'claims.claim_request_id', '=', 'claim_requests.id') ->leftJoin('members', 'claim_requests.member_id', '=', 'members.id') ->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id') ->where('corporate_employees.corporate_id', '=', $corporate_id) ->where('claim_requests.id', '=', $claimRequestId) ->select( 'claim_items.nominal_ditagihkan', 'claim_items.nominal_dicover', 'benefits.description', 'claim_requests.submission_date' ) ->orderBy('claim_items.id', 'desc') ->get(); $results['claim_item'] = $claim_item; $tot_claim_item = DB::table('claim_items') ->leftJoin('claims','claim_items.claim_id', '=', 'claims.id') ->leftJoin('benefits', 'claim_items.claim_itemable_id', '=', 'benefits.id') ->leftJoin('claim_requests', 'claims.claim_request_id', '=', 'claim_requests.id') ->leftJoin('members', 'claim_requests.member_id', '=', 'members.id') ->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id') ->where('corporate_employees.corporate_id', '=', $corporate_id) ->where('claim_requests.id', '=', $claimRequestId) ->select( DB::raw('SUM(claim_items.nominal_ditagihkan) AS nominal_ditagihkan'), DB::raw('SUM(claim_items.nominal_dicover) AS nominal_dicover'), DB::raw('(SUM(claim_items.nominal_ditagihkan) - SUM(claim_items.nominal_dicover)) AS difference'), ) ->orderBy('claim_items.id', 'desc') ->first(); $results['tot_claim_item'] = $tot_claim_item; return Helper::responseJson($results); } public function show($corporateId, $claimRequestId) { $data = ClaimRequest::query() ->with([ 'histories:historiable_type,historiable_id,title,description,created_at', 'member:id,person_id,name_prefix,name,name_suffix' => [ 'person:id,name_prefix,name,name_suffix,gender' ], 'claim:id,status', 'claimResults', 'claimConditions', 'claimDiagnosis' ]) ->find($claimRequestId, ['id', 'submission_date', 'member_id', 'claim_id', 'status']); return Helper::responseJson(new ShowResources($data)); } }