/** * Process the flow of creating a new user * * @return \Illuminate\Database\Eloquent\Model|mixed * @throws \Exception */ protected function doCreate() { try { $this->repoWrapper->begin(); $createdUser = $this->userRepo->createRaw($this->getUserData()); $createdUser = $this->addCommandRolesToUser($createdUser); $createdUser = $this->addCommandCategoriesToUser($createdUser); } catch (\Exception $e) { $this->repoWrapper->failure(); throw $e; } $this->repoWrapper->end(); return $createdUser; }
/** * Execute the console command. * * @throws ArtisanException * @return mixed */ public function fire() { $this->repoWrapper->begin(); try { $user = $this->createUser(); $roles = ['admin', 'authenticated']; $this->addRolesToUser($user, $roles); } catch (RepositoryException $e) { $this->repoWrapper->failure(); $this->error('Repository job roll backed'); throw new ArtisanException($e->getMessage()); } $this->repoWrapper->end(); $this->info('User created successfully'); }
/** * Create article with all dependencies * * @return Article * @throws \Exception */ protected function doCreate() { try { $this->repoWrapper->begin(); $this->checkArticleState(); $this->checkArticleCategory(); $this->created = $this->doArticleCreate(); $this->addState(); $this->addTags(); } catch (\Exception $e) { $this->repoWrapper->failure(); throw $e; } $this->repoWrapper->end(); return $this->created; }
/** * Do Update * * @throws \Exception * @return User */ protected function doUpdate() { // As we don't want to do incomplete jobs here // we wrap the repository code so we can trace it for rollbacking // In this case RepoWrapperInterface has been bound to a class // that uses database transactions fo this feature. $userData = $this->getUserData(); // get data that fits user repository for update $userId = $userData['id']; unset($userData['id']); // unset user id because it is not in mass assignment of the model try { $this->repoWrapper->begin(); $updated = $this->userRepo->updateById($userId, $userData); $updated = $this->addCommandRolesToUser($updated); $updated = $this->addCommandCategoriesToUser($updated); } catch (\Exception $e) { $this->repoWrapper->failure(); throw $e; } $this->repoWrapper->end(); return $updated; }