diff --git a/app/Classes/Modules/OrderSteps/DataTransferObjects/OrderStepsObject.php b/app/Classes/Modules/OrderSteps/DataTransferObjects/OrderStepsObject.php index c039f479..4266c407 100644 --- a/app/Classes/Modules/OrderSteps/DataTransferObjects/OrderStepsObject.php +++ b/app/Classes/Modules/OrderSteps/DataTransferObjects/OrderStepsObject.php @@ -9,8 +9,6 @@ class OrderStepsObject implements DataTransferObject { private $id; - private $order_id; - private $appointee_id; private $reference; @@ -27,9 +25,8 @@ class OrderStepsObject implements DataTransferObject private $hash_id; - public function __construct(int $order_id, int $appointee_id, string $reference, bool $primary, float $sequence, int $status, int $contract_status, ?string $completed_date, int $id=0, ?string $hash_id) + public function __construct(int $appointee_id, string $reference, bool $primary, float $sequence, int $status, int $contract_status, ?string $completed_date, int $id=0, ?string $hash_id) { - $this->order_id = $order_id; $this->appointee_id = $appointee_id; $this->reference = $reference; $this->primary = $primary; @@ -43,11 +40,6 @@ class OrderStepsObject implements DataTransferObject $this->hash_id = $hash_id; } - public function getOrderId(): int - { - return $this->order_id; - } - public function getAppointeeId(): int { return $this->appointee_id; diff --git a/app/Classes/Modules/OrderSteps/Processors/CompletesOrderStepProcessor.php b/app/Classes/Modules/OrderSteps/Processors/CompletesOrderStepProcessor.php index 93dd7a91..d2a3c883 100644 --- a/app/Classes/Modules/OrderSteps/Processors/CompletesOrderStepProcessor.php +++ b/app/Classes/Modules/OrderSteps/Processors/CompletesOrderStepProcessor.php @@ -43,7 +43,7 @@ class CompletesOrderStepProcessor $orderStep = $this->fetchesOrderStep->getRepository()->where('id', $request->get('id'))->first(); - $contractEntity = $orderStep->orderRole()->where('order_id',$orderStep->order_id)->first(); + $contractEntity = $orderStep->orderRole()->where('order_id',$orderStep->owner_id)->first(); $obligation_hash_id = $orderStep->unity_hash_id; $contract_entity_signature = $contractEntity->role_signature; @@ -53,7 +53,6 @@ class CompletesOrderStepProcessor //Unity Contract Obligation Completed Status = 3 if(isset($completed->status) && $completed->status == OrderStatus::COMPLETE){ $orderStepObject = new OrderStepsObject( - $orderStep->order->id, $contractEntity->company_module_id, $orderStep->reference, true, diff --git a/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php b/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php index 3edd3a28..b5a9b17a 100644 --- a/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php +++ b/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php @@ -37,11 +37,11 @@ class CreateOrderStepsProcessor public function execute(Model $order, string $currentStep, $appointee_id){ - $order_steps_object = new OrderStepsObject($order->id, $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null, 0, null); + $order_steps_object = new OrderStepsObject( $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null, 0, null); $this->canCreateOrderStep->passes($order_steps_object); - return $this->createsOrderSteps->execute($order_steps_object); + return $this->createsOrderSteps->execute($order, $order_steps_object); } } diff --git a/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php b/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php index c384626d..3426522f 100644 --- a/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php +++ b/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php @@ -47,8 +47,7 @@ class GenerateOrderStepsProcessor foreach($obligations as $step){ $orderSteps[] = new OrderStepsObject( - $order->id, - $orderRoles[0]->company_module_id, + $orderRoles[0]->company_module_id, $step->name, true, $step->sequence??0, diff --git a/app/Classes/Modules/OrderSteps/Processors/UpdateOrderStepsProcessor.php b/app/Classes/Modules/OrderSteps/Processors/UpdateOrderStepsProcessor.php index 598b2a8a..5c4d2def 100644 --- a/app/Classes/Modules/OrderSteps/Processors/UpdateOrderStepsProcessor.php +++ b/app/Classes/Modules/OrderSteps/Processors/UpdateOrderStepsProcessor.php @@ -31,7 +31,7 @@ class UpdateOrderStepsProcessor public function execute(string $currentStep){ - $orderStepsObject = new OrderStepsObject(0,0,$currentStep, 0, 0, 1, 1, null, 0, null); + $orderStepsObject = new OrderStepsObject(0,$currentStep, 0, 0, 1, 1, null, 0, null); $this->canUpdateOrderStep->passes($orderStepsObject); diff --git a/app/Classes/Modules/OrderSteps/Services/CreatesManyOrderSteps.php b/app/Classes/Modules/OrderSteps/Services/CreatesManyOrderSteps.php index 54e2c295..39a0bd60 100644 --- a/app/Classes/Modules/OrderSteps/Services/CreatesManyOrderSteps.php +++ b/app/Classes/Modules/OrderSteps/Services/CreatesManyOrderSteps.php @@ -3,6 +3,7 @@ namespace App\Classes\Modules\OrderSteps\Services; use App\Classes\General\Eloquent\AbstractUpdateRecord; +use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord; use App\Classes\Modules\OrderSteps\DataTransferObjects\OrderStepsObject; use App\Models\OrderStep; use App\Models\Order; @@ -15,7 +16,6 @@ class CreatesManyOrderSteps extends AbstractUpdateRecord $orderStepsModel=[]; foreach($orderSteps as $step){ $orderStepsModel[]=[ - 'order_id' => $step->getOrderId(), 'appointee_id' => $step->getAppointeeId(), 'reference' => $step->getReference(), 'primary' => $step->getPrimary(), @@ -25,7 +25,9 @@ class CreatesManyOrderSteps extends AbstractUpdateRecord 'unity_hash_id' => $step->getHashId(), ]; } - $order->orderSteps()->createMany($orderStepsModel); + + OrderStep::insert($orderStepsModel); + //$order->orderSteps()->createMany($orderStepsModel); } } diff --git a/app/Classes/Modules/OrderSteps/Services/CreatesOrderSteps.php b/app/Classes/Modules/OrderSteps/Services/CreatesOrderSteps.php index 5f9443fc..7b44589d 100644 --- a/app/Classes/Modules/OrderSteps/Services/CreatesOrderSteps.php +++ b/app/Classes/Modules/OrderSteps/Services/CreatesOrderSteps.php @@ -3,27 +3,27 @@ namespace App\Classes\Modules\OrderSteps\Services; use App\Classes\General\Eloquent\AbstractUpdateRecord; +use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord; use App\Classes\Modules\OrderSteps\DataTransferObjects\OrderStepsObject; use App\Models\OrderStep; use App\Models\Order; -class CreatesOrderSteps extends AbstractUpdateRecord +class CreatesOrderSteps extends AbstractUpdateRelationshipRecord { - public function execute(OrderStepsObject $orderSteps) { + public function execute(Order $order, OrderStepsObject $orderSteps) { $orderStepsModel = new OrderStep(); - $orderStepsModel->order_id = $orderSteps->getOrderId(); - $orderStepsModel->appointee_id = $orderSteps->getAppointeeId(); - $orderStepsModel->reference = $orderSteps->getReference(); - $orderStepsModel->primary = $orderSteps->getPrimary(); - $orderStepsModel->sequence = $orderSteps->getSequence(); - $orderStepsModel->status = 0; - $orderStepsModel->contract_status = 0; - $orderStepsModel->complete_date = null; + $orderStepsModel->appointee_id = $orderSteps->getAppointeeId(); + $orderStepsModel->reference = $orderSteps->getReference(); + $orderStepsModel->primary = $orderSteps->getPrimary(); + $orderStepsModel->sequence = $orderSteps->getSequence(); + $orderStepsModel->status = 0; + $orderStepsModel->contract_status = 0; + $orderStepsModel->complete_date = null; - return $this->handler($orderStepsModel); + return $this->handler($order->orderSteps(), $orderStepsModel); } } diff --git a/app/Classes/Modules/OrderSteps/Services/CreatesPackingOrderSteps.php b/app/Classes/Modules/OrderSteps/Services/CreatesPackingOrderSteps.php new file mode 100644 index 00000000..5a42ea36 --- /dev/null +++ b/app/Classes/Modules/OrderSteps/Services/CreatesPackingOrderSteps.php @@ -0,0 +1,29 @@ +appointee_id = $orderSteps->getAppointeeId(); + $orderStepsModel->reference = $orderSteps->getReference(); + $orderStepsModel->primary = $orderSteps->getPrimary(); + $orderStepsModel->sequence = $orderSteps->getSequence(); + $orderStepsModel->status = 0; + $orderStepsModel->contract_status = 0; + $orderStepsModel->complete_date = null; + + return $this->handler($packingList->orderSteps(), $orderStepsModel); + + } +} diff --git a/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php b/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php index a124ae05..254b5e7c 100644 --- a/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php @@ -43,7 +43,6 @@ class ConfirmOrderProcessor $orderStep = $order->orderSteps[0]; $orderStepObject = new OrderStepsObject( - $order->id, 0, $orderStep->reference, true, diff --git a/app/Classes/Modules/Orders/Processors/UpdatesOrderCurrentStepProcessor.php b/app/Classes/Modules/Orders/Processors/UpdatesOrderCurrentStepProcessor.php index 3c63c930..6ae3b7ee 100644 --- a/app/Classes/Modules/Orders/Processors/UpdatesOrderCurrentStepProcessor.php +++ b/app/Classes/Modules/Orders/Processors/UpdatesOrderCurrentStepProcessor.php @@ -39,7 +39,7 @@ class UpdatesOrderCurrentStepProcessor $order = $this->fetchesOrder->execute(['id'=>$order_object->getId()]); //Count steps / obligations that pending - $order_steps_processing = $this->fetchesOrderSteps->getRepository()->where(['order_id'=>$order_object->getId(), 'status'=> OrderStatus::PROCESSING])->count(); + $order_steps_processing = $this->fetchesOrderSteps->getRepository()->where(['owner_id'=>$order_object->getId(), 'status'=> OrderStatus::PROCESSING])->count(); //If no more steps / obligations, then update Order status to complete (Contract fullfilled) if($order_steps_processing==0){ diff --git a/app/Models/Order.php b/app/Models/Order.php index aecf7f4e..1a1212e8 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -23,9 +23,9 @@ class Order extends AbstractModel implements Addressable return $this->belongsTo(CompanyModule::class, 'company_module_id', 'id'); } - public function orderSteps() + public function orderSteps(): morphMany { - return $this->hasMany(OrderStep::class, 'order_id'); + return $this->morphMany(OrderStep::class, 'owner'); } public function addresses(): morphMany diff --git a/app/Models/OrderStep.php b/app/Models/OrderStep.php index 34a1ecdc..0dab2c53 100644 --- a/app/Models/OrderStep.php +++ b/app/Models/OrderStep.php @@ -28,7 +28,7 @@ class OrderStep extends AbstractModel public function order(): belongsTo { - return $this->belongsTo(Order::class, 'order_id', 'id'); + return $this->belongsTo(Order::class, 'owner_id', 'id'); } } diff --git a/app/Models/PackingList.php b/app/Models/PackingList.php index edca8c38..35497646 100644 --- a/app/Models/PackingList.php +++ b/app/Models/PackingList.php @@ -9,4 +9,9 @@ class PackingList extends AbstractModel use SoftDeletes; protected $table = 'packing_lists'; + + public function orderSteps(): morphMany + { + return $this->morphMany(OrderStep::class, 'owner'); + } } diff --git a/database/migrations/2021_08_12_125207_alter_order_steps_table.php b/database/migrations/2021_08_12_125207_alter_order_steps_table.php new file mode 100644 index 00000000..eceb2e45 --- /dev/null +++ b/database/migrations/2021_08_12_125207_alter_order_steps_table.php @@ -0,0 +1,36 @@ +dropForeign('order_steps_order_id_foreign'); + $table->dropColumn('order_id'); + $table->nullableMorphs('owner'); + }); + + Schema::table('order_steps', function (Blueprint $table) { + $table->string('owner_type', 191)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}