コード例 #1
0
        public static CrmUserResult GetCrmUser(int itemId, int accountId)
        {
            CrmUserResult res = StartTask <CrmUserResult>("CRM", "GET_CRM_USER");

            try
            {
                Guid crmUserId = GetCrmUserId(accountId);

                Organization org;

                try
                {
                    org = OrganizationController.GetOrganization(itemId);
                }
                catch (Exception ex)
                {
                    CompleteTask(res, ErrorCodes.CANNOT_GET_ORGANIZATION_BY_ITEM_ID, ex);
                    return(res);
                }


                int serviceId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.HostedCRM);
                if (serviceId == 0)
                {
                    CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null,
                                 "CRM is not selected in hosting plan.");
                    return(res);
                }

                try
                {
                    CRM crm = new CRM();
                    ServiceProviderProxy.Init(crm, serviceId);
                    CrmUserResult user = crm.GetCrmUserById(crmUserId, org.OrganizationId);
                    res.ErrorCodes.AddRange(user.ErrorCodes);
                    if (!user.IsSuccess)
                    {
                        CompleteTask(res);
                        return(res);
                    }
                    res.Value = user.Value;
                }
                catch (Exception ex)
                {
                    CompleteTask(res, CrmErrorCodes.CANONT_GET_CRM_USER_BY_ID, ex);
                    return(res);
                }
            }
            catch (Exception ex)
            {
                CompleteTask(res, CrmErrorCodes.CANONT_GET_CRM_USER_GENERAL_ERROR, ex);
                return(res);
            }
            CompleteTask();
            return(res);
        }
コード例 #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                try
                {
                    OrganizationUser user =
                        ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID);

                    CrmUserResult userResult = ES.Services.CRM.GetCrmUser(PanelRequest.ItemID, PanelRequest.AccountID);

                    if (userResult.IsSuccess)
                    {
                        btnActive.Visible  = userResult.Value.IsDisabled;
                        locEnabled.Visible = !userResult.Value.IsDisabled;

                        btnDeactivate.Visible = !userResult.Value.IsDisabled;
                        locDisabled.Visible   = userResult.Value.IsDisabled;
                        lblDisplayName.Text   = user.DisplayName;
                        lblEmailAddress.Text  = user.PrimaryEmailAddress;
                        lblDomainName.Text    = user.DomainUserName;
                    }
                    else
                    {
                        messageBox.ShowMessage(userResult, "GET_CRM_USER", "HostedCRM");
                        return;
                    }

                    CrmRolesResult res =
                        ES.Services.CRM.GetCrmRoles(PanelRequest.ItemID, PanelRequest.AccountID, PanelSecurity.PackageId);

                    if (res.IsSuccess)
                    {
                        gvRoles.DataSource = res.Value;
                        gvRoles.DataBind();
                    }
                    else
                    {
                        messageBox.ShowMessage(res, "GET_CRM_USER_ROLES", "HostedCRM");
                    }
                }
                catch (Exception ex)
                {
                    messageBox.ShowErrorMessage("GET_CRM_USER_ROLES", ex);
                }
            }
        }
コード例 #3
0
        private static void PopulateCRMReportItems(Organization org, EnterpriseSolutionStatisticsReport report, string topReseller)
        {
            if (org.CrmOrganizationId == Guid.Empty)
            {
                return;
            }

            List <OrganizationUser> users;

            try
            {
                users = CRMController.GetCRMOrganizationUsers(org.Id);
            }
            catch (Exception ex)
            {
                throw new ApplicationException(
                          string.Format("Could not get CRM Organization users. OrgId : {0}", org.Id), ex);
            }

            CRM crm;

            try
            {
                crm = GetCRMProxy(org.PackageId);
            }
            catch (Exception ex)
            {
                throw new ApplicationException(string.Format("Could not get CRM Proxy. PackageId: {0}", org.PackageId),
                                               ex);
            }

            foreach (OrganizationUser user in users)
            {
                try
                {
                    CRMOrganizationStatistics stats = new CRMOrganizationStatistics();

                    PopulateBaseItem(stats, org, topReseller);

                    stats.CRMOrganizationId = org.CrmOrganizationId;
                    stats.CRMUserName       = user.DisplayName;

                    Guid          crmUserId = CRMController.GetCrmUserId(user.AccountId);
                    CrmUserResult res       = crm.GetCrmUserById(crmUserId, org.OrganizationId);
                    if (res.IsSuccess && res.Value != null)
                    {
                        stats.ClientAccessMode = res.Value.ClientAccessMode;
                        stats.CRMDisabled      = res.Value.IsDisabled;
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder("Could not get CRM user by id.");
                        foreach (string str in res.ErrorCodes)
                        {
                            sb.AppendFormat("\n{0};", str);
                        }
                        throw new ApplicationException(sb.ToString());
                    }

                    report.CRMReport.Items.Add(stats);
                }
                catch (Exception ex)
                {
                    TaskManager.WriteError(ex);
                }
            }
        }
