diff --git a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php index 02963ee4..c44197ba 100755 --- a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php @@ -35,6 +35,9 @@ class CorporateMemberController extends Controller ->with([ 'employeds', 'currentPolicy', + 'claims' => function ($claim) { + return $claim->used(); + } ]) ->with('currentPlan') ->paginate() diff --git a/app/Models/Claim.php b/app/Models/Claim.php index 5c5d6b63..683ae02b 100644 --- a/app/Models/Claim.php +++ b/app/Models/Claim.php @@ -28,6 +28,15 @@ class Claim extends Model 'updated_by', 'deleted_by', ]; + + public static $status = [ + 'draft' => 'Draft', + 'requested' => 'Requested', + 'received' => 'Received', + 'approved' => 'Approved', + 'paid' => 'Paid', + 'declined' => 'Declined' + ]; protected static function boot() { @@ -61,5 +70,12 @@ class Claim extends Model { return $this->belongsTo(Benefit::class, 'benefit_id'); } + + public function scopeUsed($query, $startDate, $endDate) + { + return $query + ->whereIn('status', ['approved', 'paid']) + ->whereBetween('requested_at', $startDate, $endDate); + } } diff --git a/app/Models/Member.php b/app/Models/Member.php index dd499477..78f4a323 100755 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -60,7 +60,8 @@ class Member extends Model protected $appends = [ 'full_name', 'age', - 'gender_code' + 'gender_code', + '' ]; protected $hidden = [ @@ -125,7 +126,7 @@ class Member extends Model { return $this->hasOneThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id')->latest(); } - + public function policies() { return $this->hasMany(MemberPolicy::class, 'member_id', 'member_id'); diff --git a/app/Services/ClaimService.php b/app/Services/ClaimService.php index 05f3618d..050644b7 100644 --- a/app/Services/ClaimService.php +++ b/app/Services/ClaimService.php @@ -4,6 +4,8 @@ namespace App\Services; use App\Models\Claim; use App\Models\Icd; +use App\Models\Member; +use Carbon\Carbon; use Str; class ClaimService{ @@ -24,4 +26,19 @@ class ClaimService{ return $claim; } + + public static function getMemberTotalUsage(Member $member, $startDate = null, $endDate = null) + { + $startDate = empty($startDate) ? Carbon::now()->startOfMonth() : $startDate; + $endDate = empty($endDate) ? Carbon::now()->startOfMonth() : $endDate; + + $claims = $member->claims() + ->used($startDate, $endDate) + ->get(); + $total = $claims->sum(function($claim){ + return $claim->total_claim; + }); + + return $total; + } } \ No newline at end of file diff --git a/database/migrations/2022_07_07_040543_create_corporate_plans_table.php b/database/migrations/2022_07_07_040543_create_corporate_plans_table.php index 7042d877..f0218877 100755 --- a/database/migrations/2022_07_07_040543_create_corporate_plans_table.php +++ b/database/migrations/2022_07_07_040543_create_corporate_plans_table.php @@ -13,22 +13,22 @@ return new class extends Migration */ public function up() { - Schema::create('corporate_plans', function (Blueprint $table) { - $table->id(); - $table->foreignId('corporate_id')->nullable()->index(); - $table->string('code')->index(); - $table->string('name')->nullable(); - $table->text('description')->nullable(); - $table->boolean('active')->default(true); - $table->timestamps(); - $table->softDeletes(); + // Schema::create('corporate_plans', function (Blueprint $table) { + // $table->id(); + // $table->foreignId('corporate_id')->nullable()->index(); + // $table->string('code')->index(); + // $table->string('name')->nullable(); + // $table->text('description')->nullable(); + // $table->boolean('active')->default(true); + // $table->timestamps(); + // $table->softDeletes(); - $table->foreignId('created_by')->nullable()->index(); - $table->foreignId('updated_by')->nullable()->index(); - $table->foreignId('deleted_by')->nullable()->index(); + // $table->foreignId('created_by')->nullable()->index(); + // $table->foreignId('updated_by')->nullable()->index(); + // $table->foreignId('deleted_by')->nullable()->index(); - $table->unique(["corporate_id", "code"], 'corporate_plans_unique'); - }); + // $table->unique(["corporate_id", "code"], 'corporate_plans_unique'); + // }); } /** @@ -38,6 +38,6 @@ return new class extends Migration */ public function down() { - Schema::dropIfExists('corporate_plans'); + // Schema::dropIfExists('corporate_plans'); } }; diff --git a/database/migrations/2022_11_22_135948_create_claims_table.php b/database/migrations/2022_11_22_135948_create_claims_table.php index d595e75d..6416783c 100644 --- a/database/migrations/2022_11_22_135948_create_claims_table.php +++ b/database/migrations/2022_11_22_135948_create_claims_table.php @@ -22,6 +22,21 @@ return new class extends Migration $table->string('currency'); $table->foreignId('plan_id')->index(); $table->foreignId('benefit_id')->index(); + + $table->dateTime('requested_at')->nullable(); + $table->unsignedBigInteger('requested_by')->nullable()->index(); + + $table->dateTime('received_at')->nullable(); + $table->unsignedBigInteger('received_by')->nullable()->index(); + + $table->dateTime('approved_at')->nullable(); + $table->unsignedBigInteger('approved_by')->nullable()->index(); + + $table->dateTime('approved_at')->nullable(); + $table->unsignedBigInteger('approved_by')->nullable()->index(); + + $table->dateTime('paid_at')->nullable(); + $table->unsignedBigInteger('paid_by')->nullable()->index(); $table->timestamps(); $table->softDeletes();