mivita/app/Cron/UserPaymentCredits.php
Kevin Adametz bfa3bb1df4 08 2024
2024-08-05 12:05:24 +02:00

106 lines
3.6 KiB
PHP

<?php
namespace App\Cron;
use App\User;
use App\Models\UserBusiness;
use App\Services\HTMLHelper;
use App\Models\UserCreditItem;
use App\Repositories\CreditRepository;
class UserPaymentCredits
{
private $month;
private $year;
public function __construct($month, $year)
{
$this->month = $month;
$this->year = $year;
}
public function getUserBusinessByMonthYear(){
return UserBusiness::select('user_businesses.*')
->where('user_businesses.month', '=', $this->month)
->where('user_businesses.year', '=', $this->year)
->where(function($q) {
return $q->where('user_businesses.commission_pp_total', '>', 0)
->orWhere('user_businesses.commission_shop_sales', '>', 0);
})
->get();
}
public function addUserCreditItem($userBusiness)
{
//HTMLHelper::getMonth($userBusiness->month)
$date = $userBusiness->month.'#'.$userBusiness->year;
if($userBusiness->commission_shop_sales > 0){
if($this->hasNotUserCreditItem($userBusiness, 1)){
UserCreditItem::create([
'user_id' => $userBusiness->user_id,
'user_business_id' => $userBusiness->id,
'credit' => $userBusiness->commission_shop_sales,
'message' => 'payment.commission_shop#'.$date,
'from_month' => $userBusiness->month,
'from_year' => $userBusiness->year,
'status' => 1,
]);
}
}
if($userBusiness->commission_pp_total > 0){
if($this->hasNotUserCreditItem($userBusiness, 2)){
UserCreditItem::create([
'user_id' => $userBusiness->user_id,
'user_business_id' => $userBusiness->id,
'credit' => $userBusiness->commission_pp_total,
'message' => 'payment.commission_payline#'.$date,
'from_month' => $userBusiness->month,
'from_year' => $userBusiness->year,
'status' => 2,
]);
}
}
if($userBusiness->commission_growth_total > 0){
if($this->hasNotUserCreditItem($userBusiness, 5)){
UserCreditItem::create([
'user_id' => $userBusiness->user_id,
'user_business_id' => $userBusiness->id,
'credit' => $userBusiness->commission_growth_total,
'message' => 'payment.commission_growth_bonus#'.$date,
'from_month' => $userBusiness->month,
'from_year' => $userBusiness->year,
'status' => 5,
]);
}
}
return $userBusiness;
}
public function getUserCreditItemUsersByMonthYear(){
return UserCreditItem::select('user_credit_items.*')
->where('paid', '=', false)
->groupBy('user_id')
->get();
}
public function makeCreditPaymentPDF($user_id, $credit_send_mail)
{
//$user_id = 2;
$user = User::findOrFail($user_id);
$data = [];
if($credit_send_mail){
$data['credit_send_mail'] = false;
}
$credit_repo = new CreditRepository($user);
return $credit_repo->create($data);
}
private function hasNotUserCreditItem($userBusiness, $status){
return (UserCreditItem::where('user_business_id', $userBusiness->id)
->where('user_id', $userBusiness->user_id)->where('status', $status)->count() > 0) ? false : true;
}
}