private static ValueResultObject <DomainInfo> CreateOrganizationDomain(Organization org) { ValueResultObject <DomainInfo> ret = StartTask <ValueResultObject <DomainInfo> >("CRM", "CREATE_ORGANIZATIO_DOMAIN"); try { int dnsServiceId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.Dns); if (dnsServiceId <= 0) { CompleteTask(ret, CrmErrorCodes.DNS_SERVER_IS_NOT_SELECTED_IN_HOSTIN_PLAN, null, string.Format("DNS Server is not selected in hosting plan.")); return(ret); } int crmServiceId = GetCRMServiceId(org.PackageId); StringDictionary serviceSettings = ServerController.GetServiceSettings(crmServiceId); string strDomainName = string.Format("{0}.{1}", org.OrganizationId, serviceSettings[Constants.IFDWebApplicationRootDomain]); DomainInfo domain = ServerController.GetDomain(strDomainName); if (domain == null) { domain = new DomainInfo(); domain.PackageId = org.PackageId; domain.DomainName = strDomainName; domain.IsInstantAlias = false; domain.IsSubDomain = false; domain.DomainId = ServerController.AddDomain(domain); } ret.Value = domain; if (domain.DomainId <= 0) { CompleteTask(ret, CrmErrorCodes.CANNOT_CREATE_CRM_ORGANIZATION_DOMAIN, null, string.Format("Crm organization domain cannot be created. DomainId {0}", domain.DomainId)); return(ret); } ResultObject resAddDnsZoneRecord = CreateDnsZoneRecord(domain.DomainId, string.Empty, serviceSettings[Constants.CRMWebsiteIP]); ret.ErrorCodes.AddRange(resAddDnsZoneRecord.ErrorCodes); } catch (Exception ex) { CompleteTask(ret, CrmErrorCodes.CREATE_CRM_ORGANIZATION_DOMAIN_GENERAL_ERROR, ex); return(ret); } CompleteTask(); return(ret); }
public static OrganizationResult CreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation) { OrganizationResult res = StartTask <OrganizationResult>("CRM", "CREATE_ORGANIZATION"); try { Organization org = OrganizationController.GetOrganization(organizationId); try { if (!CheckQuota(org.PackageId)) { CompleteTask(res, CrmErrorCodes.QUOTA_HAS_BEEN_REACHED); return(res); } } catch (Exception ex) { CompleteTask(res, CrmErrorCodes.CANNOT_CHECK_QUOTAS, ex); return(res); } CRM crm = GetCRMProxy(org.PackageId); Guid orgId = Guid.NewGuid(); OrganizationUser user = OrganizationController.GetUserGeneralSettings(organizationId, userId); if (string.IsNullOrEmpty(user.FirstName)) { CompleteTask(res, CrmErrorCodes.FIRST_NAME_IS_NOT_SPECIFIED); return(res); } if (string.IsNullOrEmpty(user.LastName)) { CompleteTask(res, CrmErrorCodes.LAST_NAME_IS_NOT_SPECIFIED); return(res); } org.CrmAdministratorId = user.AccountId; org.CrmCurrency = string.Join("|", new[] { baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, regionName }); org.CrmCollation = collation; org.CrmOrgState = (int)CrmOrganizationState.Enabled; org.CrmOrganizationId = orgId; OrganizationResult serverRes = crm.CreateOrganization(orgId, org.OrganizationId, org.Name, baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, user.AccountName, user.FirstName, user.LastName, user.PrimaryEmailAddress, collation); if (!serverRes.IsSuccess) { res.ErrorCodes.AddRange(serverRes.ErrorCodes); CompleteTask(res); return(res); } ValueResultObject <DomainInfo> resDomain = CreateOrganizationDomain(org); res.ErrorCodes.AddRange(resDomain.ErrorCodes); int crmServiceId = GetCRMServiceId(org.PackageId); StringDictionary serviceSettings = ServerController.GetServiceSettings(crmServiceId); string port = serviceSettings[Constants.Port]; string schema = serviceSettings[Constants.UrlSchema]; if (port == "80" && schema == "http") { port = string.Empty; } if (port == "443" && schema == "https") { port = string.Empty; } if (port != string.Empty) { port = ":" + port; } string strDomainName = string.Format("{0}.{1}", org.OrganizationId, serviceSettings[Constants.IFDWebApplicationRootDomain]); org.CrmUrl = string.Format("{0}://{1}{2}", schema, strDomainName, port); PackageController.UpdatePackageItem(org); CrmUserResult crmUser = crm.GetCrmUserByDomainName(user.DomainUserName, org.OrganizationId); res.ErrorCodes.AddRange(crmUser.ErrorCodes); if (crmUser.IsSuccess) { try { DataProvider.CreateCRMUser(userId, crmUser.Value.CRMUserId, crmUser.Value.BusinessUnitId); } catch (Exception ex) { CompleteTask(res, CrmErrorCodes.CANNOT_ADD_ORGANIZATION_OWNER_TO_ORGANIZATIO_USER, ex, "Cannot add organization owner to organization users"); } } res.Value = org; } catch (Exception ex) { CompleteTask(res, CrmErrorCodes.CREATE_CRM_ORGANIZATION_GENERAL_ERROR, ex); return(res); } CompleteTask(); return(res); }