/** * add or update organization by superadmin * @param null $orgId * @param array $orgDetails * @return mixed|void */ public function saveOrganization(array $orgDetails, $orgId = null) { try { $this->database->beginTransaction(); $orgData = $this->makeOrganizationData($orgDetails); $organization = $this->organization->firstOrNew(['id' => $orgId]); $organization->fill($orgData)->save(); $adminData = $this->makeAdminData($orgDetails, $organization->id); $user = $this->user->firstOrNew(['org_id' => $organization->id]); $user->fill($adminData)->save(); $settingsData = $this->makeSettingsData($orgDetails, $organization->id); $settings = $this->settings->firstOrNew(['organization_id' => $organization->id]); $settings->fill($settingsData)->save(); $this->database->commit(); $this->logger->info($orgId ? 'Organization information Updated' : 'Organization added'); $this->dbLogger->activity($orgId ? "activity.organization_updated" : "activity.organization_added", ['user_id' => $user->id, 'organization_id' => $orgId]); } catch (Exception $exception) { $this->database->rollback(); $this->logger->error($exception, ['settings' => $orgDetails]); } }