public static function addMerchant($name, $password, $stores, $privs) { $type = self::MERCHANT; $user = new self(); $transaction = \Bootstrap::getApp()->getDi()->getTransactions()->get(); $user->setTransaction($transaction); $user->name = $name; $user->password = \Plugins\Common::generatePassword($password); $user->type = $type; if (!$user->save()) { foreach ($user->getMessages() as $message) { $transaction->rollback($message->getMessage()); } return false; } $result = $user->addMerchantStore($stores); $role = new \Model\Admin\Role(); $role->setTransaction($transaction); $role->name = $name; if (!$role->save()) { foreach ($user->getMessages() as $message) { $transaction->rollback($message->getMessage()); } return false; } $result = $role->setRolePermission($privs); if (!$result['result']) { $transaction->rollback(); return false; } $user->role_id = $role->id; if (!$user->save()) { foreach ($user->getMessages() as $message) { $transaction->rollback($message->getMessage()); } return false; } $transaction->commit(); return true; }