コード例 #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
                if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013))
                {
                    ddlLicenseType.Items.Add(new System.Web.UI.WebControls.ListItem(
                                                 GetSharedLocalizedString("HostedCRM.LicenseProfessional"), CRMUserLycenseTypes.PROFESSIONAL.ToString()));
                    ddlLicenseType.Items.Add(new System.Web.UI.WebControls.ListItem(
                                                 GetSharedLocalizedString("HostedCRM.LicenseBasic"), CRMUserLycenseTypes.BASIC.ToString()));
                    ddlLicenseType.Items.Add(new System.Web.UI.WebControls.ListItem(
                                                 GetSharedLocalizedString("HostedCRM.LicenseEssential"), CRMUserLycenseTypes.ESSENTIAL.ToString()));
                }
                else
                {
                    ddlLicenseType.Items.Add(new System.Web.UI.WebControls.ListItem(
                                                 GetSharedLocalizedString("HostedCRM.LicenseFull"), CRMUserLycenseTypes.FULL.ToString()));
                    ddlLicenseType.Items.Add(new System.Web.UI.WebControls.ListItem(
                                                 GetSharedLocalizedString("HostedCRM.LicenseLimited"), CRMUserLycenseTypes.LIMITED.ToString()));
                    ddlLicenseType.Items.Add(new System.Web.UI.WebControls.ListItem(
                                                 GetSharedLocalizedString("HostedCRM.LicenseESS"), CRMUserLycenseTypes.ESS.ToString()));
                }


                try
                {
                    OrganizationUser user =
                        ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID);

                    CrmUserResult userResult = ES.Services.CRM.GetCrmUser(PanelRequest.ItemID, PanelRequest.AccountID);

                    if (userResult.IsSuccess)
                    {
                        btnActive.Visible  = userResult.Value.IsDisabled;
                        locEnabled.Visible = !userResult.Value.IsDisabled;

                        btnDeactivate.Visible = !userResult.Value.IsDisabled;
                        locDisabled.Visible   = userResult.Value.IsDisabled;
                        lblDisplayName.Text   = user.DisplayName;
                        lblEmailAddress.Text  = user.PrimaryEmailAddress;
                        lblDomainName.Text    = user.DomainUserName;

                        int cALType = userResult.Value.CALType + ((int)userResult.Value.ClientAccessMode) * 10;

                        Utils.SelectListItem(ddlLicenseType, cALType);
                    }
                    else
                    {
                        messageBox.ShowMessage(userResult, "GET_CRM_USER", "HostedCRM");
                        return;
                    }

                    CrmRolesResult res =
                        ES.Services.CRM.GetCrmRoles(PanelRequest.ItemID, PanelRequest.AccountID, PanelSecurity.PackageId);

                    if (res.IsSuccess)
                    {
                        gvRoles.DataSource = res.Value;
                        gvRoles.DataBind();
                    }
                    else
                    {
                        messageBox.ShowMessage(res, "GET_CRM_USER_ROLES", "HostedCRM");
                    }
                }
                catch (Exception ex)
                {
                    messageBox.ShowErrorMessage("GET_CRM_USER_ROLES", ex);
                }
            }
        }
コード例 #5
0
        public static CrmRolesResult GetCRMRoles(int itemId, int accountId, int packageId)
        {
            CrmRolesResult res = StartTask <CrmRolesResult>("CRM", "GET_CRM_ROLES");

            try
            {
                int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM);
                if (serviceId == 0)
                {
                    CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, "CRM is not selected in hosting plan.");
                    return(res);
                }

                CRM crm = new CRM();
                ServiceProviderProxy.Init(crm, serviceId);

                Organization org = OrganizationController.GetOrganization(itemId);

                CrmUserResult crmUserResult = GetCrmUser(itemId, accountId);
                res.ErrorCodes.AddRange(crmUserResult.ErrorCodes);
                if (!crmUserResult.IsSuccess)
                {
                    CompleteTask(res);
                    return(res);
                }

                CrmUser        crmUser  = crmUserResult.Value;
                CrmRolesResult crmRoles = crm.GetAllCrmRoles(org.OrganizationId, crmUser.BusinessUnitId);
                res.ErrorCodes.AddRange(crmRoles.ErrorCodes);
                if (!crmRoles.IsSuccess)
                {
                    CompleteTask(res);
                    return(res);
                }
                Guid           userId       = crmUser.CRMUserId;
                CrmRolesResult crmUserRoles = crm.GetCrmUserRoles(org.OrganizationId, userId);

                res.ErrorCodes.AddRange(crmUserRoles.ErrorCodes);
                if (!crmUserRoles.IsSuccess)
                {
                    CompleteTask(res);
                    return(res);
                }

                foreach (CrmRole role in crmUserRoles.Value)
                {
                    CrmRole retRole = crmRoles.Value.Find(delegate(CrmRole currentRole)
                    {
                        return(currentRole.RoleId == role.RoleId);
                    });
                    if (retRole != null)
                    {
                        retRole.IsCurrentUserRole = true;
                    }
                }

                res.Value = crmRoles.Value;
            }
            catch (Exception ex)
            {
                CompleteTask(res, CrmErrorCodes.CANNOT_GET_CRM_ROLES_GENERAL_ERROR, ex);
                return(res);
            }

            CompleteTask();
            return(res);
        }
コード例 #6
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);
        }