Add Corporate Specialities
This commit is contained in:
@@ -19,8 +19,17 @@ class CorporateFormulariumController extends Controller
|
||||
public function index(Request $request, $corporate_id)
|
||||
{
|
||||
$formulariums = Formularium::query()
|
||||
->filter($request->all())
|
||||
->with(['corporateFormulariums' => function ($query) use ($corporate_id) {
|
||||
->filter($request->all());
|
||||
if (!empty($request->status) && $request->status == 'inactive') {
|
||||
$formulariums = $formulariums->whereDoesntHave('corporateFormulariums');
|
||||
} else if (!empty($request->status) && $request->status == 'all') {
|
||||
|
||||
} else {
|
||||
$formulariums->whereHas('corporateFormulariums', function ($corporateFormularium) use ($corporate_id){
|
||||
$corporateFormularium->where('corporate_id', $corporate_id);
|
||||
});
|
||||
}
|
||||
$formulariums = $formulariums->with(['corporateFormulariums' => function ($query) use ($corporate_id) {
|
||||
$query->where('corporate_id', $corporate_id);
|
||||
}])
|
||||
->withCount('items')
|
||||
|
||||
@@ -3,8 +3,11 @@
|
||||
namespace Modules\Internal\Http\Controllers\Api;
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\Corporate;
|
||||
use App\Models\CorporateService;
|
||||
use App\Models\CorporateServiceConfig;
|
||||
use App\Models\CorporateServiceSpeciality;
|
||||
use App\Models\Speciality;
|
||||
use Illuminate\Contracts\Support\Renderable;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
@@ -18,7 +21,7 @@ class CorporateServiceController extends Controller
|
||||
*/
|
||||
public function index(Request $request, $corporate_id)
|
||||
{
|
||||
$services = CorporateService::with('configs', 'service')->where('corporate_id', $corporate_id)->paginate();
|
||||
$services = CorporateService::with('configs', 'service')->where('corporate_id', $corporate_id)->filter($request->toArray())->paginate();
|
||||
|
||||
return Helper::paginateResources(CorporateServiceConfigResource::collection($services));
|
||||
}
|
||||
@@ -91,4 +94,69 @@ class CorporateServiceController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function corporateServiceIndex($corporate_id, $service_code)
|
||||
{
|
||||
$corporate = Corporate::findOrFail($corporate_id);
|
||||
$corporateService = CorporateService::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
->where('service_code', $service_code)
|
||||
->with(['configs', 'service',
|
||||
'specialities' => function($speciality) {
|
||||
$speciality->where('status', 'active');
|
||||
},
|
||||
'specialities.speciality'])
|
||||
->first();
|
||||
// $service = CorporateServiceConfigResource::make($corporateService);
|
||||
$specialities = Speciality::get();
|
||||
|
||||
return response()->json(
|
||||
[
|
||||
'corporate' => $corporate,
|
||||
'service' => CorporateServiceConfigResource::make($corporateService),
|
||||
'specialities' => $specialities,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function corporateServiceUpdate(Request $request, $corporate_id, $service_code)
|
||||
{
|
||||
// $corporate = Corporate::findOrFail($corporate_id);
|
||||
$corporateService = CorporateService::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
->where('service_code', $service_code)
|
||||
// ->with('configs', 'service')
|
||||
->first();
|
||||
$corporateService->fill([
|
||||
'status' => $request->status == 'active' ? 'active' : 'inactive'
|
||||
]);
|
||||
$corporateService->save();
|
||||
|
||||
return response()->json($corporateService);
|
||||
}
|
||||
|
||||
public function corporateServiceSpecialityUpdate(Request $request, $corporate_id, $service_code)
|
||||
{
|
||||
$corporateService = CorporateService::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
->where('service_code', $service_code)
|
||||
->first();
|
||||
CorporateServiceSpeciality::updateOrCreate([
|
||||
'corporate_service_id' => $corporateService->id,
|
||||
'speciality_id' => $request->speciality_id,
|
||||
], [
|
||||
'corporate_service_id' => $corporateService->id,
|
||||
'speciality_id' => $request->speciality_id,
|
||||
'status' => $request->status
|
||||
]);
|
||||
|
||||
$selected_specialities = CorporateServiceSpeciality::query()
|
||||
->where('corporate_service_id', $corporateService->id)
|
||||
->where('status', 'active')
|
||||
->with('speciality')
|
||||
->get()
|
||||
->pluck('speciality.name', 'speciality.id');
|
||||
|
||||
return response()->json($selected_specialities);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,10 @@ Route::prefix('internal')->group(function () {
|
||||
Route::post('corporates/{corporate_id}/diagnosis-exclusions/import', [DiagnosisExclusionController::class, 'import']);
|
||||
|
||||
Route::get('corporates/{corporate_id}/services', [CorporateServiceController::class, 'index']);
|
||||
Route::post('corporates/{corporate_id}/services', [CorporateServiceController::class, 'update']);
|
||||
Route::put('corporates/{corporate_id}/services', [CorporateServiceController::class, 'update']);
|
||||
Route::get('corporates/{corporate_id}/services/{service_code}', [CorporateServiceController::class, 'corporateServiceIndex']);
|
||||
Route::put('corporates/{corporate_id}/services/{service_code}', [CorporateServiceController::class, 'corporateServiceUpdate']);
|
||||
Route::post('corporates/{corporate_id}/services/{service_code}/specialities', [CorporateServiceController::class, 'corporateServiceSpecialityUpdate']);
|
||||
|
||||
Route::get('corporates/{corporate_id}/formulariums', [CorporateFormulariumController::class, 'index']);
|
||||
Route::put('corporates/{corporate_id}/formulariums/{formularium_id}/{action}', [CorporateFormulariumController::class, 'updateStatus']);
|
||||
|
||||
@@ -509,42 +509,6 @@ class MemberEnrollmentService
|
||||
$member->active = false;
|
||||
|
||||
$member->save();
|
||||
break;
|
||||
case "4": // Member Update Start and End Date
|
||||
$memberPolicy = MemberPolicy::query()
|
||||
->where('policy_id', $row['policy_number'])
|
||||
->where('member_id', $row['member_id'])
|
||||
->first();
|
||||
|
||||
if (!$memberPolicy) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [
|
||||
'member_id' => $row['member_id'],
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if ($memberPolicy->status != 'active') {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [
|
||||
'member_id' => $row['member_id'],
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
$memberPolicy->fill([
|
||||
'start' => $row['start_date'],
|
||||
'end' => $row['end_date']
|
||||
]);
|
||||
|
||||
if (!$memberPolicy->isDirty()) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_NO_CHANGE'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row);
|
||||
}
|
||||
|
||||
$memberPolicy->save();
|
||||
|
||||
break;
|
||||
case "5": // Member Renewal Policy (without card)
|
||||
$memberPolicy = MemberPolicy::query()
|
||||
@@ -684,9 +648,6 @@ class MemberEnrollmentService
|
||||
}
|
||||
|
||||
throw new ImportRowException(__('MODE 7 NOT HANDLED PROPERLY'), 0, null, $row);
|
||||
break;
|
||||
case "8": // Member Information Update (With Replacement Card)
|
||||
|
||||
break;
|
||||
case "9": // Member Reactivation and Personal information update (Without replacement Card)
|
||||
$memberPolicy = MemberPolicy::query()
|
||||
@@ -716,29 +677,77 @@ class MemberEnrollmentService
|
||||
|
||||
$memberPolicy->save();
|
||||
break;
|
||||
case "13": // Advance Renewal with OLD Card No. (NO PRINT)
|
||||
// ASDASDASD
|
||||
throw new ImportRowException(__('MODE 13 NOT HANDLED PROPERLY'), 0, null, $row);
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
// THESE MODES BELOW ARE DISABLED
|
||||
case "4": // Member Update Start and End Date
|
||||
throw new ImportRowException(__('MODE 4 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row);
|
||||
break;
|
||||
$memberPolicy = MemberPolicy::query()
|
||||
->where('policy_id', $row['policy_number'])
|
||||
->where('member_id', $row['member_id'])
|
||||
->first();
|
||||
|
||||
if (!$memberPolicy) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [
|
||||
'member_id' => $row['member_id'],
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if ($memberPolicy->status != 'active') {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [
|
||||
'member_id' => $row['member_id'],
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
$memberPolicy->fill([
|
||||
'start' => $row['start_date'],
|
||||
'end' => $row['end_date']
|
||||
]);
|
||||
|
||||
if (!$memberPolicy->isDirty()) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_NO_CHANGE'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row);
|
||||
}
|
||||
|
||||
$memberPolicy->save();
|
||||
|
||||
break;
|
||||
case "8": // Member Information Update (With Replacement Card)
|
||||
throw new ImportRowException(__('MODE 8 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row);
|
||||
break;
|
||||
// case "10": // No Information Available
|
||||
|
||||
// break;
|
||||
case "11": // Advance Renewal with OLD Card No. (PRINT)
|
||||
|
||||
throw new ImportRowException(__('MODE 11 NOT HANDLED PROPERLY'), 0, null, $row);
|
||||
throw new ImportRowException(__('MODE 11 NOT HANDLED PROPERLY, TRY TO USE MODE 13'), 0, null, $row);
|
||||
break;
|
||||
case "12": // Advance Renewal iwh NEW Card No. (PRINT)
|
||||
|
||||
throw new ImportRowException(__('MODE 12 NOT HANDLED PROPERLY'), 0, null, $row);
|
||||
break;
|
||||
case "13": // Advance Renewal with OLD Card No. (NO PRINT)
|
||||
|
||||
throw new ImportRowException(__('MODE 13 NOT HANDLED PROPERLY'), 0, null, $row);
|
||||
throw new ImportRowException(__('MODE 12 NOT HANDLED PROPERLY, TRY TO USE MODE 13'), 0, null, $row);
|
||||
break;
|
||||
// case "14": // No Information Available
|
||||
|
||||
// break;
|
||||
case "15": // Lost Card / Change Card with new card number (Print) (Rarely Used)
|
||||
|
||||
throw new ImportRowException(__('MODE 15 NOT HANDLED PROPERLY'), 0, null, $row);
|
||||
throw new ImportRowException(__('MODE 15 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row);
|
||||
break;
|
||||
case "16": // Endorsement Plan OLD Card No. (NO PRINT)
|
||||
throw new ImportRowException(__('MODE 16 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row);
|
||||
break;
|
||||
$plan = CorporatePlan::query()
|
||||
->where('corporate_id', $corporate->id)
|
||||
->where('code', $row['plan_id'])
|
||||
@@ -767,11 +776,9 @@ class MemberEnrollmentService
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
throw new ImportRowException(__('MODE 16 NOT HANDLED PROPERLY'), 0, null, $row);
|
||||
break;
|
||||
case "17": // Endorsement Plan OLD Card No. (PRINT)
|
||||
|
||||
throw new ImportRowException(__('MODE 17 NOT HANDLED PROPERLY'), 0, null, $row);
|
||||
throw new ImportRowException(__('MODE 17 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row);
|
||||
break;
|
||||
default:
|
||||
throw new ImportRowException(__("enrollment.MODE_UNAVAILABLE"), 0, null, $row);
|
||||
|
||||
@@ -22,7 +22,8 @@ class CorporateServiceConfigResource extends JsonResource
|
||||
'status' => $this->status,
|
||||
'name' => $this->service->name,
|
||||
'description' => $this->service->description,
|
||||
'configurations' => $this->configs->pluck('value', 'name')
|
||||
'configurations' => $this->configs->pluck('value', 'name'),
|
||||
'selected_specialities' => $this->specialities->pluck('speciality.name', 'speciality_id')
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user