Compare commits
102 Commits
feature/as
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 5042cd7800 | |||
| 70b0d880fc | |||
| 6c65b58481 | |||
| 6a94e46f52 | |||
| b3e78850d3 | |||
| 5df1a85e7c | |||
|
|
c8b06f67d1 | ||
|
|
49f3a8558d | ||
| 12fbef2a12 | |||
| e455fbfbea | |||
| a55b7f4148 | |||
| 4f8745d726 | |||
| f5de316768 | |||
|
|
d22fa1848f | ||
|
|
cc5201ca3e | ||
| bb925503f0 | |||
| be5e8950c1 | |||
|
|
aefddcbff2 | ||
| 5333a65495 | |||
| 91be43263a | |||
| 947952340d | |||
| affb54b62d | |||
| 67cd7cdce0 | |||
| 27c1bfd6e3 | |||
| 5c6e7f3122 | |||
|
|
83e3ff6345 | ||
| 3e2c9015ed | |||
| 3a5fd67778 | |||
| 0d73222a04 | |||
| 85f7eeda18 | |||
| e91304bb4b | |||
| da87a53623 | |||
|
|
70a2cbff9e | ||
|
|
85039893a8 | ||
| 7d198583a4 | |||
| 3ff0cc1b29 | |||
| 97486da90f | |||
| 53075d0ce8 | |||
| a2cbc0a270 | |||
| cca2310f54 | |||
| d54288106b | |||
|
|
4a7c3ebdda | ||
|
|
59e7394d13 | ||
|
|
127cdf8708 | ||
| c2d084b4ea | |||
| 7b9a341ccd | |||
|
|
606b3c871a | ||
|
|
5fd33b3784 | ||
|
|
588b66c050 | ||
|
|
86bb5860f3 | ||
|
|
677a349d4c | ||
|
|
3c5f06ef26 | ||
|
|
d5dfc7d36c | ||
| 229908e492 | |||
| f65b28107c | |||
| e06447bf00 | |||
| c35442e652 | |||
| 26290912ef | |||
| 53b35e86c2 | |||
| 254420bdae | |||
| 8c86794340 | |||
| 2b1f5c97df | |||
| b587178c85 | |||
| ed96878dda | |||
| 35119ee8ec | |||
| 91ba718a50 | |||
| 9e322c4ee5 | |||
| 5741789ddb | |||
| d0ee09a6e4 | |||
| 89cd2a9d37 | |||
| ce0fde18dc | |||
| acf9fa348e | |||
| 74dd65efde | |||
| edc5ba9822 | |||
| 8902718523 | |||
| 1c4f03ea83 | |||
| 627904abba | |||
| bd3f53b596 | |||
| 69919878fa | |||
| f3bdf12bc4 | |||
| eb1211cde7 | |||
|
|
b8ed27f2ff | ||
| 74cfcfa16b | |||
| 9f95e89a9a | |||
| 5cd23ff343 | |||
| 615330bb46 | |||
| bcf6662db6 | |||
| be43f8a4a4 | |||
| c3a78f8a40 | |||
| 6c6a7c3919 | |||
| 63c53d18d1 | |||
| a5db01bd25 | |||
| 5d4033a9ca | |||
| 27523b8cce | |||
| f6117743ad | |||
| 8c97df9fc4 | |||
| 4f2bb19d8a | |||
| 13764a3766 | |||
| ed273fdafa | |||
| d706bf0623 | |||
| 13542cd3c0 | |||
|
|
a7e688a52c |
0
.editorconfig
Executable file → Normal file
0
.editorconfig
Executable file → Normal file
0
.env.example
Executable file → Normal file
0
.env.example
Executable file → Normal file
0
.gitattributes
vendored
Executable file → Normal file
0
.gitattributes
vendored
Executable file → Normal file
3
.gitignore
vendored
Executable file → Normal file
3
.gitignore
vendored
Executable file → Normal file
@@ -12,3 +12,6 @@ npm-debug.log
|
|||||||
yarn-error.log
|
yarn-error.log
|
||||||
/.idea
|
/.idea
|
||||||
/.vscode
|
/.vscode
|
||||||
|
|
||||||
|
/public/dashboard
|
||||||
|
/public/dashboard-staging
|
||||||
|
|||||||
0
.styleci.yml
Executable file → Normal file
0
.styleci.yml
Executable file → Normal file
0
Modules/Client/Config/.gitkeep
Executable file → Normal file
0
Modules/Client/Config/.gitkeep
Executable file → Normal file
0
Modules/Client/Config/config.php
Executable file → Normal file
0
Modules/Client/Config/config.php
Executable file → Normal file
0
Modules/Client/Console/.gitkeep
Executable file → Normal file
0
Modules/Client/Console/.gitkeep
Executable file → Normal file
0
Modules/Client/Database/Migrations/.gitkeep
Executable file → Normal file
0
Modules/Client/Database/Migrations/.gitkeep
Executable file → Normal file
0
Modules/Client/Database/Seeders/.gitkeep
Executable file → Normal file
0
Modules/Client/Database/Seeders/.gitkeep
Executable file → Normal file
0
Modules/Client/Database/Seeders/ClientDatabaseSeeder.php
Executable file → Normal file
0
Modules/Client/Database/Seeders/ClientDatabaseSeeder.php
Executable file → Normal file
0
Modules/Client/Database/factories/.gitkeep
Executable file → Normal file
0
Modules/Client/Database/factories/.gitkeep
Executable file → Normal file
0
Modules/Client/Entities/.gitkeep
Executable file → Normal file
0
Modules/Client/Entities/.gitkeep
Executable file → Normal file
0
Modules/Client/Http/Controllers/.gitkeep
Executable file → Normal file
0
Modules/Client/Http/Controllers/.gitkeep
Executable file → Normal file
0
Modules/Client/Http/Controllers/Api/AuthController.php
Executable file → Normal file
0
Modules/Client/Http/Controllers/Api/AuthController.php
Executable file → Normal file
136
Modules/Client/Http/Controllers/Api/ClaimController.php
Normal file
136
Modules/Client/Http/Controllers/Api/ClaimController.php
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Client\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Helpers\Helper;
|
||||||
|
use App\Models\Claim;
|
||||||
|
use App\Services\ClaimService;
|
||||||
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Routing\Controller;
|
||||||
|
use Modules\Client\Transformers\ClaimShowResource;
|
||||||
|
|
||||||
|
class ClaimController extends Controller
|
||||||
|
{
|
||||||
|
public function __construct(public ClaimService $claimService)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function status($corporate_id)
|
||||||
|
{
|
||||||
|
$claims = $this->claimService->getCountClaimRequestPerStatus($corporate_id);
|
||||||
|
|
||||||
|
dd($claims);
|
||||||
|
|
||||||
|
return Helper::responseJson([
|
||||||
|
'count_requested' => 0,
|
||||||
|
'count_approval' => 0,
|
||||||
|
'count_disbrushment' => 0,
|
||||||
|
'count_rejected' => 0,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function index(Request $request, $corporate_id)
|
||||||
|
{
|
||||||
|
$claims = Claim::query()
|
||||||
|
->when($request->search ?? null, function ($query, $search) {
|
||||||
|
$query->where('code', 'LIKE', '%' . $search . '%');
|
||||||
|
})
|
||||||
|
->with([
|
||||||
|
'member',
|
||||||
|
'diagnoses' => function ($diagnosis) {
|
||||||
|
return $diagnosis->where('type', 'primary');
|
||||||
|
},
|
||||||
|
'diagnoses.icd',
|
||||||
|
'plan',
|
||||||
|
'benefit',
|
||||||
|
'claimRequest',
|
||||||
|
'claimRequest.service'
|
||||||
|
])
|
||||||
|
->paginate(10);
|
||||||
|
|
||||||
|
return Helper::responseJson($claims);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('client::create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$claim = Claim::query()
|
||||||
|
->with([
|
||||||
|
'member',
|
||||||
|
'member.currentPlan',
|
||||||
|
'member.currentPlan.benefits',
|
||||||
|
'member.currentCorporate',
|
||||||
|
'member.currentPolicy',
|
||||||
|
'diagnosis',
|
||||||
|
'diagnoses',
|
||||||
|
'benefit',
|
||||||
|
'files',
|
||||||
|
'claimRequest',
|
||||||
|
'claimRequest.files',
|
||||||
|
'items',
|
||||||
|
'items.claim_itemable',
|
||||||
|
])
|
||||||
|
->findOrFail($id);
|
||||||
|
|
||||||
|
return Helper::responseJson(ClaimShowResource::make($claim));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
return view('client::edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
0
Modules/Client/Http/Controllers/Api/CorporateDivisionController.php
Executable file → Normal file
0
Modules/Client/Http/Controllers/Api/CorporateDivisionController.php
Executable file → Normal file
0
Modules/Client/Http/Controllers/Api/CorporateManageController.php
Executable file → Normal file
0
Modules/Client/Http/Controllers/Api/CorporateManageController.php
Executable file → Normal file
113
Modules/Client/Http/Controllers/Api/CorporateMemberController.php
Executable file → Normal file
113
Modules/Client/Http/Controllers/Api/CorporateMemberController.php
Executable file → Normal file
@@ -3,110 +3,39 @@
|
|||||||
namespace Modules\Client\Http\Controllers\Api;
|
namespace Modules\Client\Http\Controllers\Api;
|
||||||
|
|
||||||
use App\Helpers\Helper;
|
use App\Helpers\Helper;
|
||||||
use App\Models\Member;
|
use App\Services\CorporateMemberService;
|
||||||
use Illuminate\Contracts\Support\Renderable;
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
use Modules\Client\Transformers\MemberResources;
|
use Modules\Client\Transformers\ClaimReport\MemberResources as ClaimReportMemberResources;
|
||||||
|
use Modules\Client\Transformers\Dashboard\MemberResources as DashboardMemberResources;
|
||||||
|
use Modules\Client\Transformers\Dashboard\MemberAlarmCenterResources as DashboardMemberAlarmResources;
|
||||||
|
|
||||||
class CorporateMemberController extends Controller
|
class CorporateMemberController extends Controller
|
||||||
{
|
{
|
||||||
|
public function __construct(public CorporateMemberService $corporateMemberService)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
* @return Renderable
|
* @return Renderable
|
||||||
*/
|
*/
|
||||||
public function index(Request $request, $corporate_id)
|
public function index(Request $request, $corporate_id)
|
||||||
{
|
{
|
||||||
$limit = $request->has('per_page') ? $request->per_page : 10;
|
switch ($request->input('type')) {
|
||||||
|
case 'claim-report':
|
||||||
$members = Member::query()
|
$members = $this->corporateMemberService->getAllMemberClaimReports($corporate_id, $request);
|
||||||
->whereHas('employeds', function ($corporateEmployee) use ($corporate_id) {
|
return response()->json(Helper::paginateResources(ClaimReportMemberResources::collection($members)));
|
||||||
$corporateEmployee->where('corporate_id', $corporate_id);
|
case 'claim-submit':
|
||||||
})->when($request->input('search'), function ($query, $search) {
|
$members = $this->corporateMemberService->getAllMemberClaimReports($corporate_id, $request);
|
||||||
$query->where('member_id', 'like', "%" . $search . "%")
|
return response()->json(Helper::paginateResources(ClaimReportMemberResources::collection($members)));
|
||||||
->orWhere('name', 'like', "%" . $search . "%");
|
case 'alarm-center':
|
||||||
});
|
$members = $this->corporateMemberService->getAllMemberAlarmCenter($corporate_id, $request);
|
||||||
|
return response()->json(Helper::paginateResources(DashboardMemberAlarmResources::collection($members)));
|
||||||
if ($request->input('claimMember') === 'false') {
|
default:
|
||||||
$members = $members->when($request->input('division'), function ($division, $division_id) {
|
$members = $this->corporateMemberService->getAllMemberDashboards($corporate_id, $request);
|
||||||
$division->whereHas('division', function ($corporateEmployee) use ($division_id) {
|
return response()->json(Helper::paginateResources(DashboardMemberResources::collection($members)));
|
||||||
$corporateEmployee->where('division_id', $division_id);
|
|
||||||
});
|
|
||||||
})->when($request->has('orderBy'), function ($query) use ($request) {
|
|
||||||
$query->orderBy($request->orderBy, $request->order);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
// else {
|
|
||||||
// $members = $members->get();
|
|
||||||
|
|
||||||
// return response()->json(MemberResources::collection($members));
|
|
||||||
// }
|
|
||||||
$members->with('currentPlan');
|
|
||||||
$members->withSum('claims', 'total_claim');
|
|
||||||
|
|
||||||
$members = $members->paginate($limit);
|
|
||||||
// return $members;
|
|
||||||
|
|
||||||
return response()->json(Helper::paginateResources(MemberResources::collection($members)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the form for creating a new resource.
|
|
||||||
* @return Renderable
|
|
||||||
*/
|
|
||||||
public function create()
|
|
||||||
{
|
|
||||||
return view('client::create');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Store a newly created resource in storage.
|
|
||||||
* @param Request $request
|
|
||||||
* @return Renderable
|
|
||||||
*/
|
|
||||||
public function store(Request $request)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the specified resource.
|
|
||||||
* @param int $id
|
|
||||||
* @return Renderable
|
|
||||||
*/
|
|
||||||
public function show($id)
|
|
||||||
{
|
|
||||||
return view('client::show');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the form for editing the specified resource.
|
|
||||||
* @param int $id
|
|
||||||
* @return Renderable
|
|
||||||
*/
|
|
||||||
public function edit($id)
|
|
||||||
{
|
|
||||||
return view('client::edit');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the specified resource in storage.
|
|
||||||
* @param Request $request
|
|
||||||
* @param int $id
|
|
||||||
* @return Renderable
|
|
||||||
*/
|
|
||||||
public function update(Request $request, $id)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the specified resource from storage.
|
|
||||||
* @param int $id
|
|
||||||
* @return Renderable
|
|
||||||
*/
|
|
||||||
public function destroy($id)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
21
Modules/Client/Http/Controllers/Api/CorporatePolicyController.php
Executable file → Normal file
21
Modules/Client/Http/Controllers/Api/CorporatePolicyController.php
Executable file → Normal file
@@ -2,11 +2,12 @@
|
|||||||
|
|
||||||
namespace Modules\Client\Http\Controllers\Api;
|
namespace Modules\Client\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Helpers\Helper;
|
||||||
use Illuminate\Contracts\Support\Renderable;
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Modules\Client\Transformers\DashboardResources;
|
use Modules\Client\Transformers\Dashboard\LimitResources;
|
||||||
|
|
||||||
class CorporatePolicyController extends Controller
|
class CorporatePolicyController extends Controller
|
||||||
{
|
{
|
||||||
@@ -14,25 +15,15 @@ class CorporatePolicyController extends Controller
|
|||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
* @return Renderable
|
* @return Renderable
|
||||||
*/
|
*/
|
||||||
public function index(Request $request, $corporate_id)
|
public function index($corporate_id)
|
||||||
{
|
{
|
||||||
$user = Auth::user();
|
$currentCorporate = Auth::user()->managedCorporates()
|
||||||
$currentCorporate = $user->managedCorporates()
|
|
||||||
->with(['currentPolicy', 'employees'])
|
->with(['currentPolicy', 'employees'])
|
||||||
->find($corporate_id);
|
->find($corporate_id);
|
||||||
|
|
||||||
$data = DashboardResources::make($currentCorporate);
|
$data = LimitResources::make($currentCorporate);
|
||||||
|
|
||||||
return response()->json($data);
|
return Helper::responseJson($data);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the form for creating a new resource.
|
|
||||||
* @return Renderable
|
|
||||||
*/
|
|
||||||
public function create()
|
|
||||||
{
|
|
||||||
return view('client::create');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
71
Modules/Client/Http/Controllers/Api/TopUpController.php
Normal file
71
Modules/Client/Http/Controllers/Api/TopUpController.php
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Client\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Helpers\Helper;
|
||||||
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Routing\Controller;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Modules\Client\Transformers\Dashboard\TopUpLimitResources;
|
||||||
|
|
||||||
|
class TopUpController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function index($corporate_id)
|
||||||
|
{
|
||||||
|
$data = Auth::user()
|
||||||
|
->managedCorporates()
|
||||||
|
->with(['currentPolicy', 'employees'])
|
||||||
|
->withCount(['employees', 'claims' => function ($query) {
|
||||||
|
$query->where('claims.status', 'paid');
|
||||||
|
}])
|
||||||
|
->find($corporate_id);
|
||||||
|
|
||||||
|
return Helper::responseJson(TopUpLimitResources::make($data));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
return view('client::show');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
0
Modules/Client/Http/Controllers/Api/UserController.php
Executable file → Normal file
0
Modules/Client/Http/Controllers/Api/UserController.php
Executable file → Normal file
0
Modules/Client/Http/Controllers/ClientController.php
Executable file → Normal file
0
Modules/Client/Http/Controllers/ClientController.php
Executable file → Normal file
0
Modules/Client/Http/Middleware/.gitkeep
Executable file → Normal file
0
Modules/Client/Http/Middleware/.gitkeep
Executable file → Normal file
0
Modules/Client/Http/Requests/.gitkeep
Executable file → Normal file
0
Modules/Client/Http/Requests/.gitkeep
Executable file → Normal file
0
Modules/Client/Providers/.gitkeep
Executable file → Normal file
0
Modules/Client/Providers/.gitkeep
Executable file → Normal file
0
Modules/Client/Providers/ClientServiceProvider.php
Executable file → Normal file
0
Modules/Client/Providers/ClientServiceProvider.php
Executable file → Normal file
0
Modules/Client/Providers/RouteServiceProvider.php
Executable file → Normal file
0
Modules/Client/Providers/RouteServiceProvider.php
Executable file → Normal file
0
Modules/Client/Resources/assets/.gitkeep
Executable file → Normal file
0
Modules/Client/Resources/assets/.gitkeep
Executable file → Normal file
0
Modules/Client/Resources/assets/js/app.js
Executable file → Normal file
0
Modules/Client/Resources/assets/js/app.js
Executable file → Normal file
0
Modules/Client/Resources/assets/sass/app.scss
Executable file → Normal file
0
Modules/Client/Resources/assets/sass/app.scss
Executable file → Normal file
0
Modules/Client/Resources/lang/.gitkeep
Executable file → Normal file
0
Modules/Client/Resources/lang/.gitkeep
Executable file → Normal file
0
Modules/Client/Resources/views/.gitkeep
Executable file → Normal file
0
Modules/Client/Resources/views/.gitkeep
Executable file → Normal file
0
Modules/Client/Resources/views/index.blade.php
Executable file → Normal file
0
Modules/Client/Resources/views/index.blade.php
Executable file → Normal file
0
Modules/Client/Resources/views/layouts/master.blade.php
Executable file → Normal file
0
Modules/Client/Resources/views/layouts/master.blade.php
Executable file → Normal file
0
Modules/Client/Routes/.gitkeep
Executable file → Normal file
0
Modules/Client/Routes/.gitkeep
Executable file → Normal file
9
Modules/Client/Routes/api.php
Executable file → Normal file
9
Modules/Client/Routes/api.php
Executable file → Normal file
@@ -6,6 +6,8 @@ use Modules\Client\Http\Controllers\Api\CorporateManageController;
|
|||||||
use Modules\Client\Http\Controllers\Api\CorporateMemberController;
|
use Modules\Client\Http\Controllers\Api\CorporateMemberController;
|
||||||
use Modules\Client\Http\Controllers\Api\CorporatePolicyController;
|
use Modules\Client\Http\Controllers\Api\CorporatePolicyController;
|
||||||
use Modules\Client\Http\Controllers\Api\UserController;
|
use Modules\Client\Http\Controllers\Api\UserController;
|
||||||
|
use Modules\Client\Http\Controllers\Api\ClaimController;
|
||||||
|
use Modules\Client\Http\Controllers\Api\TopUpController;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@@ -34,6 +36,13 @@ Route::prefix('client')->group(function () {
|
|||||||
Route::get('policy', [CorporatePolicyController::class, 'index']);
|
Route::get('policy', [CorporatePolicyController::class, 'index']);
|
||||||
Route::get('division', [CorporateDivisionController::class, 'index']);
|
Route::get('division', [CorporateDivisionController::class, 'index']);
|
||||||
Route::get('members', [CorporateMemberController::class, 'index']);
|
Route::get('members', [CorporateMemberController::class, 'index']);
|
||||||
|
Route::get('claims/status', [ClaimController::class, 'status']);
|
||||||
|
Route::get('claims', [ClaimController::class, 'index']);
|
||||||
|
|
||||||
|
Route::get('topup', [TopUpController::class, 'index']);
|
||||||
|
Route::post('topup', [TopUpController::class, 'store']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::get('claims/{id}', [ClaimController::class, 'show']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
0
Modules/Client/Routes/web.php
Executable file → Normal file
0
Modules/Client/Routes/web.php
Executable file → Normal file
0
Modules/Client/Tests/Feature/.gitkeep
Executable file → Normal file
0
Modules/Client/Tests/Feature/.gitkeep
Executable file → Normal file
0
Modules/Client/Tests/Unit/.gitkeep
Executable file → Normal file
0
Modules/Client/Tests/Unit/.gitkeep
Executable file → Normal file
26
Modules/Client/Transformers/ClaimReport/MemberResources.php
Normal file
26
Modules/Client/Transformers/ClaimReport/MemberResources.php
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Client\Transformers\ClaimReport;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class MemberResources extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'memberId' => $this->member_id,
|
||||||
|
'fullName' => $this->full_name,
|
||||||
|
'division' => $this->division_name ?? '',
|
||||||
|
'submission_date' => '',
|
||||||
|
'status' => $this->active,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
41
Modules/Client/Transformers/ClaimShowResource.php
Normal file
41
Modules/Client/Transformers/ClaimShowResource.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
c<?php
|
||||||
|
|
||||||
|
namespace Modules\Client\Transformers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class ClaimShowResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
$data = parent::toArray($request);
|
||||||
|
// $data['']
|
||||||
|
$data['benefit_items'] = $this->items
|
||||||
|
->filter(function ($item) {
|
||||||
|
return $item->claim_itemable_type == Benefit::class;
|
||||||
|
})
|
||||||
|
->map(function ($item) {
|
||||||
|
$itemData = $item->claim_itemable->toArray();
|
||||||
|
$itemData['nominal_dicover'] = $item['nominal_dicover'] ?? 0;
|
||||||
|
$itemData['nominal_ditagihkan'] = $item['nominal_ditagihkan'] ?? 0;
|
||||||
|
$itemData['nominal_total'] = $item['nominal_total'] ?? 0;
|
||||||
|
|
||||||
|
// For React Frotnend
|
||||||
|
$itemData['biaya_diajukan'] = $itemData['nominal_ditagihkan'];
|
||||||
|
$itemData['biaya_disetujui'] = $itemData['nominal_dicover'];
|
||||||
|
|
||||||
|
return $itemData;
|
||||||
|
});
|
||||||
|
|
||||||
|
$data['primary_diagnosis'] = $this->diagnoses->filter(function($diagnosis){ return $diagnosis->type == 'primary';})->values();
|
||||||
|
$data['secondary_diagnosis'] = $this->diagnoses->filter(function($diagnosis){ return $diagnosis->type == 'secondary';})->values();
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Modules\Client\Transformers;
|
namespace Modules\Client\Transformers\Dashboard;
|
||||||
|
|
||||||
use App\Helpers\Helper;
|
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
class DashboardResources extends JsonResource
|
class LimitResources extends JsonResource
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Transform the resource into an array.
|
* Transform the resource into an array.
|
||||||
@@ -22,17 +21,15 @@ class DashboardResources extends JsonResource
|
|||||||
$lockPercentage = (int)$this->currentPolicy->minimal_stop_service_percentage;
|
$lockPercentage = (int)$this->currentPolicy->minimal_stop_service_percentage;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'policy' => [
|
'myLimit' => [
|
||||||
'myLimit' => [
|
'balance' => $myLimitBalance,
|
||||||
'balance' => $myLimitBalance,
|
'total' => $myLimitTotal,
|
||||||
'total' => $myLimitTotal,
|
'percentage' => $myLimitTotal ? round(($myLimitBalance / $myLimitTotal) * 100, 2) : 0,
|
||||||
'percentage' => $myLimitTotal ? (($myLimitBalance / $myLimitTotal) * 100) : 0,
|
|
||||||
],
|
|
||||||
'lockLimit' => [
|
|
||||||
'balance' => $lockBalance,
|
|
||||||
'percentage' => $lockPercentage
|
|
||||||
]
|
|
||||||
],
|
],
|
||||||
|
'lockLimit' => [
|
||||||
|
'balance' => $lockBalance,
|
||||||
|
'percentage' => $lockPercentage
|
||||||
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
namespace Modules\Client\Transformers\Dashboard;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class MemberAlarmCenterResources extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'memberId' => $this->member_id,
|
||||||
|
'fullName' => $this->full_name,
|
||||||
|
'service' => $this->service_code,
|
||||||
|
'start_date' => $this->start_date,
|
||||||
|
'end_date' => $this->end_date,
|
||||||
|
'status' => $this->active,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Modules\Client\Transformers;
|
namespace Modules\Client\Transformers\Dashboard;
|
||||||
|
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
@@ -18,15 +18,13 @@ class MemberResources extends JsonResource
|
|||||||
'id' => $this->id,
|
'id' => $this->id,
|
||||||
'memberId' => $this->member_id,
|
'memberId' => $this->member_id,
|
||||||
'fullName' => $this->full_name,
|
'fullName' => $this->full_name,
|
||||||
$this->mergeWhen($request->input('claimMember') === 'false', [
|
'division' => $this->division_name ?? '',
|
||||||
'division' => $this->division->name ?? '',
|
|
||||||
'status' => $this->active
|
|
||||||
]),
|
|
||||||
'limit' => [
|
'limit' => [
|
||||||
'current' => $this->claims_sum_total_claim,
|
'current' => $this->claims_sum_total_claim ?? 0,
|
||||||
'total' => $this->currentPlan->limit_rules ?? 0,
|
'total' => $this->currentPlan->limit_rules ?? 0,
|
||||||
'percentage' => (!empty($this->currentPlan->limit_rules ?? 0)) ? (($this->claims_sum_total_claim / $this->currentPlan->limit_rules) * 100) : 0
|
'percentage' => (!empty($this->currentPlan->limit_rules ?? 0)) ? (($this->claims_sum_total_claim / $this->currentPlan->limit_rules) * 100) : 0
|
||||||
],
|
],
|
||||||
|
'status' => $this->active,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Client\Transformers\Dashboard;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class TopUpLimitResources extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
$myLimitBalance = (int)$this->currentPolicy->limit_balance;
|
||||||
|
$myLimitTotal = (int)$this->currentPolicy->total_premi;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'companyName' => $this->name,
|
||||||
|
'policyNumber' => $this->currentPolicy->code,
|
||||||
|
'totalMembers' => $this->employees_count,
|
||||||
|
'totalCases' => $this->claims_count,
|
||||||
|
'myLimit' => [
|
||||||
|
'balance' => $myLimitBalance,
|
||||||
|
'total' => $myLimitTotal,
|
||||||
|
'percentage' => $myLimitTotal ? round(($myLimitBalance / $myLimitTotal) * 100, 2) : 0,
|
||||||
|
],
|
||||||
|
'maxTopUp' => ($myLimitTotal - $myLimitBalance)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
0
Modules/Client/composer.json
Executable file → Normal file
0
Modules/Client/composer.json
Executable file → Normal file
0
Modules/Client/module.json
Executable file → Normal file
0
Modules/Client/module.json
Executable file → Normal file
0
Modules/Client/package.json
Executable file → Normal file
0
Modules/Client/package.json
Executable file → Normal file
0
Modules/Client/webpack.mix.js
Executable file → Normal file
0
Modules/Client/webpack.mix.js
Executable file → Normal file
0
Modules/HospitalPortal/Config/.gitkeep
Normal file
0
Modules/HospitalPortal/Config/.gitkeep
Normal file
5
Modules/HospitalPortal/Config/config.php
Normal file
5
Modules/HospitalPortal/Config/config.php
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'name' => 'HospitalPortal'
|
||||||
|
];
|
||||||
0
Modules/HospitalPortal/Console/.gitkeep
Normal file
0
Modules/HospitalPortal/Console/.gitkeep
Normal file
0
Modules/HospitalPortal/Database/Migrations/.gitkeep
Normal file
0
Modules/HospitalPortal/Database/Migrations/.gitkeep
Normal file
0
Modules/HospitalPortal/Database/Seeders/.gitkeep
Normal file
0
Modules/HospitalPortal/Database/Seeders/.gitkeep
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Database\Seeders;
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class HospitalPortalDatabaseSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
Model::unguard();
|
||||||
|
|
||||||
|
// $this->call("OthersTableSeeder");
|
||||||
|
}
|
||||||
|
}
|
||||||
0
Modules/HospitalPortal/Database/factories/.gitkeep
Normal file
0
Modules/HospitalPortal/Database/factories/.gitkeep
Normal file
0
Modules/HospitalPortal/Entities/.gitkeep
Normal file
0
Modules/HospitalPortal/Entities/.gitkeep
Normal file
0
Modules/HospitalPortal/Http/Controllers/.gitkeep
Normal file
0
Modules/HospitalPortal/Http/Controllers/.gitkeep
Normal file
128
Modules/HospitalPortal/Http/Controllers/Api/AuthController.php
Normal file
128
Modules/HospitalPortal/Http/Controllers/Api/AuthController.php
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\User;
|
||||||
|
use Crypt;
|
||||||
|
use Error;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Illuminate\Support\Facades\Mail;
|
||||||
|
use Modules\Internal\Emails\SendVerifyEmail;
|
||||||
|
use Modules\Internal\Events\ForgetPassword;
|
||||||
|
|
||||||
|
class AuthController extends Controller
|
||||||
|
{
|
||||||
|
public function login(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'email' => 'required|email',
|
||||||
|
'password' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$user = User::query()
|
||||||
|
->where('email', $request->email)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$user) {
|
||||||
|
return response(['message' => 'User Tidak Ditemukan'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Hash::check($request->password, $user->password)) {
|
||||||
|
return response(['message' => 'Password Salah'], 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response([
|
||||||
|
'message' => 'Selamat Datang',
|
||||||
|
'user' => $user,
|
||||||
|
'token' => $user->createToken('app')->plainTextToken
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function logout(Request $request)
|
||||||
|
{
|
||||||
|
$token = $request->bearerToken();
|
||||||
|
Auth::user()->tokens()->where('id', $token)->delete();
|
||||||
|
|
||||||
|
return response(['message' => 'Berhasil Logout.']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function resetPassword(Request $request)
|
||||||
|
{
|
||||||
|
$user = Auth::user();
|
||||||
|
|
||||||
|
$request->validate([
|
||||||
|
'old_password' => 'required',
|
||||||
|
'new_password' => 'required',
|
||||||
|
'confirm_new_password' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (!Hash::check($request['old_password'], $user->password)) {
|
||||||
|
return response(['message' => 'Password Salah'], 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request["new_password"] != $request["confirm_new_password"]) {
|
||||||
|
return response([
|
||||||
|
'message' => "Password Tidak Sama"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user->update([
|
||||||
|
'password' => Hash::make($request->confirm_new_password),
|
||||||
|
]);
|
||||||
|
return response()->json($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function verifyEmail(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'email' => 'required|email',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$user = User::query()
|
||||||
|
->where('email', $request->email)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$user) {
|
||||||
|
return response(['message' => 'User Tidak Ditemukan'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
Event(new ForgetPassword($user));
|
||||||
|
|
||||||
|
// Mail::to($user->email)->send(new SendVerifyEmail($user));
|
||||||
|
|
||||||
|
return response()->json($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function forgetPassword(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'new_password' => 'required',
|
||||||
|
'confirm_new_password' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$token = Crypt::decryptString($request->token);
|
||||||
|
$email = explode('|', $token)[0];
|
||||||
|
|
||||||
|
$user = User::query()
|
||||||
|
->where('email', $email)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$user) {
|
||||||
|
return response(['message' => 'User Tidak Ditemukan'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request["new_password"] != $request["confirm_new_password"]) {
|
||||||
|
return response([
|
||||||
|
'message' => "Password Tidak Sama"
|
||||||
|
], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user->update([
|
||||||
|
'password' => Hash::make($request->confirm_new_password),
|
||||||
|
]);
|
||||||
|
return response()->json($user);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Events\ClaimRequested;
|
||||||
|
use App\Helpers\Helper;
|
||||||
|
use App\Models\ClaimRequest;
|
||||||
|
use App\Models\File;
|
||||||
|
use App\Models\Member;
|
||||||
|
use App\Services\ClaimRequestService;
|
||||||
|
use App\Services\ClaimService;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Routing\Controller;
|
||||||
|
use Modules\HospitalPortal\Transformers\ClaimRequestResource;
|
||||||
|
use Modules\HospitalPortal\Transformers\ClaimRequestShowResource;
|
||||||
|
use PDF;
|
||||||
|
|
||||||
|
class ClaimRequestController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function index(request $request)
|
||||||
|
{
|
||||||
|
$claimRequests = ClaimRequest::query()
|
||||||
|
->when($request->search, function ($q, $search) {
|
||||||
|
$q->where('code', 'LIKE', "%".$search."%");
|
||||||
|
})
|
||||||
|
->when($request->orderBy, function ($q, $orderBy) use ($request) {
|
||||||
|
if (in_array($orderBy, ['submission_date', 'code'])) {
|
||||||
|
$q->orderBy($orderBy, $request->order);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
->when($request->status, function($q, $status) {
|
||||||
|
$q->where('status', $status);
|
||||||
|
})
|
||||||
|
->with(['member'])
|
||||||
|
->orderBy('created_at', 'DESC')
|
||||||
|
->paginate();
|
||||||
|
|
||||||
|
return Helper::responseJson($claimRequests);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('hospitalportal::create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'member_id' => 'required',
|
||||||
|
'service_code' => 'required|in:OP,IP'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$member = Member::find($request->member_id);
|
||||||
|
$newClaimRequest = ClaimRequestService::storeClaimRequest(member: $member, paymentType: 'reimbursement', serviceCode: $request->service_code);
|
||||||
|
|
||||||
|
ClaimRequested::dispatch($newClaimRequest);
|
||||||
|
|
||||||
|
// Log History
|
||||||
|
$newClaimRequest->histories()->create([
|
||||||
|
'title' => 'New Claim Requested',
|
||||||
|
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
|
||||||
|
'type' => 'info',
|
||||||
|
'system_origin' => 'hospital-portal'
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($request->hasFile('result_files')) {
|
||||||
|
foreach ($request->result_files as $file) {
|
||||||
|
$pathFile = File::storeFile('claim-result', $newClaimRequest->id, $file);
|
||||||
|
$newClaimRequest->files()->updateOrCreate([
|
||||||
|
'type' => 'claim-result',
|
||||||
|
'name' => File::getFileName('claim-result', $newClaimRequest->id, $file),
|
||||||
|
'original_name' => $file->getClientOriginalName(),
|
||||||
|
'extension' => $file->getClientOriginalExtension(),
|
||||||
|
'path' => $pathFile,
|
||||||
|
'created_by' => auth()->user()->id,
|
||||||
|
'updated_by' => auth()->user()->id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->hasFile('diagnosa_files')) {
|
||||||
|
foreach ($request->diagnosa_files as $file) {
|
||||||
|
$pathFile = File::storeFile('claim-diagnosis', $newClaimRequest->id, $file);
|
||||||
|
$newClaimRequest->files()->updateOrCreate([
|
||||||
|
'type' => 'claim-diagnosis',
|
||||||
|
'name' => File::getFileName('claim-diagnosis', $newClaimRequest->id, $file),
|
||||||
|
'original_name' => $file->getClientOriginalName(),
|
||||||
|
'extension' => $file->getClientOriginalExtension(),
|
||||||
|
'path' => $pathFile,
|
||||||
|
'created_by' => auth()->user()->id,
|
||||||
|
'updated_by' => auth()->user()->id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->hasFile('result_files')) {
|
||||||
|
foreach ($request->result_files as $file) {
|
||||||
|
$pathFile = File::storeFile('claim-kondisi', $newClaimRequest->id, $file);
|
||||||
|
$newClaimRequest->files()->updateOrCreate([
|
||||||
|
'type' => 'claim-kondisi',
|
||||||
|
'name' => File::getFileName('claim-kondisi', $newClaimRequest->id, $file),
|
||||||
|
'original_name' => $file->getClientOriginalName(),
|
||||||
|
'extension' => $file->getClientOriginalExtension(),
|
||||||
|
'path' => $pathFile,
|
||||||
|
'created_by' => auth()->user()->id,
|
||||||
|
'updated_by' => auth()->user()->id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Helper::responseJson(data: $request->toArray(), message: 'Claim Request berhasil ajukan!');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$claimRequest = ClaimRequest::findOrFail($id);
|
||||||
|
$claimRequest->load([
|
||||||
|
'histories' => function ($history) {
|
||||||
|
$history->latest();
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
return Helper::responseJson(data: ClaimRequestShowResource::make($claimRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
return view('hospitalportal::edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateLog($claim_request_id)
|
||||||
|
{
|
||||||
|
$claimRequest = ClaimRequest::findOrFail($claim_request_id);
|
||||||
|
|
||||||
|
if ($claimRequest->status != 'approved') {
|
||||||
|
throw new Exception("Belum Teverifikasi", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$member = Member::findOrFail($claimRequest->member_id)
|
||||||
|
->load(['currentPlan', 'currentPolicy', 'currentPlan.corporateBenefits', 'currentPlan.corporateBenefits.benefit']);
|
||||||
|
|
||||||
|
$pdf = PDF::loadView('pdf.guaranted_leter', compact('member', 'claimRequest'));
|
||||||
|
return $pdf->download('Guaranted Letter - '.$member->full_name.'.pdf');
|
||||||
|
|
||||||
|
return $claimRequest;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Helpers\Helper;
|
||||||
|
use App\Models\Member;
|
||||||
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Routing\Controller;
|
||||||
|
|
||||||
|
class MemberController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function search(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'no_polis' => 'required',
|
||||||
|
'birth_date' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$member = Member::query()
|
||||||
|
->where('member_id', $request->no_polis)
|
||||||
|
->where('birth_date', $request->birth_date)
|
||||||
|
->with(['person', 'currentCorporate',
|
||||||
|
// 'currentCorporate.corporateServices' => function ($corporateService) {
|
||||||
|
// $corporateService->where('status', 'active');
|
||||||
|
// },
|
||||||
|
// 'currentCorporate.corporateServices.service'
|
||||||
|
// 'currentPlan.benefits',
|
||||||
|
// 'currentPlan.corporateBenefit.plan',
|
||||||
|
'currentPlan.corporateBenefits.benefit'
|
||||||
|
])
|
||||||
|
->firstOrFail();
|
||||||
|
|
||||||
|
|
||||||
|
return Helper::responseJson($member);
|
||||||
|
}
|
||||||
|
}
|
||||||
83
Modules/HospitalPortal/Http/Controllers/ClaimController.php
Normal file
83
Modules/HospitalPortal/Http/Controllers/ClaimController.php
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Helpers\Helper;
|
||||||
|
use App\Models\Claim;
|
||||||
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Routing\Controller;
|
||||||
|
|
||||||
|
class ClaimController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$claims = Claim::where('deleted_at', 'ASD')->paginate(5);
|
||||||
|
|
||||||
|
return Helper::responseJson($claims);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('hospitalportal::create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
return view('hospitalportal::show');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
return view('hospitalportal::edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Routing\Controller;
|
||||||
|
|
||||||
|
class HospitalPortalController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('hospitalportal::index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('hospitalportal::create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
return view('hospitalportal::show');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
return view('hospitalportal::edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
0
Modules/HospitalPortal/Http/Middleware/.gitkeep
Normal file
0
Modules/HospitalPortal/Http/Middleware/.gitkeep
Normal file
0
Modules/HospitalPortal/Http/Requests/.gitkeep
Normal file
0
Modules/HospitalPortal/Http/Requests/.gitkeep
Normal file
0
Modules/HospitalPortal/Providers/.gitkeep
Normal file
0
Modules/HospitalPortal/Providers/.gitkeep
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Providers;
|
||||||
|
|
||||||
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use Illuminate\Database\Eloquent\Factory;
|
||||||
|
|
||||||
|
class HospitalPortalServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string $moduleName
|
||||||
|
*/
|
||||||
|
protected $moduleName = 'HospitalPortal';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string $moduleNameLower
|
||||||
|
*/
|
||||||
|
protected $moduleNameLower = 'hospitalportal';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Boot the application events.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function boot()
|
||||||
|
{
|
||||||
|
$this->registerTranslations();
|
||||||
|
$this->registerConfig();
|
||||||
|
$this->registerViews();
|
||||||
|
$this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the service provider.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function register()
|
||||||
|
{
|
||||||
|
$this->app->register(RouteServiceProvider::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register config.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function registerConfig()
|
||||||
|
{
|
||||||
|
$this->publishes([
|
||||||
|
module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'),
|
||||||
|
], 'config');
|
||||||
|
$this->mergeConfigFrom(
|
||||||
|
module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register views.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function registerViews()
|
||||||
|
{
|
||||||
|
$viewPath = resource_path('views/modules/' . $this->moduleNameLower);
|
||||||
|
|
||||||
|
$sourcePath = module_path($this->moduleName, 'Resources/views');
|
||||||
|
|
||||||
|
$this->publishes([
|
||||||
|
$sourcePath => $viewPath
|
||||||
|
], ['views', $this->moduleNameLower . '-module-views']);
|
||||||
|
|
||||||
|
$this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register translations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function registerTranslations()
|
||||||
|
{
|
||||||
|
$langPath = resource_path('lang/modules/' . $this->moduleNameLower);
|
||||||
|
|
||||||
|
if (is_dir($langPath)) {
|
||||||
|
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
|
||||||
|
} else {
|
||||||
|
$this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the services provided by the provider.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function provides()
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getPublishableViewPaths(): array
|
||||||
|
{
|
||||||
|
$paths = [];
|
||||||
|
foreach (\Config::get('view.paths') as $path) {
|
||||||
|
if (is_dir($path . '/modules/' . $this->moduleNameLower)) {
|
||||||
|
$paths[] = $path . '/modules/' . $this->moduleNameLower;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $paths;
|
||||||
|
}
|
||||||
|
}
|
||||||
69
Modules/HospitalPortal/Providers/RouteServiceProvider.php
Normal file
69
Modules/HospitalPortal/Providers/RouteServiceProvider.php
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Providers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Route;
|
||||||
|
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
||||||
|
|
||||||
|
class RouteServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The module namespace to assume when generating URLs to actions.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $moduleNamespace = 'Modules\HospitalPortal\Http\Controllers';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called before routes are registered.
|
||||||
|
*
|
||||||
|
* Register any model bindings or pattern based filters.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function boot()
|
||||||
|
{
|
||||||
|
parent::boot();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the routes for the application.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function map()
|
||||||
|
{
|
||||||
|
$this->mapApiRoutes();
|
||||||
|
|
||||||
|
$this->mapWebRoutes();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the "web" routes for the application.
|
||||||
|
*
|
||||||
|
* These routes all receive session state, CSRF protection, etc.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function mapWebRoutes()
|
||||||
|
{
|
||||||
|
Route::middleware('web')
|
||||||
|
->namespace($this->moduleNamespace)
|
||||||
|
->group(module_path('HospitalPortal', '/Routes/web.php'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the "api" routes for the application.
|
||||||
|
*
|
||||||
|
* These routes are typically stateless.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function mapApiRoutes()
|
||||||
|
{
|
||||||
|
Route::prefix('api')
|
||||||
|
->middleware('api')
|
||||||
|
->namespace($this->moduleNamespace)
|
||||||
|
->group(module_path('HospitalPortal', '/Routes/api.php'));
|
||||||
|
}
|
||||||
|
}
|
||||||
0
Modules/HospitalPortal/Resources/assets/.gitkeep
Normal file
0
Modules/HospitalPortal/Resources/assets/.gitkeep
Normal file
0
Modules/HospitalPortal/Resources/assets/js/app.js
Normal file
0
Modules/HospitalPortal/Resources/assets/js/app.js
Normal file
0
Modules/HospitalPortal/Resources/lang/.gitkeep
Normal file
0
Modules/HospitalPortal/Resources/lang/.gitkeep
Normal file
0
Modules/HospitalPortal/Resources/views/.gitkeep
Normal file
0
Modules/HospitalPortal/Resources/views/.gitkeep
Normal file
9
Modules/HospitalPortal/Resources/views/index.blade.php
Normal file
9
Modules/HospitalPortal/Resources/views/index.blade.php
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
@extends('hospitalportal::layouts.master')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<h1>Hello World</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This view is loaded from module: {!! config('hospitalportal.name') !!}
|
||||||
|
</p>
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>Module HospitalPortal</title>
|
||||||
|
|
||||||
|
{{-- Laravel Mix - CSS File --}}
|
||||||
|
{{-- <link rel="stylesheet" href="{{ mix('css/hospitalportal.css') }}"> --}}
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
@yield('content')
|
||||||
|
|
||||||
|
{{-- Laravel Mix - JS File --}}
|
||||||
|
{{-- <script src="{{ mix('js/hospitalportal.js') }}"></script> --}}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
0
Modules/HospitalPortal/Routes/.gitkeep
Normal file
0
Modules/HospitalPortal/Routes/.gitkeep
Normal file
44
Modules/HospitalPortal/Routes/api.php
Normal file
44
Modules/HospitalPortal/Routes/api.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\HospitalPortal\Http\Controllers\Api\AuthController;
|
||||||
|
use Modules\HospitalPortal\Http\Controllers\Api\ClaimRequestController;
|
||||||
|
use Modules\HospitalPortal\Http\Controllers\Api\MemberController;
|
||||||
|
use Modules\HospitalPortal\Http\Controllers\ClaimController;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| API Routes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here is where you can register API routes for your application. These
|
||||||
|
| routes are loaded by the RouteServiceProvider within a group which
|
||||||
|
| is assigned the "api" middleware group. Enjoy building your API!
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
Route::prefix('hospitalportal')->group(function () {
|
||||||
|
|
||||||
|
Route::post('login', [AuthController::class, 'login'])->name('login');
|
||||||
|
Route::post('forget-password', [AuthController::class, 'forgetPassword'])->name('forget-password');
|
||||||
|
Route::post('verify-email', [AuthController::class, 'verifyEmail'])->name('verify-email');
|
||||||
|
|
||||||
|
|
||||||
|
Route::middleware('auth:sanctum')->group(function () {
|
||||||
|
|
||||||
|
Route::post('logout', [AuthController::class, 'logout'])->name('logout');
|
||||||
|
Route::get('/user', function (Request $request) {
|
||||||
|
return $request->user();
|
||||||
|
});
|
||||||
|
Route::put('reset-password', [AuthController::class, 'resetPassword'])->name('resetPassword');
|
||||||
|
|
||||||
|
Route::get('claims', [ClaimController::class, 'index']);
|
||||||
|
|
||||||
|
Route::post('search-member', [MemberController::class, 'search']);
|
||||||
|
|
||||||
|
Route::get('claim-requests', [ClaimRequestController::class, 'index'])->name('claim-requests.index');
|
||||||
|
Route::post('claim-requests', [ClaimRequestController::class, 'store'])->name('claim-requests.store');
|
||||||
|
Route::get('claim-requests/{claim_request_id}/log', [ClaimRequestController::class, 'generateLog'])->name('claim-requests.generate-log');
|
||||||
|
Route::get('claim-requests/{id}', [ClaimRequestController::class, 'show'])->name('claim-requests.show');
|
||||||
|
});
|
||||||
|
});
|
||||||
16
Modules/HospitalPortal/Routes/web.php
Normal file
16
Modules/HospitalPortal/Routes/web.php
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Web Routes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here is where you can register web routes for your application. These
|
||||||
|
| routes are loaded by the RouteServiceProvider within a group which
|
||||||
|
| contains the "web" middleware group. Now create something great!
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
Route::prefix('hospitalportal')->group(function() {
|
||||||
|
Route::get('/', 'HospitalPortalController@index');
|
||||||
|
});
|
||||||
0
Modules/HospitalPortal/Tests/Feature/.gitkeep
Normal file
0
Modules/HospitalPortal/Tests/Feature/.gitkeep
Normal file
0
Modules/HospitalPortal/Tests/Unit/.gitkeep
Normal file
0
Modules/HospitalPortal/Tests/Unit/.gitkeep
Normal file
31
Modules/HospitalPortal/Transformers/ClaimRequestResource.php
Normal file
31
Modules/HospitalPortal/Transformers/ClaimRequestResource.php
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Transformers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class ClaimRequestResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
$data = parent::toArray($request);
|
||||||
|
$historiesGroupByDate = $this->histories->mapToGroups(function($history) {
|
||||||
|
return [$history->created_at->format('Y-m-d') => $history];
|
||||||
|
});
|
||||||
|
$data['histories_by_date'] = [];
|
||||||
|
foreach ($historiesGroupByDate as $date => $histories) {
|
||||||
|
$data['histories_by_date'][] = [
|
||||||
|
'date' => $date,
|
||||||
|
'histories' => $histories
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data; //parent::toArray($request);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\HospitalPortal\Transformers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class ClaimRequestShowResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
$data = parent::toArray($request);
|
||||||
|
$historiesGroupByDate = $this->histories->mapToGroups(function($history) {
|
||||||
|
return [$history->created_at->format('Y-m-d') => $history];
|
||||||
|
});
|
||||||
|
$data['histories_by_date'] = [];
|
||||||
|
foreach ($historiesGroupByDate as $date => $histories) {
|
||||||
|
$data['histories_by_date'][] = [
|
||||||
|
'date' => $date,
|
||||||
|
'histories' => $histories
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
23
Modules/HospitalPortal/composer.json
Normal file
23
Modules/HospitalPortal/composer.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "nwidart/hospitalportal",
|
||||||
|
"description": "",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nicolas Widart",
|
||||||
|
"email": "n.widart@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [],
|
||||||
|
"aliases": {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Modules\\HospitalPortal\\": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
13
Modules/HospitalPortal/module.json
Normal file
13
Modules/HospitalPortal/module.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "HospitalPortal",
|
||||||
|
"alias": "hospitalportal",
|
||||||
|
"description": "",
|
||||||
|
"keywords": [],
|
||||||
|
"priority": 0,
|
||||||
|
"providers": [
|
||||||
|
"Modules\\HospitalPortal\\Providers\\HospitalPortalServiceProvider"
|
||||||
|
],
|
||||||
|
"aliases": {},
|
||||||
|
"files": [],
|
||||||
|
"requires": []
|
||||||
|
}
|
||||||
21
Modules/HospitalPortal/package.json
Normal file
21
Modules/HospitalPortal/package.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "npm run development",
|
||||||
|
"development": "mix",
|
||||||
|
"watch": "mix watch",
|
||||||
|
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
||||||
|
"hot": "mix watch --hot",
|
||||||
|
"prod": "npm run production",
|
||||||
|
"production": "mix --production"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"axios": "^0.21.4",
|
||||||
|
"dotenv": "^10.0.0",
|
||||||
|
"dotenv-expand": "^5.1.0",
|
||||||
|
"laravel-mix": "^6.0.31",
|
||||||
|
"laravel-mix-merge-manifest": "^2.0.0",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"postcss": "^8.3.7"
|
||||||
|
}
|
||||||
|
}
|
||||||
14
Modules/HospitalPortal/webpack.mix.js
Normal file
14
Modules/HospitalPortal/webpack.mix.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
const dotenvExpand = require('dotenv-expand');
|
||||||
|
dotenvExpand(require('dotenv').config({ path: '../../.env'/*, debug: true*/}));
|
||||||
|
|
||||||
|
const mix = require('laravel-mix');
|
||||||
|
require('laravel-mix-merge-manifest');
|
||||||
|
|
||||||
|
mix.setPublicPath('../../public').mergeManifest();
|
||||||
|
|
||||||
|
mix.js(__dirname + '/Resources/assets/js/app.js', 'js/hospitalportal.js')
|
||||||
|
.sass( __dirname + '/Resources/assets/sass/app.scss', 'css/hospitalportal.css');
|
||||||
|
|
||||||
|
if (mix.inProduction()) {
|
||||||
|
mix.version();
|
||||||
|
}
|
||||||
0
Modules/Internal/Config/.gitkeep
Executable file → Normal file
0
Modules/Internal/Config/.gitkeep
Executable file → Normal file
0
Modules/Internal/Config/config.php
Executable file → Normal file
0
Modules/Internal/Config/config.php
Executable file → Normal file
0
Modules/Internal/Console/.gitkeep
Executable file → Normal file
0
Modules/Internal/Console/.gitkeep
Executable file → Normal file
0
Modules/Internal/Database/Migrations/.gitkeep
Executable file → Normal file
0
Modules/Internal/Database/Migrations/.gitkeep
Executable file → Normal file
0
Modules/Internal/Database/Seeders/.gitkeep
Executable file → Normal file
0
Modules/Internal/Database/Seeders/.gitkeep
Executable file → Normal file
0
Modules/Internal/Database/Seeders/InternalDatabaseSeeder.php
Executable file → Normal file
0
Modules/Internal/Database/Seeders/InternalDatabaseSeeder.php
Executable file → Normal file
0
Modules/Internal/Database/factories/.gitkeep
Executable file → Normal file
0
Modules/Internal/Database/factories/.gitkeep
Executable file → Normal file
0
Modules/Internal/Entities/.gitkeep
Executable file → Normal file
0
Modules/Internal/Entities/.gitkeep
Executable file → Normal file
0
Modules/Internal/Http/Controllers/.gitkeep
Executable file → Normal file
0
Modules/Internal/Http/Controllers/.gitkeep
Executable file → Normal file
0
Modules/Internal/Http/Controllers/Api/AuthController.php
Executable file → Normal file
0
Modules/Internal/Http/Controllers/Api/AuthController.php
Executable file → Normal file
0
Modules/Internal/Http/Controllers/Api/BenefitController.php
Executable file → Normal file
0
Modules/Internal/Http/Controllers/Api/BenefitController.php
Executable file → Normal file
@@ -2,14 +2,18 @@
|
|||||||
|
|
||||||
namespace Modules\Internal\Http\Controllers\Api;
|
namespace Modules\Internal\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Helpers\Helper;
|
||||||
use App\Models\Benefit;
|
use App\Models\Benefit;
|
||||||
use App\Models\Claim;
|
use App\Models\Claim;
|
||||||
use App\Models\Icd;
|
use App\Models\Icd;
|
||||||
use App\Models\Member;
|
use App\Models\Member;
|
||||||
|
use App\Models\Organization;
|
||||||
use App\Services\ClaimService;
|
use App\Services\ClaimService;
|
||||||
use Illuminate\Contracts\Support\Renderable;
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
|
use Modules\Internal\Transformers\ClaimShowResource;
|
||||||
|
use PDF;
|
||||||
|
|
||||||
class ClaimController extends Controller
|
class ClaimController extends Controller
|
||||||
{
|
{
|
||||||
@@ -21,9 +25,14 @@ class ClaimController extends Controller
|
|||||||
{
|
{
|
||||||
$claims = Claim::with([
|
$claims = Claim::with([
|
||||||
'member',
|
'member',
|
||||||
'diagnosis',
|
'diagnoses' => function ($diagnosis) {
|
||||||
|
return $diagnosis->where('type', 'primary');
|
||||||
|
},
|
||||||
|
'diagnoses.icd',
|
||||||
'plan',
|
'plan',
|
||||||
'benefit'
|
'benefit',
|
||||||
|
'claimRequest',
|
||||||
|
'claimRequest.service'
|
||||||
])
|
])
|
||||||
->latest()
|
->latest()
|
||||||
->paginate(10);
|
->paginate(10);
|
||||||
@@ -87,13 +96,27 @@ class ClaimController extends Controller
|
|||||||
->with([
|
->with([
|
||||||
'member',
|
'member',
|
||||||
'member.currentPlan',
|
'member.currentPlan',
|
||||||
'diagnosis',
|
'member.currentPlan.benefits',
|
||||||
|
'member.currentCorporate',
|
||||||
|
'member.currentPolicy',
|
||||||
|
// 'diagnosis',
|
||||||
|
'diagnoses',
|
||||||
|
'diagnoses.icd',
|
||||||
'benefit',
|
'benefit',
|
||||||
'files'
|
'files',
|
||||||
|
'claimRequest',
|
||||||
|
'claimRequest.files',
|
||||||
|
'items',
|
||||||
|
'items.claim_itemable',
|
||||||
|
'encounters',
|
||||||
|
'encounters.doctors',
|
||||||
|
'encounters.primaryDiagnoses',
|
||||||
|
'encounters.primaryDiagnoses.diagnosis',
|
||||||
|
'encounters.healthcare'
|
||||||
])
|
])
|
||||||
->findOrFail($id);
|
->findOrFail($id);
|
||||||
|
|
||||||
return response()->json($claim);
|
return Helper::responseJson(ClaimShowResource::make($claim));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -131,4 +154,135 @@ class ClaimController extends Controller
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateDetails(Request $request, $id)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'healthcare_id' => 'required',
|
||||||
|
'doctor_id' => 'required',
|
||||||
|
'start' => 'required',
|
||||||
|
'end' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$claim = Claim::findOrFail($id);
|
||||||
|
|
||||||
|
return $claim;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateItems(Request $request, $id)
|
||||||
|
{
|
||||||
|
$request->validate([]);
|
||||||
|
$claim = Claim::findOrFail($id);
|
||||||
|
|
||||||
|
$order = 1;
|
||||||
|
$data = [];
|
||||||
|
$claim->items()->forceDelete();
|
||||||
|
foreach ($request->benefit_items as $benefitItem) {
|
||||||
|
$benefit = Benefit::find($benefitItem['id']);
|
||||||
|
if ($benefit) {
|
||||||
|
$benefit->claimItem()->create([
|
||||||
|
'claim_id' => $claim->id,
|
||||||
|
'order' => $order,
|
||||||
|
'name' => $benefit->code,
|
||||||
|
'currency' => 'IDR',
|
||||||
|
'nominal_ditagihkan' => $benefitItem['biaya_diajukan'] ?? 0,
|
||||||
|
'nominal_dicover' => $benefitItem['biaya_disetujui'] ?? 0,
|
||||||
|
'nominal_total' => $benefitItem['biaya_disetujui'] ?? 0,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$order++;
|
||||||
|
}
|
||||||
|
return Helper::responseJson([], message: "Item Claim berhasil di update");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateDiagnosis(Request $request, $id)
|
||||||
|
{
|
||||||
|
$request->validate([]);
|
||||||
|
$claim = Claim::findOrFail($id);
|
||||||
|
|
||||||
|
$claim->diagnoses()->forceDelete();
|
||||||
|
if ($request->primary) {
|
||||||
|
foreach ($request->primary as $diagnosisId) {
|
||||||
|
$claim->diagnoses()->create([
|
||||||
|
'claim_id' => $claim->id,
|
||||||
|
'type' => 'primary',
|
||||||
|
'diagnosis_id' => $diagnosisId,
|
||||||
|
'note' => '',
|
||||||
|
'description' => '',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->secondary) {
|
||||||
|
foreach ($request->secondary as $diagnosisId) {
|
||||||
|
$claim->diagnoses()->create([
|
||||||
|
'claim_id' => $claim->id,
|
||||||
|
'type' => 'secondary',
|
||||||
|
'diagnosis_id' => $diagnosisId,
|
||||||
|
'note' => '',
|
||||||
|
'description' => '',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Helper::responseJson([], message: "Diagnosis berhasil di update");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function decline($id)
|
||||||
|
{
|
||||||
|
$claim = Claim::findOrFail($id);
|
||||||
|
$claim->status = 'declined';
|
||||||
|
$claim->save();
|
||||||
|
|
||||||
|
return Helper::responseJson($claim, message: "Claim berhasil di decline");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function approve($id)
|
||||||
|
{
|
||||||
|
$claim = Claim::findOrFail($id);
|
||||||
|
$claim->status = 'approved';
|
||||||
|
$claim->save();
|
||||||
|
|
||||||
|
return Helper::responseJson($claim, message: "Claim berhasil di approve");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function reOpen($id)
|
||||||
|
{
|
||||||
|
$claim = Claim::findOrFail($id);
|
||||||
|
$claim->status = 'received';
|
||||||
|
$claim->save();
|
||||||
|
|
||||||
|
return Helper::responseJson($claim, message: "Claim berhasil di approve");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function downloadFinalLog($id)
|
||||||
|
{
|
||||||
|
$claim = Claim::findOrFail($id);
|
||||||
|
|
||||||
|
$hospital = $claim->finalEncounter->healthcare ?? null;
|
||||||
|
|
||||||
|
// TODO Fix this tipu tipu
|
||||||
|
$inpationBenefit = $claim->member->currentPlan->benefits()->first();
|
||||||
|
|
||||||
|
$pdf = PDF::loadView('pdf.final_log', [
|
||||||
|
'claim' => $claim,
|
||||||
|
'member' => $claim->member,
|
||||||
|
'dateOfAdmission' => $claim->start,
|
||||||
|
'hospital' => $hospital,
|
||||||
|
'inpationBenefit' => $inpationBenefit
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $pdf->download('Final LOG '.$claim->code.'.pdf');
|
||||||
|
|
||||||
|
$view = view('pdf.final_log', [
|
||||||
|
'claim' => $claim,
|
||||||
|
'member' => $claim->member,
|
||||||
|
'dateOfAdmission' => $claim->start,
|
||||||
|
'hospital' => $hospital,
|
||||||
|
'inpationBenefit' => $inpationBenefit
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $view;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
143
Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
Normal file
143
Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Internal\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Helpers\Helper;
|
||||||
|
use App\Models\ClaimRequest;
|
||||||
|
use App\Services\ClaimService;
|
||||||
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Routing\Controller;
|
||||||
|
use Modules\Internal\Transformers\ClaimRequestResource;
|
||||||
|
use Modules\Internal\Transformers\ClaimRequestShowResource;
|
||||||
|
|
||||||
|
class ClaimRequestController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
$claimRequests = ClaimRequest::query()
|
||||||
|
->when($request->search, function ($q, $search) {
|
||||||
|
$q->where('code', 'LIKE', "%".$search."%");
|
||||||
|
})
|
||||||
|
->when($request->orderBy, function ($q, $orderBy) use ($request) {
|
||||||
|
if (in_array($orderBy, ['submission_date', 'code'])) {
|
||||||
|
$q->orderBy($orderBy, $request->order);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
->when(empty($request->orderBy), function ($q) {
|
||||||
|
$q->orderBy('created_at', 'desc');
|
||||||
|
})
|
||||||
|
->when($request->status, function($q, $status) {
|
||||||
|
$q->where('status', $status);
|
||||||
|
})
|
||||||
|
->with(['member', 'files', 'service'])
|
||||||
|
->paginate();
|
||||||
|
|
||||||
|
return Helper::paginateResources(ClaimRequestResource::collection($claimRequests));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('internal::create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$claimRequest = ClaimRequest::findOrFail($id);
|
||||||
|
$claimRequest->load([
|
||||||
|
'histories' => function ($history) {
|
||||||
|
$history->latest();
|
||||||
|
},
|
||||||
|
'files'
|
||||||
|
]);
|
||||||
|
|
||||||
|
return Helper::responseJson(data: ClaimRequestShowResource::make($claimRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
return view('internal::edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
* @param Request $request
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
* @param int $id
|
||||||
|
* @return Renderable
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function approve($id)
|
||||||
|
{
|
||||||
|
$claimRequest = ClaimRequest::findOrFail($id);
|
||||||
|
$member = $claimRequest->member;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
// Create New Claim
|
||||||
|
$newClaim = ClaimService::storeClaim(member: $member, status: 'received', claimRequest: $claimRequest);
|
||||||
|
|
||||||
|
// Update Claim Request Status & Link with Claim
|
||||||
|
$claimRequest->status = 'approved';
|
||||||
|
$claimRequest->claim_id = $newClaim->id;
|
||||||
|
$claimRequest->save();
|
||||||
|
|
||||||
|
// Store Generated Documents LOG
|
||||||
|
$logContent = view('pdf.guaranted_leter', compact('member', 'claimRequest'));
|
||||||
|
$claimRequest->generatedDocuments()->create([
|
||||||
|
'type' => 'guarantee_letter',
|
||||||
|
'title' => 'Guarantee Letter for '. $member->full_name,
|
||||||
|
'document_type' => 'type',
|
||||||
|
'html_content' => $logContent,
|
||||||
|
'system_origin' => 'primecenter'
|
||||||
|
]);
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return $claimRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user