updatePerfexCRMObject = $updatePerfexCRMObject; $this->transaction = $transaction; $this->shouldCreateInvoice = $shouldCreateInvoice; } public function handle() { $invoiceId = 0; //To use invoice as a reference to decide whether more tasks should be created if($this->transaction != null){ $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( $this->updatePerfexCRMObject->getContactEmail(), $this->updatePerfexCRMObject->getProjectName(), '', $this->transaction, true ); // UpdatePerfexCRMInvoice::dispatch($updatePerfexCRMInvoiceObject); $invoiceId = (App()->make(CreatePerfexCRMInvoiceV2Processor::class))->execute($updatePerfexCRMInvoiceObject); } $this->updatePerfexCRMObject->setInvoiceId($invoiceId); $result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); if($this->transaction != null && $this->shouldCreateInvoice){ $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( $this->updatePerfexCRMObject->getContactEmail(), $this->updatePerfexCRMObject->getProjectName(), $result->projectId, $this->transaction, true ); UpdatePerfexCRMInvoice::dispatch($updatePerfexCRMInvoiceObject); } } }