![]() Server : Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips System : Linux server1.richineiserver.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : fdshops ( 1003) PHP Version : 8.2.21 Disable Function : NONE Directory : /home/fdshops/public_html/app/Console/Commands/ |
<?php namespace App\Console\Commands; use App\Business; use App\Transaction; use App\Utils\NotificationUtil; use App\Utils\ProductUtil; use App\Utils\TransactionUtil; use Illuminate\Console\Command; use Illuminate\Support\Facades\DB; class UpdateRewardPoints extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'pos:updateRewardPoints'; /** * The console command description. * * @var string */ protected $description = 'Checks reward points expiry and updates customer reward points'; /** * Create a new command instance. * * @return void */ public function __construct(TransactionUtil $transactionUtil, ProductUtil $productUtil, NotificationUtil $notificationUtil) { parent::__construct(); $this->transactionUtil = $transactionUtil; $this->productUtil = $productUtil; $this->notificationUtil = $notificationUtil; } /** * Execute the console command. * * @return mixed */ public function handle() { try { ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); $businesses = Business::get(); DB::beginTransaction(); foreach ($businesses as $business) { if ($business->enable_rp != 1 || empty($business->rp_expiry_period)) { continue; } $transaction_date_to_be_expired = \Carbon::now(); if ($business->rp_expiry_type == 'month') { $transaction_date_to_be_expired = $transaction_date_to_be_expired->subMonths($business->rp_expiry_period); } elseif ($business->rp_expiry_type == 'year') { $transaction_date_to_be_expired = $transaction_date_to_be_expired->subYears($business->rp_expiry_period); } $transactions = Transaction::where('business_id', $business->id) ->where('type', 'sell') ->where('status', 'final') ->whereDate('transaction_date', '<=', $transaction_date_to_be_expired->format('Y-m-d')) ->whereNotNull('rp_earned') ->with(['contact']) ->select( DB::raw('SUM(COALESCE(rp_earned, 0)) as total_rp_expired'), 'contact_id' )->groupBy('contact_id') ->get(); foreach ($transactions as $transaction) { if (! empty($transaction->total_rp_expired) && $transaction->contact->total_rp_used < $transaction->total_rp_expired) { $contact = $transaction->contact; $diff = $transaction->total_rp_expired - $contact->total_rp_used; $contact->total_rp -= $diff; $contact->total_rp_expired = $transaction->total_rp_expired; $contact->save(); } } } DB::commit(); } catch (\Exception $e) { DB::rollBack(); \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); exit($e->getMessage()); } } }