commands and job

This commit is contained in:
2020-07-26 01:14:22 -05:00
parent cf98e875ee
commit 8cf4c98633
4 changed files with 73 additions and 3 deletions

View File

@@ -2,7 +2,16 @@
namespace App\Console\Commands\SupplyChain; namespace App\Console\Commands\SupplyChain;
//Internal Library
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Log;
use Carbon\Carbon;
//Models
use App\Models\Contracts\SupplyChainContract;
//Job
use App\Jobs\Commands\SupplyChain\EndSupplyChainContractJob;
class EndSupplyChainContractCommand extends Command class EndSupplyChainContractCommand extends Command
{ {
@@ -37,6 +46,16 @@ class EndSupplyChainContractCommand extends Command
*/ */
public function handle() public function handle()
{ {
// $today = Carbon::now();
//Get the supply chain contracts which are open, but need to be closed.
$contracts = SupplyChainContract::where([
'state' => 'open',
])->where('end_date', '>', $today)->get();
//Create jobs to complete each contract
foreach($contracts as $contract) {
EndSupplyChainContractJob::dispatch($contract)->onQueue('default');
}
} }
} }

View File

@@ -38,15 +38,39 @@ class EndSupplyChainContractJob implements ShouldQueue
*/ */
public $retries = 3; public $retries = 3;
/**
* Private Variables
*/
private $contractId;
private $issuerId;
private $issuerName;
private $title;
private $endDate;
private $deliveryBy;
private $body;
private $state;
private $finalCost;
/** /**
* Create a new job instance. * Create a new job instance.
* *
* @return void * @return void
*/ */
public function __construct() public function __construct(SupplyChainContract $contract)
{ {
//Set the queue connection up //Set the queue connection up
$this->connection = 'redis'; $this->connection = 'redis';
//Set the variables
$contractId = $contract->contract_id;
$issuerId = $contract->issuer_id;
$issuerName = $contract->issuer_name;
$title = $contract->title;
$endDate = $contract->end_date;
$deliveryBy = $contract->delivery_by;
$body = $contract->body;
$state = $contract->state;
$finalCost = $contract->final_cost;
} }
/** /**
@@ -57,6 +81,33 @@ class EndSupplyChainContractJob implements ShouldQueue
public function handle() public function handle()
{ {
//Declare variables //Declare variables
$bidId = null;
$bidAmount = null;
//Get all of the bids from the contract
$bids = SupplyChainBids::where([
'contract_id' => $contractId,
])->get();
//Loop through the bids and find the lowest bid
foreach($bids as $bid) {
if($bidId == null) {
$bidId = $bid->id;
$bidAmount = $bid->bid_amount;
} else {
if($bid->bid_amount < $bidAmount) {
$bidId = $bid->id;
$bidAmount = $bid->bid_amount;
}
}
}
//Clean up the bids and update the contract with the winning bid
SupplyChainContract::where([
'contract_id' => $this->contractId,
])->update([
'final_cost' => $bidAmount,
'winning_bid_id' => $bidId,
]);
} }
} }

View File

@@ -21,7 +21,6 @@ class SupplyChainContract extends Model
'issuer_id', 'issuer_id',
'issuer_name', 'issuer_name',
'title', 'title',
'type',
'end_date', 'end_date',
'delivery_by', 'delivery_by',
'body', 'body',

View File

@@ -41,6 +41,7 @@ class CreateNewContractsTable extends Migration
]); ]);
$table->unsignedInteger('bids')->default(0); $table->unsignedInteger('bids')->default(0);
$table->decimal('final_cost', 20, 2)->default(0.00); $table->decimal('final_cost', 20, 2)->default(0.00);
$table->unsignedInteger('winning_bid_id')->default(0);
$table->timestamps(); $table->timestamps();
}); });
} }