public function createCompany($params) { //TODO: create company /* * 1) Провалидировать все поля * 2) Сохранить (ready) */ $valid = false; $result = false; $user_created = false; $errors = array(); $mName = trim($params['company_name']); $mDomain = mb_strtolower(trim($params['company_domain']), 'utf-8'); $mCountry = trim($params['company_country']); $mCity = trim($params['company_city']); $mWebsite = mb_strtolower(trim($params['company_site']), 'utf-8'); $mCompanyType = trim($params['company_type']); $mLoginEmail = mb_strtolower(trim($params['login_email']), 'utf-8'); $mLoginPassword = trim($params['login_password']); $mLoginConfirmPassword = trim($params['login_confirm_password']); $mContactEmail = mb_strtolower(trim($params['contacts_email']), 'utf-8'); $mContactPhone = trim($params['contacts_phone']); $mValidator = new Validation(); if (empty($mName) || strlen($mName) < 2 || strlen($mName) > 250) { array_push($errors, 'name'); } if (empty($mCountry)) { array_push($errors, 'country'); } if (!empty($mWebsite) && !$mValidator->isValidUrl($mWebsite)) { array_push($errors, 'website'); } if (empty($mDomain) || !$mValidator->isValidCompanyDomain($mDomain) || $this->isDomainInUse($mDomain)) { array_push($errors, 'domain'); } $company_types = array(-1, 1, 2, 3); if (!is_numeric($mCompanyType) || !$mCompanyType || !in_array($mCompanyType, $company_types)) { array_push($errors, 'company_type'); } if (empty($mLoginEmail) || !$mValidator->isValidEmail($mLoginEmail) || $this->isEmailInUse($mLoginEmail)) { array_push($errors, 'login_email'); } if (empty($mLoginPassword) || strlen($mLoginPassword) < 6 || strlen($mLoginPassword) > 200) { array_push($errors, 'login_password'); } if (empty($mLoginConfirmPassword) || $mLoginPassword != $mLoginConfirmPassword) { array_push($errors, 'login_confirm_password'); } if (empty($mContactEmail) || !$mValidator->isValidEmail($mContactEmail)) { array_push($errors, 'contact_email'); } if (!empty($mContactPhone) && !$mValidator->isValidPhone($mContactPhone)) { array_push($errors, 'contact_phone'); } if (!count($errors)) { $valid = true; } $mAdminUser = null; if ($valid) { //создаем админа, получаем его id $mUsersManager = new UsersManager($this->db); $admin_user_id = $mUsersManager->createAdminForCompany(array('email' => $mLoginEmail, 'password' => $mLoginPassword, 'confirm_password' => $mLoginConfirmPassword)); if ($admin_user_id != -1) { $user_created = true; $mAdminUser = new User($this->db); $mAdminUser->allocateById($admin_user_id); } } if ($valid && $user_created) { $this->db->query("INSERT INTO `companies` (name, country, city, website, company_type, user_id, domain, contact_email,\n contact_phone, register_time, max_count_services, employees_number, end_subscription_time, stop_company_time,\n sms_enabled, email_enabled)\n VALUES(?s, ?s, ?s, ?s, ?s, ?i, ?s, ?s, ?s, ?i, ?i, ?i, ?i, ?i, ?i, ?i)", $mName, $mCountry, $mCity, $mWebsite, $mCompanyType, $mAdminUser->getId(), $mDomain, $mContactEmail, $mContactPhone, time(), self::MAX_COUNT_SERVICES_TRIAL, self::DEFAULT_EMPLOYEES_NUMBER, time() + self::SUBSCRIPTION_TIME_TRIAL, time() + self::SUBSCRIPTION_TIME_TRIAL + self::ADDITIONAL_TIME_TRIAL, self::DEFAULT_SMS_ENABLED, self::DEFAULT_EMAIL_ENABLED); $inserted_company_id = $this->db->insertedId(); $mAdminUser->setCompanyId($inserted_company_id); $result = true; } return $result; }