$request->no_polis, 'birth_date' => $request->birth_date ]; $validator = Validator::make($request->all(), [ 'no_polis' => 'required', 'birth_date' => 'required' ], [ 'no_polis.required' => trans('Validation.required',['attribute' => 'Member ID']), 'birth_date.required' => trans('Validation.required',['attribute' => 'Birth Date']), ]); if ($validator->fails()) { return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400); } else { $members = DB::table('members') ->leftJoin('member_policies', 'member_policies.member_id','=', 'members.member_id') ->leftJoin('corporate_employees', 'corporate_employees.member_id','=', 'members.member_id') ->leftJoin('persons', 'persons.id', '=', 'members.person_id') ->where('members.member_id', '=', $request->no_polis) ->where('members.birth_date', '=', $request->birth_date) ->select( 'members.id', 'members.name', 'members.member_id', 'member_policies.policy_id', 'persons.nik', 'members.email', 'members.birth_date', 'members.gender', 'members.marital_status', 'members.language', 'members.race', 'members.relation_with_principal') ->first(); if($members) { $res_data['members'] = $members; // $services = DB::table('member_plans') // ->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id') // ->leftJoin('services', 'services.code', '=', 'plans.service_code') // ->where('member_plans.member_id', $members->id) // ->whereNull('member_plans.deleted_at') // ->select('plans.service_code', 'services.name') // ->get(); // $res_data['services'] = $services; $benefits = DB::table('member_plans') ->leftJoin('corporate_benefits','corporate_benefits.plan_id', '=', 'member_plans.plan_id') ->leftJoin('benefits', 'benefits.id', '=', 'corporate_benefits.benefit_id') ->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id') ->leftJoin('services', 'services.code', '=', 'plans.service_code') ->where('member_plans.member_id', '=', $members->id) ->where('plans.service_code','=', 'OP') ->select( 'benefits.id', 'benefits.description', 'benefits.code', 'corporate_benefits.corporate_id', 'plans.service_code' ) ->get(); $res_data['benefits'] = $benefits; // Group Services // $groupServices = []; // foreach ($res_data['benefits'] as $benefit) { // $serviceCode = $benefit->service_code; // $groupServices[$serviceCode][] = [ // 'description' => $benefit->description, // 'code' => $benefit->code, // ]; // } // $res_data['groupServices'] = $groupServices; // $res_data['type'] = $request->type; // Provider // $providers = DB::table('organizations') // ->where('organizations.type', '=', 'hospital') // ->where('organizations.corporate_id_partner', '!=', 8) // ->orWhere('organizations.corporate_id_partner', NULL) // ->where('status', '=', 'active') // ->orderBy('organizations.name','asc') // ->select( // 'organizations.id', // 'organizations.name' // ) // ->get(); // $res_data['providers'] = $providers; //company // $companies = DB::table('corporates') // ->where('corporates.active', '=', 1) // ->select( // 'corporates.id', // 'corporates.name' // ) // ->get(); // $res_data['companies'] = $companies; $corporateEmployee = DB::table('corporate_employees') ->leftJoin('corporates', 'corporates.id', '=', 'corporate_employees.corporate_id') ->leftJoin('corporate_policies', 'corporate_policies.corporate_id', '=', 'corporates.id') // ->where('corporate_employees.status', 'ACTIVE') ->where('corporates.active', 1) ->where('corporate_policies.active', 1) ->where('corporate_employees.member_id', $members->id) ->select( 'corporate_policies.total_premi', 'corporate_employees.corporate_id' ) ->first(); $res_data['total_premi'] = $corporateEmployee->total_premi ?? 0; $res_data['limit_rules'] = DB::table('member_plans') ->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id') ->where('member_plans.member_id', $members->id) ->where('member_plans.status', 'active') ->where('plans.active', 1) ->value('plans.limit_rules') ?? 0; $planMember = MemberPlan::where('member_id', $members->id)->get('plan_id'); $planId = Plan::whereIn('id', $planMember)->where('service_code', 'OP')->first(); $benefit = CorporateBenefit::with(['benefit', 'plan'])->where('plan_id', $planId->id)->get()->toArray(); $benefitData = []; if (count($benefit)){ foreach($benefit as $data){ $data['benefit']['plan_id'] = $data['plan_id']; $data['benefit']['limit_amount'] = $data['limit_amount']; $data['benefit']['family_plan'] = $planId->family_plan; $data['benefit']['max_frequency_period'] = $data['max_frequency_period']; $data['benefit']['limit_amount_plan'] = $data['plan']['limit_rules']; $data['benefit']['family_plan_plans'] = $data['plan']['family_plan']; array_push($benefitData, $data['benefit']); } } $memberUsage = Helper::getUsageMember($corporateEmployee->corporate_id, $members->id, $benefitData);; $res_data['used_limit'] = json_decode($memberUsage); // company $companies = DB::table('corporates') ->where('corporates.active', 1) ->where('corporates.id', $corporateEmployee->corporate_id ?? null) ->select( 'corporates.id', 'corporates.name' ) ->get(); $res_data['companies'] = $companies; // specialities // $specialities = DB::table('specialities') // ->select( // 'specialities.id', // 'specialities.name' // ) // ->orderBy('specialities.name','asc') // ->get(); // $res_data['specialities'] = $specialities; return ApiResponse::apiResponse("Success", $res_data, trans('Message.success'), 200); } else { return ApiResponse::apiResponse("Data Not Found", $data, trans('Message.not_found'), 404); } } } }