dispatch('phoneInputAdded'); } public function resetData() { $this->mount(); } public function back() { $this->status = FormStatus::IN_PROCESS; } public function save() { $hasErrors = false; foreach ($this->selectedObjects as $complexId=>$room) { if ($this->createDeal($complexId, $room)) { unset($this->selectedObjects[$complexId]); } else { $hasErrors = true; } } if ($hasErrors) { return $this->status = FormStatus::ERROR; } $this->status = FormStatus::SUCCESS; } private function createDeal($complexId, $room) { if ( !$deal = Deal::create([ 'agent_id' => $this->agentId, 'complex_id' => $complexId, 'plan7_data' => (is_array($room) && array_key_exists('id', $room)) ? json_encode($room) : null ]) ) { return false; } foreach ($this->contacts as $contact) { if ( !$newUser = Client::updateOrCreate( ['phone' => $contact['phones'][0]], [ 'name' => trim($contact['firstName'] . ' ' . $contact['secondName']), 'phone' => $contact['phones'][0] ] ) ) { return false; } if ( !$dealClient = DealClients::firstOrCreate([ 'deal_id' => $deal->id, 'client_id' => $newUser->id ]) ) { return false; } } $this->dispatch('clientCreated'); return true; } }