Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }