<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Modules\CourseSetting\Entities\CourseEnrolled;
use Modules\Subscription\Entities\SubscriptionCourse;
use Modules\Subscription\Entities\SubscriptionSetting;
class CommissionApply extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'apply:commission';
/**
* The console command description.
*
* @var string
*/
protected $description = 'commission apply into instructors';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$commission_rate = SubscriptionSetting::first()->commission_rate ?? 0;
$checkouts = DB::table('subscription_checkouts')
->where('end_date', '<', date('Y-m-d'))
->get();
foreach ($checkouts as $checkout) {
$totalAmount = $checkout->price;
$instructorAmount = ($commission_rate / 100) * $totalAmount;
$enrolls = CourseEnrolled::where('user_id', $checkout->user_id)->where('subscription_validity_date', $checkout->end_date)->get();
foreach ($enrolls as $enroll) {
if ($enroll->course->user->role_id == 2) {
$course = new SubscriptionCourse();
$course->user_id = $enroll->user_id;
$course->instructor_id = $enroll->course->user_id;
$course->course_id = $enroll->course_id;
$course->revenue = ($instructorAmount / count($enrolls)) ?? 0;
$course->checkout_id = $checkout->id;
$course->date = date('Y-m-d');
$course->status = 0;
$course->save();
}
$enroll->subscription_validity_date = null;
$enroll->save();
}
}
return 0;
}
}