From f4035b7e3ba3e1c738ee9ec0d5c1d431eab6efac Mon Sep 17 00:00:00 2001 From: Nikola Cirkovic Date: Thu, 2 Jun 2022 04:41:16 +0200 Subject: [PATCH] INA-6 | Create Invitations for Purchase Orders (wip) --- .../PurchaseOrder/CreateInvitations.php | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 app/Services/PurchaseOrder/CreateInvitations.php diff --git a/app/Services/PurchaseOrder/CreateInvitations.php b/app/Services/PurchaseOrder/CreateInvitations.php new file mode 100644 index 000000000000..4ae8f85323e6 --- /dev/null +++ b/app/Services/PurchaseOrder/CreateInvitations.php @@ -0,0 +1,91 @@ +purchase_order = $purchase_order; + } + private function createBlankContact() + { + $new_contact = PurchaseOrderInvitationFactory::create($this->purchase_order->company_id, $this->purchase_order->user_id); + $new_contact->client_id = $this->purchase_order->client_id; + $new_contact->contact_key = Str::random(40); + $new_contact->is_primary = true; + $new_contact->save(); + } + public function run() + { + $contacts = $this->purchase_order->vendor->contacts; + + if($contacts->count() == 0){ + $this->createBlankContact(); + + $this->purchase_order->refresh(); + $contacts = $this->purchase_order->vendor->contacts; + } + + $contacts->each(function ($contact) { + $invitation = PurchaseOrderInvitation::whereCompanyId($this->purchase_order->company_id) + ->whereClientContactId($contact->id) + ->whereCreditId($this->purchase_order->id) + ->withTrashed() + ->first(); + + if (! $invitation) { + $ii = PurchaseOrderInvitation::create($this->purchase_order->company_id, $this->purchase_order->user_id); + $ii->key = $this->createDbHash($this->purchase_order->company->db); + $ii->purchase_order_id = $this->purchase_order->id; + $ii->vendor_contact_id = $contact->id; + $ii->save(); + } elseif (! $contact->send_email) { + $invitation->delete(); + } + }); + + if($this->purchase_order->invitations()->count() == 0) { + + if($contacts->count() == 0){ + $contact = $this->createBlankContact(); + } + else{ + $contact = $contacts->first(); + + $invitation = PurchaseOrder::where('company_id', $this->purchase_order->company_id) + ->where('vendor_contact_id', $contact->id) + ->where('purchase_order_id', $this->purchase_order->id) + ->withTrashed() + ->first(); + + if($invitation){ + $invitation->restore(); + return $this->purchase_order; + } + } + + $ii = PurchaseOrderInvitation::create($this->purchase_order->company_id, $this->purchase_order->user_id); + $ii->key = $this->createDbHash($this->purchase_order->company->db); + $ii->purchase_order_id = $this->purchase_order->id; + $ii->vendor_contact_id = $contact->id; + $ii->save(); + } + + + return $this->purchase_order; + } +}