'Created Company Wallet', 'message' => 'You have successfully created a company wallet' ]; } /** @var CreatesWallet */ private $createsWallet; /** @var GeneratesWalletCode */ private $generatesWalletCode; /** @var CanCreateCompanyWallet */ private $canCreateCompanyWallet; /** @var FetchesCompany */ private $fetchesCompany; /** * CreateWalletLogic constructor. * @param CreatesWallet $createsWallet * @param GeneratesWalletCode $generatesWalletCode * @param CanCreateCompanyWallet $canCreateCompanyWallet */ public function __construct(CreatesWallet $createsWallet, GeneratesWalletCode $generatesWalletCode, CanCreateCompanyWallet $canCreateCompanyWallet, FetchesCompany $fetchesCompany) { $this->fetchesCompany = $fetchesCompany; $this->createsWallet = $createsWallet; $this->generatesWalletCode = $generatesWalletCode; $this->canCreateCompanyWallet = $canCreateCompanyWallet; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { $object = new WalletObject($request->input('company_id'), $request->input('currency_id'), $this->generatesWalletCode->execute()); $this->canCreateCompanyWallet->passes($object); $company = $this->fetchesCompany->execute(['id' => $request->input('company_id')]); $wallet = $this->createsWallet->execute($object, $company); return $this->resourceResponse(new WalletResource($wallet)); } }