コード例 #1
0
        protected void InitForOpportunity()
        {
            StartImportLabel = CRMDealResource.StartImport;

            ImportFromCSVStepOneHeaderLabel = CRMDealResource.ImportFromCSVStepOneHeader;
            ImportFromCSVStepTwoHeaderLabel = CRMDealResource.ImportFromCSVStepTwoHeader;

            ImportFromCSVStepOneDescriptionLabel = CRMDealResource.ImportFromCSVStepOneDescription;
            ImportFromCSVStepTwoDescriptionLabel = CRMDealResource.ImportFromCSVStepTwoDescription;

            //
            // ImportFromCSVStepTwoDescription

            ImportStartingPanelHeaderLabel      = CRMDealResource.ImportStartingPanelHeader;
            ImportStartingPanelDescriptionLabel = CRMDealResource.ImportStartingPanelDescription;
            ImportStartingPanelButtonLabel      = CRMDealResource.ImportStartingPanelButton;

            ImportImgSrc = WebImageSupplier.GetAbsoluteWebPath("import-opportunities.png", ProductEntryPoint.ID);

            Page.RegisterClientScript(new Masters.ClientScripts.ImportFromCSVViewDataDeals());

            var privatePanel = (PrivatePanel)Page.LoadControl(PrivatePanel.Location);

            privatePanel.CheckBoxLabel = CRMDealResource.PrivatePanelCheckBoxLabel;
            privatePanel.IsPrivateItem = false;

            var usersWhoHasAccess = new List <string> {
                CustomNamingPeople.Substitute <CRMCommonResource>("CurrentUser")
            };

            privatePanel.UsersWhoHasAccess = usersWhoHasAccess;
            privatePanel.DisabledUsers     = new List <Guid> {
                SecurityContext.CurrentAccount.ID
            };
            privatePanel.HideNotifyPanel = true;
            _phPrivatePanel.Controls.Add(privatePanel);
        }
コード例 #2
0
        protected string RenderEditDelete()
        {
            var sb = new StringBuilder();

            if (UserInfo.Status == EmployeeStatus.Terminated && _allowDelete)
            {
                sb.AppendFormat("<a href=\"javascript:void(0);\" title=\"{2}\" class=\"linkAction" + (SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : "") + "\" onclick=\"AuthManager.DisableUser('{1}',false);\" >{0}</a>"
                                , Resources.Resource.EnableUserButton, UserInfo.ID, CustomNamingPeople.Substitute <Resources.Resource>("EnableUserHelp").HtmlEncode());

                sb.Append("<span class='splitter'>|</span>");

                sb.AppendFormat("<a href=\"javascript:void(0);\" onclick=\"AuthManager.RemoveUser('{1}', '{2}');\"; class=\"linkAction" + (SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : "") + "\" >{0}</a> ", Resources.Resource.DeleteButton, UserInfo.ID, UserInfo.DisplayUserName().ReplaceSingleQuote());
            }
            else
            {
                if (_allowEdit)
                {
                    sb.AppendFormat("<a href=\"javascript:void(0);\" class=\"linkAction" + (SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : "") + "\" onclick=\"StudioUserMaker.ShowEditUserDialog('{1}',function(ok){{if(ok.Action!='cancel') window.location.reload(true)}});\" >{0}</a>"
                                    , Resources.Resource.EditButton, UserInfo.ID);
                }

                if (_allowEdit && _allowChangePwd)
                {
                    sb.Append("<span class='splitter'>|</span>");

                    sb.AppendFormat("<a href=\"javascript:void(0);\" class=\"linkAction" + (SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : "") + "\" onclick=\"AuthManager.ShowPwdReminderDialog('1','" + UserInfo.Email + "');\" >{0}</a>"
                                    , Resources.Resource.ChangePwd);
                }

                if ((_allowDelete && _allowEdit) ||
                    (_allowDelete && _allowChangePwd))
                {
                    sb.Append("<span class='splitter'>|</span>");

                    sb.AppendFormat("<a href=\"javascript:void(0);\" title=\"{2}\" class=\"linkAction" + (SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : "") + "\" onclick=\"AuthManager.DisableUser('{1}',true);\" >{0}</a>"
                                    , Resources.Resource.DisableUserButton, UserInfo.ID, CustomNamingPeople.Substitute <Resources.Resource>("DisableUserHelp").HtmlEncode());
                }

                if (_allowEdit && UserHasAvatar && !ASC.Web.Core.Mobile.MobileDetector.IsRequestMatchesMobile(Context))
                {
                    sb.Append("<span class='splitter'>|</span>");
                    sb.AppendFormat(@"<a onclick='UserPhotoThumbnail.ShowDialog();' href='javascript:void(0);' class='linkAction{0}'>{1}</a>",
                                    SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : string.Empty, Resources.Resource.EditThumbnailPhoto);
                }
            }

            return(sb.ToString());
        }
コード例 #3
0
        public AjaxResponse SendJoinInviteMail(string email)
        {
            email = (email ?? "").Trim();
            var resp = new AjaxResponse {
                rs1 = "0"
            };

            try
            {
                if (String.IsNullOrEmpty(email))
                {
                    resp.rs2 = Resource.ErrorNotCorrectEmail;
                    return(resp);
                }

                if (!email.TestEmailRegex())
                {
                    resp.rs2 = Resource.ErrorNotCorrectEmail;
                }

                var user = CoreContext.UserManager.GetUserByEmail(email);
                if (!user.ID.Equals(ASC.Core.Users.Constants.LostUser.ID))
                {
                    resp.rs1 = "0";
                    resp.rs2 = CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists").HtmlEncode();
                    return(resp);
                }

                var tenant = CoreContext.TenantManager.GetCurrentTenant();
                if (tenant != null)
                {
                    var settings = SettingsManager.Instance.LoadSettings <IPRestrictionsSettings>(tenant.TenantId);
                    if (settings.Enable && !IPSecurity.IPSecurity.Verify(tenant))
                    {
                        resp.rs2 = Resource.ErrorAccessRestricted;
                        return(resp);
                    }
                }


                var trustedDomainSettings = SettingsManager.Instance.LoadSettings <StudioTrustedDomainSettings>(TenantProvider.CurrentTenantID);
                var emplType          = trustedDomainSettings.InviteUsersAsVisitors ? EmployeeType.Visitor : EmployeeType.User;
                var enableInviteUsers = TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers;

                if (!enableInviteUsers)
                {
                    emplType = EmployeeType.Visitor;
                }

                switch (tenant.TrustedDomainsType)
                {
                case TenantTrustedDomainsType.Custom:
                {
                    var address = new MailAddress(email);
                    if (tenant.TrustedDomains.Any(d => address.Address.EndsWith("@" + d, StringComparison.InvariantCultureIgnoreCase)))
                    {
                        StudioNotifyService.Instance.InviteUsers(email, "", true, emplType);
                        MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.SentInviteInstructions, email);
                        resp.rs1 = "1";
                        resp.rs2 = Resource.FinishInviteJoinEmailMessage;
                        return(resp);
                    }
                    else
                    {
                        resp.rs2 = Resource.ErrorEmailDomainNotAllowed;
                    }
                }
                break;

                case TenantTrustedDomainsType.All:
                    StudioNotifyService.Instance.InviteUsers(email, "", true, emplType);
                    MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.SentInviteInstructions, email);
                    resp.rs1 = "1";
                    resp.rs2 = Resource.FinishInviteJoinEmailMessage;
                    return(resp);

                default:
                    resp.rs2 = Resource.ErrorNotCorrectEmail;
                    break;
                }
            }
            catch (FormatException)
            {
                resp.rs2 = Resource.ErrorNotCorrectEmail;
            }
            catch (Exception e)
            {
                resp.rs2 = HttpUtility.HtmlEncode(e.Message);
            }

            return(resp);
        }
コード例 #4
0
        public AjaxResponse SendEmailActivationInstructionsOnChange(string newEmail, string queryString)
        {
            const string StatusSuccess    = "success";
            const string StatusError      = "error";
            const string StatusFatalError = "fatalerror";

            var response = new AjaxResponse {
                status = StatusSuccess
            };

            if (String.IsNullOrEmpty(queryString))
            {
                response.status  = StatusFatalError;
                response.message = Resource.ErrorConfirmURLError;
                return(response);
            }

            if (String.IsNullOrEmpty(newEmail))
            {
                response.status  = StatusError;
                response.message = Resource.ErrorEmailEmpty;
                return(response);
            }

            try
            {
                var result = CheckValidationKey(queryString.Substring(1));
                if (result != EmailValidationKeyProvider.ValidationResult.Ok)
                {
                    response.status = StatusFatalError;
                    switch (result)
                    {
                    case EmailValidationKeyProvider.ValidationResult.Invalid:
                        response.message = Resource.ErrorInvalidActivationLink;
                        break;

                    case EmailValidationKeyProvider.ValidationResult.Expired:
                        response.message = Resource.ErrorExpiredActivationLink;
                        break;

                    default:
                        response.message = Resource.ErrorConfirmURLError;
                        break;
                    }
                    return(response);
                }

                var user = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID);
                if (user == null)
                {
                    response.status  = StatusFatalError;
                    response.message = Resource.ErrorUserNotFound;
                    return(response);
                }

                var existentUser = CoreContext.UserManager.GetUserByEmail(newEmail);
                if (existentUser != null && existentUser.ID == user.ID)
                {
                    response.status  = StatusError;
                    response.message = Resource.ErrorEmailsAreTheSame;
                    return(response);
                }

                if (existentUser != null && existentUser.ID != Constants.LostUser.ID)
                {
                    response.status  = StatusError;
                    response.message = CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists");
                    return(response);
                }

                user.Email            = newEmail;
                user.ActivationStatus = EmployeeActivationStatus.NotActivated;
                CoreContext.UserManager.SaveUserInfo(user);

                StudioNotifyService.Instance.SendEmailActivationInstructions(user, newEmail);
                MessageService.Send(HttpContext.Current.Request, MessageAction.UserSentActivationInstructions, user.DisplayUserName(false));

                response.message = String.Format(Resource.MessageEmailActivationInstuctionsSentOnEmail, "<b>" + newEmail + "</b>");
                return(response);
            }
            catch (Exception)
            {
                response.status  = StatusFatalError;
                response.message = Resource.UnknownError;
                return(response);
            }
        }
コード例 #5
0
        protected void InitForOpportunity()
        {
            StartImportLabel = CRMDealResource.StartImport;

            ImportFromCSVStepOneHeaderLabel = CRMDealResource.ImportFromCSVStepOneHeader;
            ImportFromCSVStepTwoHeaderLabel = CRMDealResource.ImportFromCSVStepTwoHeader;

            ImportFromCSVStepOneDescriptionLabel = CRMDealResource.ImportFromCSVStepOneDescription;
            ImportFromCSVStepTwoDescriptionLabel = CRMDealResource.ImportFromCSVStepTwoDescription;

            //
            // ImportFromCSVStepTwoDescription


            ImportStartingPanelHeaderLabel      = CRMDealResource.ImportStartingPanelHeader;
            ImportStartingPanelDescriptionLabel = CRMDealResource.ImportStartingPanelDescription;
            ImportStartingPanelButtonLabel      = CRMDealResource.ImportStartingPanelButton;

            ImportImgSrc = WebImageSupplier.GetAbsoluteWebPath("import-opportunities.png", ProductEntryPoint.ID);

            var columnSelectorData = new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.NoMatchSelect,
                    isHeader = false
                },
                new
                {
                    name     = "-1",
                    title    = CRMContactResource.DoNotImportThisField,
                    isHeader = false
                },
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.GeneralInformation,
                    isHeader = true
                },
                new
                {
                    name     = "title",
                    title    = CRMDealResource.NameDeal,
                    isHeader = false
                },
                new
                {
                    name     = "client",
                    title    = CRMDealResource.ClientDeal,
                    isHeader = false
                },
                new
                {
                    name     = "description",
                    title    = CRMDealResource.DescriptionDeal,
                    isHeader = false
                },

                new
                {
                    name     = "bid_currency",
                    title    = CRMCommonResource.Currency,
                    isHeader = false
                },

                new
                {
                    name     = "bid_amount",
                    title    = CRMDealResource.DealAmount,
                    isHeader = false
                },
                new
                {
                    name     = "bid_type",
                    title    = CRMDealResource.BidType,
                    isHeader = false
                },
                new
                {
                    name     = "per_period_value",
                    title    = CRMDealResource.BidTypePeriod,
                    isHeader = false
                },
                new
                {
                    name     = "responsible",
                    title    = CRMDealResource.ResponsibleDeal,
                    isHeader = false
                },
                new
                {
                    name     = "expected_close_date",
                    title    = CRMJSResource.ExpectedCloseDate,
                    isHeader = false
                },
                new
                {
                    name     = "actual_close_date",
                    title    = CRMJSResource.ActualCloseDate,
                    isHeader = false
                },
                new
                {
                    name     = "deal_milestone",
                    title    = CRMDealResource.CurrentDealMilestone,
                    isHeader = false
                },
                new
                {
                    name     = "probability_of_winning",
                    title    = CRMDealResource.ProbabilityOfWinning + " %",
                    isHeader = false
                }
            }.ToList();


            columnSelectorData.AddRange(Global.DaoFactory.GetCustomFieldDao().GetFieldsDescription(EntityType.Opportunity).FindAll(customField => customField.FieldType == CustomFieldType.Date || customField.FieldType == CustomFieldType.TextField || customField.FieldType == CustomFieldType.TextArea || customField.FieldType == CustomFieldType.Heading)
                                        .ConvertAll(customField => new
            {
                name     = "customField_" + customField.ID,
                title    = customField.Label.HtmlEncode(),
                isHeader = customField.FieldType == CustomFieldType.Heading
            }));
            columnSelectorData.AddRange(
                new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMDealResource.DealParticipants,
                    isHeader = true
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 1),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 2),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 3),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 4),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 5),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 6),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 7),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 8),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 9),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMDealResource.DealParticipant, 10),
                    isHeader = false
                }
            });

            columnSelectorData.AddRange(
                new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMDealResource.DealTags,
                    isHeader = true
                },
                new
                {
                    name     = "tag",
                    title    = CRMDealResource.DealTagList,
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 1),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 2),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 3),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 4),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 5),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 6),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 7),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 8),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 9),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMDealResource.DealTag, 10),
                    isHeader = false
                },
            }
                );

            Page.RegisterInlineScript(String.Format(" var columnSelectorData = {0}; ", JavaScriptSerializer.Serialize(columnSelectorData)), onReady: false);

            var privatePanel = (PrivatePanel)Page.LoadControl(PrivatePanel.Location);

            privatePanel.CheckBoxLabel = CRMDealResource.PrivatePanelCheckBoxLabel;
            privatePanel.IsPrivateItem = false;

            var usersWhoHasAccess = new List <string> {
                CustomNamingPeople.Substitute <CRMCommonResource>("CurrentUser")
            };

            privatePanel.UsersWhoHasAccess = usersWhoHasAccess;
            privatePanel.DisabledUsers     = new List <Guid> {
                SecurityContext.CurrentAccount.ID
            };
            privatePanel.HideNotifyPanel = true;
            _phPrivatePanel.Controls.Add(privatePanel);
        }
コード例 #6
0
            public void RunJob()
            {
                Status = (int)Operation.Success;
                CoreContext.TenantManager.SetCurrentTenant((int)Id);
                SecurityContext.AuthenticateMe(UserId);

                if (!SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
                {
                    Error       = Resource.ErrorAccessDenied;
                    IsCompleted = true;
                    return;
                }

                try
                {
                    var jsSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var ruleObj      = jsSerializer.Deserialize <List <UserData> >(userList);
                    var error        = 0;

                    var percentStep = 100.0 / ruleObj.Count;
                    foreach (var userData in ruleObj)
                    {
                        var validateEmail = UserManagerWrapper.ValidateEmail(userData.Email);
                        if (!validateEmail || String.IsNullOrEmpty(userData.FirstName) || String.IsNullOrEmpty(userData.LastName))
                        {
                            Data.Add(new UserResults
                            {
                                Email  = userData.Email,
                                Result = Resource.ImportContactsIncorrectFields,
                                Class  = !validateEmail ? "error3" : "error1"
                            });
                            error++;
                            Percentage += percentStep;
                            continue;
                        }

                        var us = CoreContext.UserManager.GetUserByEmail(userData.Email);

                        if (us.ID != Constants.LostUser.ID)
                        {
                            Data.Add(new UserResults
                            {
                                Email  = userData.Email,
                                Result = CustomNamingPeople.Substitute <Resource>("ImportContactsAlreadyExists"),
                                Class  = "error2"
                            });
                            error++;
                            Percentage += percentStep;
                            continue;
                        }

                        if (!importUsersAsCollaborators && TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers)
                        {
                            importUsersAsCollaborators = true;
                        }

                        var userInfo = new UserInfo
                        {
                            Email     = userData.Email,
                            FirstName = userData.FirstName,
                            LastName  = userData.LastName
                        };
                        UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), false, true, importUsersAsCollaborators);

                        var messageAction = importUsersAsCollaborators ? MessageAction.GuestImported : MessageAction.UserImported;
                        MessageService.Send(httpHeaders, messageAction, userInfo.DisplayUserName(false));

                        Data.Add(new UserResults {
                            Email = userData.Email, Result = String.Empty
                        });
                        Percentage += percentStep;
                    }
                }
                catch (Exception ex)
                {
                    Status = (int)Operation.Error;
                    Error  = ex.Message;
                }

                IsCompleted = true;
            }
コード例 #7
0
        private String RenderContent()
        {
            var newUsers       = new List <UserInfo>();
            var widgetSettings = SettingsManager.Instance.LoadSettingsFor <NewEmployeeWidgetSettings>(SecurityContext.CurrentAccount.ID);

            var users = CoreContext.UserManager.GetUsers();

            foreach (var user in users)
            {
                //search new users
                if (user.WorkFromDate.HasValue && (newUsers.Find(u => u.ID.Equals(user.ID)) == null))
                {
                    if (newUsers.Count < widgetSettings.NewWorkerCount)
                    {
                        newUsers.Add(user);
                    }
                    else
                    {
                        newUsers.Sort(new UserInfoDateComparer(true));
                        for (int i = newUsers.Count - 1; i >= 0; i--)
                        {
                            var newUser = newUsers[i];
                            if (newUser.WorkFromDate.Value.CompareTo(user.WorkFromDate) < 0)
                            {
                                newUsers.Remove(newUser);
                                newUsers.Add(user);
                                break;
                            }
                        }
                    }
                }
            }

            newUsers.Sort(new UserInfoDateComparer(true));

            StringBuilder sb = new StringBuilder();

            if (newUsers.Count > 0)
            {
                foreach (var user in newUsers)
                {
                    sb.Append("<div style='margin-bottom:15px;'>");
                    var imageURL = user.GetSmallPhotoURL();
                    sb.Append("<table cellpadding=\"0\" cellspacing=\"0\"><tr valign='top'>");
                    sb.Append("<td style='width:30px;'><a href=\"" + CommonLinkUtility.GetUserProfile(user.ID, ProductID) + "\"><img class=\"borderBase\" border=0 alt=\"\" src='" + imageURL + "'/></a></td>");

                    sb.Append("<td style='padding-left:10px;'>");
                    sb.Append("<div style='margin-top:-3px;'>");
                    sb.Append("<a class='linkHeaderLightSmall' href=\"" + CommonLinkUtility.GetUserProfile(user.ID, ProductID) + "\">" + user.DisplayUserName() + "</a>");
                    sb.Append("</div>");

                    var dep = user.GetUserDepartment();
                    if (dep != null)
                    {
                        sb.Append("<div style='margin-top:4px;'>");
                        sb.Append("<a class='linkText' href='" + CommonLinkUtility.GetDepartment(ProductID, dep.ID) + "'>" + dep.Name.HtmlEncode() + "</a>");
                        sb.Append("</div>");
                    }

                    sb.Append("</td>");
                    sb.Append("</tr></table>");
                    sb.Append("</div>");
                }

                sb.Append("<div style='margin-top: 10px;'>");
                //all users
                sb.Append("<a href=\"" + CommonLinkUtility.GetEmployees(ProductID) + "&sort=InvAdmissionDate\">" + CustomNamingPeople.Substitute <Resources.Resource>("AllEmployees").HtmlEncode() + "</a>");
                sb.Append("</div>");
            }
            else
            {
                //check access rigths
                if (SecurityContext.CheckPermissions(ASC.Core.Users.Constants.Action_AddRemoveUser))
                {
                    sb.Append("<div class='empty-widget' style='padding:40px; text-align: center;'>");
                    var url = string.Format("<div style=\"padding-top:3px;\"><a class=\"promoAction\" href=\"javascript:ImportUsersManager.ShowImportControl();\">");
                    sb.Append(string.Format(CustomNamingPeople.Substitute <Resources.Resource>("InviteEmployeesWidgetTitle").HtmlEncode(), url, "</a></div>"));
                    sb.Append("</div>");
                }
                else
                {
                    sb.Append("<div class=\"empty-widget\" style=\"padding:40px; text-align: center;\">" + CustomNamingPeople.Substitute <Resources.Resource>("NoNewEmployees").HtmlEncode() + "</div>");
                }
            }


            return(sb.ToString());
        }
コード例 #8
0
        [Create(@"register", false)] //NOTE: this method doesn't requires auth!!!
        public string RegisterUserOnPersonal(string email, string lang, bool spam)
        {
            if (!CoreContext.Configuration.Personal)
            {
                throw new MethodAccessException("Method is only available on personal.onlyoffice.com");
            }

            try
            {
                var cultureInfo = SetupInfo.EnabledCultures.Find(c => String.Equals(c.TwoLetterISOLanguageName, lang, StringComparison.InvariantCultureIgnoreCase));
                if (cultureInfo != null)
                {
                    Thread.CurrentThread.CurrentUICulture = cultureInfo;
                }

                email.ThrowIfNull(new ArgumentException(Resource.ErrorEmailEmpty, "email"));

                if (!email.TestEmailRegex())
                {
                    throw new ArgumentException(Resource.ErrorNotCorrectEmail, "email");
                }

                var newUserInfo = CoreContext.UserManager.GetUserByEmail(email);

                if (CoreContext.UserManager.UserExists(newUserInfo.ID))
                {
                    if (!SetupInfo.IsSecretEmail(email) || SecurityContext.IsAuthenticated)
                    {
                        throw new Exception(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists"));
                    }

                    try
                    {
                        SecurityContext.AuthenticateMe(Core.Configuration.Constants.CoreSystem);
                        CoreContext.UserManager.DeleteUser(newUserInfo.ID);
                    }
                    finally
                    {
                        SecurityContext.Logout();
                    }
                }
                if (!spam)
                {
                    try
                    {
                        const string _databaseID = "com";
                        using (var db = DbManager.FromHttpContext(_databaseID))
                        {
                            db.ExecuteNonQuery(new SqlInsert("template_unsubscribe", false)
                                               .InColumnValue("email", email.ToLowerInvariant())
                                               .InColumnValue("reason", "personal")
                                               );
                            log4net.LogManager.GetLogger("ASC.Web").Debug(String.Format("Write to template_unsubscribe {0}", email.ToLowerInvariant()));
                        }
                    }
                    catch (Exception ex)
                    {
                        log4net.LogManager.GetLogger("ASC.Web").Debug(String.Format("ERROR write to template_unsubscribe {0}, email:{1}", ex.Message, email.ToLowerInvariant()));
                    }
                }
                StudioNotifyService.Instance.SendInvitePersonal(email);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
            return(string.Empty);
        }
コード例 #9
0
        public string InitDepartmentsDdl()
        {
            var sb = new StringBuilder().AppendFormat("<option value='-1' id='ddlDepartment-1'>{0}</option>", CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments").HtmlEncode());

            CoreContext.UserManager
            .GetDepartments()
            .OrderBy(g => g.Name)
            .ToList()
            .ForEach(g => sb.AppendFormat("<option value='{0}' id='ddlDepartment{0}' {2}>{1}</option>", g.ID, g.Name.HtmlEncode(), g.ID == Report.Filter.DepartmentId ? "selected='selected'" : ""));

            return(sb.ToString());
        }
コード例 #10
0
 protected void Page_Load(object sender, EventArgs e)
 {
     PageTitle = CustomNamingPeople.Substitute <Resource>("ImportContactsHeader");
     importUsers.Controls.Add(LoadControl(ImportUsers.Location));
 }
コード例 #11
0
        private String ParseFilter(ReportType repType, ReportFilter filter)
        {
            var sb         = new StringBuilder();
            var filterData = new StringBuilder();
            var row        = "<tr><td class='filterRowTitle'>{0}:</td><td>{1}</td></tr>";
            var desc       = string.Empty;
            var statuses   = string.Empty;

            filterData.Append("<table cellspacing='0' cellpadding='0' class='filterTable'>");

            switch (repType)
            {
            case ReportType.MilestonesExpired:
                desc = String.Format(ReportResource.ReportLateMilestones_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, ProjectResource.Tags, (filter.ProjectTag != string.Empty && filter.ProjectTag != null) ? filter.ProjectTag.HtmlEncode() : ProjectsCommonResource.All);
                filterData.AppendFormat(row, ProjectResource.Project, (filter.ProjectIds != null && filter.ProjectIds.Count == 1) ? Global.EngineFactory.GetProjectEngine().GetByID(filter.ProjectIds[0]).Title.HtmlEncode() : ProjectResource.AllProjects);
                break;

            case ReportType.MilestonesNearest:
                desc = String.Format(ReportResource.ReportUpcomingMilestones_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, ProjectResource.Tags, (filter.ProjectTag != string.Empty && filter.ProjectTag != null) ? filter.ProjectTag.HtmlEncode() : ProjectsCommonResource.All);
                filterData.AppendFormat(row, ProjectResource.Project, (filter.ProjectIds != null && filter.ProjectIds.Count == 1) ? Global.EngineFactory.GetProjectEngine().GetByID(filter.ProjectIds[0]).Title.HtmlEncode() : ProjectResource.AllProjects);
                filterData.AppendFormat(row, ReportResource.ChooseTimeInterval, filter.GetFromDate(false).ToString(DateTimeExtension.DateFormatPattern) + " - " + filter.GetToDate(false).ToString(DateTimeExtension.DateFormatPattern));
                break;

            case ReportType.ProjectsList:
                desc = String.Format(ReportResource.ReportProjectList_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, CustomNamingPeople.Substitute <ReportResource>("Department").HtmlEncode(), filter.DepartmentId != Guid.Empty ? CoreContext.GroupManager.GetGroupInfo(filter.DepartmentId).Name.HtmlEncode() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments"));
                filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                if (filter.ProjectStatuses.Count > 0)
                {
                    for (int i = 0; i < filter.ProjectStatuses.Count; i++)
                    {
                        statuses += ResourceEnumConverter.ConvertToString(filter.ProjectStatuses[i]);
                        statuses += i < filter.TaskStatuses.Count - 1 ? ", " : string.Empty;
                    }
                }
                else
                {
                    statuses += ResourceEnumConverter.ConvertToString(ProjectStatus.Open) + ", ";
                    statuses += ResourceEnumConverter.ConvertToString(ProjectStatus.Closed);
                }
                filterData.AppendFormat(row, ReportResource.ProjectsStatus, statuses);
                break;

            case ReportType.ProjectsWithoutActiveMilestones:
                desc = String.Format(ReportResource.ReportProjectsWithoutActiveMilestones_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, CustomNamingPeople.Substitute <ReportResource>("Department").HtmlEncode(), filter.DepartmentId != Guid.Empty ? CoreContext.GroupManager.GetGroupInfo(filter.DepartmentId).Name.HtmlEncode() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments"));
                filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                break;

            case ReportType.ProjectsWithoutActiveTasks:
                desc = String.Format(ReportResource.ReportProjectsWithoutActiveTasks_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, CustomNamingPeople.Substitute <ReportResource>("Department").HtmlEncode(), filter.DepartmentId != Guid.Empty ? CoreContext.GroupManager.GetGroupInfo(filter.DepartmentId).Name.HtmlEncode() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments"));
                filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                break;

            case ReportType.TasksByProjects:
                desc = String.Format(ReportResource.ReportTaskList_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, ProjectResource.Tags, (filter.ProjectTag != string.Empty && filter.ProjectTag != null) ? filter.ProjectTag.HtmlEncode() : ProjectsCommonResource.All);
                filterData.AppendFormat(row, ProjectResource.Project, (filter.ProjectIds != null && filter.ProjectIds.Count == 1) ? Global.EngineFactory.GetProjectEngine().GetByID(filter.ProjectIds[0]).Title.HtmlEncode() : ProjectResource.AllProjects);
                filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                for (int i = 0; i < filter.TaskStatuses.Count; i++)
                {
                    statuses += ResourceEnumConverter.ConvertToString(filter.TaskStatuses[i]);
                    statuses += i < filter.TaskStatuses.Count - 1 ? ", " : string.Empty;
                }
                filterData.AppendFormat(row, ReportResource.TasksStatus, statuses);
                if (filter.ToDate != DateTime.MinValue && filter.ToDate != DateTime.MaxValue)
                {
                    filterData.AppendFormat(row, TaskResource.DeadLine, filter.ToDate.ToString(DateTimeExtension.DateFormatPattern));
                }
                break;

            case ReportType.TasksByUsers:
                desc = String.Format(ReportResource.ReportUserTasks_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, CustomNamingPeople.Substitute <ReportResource>("Department").HtmlEncode(), filter.DepartmentId != Guid.Empty ? CoreContext.GroupManager.GetGroupInfo(filter.DepartmentId).Name.HtmlEncode() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments"));
                filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                for (int i = 0; i < filter.TaskStatuses.Count; i++)
                {
                    statuses += ResourceEnumConverter.ConvertToString(filter.TaskStatuses[i]);
                    statuses += i < filter.TaskStatuses.Count - 1 ? ", " : string.Empty;
                }
                filterData.AppendFormat(row, ReportResource.TasksStatus, statuses);
                if (filter.ToDate != DateTime.MinValue && filter.ToDate != DateTime.MaxValue)
                {
                    filterData.AppendFormat(row, TaskResource.DeadLine, filter.ToDate.ToString(DateTimeExtension.DateFormatPattern));
                }
                break;

            case ReportType.TasksExpired:
                desc = String.Format(ReportResource.ReportLateTasks_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, ProjectResource.Tags, (filter.ProjectTag != string.Empty && filter.ProjectTag != null) ? filter.ProjectTag.HtmlEncode() : ProjectsCommonResource.All);
                filterData.AppendFormat(row, ProjectResource.Project, (filter.ProjectIds != null && filter.ProjectIds.Count == 1) ? Global.EngineFactory.GetProjectEngine().GetByID(filter.ProjectIds[0]).Title.HtmlEncode() : ProjectResource.AllProjects);
                break;

            case ReportType.TimeSpend:
                desc = String.Format(ReportResource.ReportTimeSpendSummary_Description, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, CustomNamingPeople.Substitute <ReportResource>("Department").HtmlEncode(), filter.DepartmentId != Guid.Empty ? CoreContext.GroupManager.GetGroupInfo(filter.DepartmentId).Name.HtmlEncode() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments"));
                filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                if (filter.TimeInterval != ReportTimeInterval.Absolute || (filter.TimeInterval != ReportTimeInterval.Absolute && filter.ToDate != DateTime.MaxValue))
                {
                    filterData.AppendFormat(row, ReportResource.ChooseTimeInterval, filter.GetFromDate(false).ToString(DateTimeExtension.DateFormatPattern) + " - " + filter.GetToDate(false).ToString(DateTimeExtension.DateFormatPattern));
                }
                filterData.AppendFormat(row, ProjectResource.Project, (filter.ProjectIds != null && filter.ProjectIds.Count == 1) ? Global.EngineFactory.GetProjectEngine().GetByID(filter.ProjectIds[0]).Title.HtmlEncode() : ProjectResource.AllProjects);
                break;

            case ReportType.UsersActivity:
                desc = String.Format(ReportResource.ReportUserActivity_Descripton, "<ul>", "</ul>", "<li>", "</li>");
                filterData.AppendFormat(row, CustomNamingPeople.Substitute <ReportResource>("Department").HtmlEncode(), filter.DepartmentId != Guid.Empty ? CoreContext.GroupManager.GetGroupInfo(filter.DepartmentId).Name.HtmlEncode() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments"));
                filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                if (filter.TimeInterval != ReportTimeInterval.Absolute || (filter.TimeInterval != ReportTimeInterval.Absolute && filter.ToDate != DateTime.MaxValue))
                {
                    filterData.AppendFormat(row, ReportResource.ChooseTimeInterval, filter.GetFromDate(false).ToString(DateTimeExtension.DateFormatPattern) + " - " + filter.GetToDate(false).ToString(DateTimeExtension.DateFormatPattern));
                }
                break;

            case ReportType.UsersWithoutActiveTasks:
                desc = String.Format(ReportResource.ReportEmployeesWithoutActiveTasks_Description, "<ul>", "</ul>", "<li>", "</li>");
                if (filter.ViewType == 0)
                {
                    filterData.AppendFormat(row, CustomNamingPeople.Substitute <ReportResource>("Department").HtmlEncode(), filter.DepartmentId != Guid.Empty ? CoreContext.GroupManager.GetGroupInfo(filter.DepartmentId).Name.HtmlEncode() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments"));
                    filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                }
                if (filter.ViewType == 1)
                {
                    filterData.AppendFormat(row, ProjectResource.Tags, (filter.ProjectTag != string.Empty && filter.ProjectTag != null) ? filter.ProjectTag.HtmlEncode() : ProjectsCommonResource.All);
                    filterData.AppendFormat(row, ProjectResource.Project, (filter.ProjectIds != null && filter.ProjectIds.Count == 1) ? Global.EngineFactory.GetProjectEngine().GetByID(filter.ProjectIds[0]).Title.HtmlEncode() : ProjectResource.AllProjects);
                    filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                }
                break;

            case ReportType.UsersWorkload:
                desc = String.Format(ReportResource.ReportEmployment_Description, "<ul>", "</ul>", "<li>", "</li>");
                if (filter.ViewType == 0)
                {
                    filterData.AppendFormat(row, CustomNamingPeople.Substitute <ReportResource>("Department").HtmlEncode(), filter.DepartmentId != Guid.Empty ? CoreContext.GroupManager.GetGroupInfo(filter.DepartmentId).Name.HtmlEncode() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments"));
                    filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                }
                if (filter.ViewType == 1)
                {
                    filterData.AppendFormat(row, ProjectResource.Tags, (filter.ProjectTag != string.Empty && filter.ProjectTag != null) ? filter.ProjectTag.HtmlEncode() : ProjectsCommonResource.All);
                    filterData.AppendFormat(row, ProjectResource.Project, (filter.ProjectIds != null && filter.ProjectIds.Count == 1) ? Global.EngineFactory.GetProjectEngine().GetByID(filter.ProjectIds[0]).Title.HtmlEncode() : ProjectResource.AllProjects);
                    filterData.AppendFormat(row, ReportResource.User, filter.UserId != Guid.Empty ? CoreContext.UserManager.GetUsers(filter.UserId).DisplayUserName() : CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                }
                break;
            }

            filterData.AppendFormat(row, ReportResource.GenerationDate, TenantUtil.DateTimeNow().ToString(DateTimeExtension.ShortDatePattern));

            filterData.Append("</table>");

            sb.AppendFormat("<div id='faux'><div id='leftcolumn'>{0}</div><div id='rightcolumn'><table cellspacing='0' cellpadding='0'><tr><td valign='top'><b>{1}:</b></td><td>{2}</td></tr></table></div><div class='clear'></div></div>",
                            filterData.ToString(), ProjectResource.ProjectDescription, desc);

            return(sb.ToString());
        }
コード例 #12
0
        private string GetAllUsersDropDownList()
        {
            var sb = new StringBuilder().AppendFormat("<option value='-1' id='ddlUser-1'>{0}</option>", CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());

            CoreContext.UserManager.GetUsers()
            .Where(u => string.IsNullOrEmpty(u.Department))
            .OrderBy(u => u, UserInfoComparer.Default)
            .ToList()
            .ForEach(u => sb.AppendFormat("<option value='{0}' id='ddlUser{0}'>{1}</option>", u.ID, u.DisplayUserName()));

            foreach (var g in CoreContext.GroupManager.GetGroups().OrderBy(g => g.Name))
            {
                sb.AppendFormat("<optgroup label=\"{0}\">", g.Name.HtmlEncode());
                foreach (var u in CoreContext.UserManager.GetUsersByGroup(g.ID).OrderBy(u => u.DisplayUserName()))
                {
                    sb.AppendFormat("<option value='{0}' id='ddlUser{0}'>{1}</option>", u.ID, u.DisplayUserName());
                }
            }
            return(sb.ToString());
        }
コード例 #13
0
        public string InitUsersDdlByTag(string tag)
        {
            ProjectSecurity.DemandAuthentication();

            if (string.IsNullOrEmpty(tag))
            {
                return(GetAllUsersDropDownList());
            }
            else
            {
                var sb = new StringBuilder()
                         .AppendFormat("<option value='-1' id='ddlUser-1'>{0}</option>", CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());

                foreach (var id in Global.EngineFactory.GetTagEngine().GetTagProjects(tag))
                {
                    var p = Global.EngineFactory.GetProjectEngine().GetByID(id);
                    if (p != null)
                    {
                        var prjTeam = Global.EngineFactory.GetProjectEngine()
                                      .GetTeam(id)
                                      .Select(u => u.UserInfo)
                                      .OrderBy(u => u, UserInfoComparer.Default)
                                      .ToList();

                        sb.AppendFormat("<optgroup label='{0}'>", Global.EngineFactory.GetProjectEngine().GetByID(id).HtmlTitle.HtmlEncode());

                        foreach (var u in prjTeam)
                        {
                            if (u.Status != EmployeeStatus.Terminated)
                            {
                                sb.AppendFormat("<option value='{0}' id='ddlUser{0}'>{1}</option>", u.ID, u.DisplayUserName());
                            }
                        }
                    }
                }

                return(sb.ToString());
            }
        }
コード例 #14
0
        public string InitUsersDdlByProject(string project)
        {
            ProjectSecurity.DemandAuthentication();

            var projectID = Convert.ToInt32(project);

            if (projectID == -1)
            {
                return(GetAllUsersDropDownList());
            }
            else
            {
                var sb = new StringBuilder().AppendFormat("<option value='-1' id='ddlUser-1'>{0}</option>", CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());

                var users = Global.EngineFactory.GetProjectEngine()
                            .GetTeam(projectID)
                            .Select(p => p.UserInfo)
                            .OrderBy(u => u, UserInfoComparer.Default)
                            .ToList();

                foreach (var u in users)
                {
                    if (u.Status != EmployeeStatus.Terminated)
                    {
                        sb.AppendFormat("<option value='{0}' id='ddlUser{0}'>{1}</option>", u.ID, u.DisplayUserName());
                    }
                }

                return(sb.ToString());
            }
        }
コード例 #15
0
        public string InitUsersDdlByDepartment(string department)
        {
            ProjectSecurity.DemandAuthentication();

            var departmentID = !string.IsNullOrEmpty(department) && department != "-1" ? new Guid(department) : Guid.Empty;

            if (departmentID == Guid.Empty)
            {
                return(GetAllUsersDropDownList());
            }
            else
            {
                var sb = new StringBuilder().AppendFormat("<option value='-1' id='ddlUser-1'>{0}</option>", CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());
                CoreContext.UserManager
                .GetUsersByGroup(departmentID)
                .OrderBy(u => u, UserInfoComparer.Default)
                .ToList()
                .ForEach(u => sb.AppendFormat("<option value='{0}' id='ddlUser{0}'>{1}</option>", u.ID, u.DisplayUserName()));
                return(sb.ToString());
            }
        }
コード例 #16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.RegisterBodyScripts(ResolveUrl("~/usercontrols/management/confirminviteactivation/js/confirm_invite_activation.js"));

            Page.RegisterStyleControl(VirtualPathUtility.ToAbsolute("~/usercontrols/management/confirminviteactivation/css/confirm_invite_activation.less"));

            _tenantInfoSettings = SettingsManager.Instance.LoadSettings <TenantInfoSettings>(TenantProvider.CurrentTenantID);

            var uid = Guid.Empty;

            try
            {
                uid = new Guid(Request["uid"]);
            }
            catch
            {
            }

            var email = GetEmailAddress();

            if (_type != ConfirmType.Activation && AccountLinkControl.IsNotEmpty)
            {
                var thrd = (AccountLinkControl)LoadControl(AccountLinkControl.Location);
                thrd.InviteView     = true;
                thrd.ClientCallback = "loginJoinCallback";
                thrdParty.Visible   = true;
                thrdParty.Controls.Add(thrd);
            }

            Page.Title = HeaderStringHelper.GetPageTitle(Resource.Authorization);

            UserInfo user;

            try
            {
                SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem);

                user = CoreContext.UserManager.GetUserByEmail(email);
                var usr = CoreContext.UserManager.GetUsers(uid);
                if (usr.ID.Equals(ASC.Core.Users.Constants.LostUser.ID) || usr.ID.Equals(ASC.Core.Configuration.Constants.Guest.ID))
                {
                    usr = CoreContext.UserManager.GetUsers(CoreContext.TenantManager.GetCurrentTenant().OwnerId);
                }

                _userAvatar = usr.GetMediumPhotoURL();
                _userName   = usr.DisplayUserName(true);
                _userPost   = (usr.Title ?? "").HtmlEncode();
            }
            finally
            {
                SecurityContext.Logout();
            }

            if (_type == ConfirmType.LinkInvite || _type == ConfirmType.EmpInvite)
            {
                if (TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers&& _employeeType == EmployeeType.User)
                {
                    ShowError(UserControlsCommonResource.TariffUserLimitReason);
                    return;
                }

                if (!user.ID.Equals(ASC.Core.Users.Constants.LostUser.ID))
                {
                    ShowError(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists"));
                    return;
                }
            }

            else if (_type == ConfirmType.Activation)
            {
                if (user.IsActive)
                {
                    ShowError(Resource.ErrorConfirmURLError);
                    return;
                }

                if (user.ID.Equals(ASC.Core.Users.Constants.LostUser.ID) || user.Status == EmployeeStatus.Terminated)
                {
                    ShowError(string.Format(Resource.ErrorUserNotFoundByEmail, email));
                    return;
                }
            }

            if (!IsPostBack)
            {
                return;
            }

            var          firstName = GetFirstName();
            var          lastName  = GetLastName();
            var          pwd       = (Request["pwdInput"] ?? "").Trim();
            var          repwd     = (Request["repwdInput"] ?? "").Trim();
            LoginProfile thirdPartyProfile;

            //thirdPartyLogin confirmInvite
            if (Request["__EVENTTARGET"] == "thirdPartyLogin")
            {
                var valueRequest = Request["__EVENTARGUMENT"];
                thirdPartyProfile = new LoginProfile(valueRequest);

                if (!string.IsNullOrEmpty(thirdPartyProfile.AuthorizationError))
                {
                    // ignore cancellation
                    if (thirdPartyProfile.AuthorizationError != "Canceled at provider")
                    {
                        ShowError(HttpUtility.HtmlEncode(thirdPartyProfile.AuthorizationError));
                    }
                    return;
                }

                if (string.IsNullOrEmpty(thirdPartyProfile.EMail))
                {
                    ShowError(HttpUtility.HtmlEncode(Resource.ErrorNotCorrectEmail));
                    return;
                }
            }

            if (Request["__EVENTTARGET"] == "confirmInvite")
            {
                if (String.IsNullOrEmpty(email))
                {
                    _errorMessage = Resource.ErrorEmptyUserEmail;
                    return;
                }

                if (!email.TestEmailRegex())
                {
                    _errorMessage = Resource.ErrorNotCorrectEmail;
                    return;
                }

                if (String.IsNullOrEmpty(firstName))
                {
                    _errorMessage = Resource.ErrorEmptyUserFirstName;
                    return;
                }

                if (String.IsNullOrEmpty(lastName))
                {
                    _errorMessage = Resource.ErrorEmptyUserLastName;
                    return;
                }

                var checkPassResult = CheckPassword(pwd, repwd);
                if (!String.IsNullOrEmpty(checkPassResult))
                {
                    _errorMessage = checkPassResult;
                    return;
                }
            }
            var userID = Guid.Empty;

            try
            {
                SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem);
                if (_type == ConfirmType.EmpInvite || _type == ConfirmType.LinkInvite)
                {
                    if (TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers&& _employeeType == EmployeeType.User)
                    {
                        ShowError(UserControlsCommonResource.TariffUserLimitReason);
                        return;
                    }

                    UserInfo newUser;
                    if (Request["__EVENTTARGET"] == "confirmInvite")
                    {
                        var fromInviteLink = _type == ConfirmType.LinkInvite;
                        newUser = CreateNewUser(firstName, lastName, email, pwd, _employeeType, fromInviteLink);
                        userID  = newUser.ID;
                    }

                    if (Request["__EVENTTARGET"] == "thirdPartyLogin")
                    {
                        if (!String.IsNullOrEmpty(CheckPassword(pwd, repwd)))
                        {
                            pwd = UserManagerWrapper.GeneratePassword();
                        }
                        var valueRequest = Request["__EVENTARGUMENT"];
                        thirdPartyProfile = new LoginProfile(valueRequest);
                        newUser           = CreateNewUser(GetFirstName(thirdPartyProfile), GetLastName(thirdPartyProfile), GetEmailAddress(thirdPartyProfile), pwd, _employeeType, false);
                        userID            = newUser.ID;
                        if (!String.IsNullOrEmpty(thirdPartyProfile.Avatar))
                        {
                            SaveContactImage(userID, thirdPartyProfile.Avatar);
                        }

                        var linker = new AccountLinker("webstudio");
                        linker.AddLink(userID.ToString(), thirdPartyProfile);
                    }
                }
                else if (_type == ConfirmType.Activation)
                {
                    user.ActivationStatus = EmployeeActivationStatus.Activated;
                    user.FirstName        = firstName;
                    user.LastName         = lastName;
                    CoreContext.UserManager.SaveUserInfo(user);
                    SecurityContext.SetUserPassword(user.ID, pwd);

                    userID = user.ID;

                    //notify
                    if (user.IsVisitor())
                    {
                        StudioNotifyService.Instance.GuestInfoAddedAfterInvite(user, pwd);
                    }
                    else
                    {
                        StudioNotifyService.Instance.UserInfoAddedAfterInvite(user, pwd);
                    }
                }
            }
            catch (Exception exception)
            {
                _errorMessage = HttpUtility.HtmlEncode(exception.Message);
                return;
            }
            finally
            {
                SecurityContext.Logout();
            }

            try
            {
                var cookiesKey = SecurityContext.AuthenticateMe(userID.ToString(), pwd);
                CookiesManager.SetCookies(CookiesType.UserID, userID.ToString());
                CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey);
                StudioNotifyService.Instance.UserHasJoin();
            }
            catch (Exception exception)
            {
                (Page as confirm).ErrorMessage = HttpUtility.HtmlEncode(exception.Message);
                return;
            }

            user = CoreContext.UserManager.GetUsers(userID);

            UserHelpTourHelper.IsNewUser = true;
            Response.Redirect(user.IsVisitor() ? "~/" : "~/welcome.aspx");
        }
コード例 #17
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if (this.Master is IStudioMaster)
            {
                var master = this.Master as IStudioMaster;

                //top navigator
                if (this.Master is StudioTemplate)
                {
                    (this.Master as StudioTemplate).TopNavigationPanel.CustomTitle        = CustomNamingPeople.Substitute <Resources.Resource>("Employees");
                    (this.Master as StudioTemplate).TopNavigationPanel.CustomTitleURL     = CommonLinkUtility.GetEmployees();
                    (this.Master as StudioTemplate).TopNavigationPanel.CustomTitleIconURL = WebImageSupplier.GetAbsoluteWebPath("home.png");
                }

                WriteEmployeeActions(this);

                if (SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
                {
                    master.SideHolder.Controls.Add(GetEmployeeNavigation());
                }

                var contentControl = (EmployeeViewer)LoadControl(EmployeeViewer.Location);
                master.ContentHolder.Controls.Add(contentControl);

                master.SideHolder.Controls.Add(LoadControl(CompanyNavigation.Location));

                if (contentControl.WhatView == EmployeeViewer.ViewType.Departments)
                {
                    var ceoSelector = (SimpleUserSelector)LoadControl(SimpleUserSelector.Location);
                    ceoSelector.Title        = CustomNamingPeople.Substitute <Resources.Resource>("CeoNameEditCaption");
                    ceoSelector.SelectTitle  = CustomNamingPeople.Substitute <Resources.Resource>("CEO");
                    ceoSelector.AdditionalID = "ceo";
                    var ceo = CoreContext.UserManager.GetCompanyCEO();
                    ceoSelector.UserID           = ceo != null ? ceo.ID : Guid.Empty;
                    ceoSelector.SelectJSCallback = "function(id) { EmployeeService.ChangeCEO(id); window.location.reload(); }";
                    master.ContentHolder.Controls.Add(ceoSelector);
                }
                else if (contentControl.WhatView == EmployeeViewer.ViewType.Department)
                {
                    var managerSelector = (SimpleUserSelector)LoadControl(SimpleUserSelector.Location);
                    managerSelector.Title            = CustomNamingPeople.Substitute <Resources.Resource>("DepEditMaster");
                    managerSelector.SelectTitle      = CustomNamingPeople.Substitute <Resources.Resource>("DepartmentMaster");
                    managerSelector.AdditionalID     = "dep_manager";
                    managerSelector.UserID           = CoreContext.UserManager.GetDepartmentManager(contentControl.DepartmentId);
                    managerSelector.SelectJSCallback = "function(id) { EmployeeService.ChangeDepartmentManager(id,'" + contentControl.DepartmentId + "'); window.location.reload(); }";
                    master.ContentHolder.Controls.Add(managerSelector);

                    var depNameControl = (Confirm)LoadControl(Confirm.Location);
                    depNameControl.Title        = CustomNamingPeople.Substitute <Resources.Resource>("DepartmentTitle");
                    depNameControl.AdditionalID = "depname";
                    depNameControl.SelectTitle  = Resources.Resource.NewTitle;
                    depNameControl.Value        = contentControl.Department != null?HttpUtility.HtmlEncode(contentControl.Department.Name) : "";

                    depNameControl.SelectJSCallback =
                        @"function(name) { 
    
    AjaxPro.onLoading = function(b){
            if(b)
                jq('#studio_confirmDialogdepname').block();
            else
                jq('#studio_confirmDialogdepname').unblock();
        };  

    EmployeeService.ChangeDepartmentName('" + contentControl.DepartmentId + @"',name,function(result){
       if(result.value.rs1 == '0')
            jq('#studio_confirmMessage').html('<div class=\'errorBox\'>'+result.value.rs2+'</div>');
       else{
            window.location.reload(true);
            jq.unblockUI();
       }              
    }); 
}";
                    master.ContentHolder.Controls.Add(depNameControl);
                }
            }
        }
コード例 #18
0
        public string InitUsersDdl()
        {
            var projectIds = Report.Filter.ProjectIds;

            if (Report.Filter.TagId != 0 && Report.Filter.ProjectIds.Count == 0)
            {
                projectIds = Page.EngineFactory.TagEngine.GetTagProjects(Report.Filter.TagId).ToList();
            }

            UserInfo[] users;

            if (!Report.Filter.DepartmentId.Equals(Guid.Empty))
            {
                users = CoreContext.UserManager.GetUsersByGroup(Report.Filter.DepartmentId);
            }
            else if (projectIds.Any())
            {
                users = Page.EngineFactory.ProjectEngine.GetTeam(projectIds).Select(r => r.UserInfo).ToArray();
            }
            else
            {
                users = CoreContext.UserManager.GetUsers();
            }

            var sb = new StringBuilder().AppendFormat("<option value='-1' id='ddlUser-1'>{0}</option>", CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode());

            users.OrderBy(u => u, UserInfoComparer.Default).ToList()
            .ForEach(u => sb.AppendFormat("<option value='{0}' id='ddlUser{0}' {2}>{1}</option>", u.ID, u.DisplayUserName(), u.ID == Report.Filter.UserId || u.ID == Report.Filter.ParticipantId ? "selected='selected'" : ""));

            return(sb.ToString());
        }
コード例 #19
0
        public static ReportInfo GetReportInfo(ReportType reportType)
        {
            var virtualRoot     = CommonLinkUtility.VirtualRoot != "/" ? CommonLinkUtility.VirtualRoot : string.Empty;
            var virtulaRootPath = CommonLinkUtility.ServerRootPath + virtualRoot;

            var mileColumns = new[] {
                ProjectResource.Project,
                MilestoneResource.Milestone,
                ReportResource.DeadLine,
                virtulaRootPath
            };

            var projColumns = new[] {
                ProjectsCommonResource.Title,
                ProjectResource.ProjectLeader,
                ProjectsCommonResource.Status,
                GrammaticalResource.MilestoneGenitivePlural,
                TaskResource.Tasks,
                ReportResource.Participiants,
                ReportResource.ClickToSortByThisColumn,
                CommonLinkUtility.ServerRootPath,
                virtualRoot
            };

            var userColumns = new[] {
                ReportResource.User,
                "Not Accept",
                ResourceEnumConverter.ConvertToString(TaskStatus.Open),
                ReportResource.ActiveTasks,
                ResourceEnumConverter.ConvertToString(TaskStatus.Closed),
                ProjectsCommonResource.Total,
                ReportResource.ClickToSortByThisColumn,
                CommonLinkUtility.ServerRootPath
            };

            var taskColumns = new[] {
                ProjectResource.Project,
                MilestoneResource.Milestone,
                TaskResource.Task,
                TaskResource.TaskResponsible,
                ProjectsCommonResource.Status,
                TaskResource.UnsortedTask,
                ReportResource.DeadLine,
                ReportResource.NoMilestonesAndTasks,
                CommonLinkUtility.ServerRootPath,
                virtualRoot
            };

            var taskExpiredColumns = new[] {
                ProjectResource.Project,
                MilestoneResource.Milestone,
                TaskResource.Task,
                TaskResource.TaskResponsible,
                ProjectsCommonResource.Status,
                TaskResource.UnsortedTask,
                TaskResource.DeadLine,
                ReportResource.NoMilestonesAndTasks,
                CommonLinkUtility.ServerRootPath,
                virtualRoot
            };

            switch (reportType)
            {
            case ReportType.MilestonesExpired:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportLateMilestones_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportLateMilestones_Title,
                           mileColumns));

            case ReportType.MilestonesNearest:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportUpcomingMilestones_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportUpcomingMilestones_Title,
                           mileColumns));

            case ReportType.UsersWithoutActiveTasks:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportEmployeesWithoutActiveTasks_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           CustomNamingPeople.Substitute <ReportResource>("ReportEmployeesWithoutActiveTasks_Title").HtmlEncode(),
                           userColumns));

            case ReportType.ProjectsWithoutActiveMilestones:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportProjectsWithoutActiveMilestones_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportProjectsWithoutActiveMilestones_Title,
                           projColumns));

            case ReportType.ProjectsWithoutActiveTasks:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportProjectsWithoutActiveTasks_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportProjectsWithoutActiveTasks_Title,
                           projColumns));

            case ReportType.UsersActivity:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportUserActivity_Descripton, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportUserActivity_Title,
                           new[] { ReportResource.User, TaskResource.Tasks, MilestoneResource.Milestones, MessageResource.Messages, ProjectsFileResource.Files, ProjectsCommonResource.Total, ReportResource.ClickToSortByThisColumn, CommonLinkUtility.ServerRootPath }));

            case ReportType.UsersWorkload:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportEmployment_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportEmployment_Title,
                           userColumns));

            case ReportType.ProjectsList:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportProjectList_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportProjectList_Title,
                           projColumns));

            case ReportType.TimeSpend:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportTimeSpendSummary_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportTimeSpendSummary_Title,
                           new[] { ReportResource.User, ProjectsCommonResource.SpentTotally, ProjectsCommonResource.Title, ReportResource.ClickToSortByThisColumn, CommonLinkUtility.ServerRootPath, virtualRoot }));

            case ReportType.TasksByProjects:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportTaskList_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportTaskList_Title,
                           taskColumns));

            case ReportType.TasksByUsers:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportUserTasks_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportUserTasks_Title,
                           taskColumns));

            case ReportType.TasksExpired:
                return(new ReportInfo(
                           String.Format(ReportResource.ReportLateTasks_Description, "<ul>", "</ul>", "<li>", "</li>"),
                           ReportResource.ReportLateTasks_Title,
                           taskExpiredColumns));
            }
            ;
            return(ReportInfo.Empty);
        }
コード例 #20
0
        protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
        {
            yield return(RegisterObject("AddDepartmentDlgTitle", CustomNamingPeople.Substitute <PeopleResource>("AddDepartmentDlgTitle").HtmlEncode()));

            yield return(RegisterObject("DepartmentMaster", CustomNamingPeople.Substitute <PeopleResource>("DepartmentMaster").HtmlEncode()));
        }
コード例 #21
0
        public string SendEmailActivationInstructions(Guid userID, string email)
        {
            if (userID == Guid.Empty)
            {
                throw new ArgumentNullException("userID");
            }

            email = (email ?? "").Trim();
            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentNullException(Resource.ErrorEmailEmpty);
            }
            if (!email.TestEmailRegex())
            {
                throw new InvalidEmailException(Resource.ErrorNotCorrectEmail);
            }

            try
            {
                var viewer = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID);
                var user   = CoreContext.UserManager.GetUsers(userID);

                if (user == null)
                {
                    throw new UserNotFoundException(Resource.ErrorUserNotFound);
                }

                if (viewer == null)
                {
                    throw new AccessDeniedException(Resource.ErrorAccessDenied);
                }

                if (viewer.IsAdmin() || viewer.ID == user.ID)
                {
                    var existentUser = CoreContext.UserManager.GetUserByEmail(email);
                    if (existentUser.ID != ASC.Core.Users.Constants.LostUser.ID && existentUser.ID != userID)
                    {
                        throw new InputException(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists"));
                    }

                    user.Email = email;
                    if (user.ActivationStatus == EmployeeActivationStatus.Activated)
                    {
                        user.ActivationStatus = EmployeeActivationStatus.NotActivated;
                    }
                    CoreContext.UserManager.SaveUserInfo(user);
                }
                else
                {
                    email = user.Email;
                }

                if (user.ActivationStatus == EmployeeActivationStatus.Pending)
                {
                    if (user.IsVisitor())
                    {
                        StudioNotifyService.Instance.GuestInfoActivation(user);
                    }
                    else
                    {
                        StudioNotifyService.Instance.UserInfoActivation(user);
                    }
                }
                else
                {
                    StudioNotifyService.Instance.SendEmailActivationInstructions(user, email);
                }

                MessageService.Send(HttpContext.Current.Request, MessageAction.UserSentActivationInstructions, user.DisplayUserName(false));

                return(String.Format(Resource.MessageEmailActivationInstuctionsSentOnEmail, "<b>" + email + "</b>"));
            }
            catch (UserNotFoundException)
            {
                throw;
            }
            catch (AccessDeniedException)
            {
                throw;
            }
            catch (InputException)
            {
                throw;
            }
            catch (Exception)
            {
                throw new Exception(Resource.UnknownError);
            }
        }
コード例 #22
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Utility.RegisterTypeForAjax(typeof(ImportFromCSVView));

            Page.ClientScript.RegisterClientScriptInclude(GetType(), "ajaxupload_script", WebPath.GetPath("js/ajaxupload.3.5.js"));

            var columnSelectorData = new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.NoMatchSelect,
                    isHeader = false
                },
                new
                {
                    name     = "-1",
                    title    = CRMContactResource.DoNotImportThisField,
                    isHeader = false
                },
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.GeneralInformation,
                    isHeader = true
                },
                new
                {
                    name     = "firstName",
                    title    = CRMContactResource.FirstName,
                    isHeader = false
                },
                new
                {
                    name     = "lastName",
                    title    = CRMContactResource.LastName,
                    isHeader = false
                },
                new
                {
                    name     = "title",
                    title    = CRMContactResource.JobTitle,
                    isHeader = false
                },
                new
                {
                    name     = "companyName",
                    title    = CRMContactResource.CompanyName,
                    isHeader = false
                },
                new
                {
                    name     = "notes",
                    title    = CRMContactResource.About,
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = CRMContactResource.Tags,
                    isHeader = false
                }
            }.ToList();

            foreach (ContactInfoType infoTypeEnum in Enum.GetValues(typeof(ContactInfoType)))
            {
                foreach (Enum categoryEnum in Enum.GetValues(ContactInfo.GetCategory(infoTypeEnum)))
                {
                    var localName  = String.Format("contactInfo_{0}_{1}", infoTypeEnum, Convert.ToInt32(categoryEnum));
                    var localTitle = String.Format("{1} ({0})", categoryEnum.ToLocalizedString().ToLower(), infoTypeEnum.ToLocalizedString());

                    if (infoTypeEnum == ContactInfoType.Address)
                    {
                        foreach (AddressPart addressPartEnum in Enum.GetValues(typeof(AddressPart)))
                        {
                            columnSelectorData.Add(new
                            {
                                name     = String.Format(localName + "_{0}", addressPartEnum),
                                title    = String.Format(localTitle + " {0}", addressPartEnum.ToLocalizedString().ToLower()),
                                isHeader = false
                            });
                        }
                    }
                    else
                    {
                        columnSelectorData.Add(new
                        {
                            name     = localName,
                            title    = localTitle,
                            isHeader = false
                        });
                    }
                }
            }


            columnSelectorData.AddRange(Global.DaoFactory.GetCustomFieldDao().GetFieldsDescription(EntityType.Contact).FindAll(customField => customField.FieldType == CustomFieldType.TextField || customField.FieldType == CustomFieldType.TextArea || customField.FieldType == CustomFieldType.Heading)
                                        .ConvertAll(customField => new
            {
                name     = "customField_" + customField.ID,
                title    = customField.Label.HtmlEncode(),
                isHeader = customField.FieldType == CustomFieldType.Heading
            }));

            Page.ClientScript.RegisterClientScriptBlock(GetType(),
                                                        Guid.NewGuid().ToString(),
                                                        String.Format(" var {0} = {1}; ", "columnSelectorData", JavaScriptSerializer.Serialize(columnSelectorData)),
                                                        true);

            var privatePanel = (PrivatePanel)Page.LoadControl(PrivatePanel.Location);

            privatePanel.CheckBoxLabel = CRMContactResource.PrivatePanelCheckBoxLabelForContact;
            privatePanel.IsPrivateItem = false;
            var usersWhoHasAccess = new List <string> {
                CustomNamingPeople.Substitute <CRMCommonResource>("CurrentUser").HtmlEncode()
            };

            privatePanel.UsersWhoHasAccess = usersWhoHasAccess;
            privatePanel.DisabledUsers     = new List <Guid> {
                SecurityContext.CurrentAccount.ID
            };
            privatePanel.HideNotifyPanel = true;
            _phPrivatePanel.Controls.Add(privatePanel);
        }
コード例 #23
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.RegisterBodyScripts("~/js/third-party/xregexp.js", "~/UserControls/Management/ConfirmInviteActivation/js/confirm_invite_activation.js")
            .RegisterStyle("~/UserControls/Management/ConfirmInviteActivation/css/confirm_invite_activation.less");

            var uid = Guid.Empty;

            try
            {
                uid = new Guid(Request["uid"]);
            }
            catch
            {
            }

            var email = GetEmailAddress();

            if (_type != ConfirmType.Activation && AccountLinkControl.IsNotEmpty && !CoreContext.Configuration.Personal)
            {
                var thrd = (AccountLinkControl)LoadControl(AccountLinkControl.Location);
                thrd.InviteView     = true;
                thrd.ClientCallback = "loginJoinCallback";
                thrdParty.Visible   = true;
                thrdParty.Controls.Add(thrd);
            }

            Page.Title = HeaderStringHelper.GetPageTitle(Resource.Authorization);

            UserInfo user;

            try
            {
                SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem);

                user = CoreContext.UserManager.GetUserByEmail(email);
                var usr = CoreContext.UserManager.GetUsers(uid);
                if (usr.ID.Equals(Constants.LostUser.ID) || usr.ID.Equals(ASC.Core.Configuration.Constants.Guest.ID))
                {
                    usr = CoreContext.UserManager.GetUsers(CoreContext.TenantManager.GetCurrentTenant().OwnerId);
                }

                var photoData = UserPhotoManager.GetUserPhotoData(usr.ID, UserPhotoManager.MediumFotoSize);

                _userAvatar = photoData == null?usr.GetMediumPhotoURL() : "data:image/png;base64," + Convert.ToBase64String(photoData);

                _userName = usr.DisplayUserName(true);
                _userPost = (usr.Title ?? "").HtmlEncode();
            }
            finally
            {
                SecurityContext.Logout();
            }

            if (_type == ConfirmType.LinkInvite || _type == ConfirmType.EmpInvite)
            {
                if (TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers&& _employeeType == EmployeeType.User)
                {
                    ShowError(UserControlsCommonResource.TariffUserLimitReason);
                    return;
                }

                if (!user.ID.Equals(Constants.LostUser.ID))
                {
                    ShowError(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists"));
                    return;
                }
            }

            else if (_type == ConfirmType.Activation)
            {
                if (user.IsActive)
                {
                    Response.Redirect(CommonLinkUtility.GetDefault());
                    return;
                }

                if (user.ID.Equals(Constants.LostUser.ID) || user.Status == EmployeeStatus.Terminated)
                {
                    ShowError(string.Format(Resource.ErrorUserNotFoundByEmail, email));
                    return;
                }
            }

            var tenant = CoreContext.TenantManager.GetCurrentTenant();

            if (tenant != null)
            {
                var settings = IPRestrictionsSettings.Load();
                if (settings.Enable && !IPSecurity.IPSecurity.Verify(tenant))
                {
                    ShowError(Resource.ErrorAccessRestricted);
                    return;
                }
            }

            if (!IsPostBack)
            {
                return;
            }

            var firstName = GetFirstName();
            var lastName  = GetLastName();

            var          passwordHash       = (Request["passwordHash"] ?? "").Trim();
            var          analytics          = (Request["analytics"] ?? "").Trim() == "True";
            var          mustChangePassword = false;
            LoginProfile thirdPartyProfile;

            //thirdPartyLogin confirmInvite
            if (Request["__EVENTTARGET"] == "thirdPartyLogin")
            {
                var valueRequest = Request["__EVENTARGUMENT"];
                thirdPartyProfile = new LoginProfile(valueRequest);

                if (!string.IsNullOrEmpty(thirdPartyProfile.AuthorizationError))
                {
                    // ignore cancellation
                    if (thirdPartyProfile.AuthorizationError != "Canceled at provider")
                    {
                        ShowError(HttpUtility.HtmlEncode(thirdPartyProfile.AuthorizationError));
                    }
                    return;
                }

                if (string.IsNullOrEmpty(thirdPartyProfile.EMail))
                {
                    ShowError(HttpUtility.HtmlEncode(Resource.ErrorNotCorrectEmail));
                    return;
                }
            }

            if (Request["__EVENTTARGET"] == "confirmInvite")
            {
                if (String.IsNullOrEmpty(email))
                {
                    _errorMessage = Resource.ErrorEmptyUserEmail;
                    return;
                }

                if (!email.TestEmailRegex())
                {
                    _errorMessage = Resource.ErrorNotCorrectEmail;
                    return;
                }

                if (String.IsNullOrEmpty(firstName))
                {
                    _errorMessage = Resource.ErrorEmptyUserFirstName;
                    return;
                }

                if (String.IsNullOrEmpty(lastName))
                {
                    _errorMessage = Resource.ErrorEmptyUserLastName;
                    return;
                }

                if (String.IsNullOrEmpty(passwordHash))
                {
                    _errorMessage = Resource.ErrorPasswordEmpty;
                    return;
                }
            }
            var userID = Guid.Empty;

            try
            {
                SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem);
                if (_type == ConfirmType.EmpInvite || _type == ConfirmType.LinkInvite)
                {
                    if (TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers&& _employeeType == EmployeeType.User)
                    {
                        ShowError(UserControlsCommonResource.TariffUserLimitReason);
                        return;
                    }

                    UserInfo newUser;
                    if (Request["__EVENTTARGET"] == "confirmInvite")
                    {
                        var fromInviteLink = _type == ConfirmType.LinkInvite;
                        newUser = CreateNewUser(firstName, lastName, email, passwordHash, _employeeType, fromInviteLink);

                        var messageAction = _employeeType == EmployeeType.User ? MessageAction.UserCreatedViaInvite : MessageAction.GuestCreatedViaInvite;
                        MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, messageAction, MessageTarget.Create(newUser.ID), newUser.DisplayUserName(false));

                        userID = newUser.ID;

                        var settings = TenantAnalyticsSettings.LoadForCurrentUser();
                        settings.Analytics = analytics;

                        settings.SaveForCurrentUser();
                    }

                    if (Request["__EVENTTARGET"] == "thirdPartyLogin")
                    {
                        if (String.IsNullOrEmpty(passwordHash))
                        {
                            passwordHash       = UserManagerWrapper.GeneratePassword();
                            mustChangePassword = true;
                        }

                        var valueRequest = Request["__EVENTARGUMENT"];
                        thirdPartyProfile = new LoginProfile(valueRequest);
                        newUser           = CreateNewUser(GetFirstName(thirdPartyProfile), GetLastName(thirdPartyProfile), GetEmailAddress(thirdPartyProfile), passwordHash, _employeeType, false);

                        var messageAction = _employeeType == EmployeeType.User ? MessageAction.UserCreatedViaInvite : MessageAction.GuestCreatedViaInvite;
                        MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, messageAction, MessageTarget.Create(newUser.ID), newUser.DisplayUserName(false));

                        userID = newUser.ID;
                        if (!String.IsNullOrEmpty(thirdPartyProfile.Avatar))
                        {
                            SaveContactImage(userID, thirdPartyProfile.Avatar);
                        }

                        var linker = new AccountLinker("webstudio");
                        linker.AddLink(userID.ToString(), thirdPartyProfile);
                    }
                }
                else if (_type == ConfirmType.Activation)
                {
                    if (!UserFormatter.IsValidUserName(firstName, lastName))
                    {
                        throw new Exception(Resource.ErrorIncorrectUserName);
                    }

                    SecurityContext.SetUserPasswordHash(user.ID, passwordHash);

                    user.ActivationStatus = EmployeeActivationStatus.Activated;
                    user.FirstName        = firstName;
                    user.LastName         = lastName;
                    CoreContext.UserManager.SaveUserInfo(user);

                    userID = user.ID;

                    //notify
                    if (user.IsVisitor())
                    {
                        StudioNotifyService.Instance.GuestInfoAddedAfterInvite(user);
                        MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.GuestActivated, MessageTarget.Create(user.ID), user.DisplayUserName(false));
                    }
                    else
                    {
                        StudioNotifyService.Instance.UserInfoAddedAfterInvite(user);
                        MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.UserActivated, MessageTarget.Create(user.ID), user.DisplayUserName(false));
                    }
                }
            }
            catch (SecurityContext.PasswordException)
            {
                _errorMessage = HttpUtility.HtmlEncode(Resource.ErrorPasswordRechange);
                return;
            }
            catch (Exception exception)
            {
                _errorMessage = HttpUtility.HtmlEncode(exception.Message);
                return;
            }
            finally
            {
                SecurityContext.Logout();
            }

            user = CoreContext.UserManager.GetUsers(userID);
            try
            {
                var cookiesKey = SecurityContext.AuthenticateMe(user.Email, passwordHash);
                CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey);
                MessageService.Send(HttpContext.Current.Request, MessageAction.LoginSuccess);
                StudioNotifyService.Instance.UserHasJoin();

                if (mustChangePassword)
                {
                    StudioNotifyService.Instance.UserPasswordChange(user);
                }
            }
            catch (Exception exception)
            {
                (Page as Confirm).ErrorMessage = HttpUtility.HtmlEncode(exception.Message);
                return;
            }

            UserHelpTourHelper.IsNewUser = true;
            if (CoreContext.Configuration.Personal)
            {
                PersonalSettings.IsNewUser = true;
            }
            Response.Redirect(CommonLinkUtility.GetDefault());
        }
コード例 #24
0
        public void RunJob()
        {
            Status = (int)Operation.Success;
            CoreContext.TenantManager.SetCurrentTenant((int)Id);
            SecurityContext.CurrentUser = UserId;

            if (!SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
            {
                Error       = Resource.ErrorAccessDenied;
                IsCompleted = true;
                return;
            }

            try
            {
                var     jsSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                var     ruleObj      = jsSerializer.Deserialize <List <UserData> >(userList);
                var     error        = 0;
                Address address;
                GetUserCounter = ruleObj.Count;

                foreach (var userData in ruleObj)
                {
                    var isGuest      = userData.Status == EmployeeType.All ? importUsersAsCollaborators : userData.Status == EmployeeType.Visitor;
                    var isValidEmail = Parser.TryParseAddress(userData.Email, out address);

                    if (!isValidEmail || String.IsNullOrEmpty(userData.FirstName) || String.IsNullOrEmpty(userData.LastName))
                    {
                        Data.Add(new UserResults
                        {
                            Email  = userData.Email,
                            Result = Resource.ImportContactsIncorrectFields,
                            Class  = !isValidEmail ? "error3" : "error1"
                        });
                        error++;
                        Percentage++;
                        continue;
                    }

                    var us = CoreContext.UserManager.GetUserByEmail(userData.Email);

                    if (us.ID != Constants.LostUser.ID)
                    {
                        Data.Add(new UserResults
                        {
                            Email  = userData.Email,
                            Result = CustomNamingPeople.Substitute <Resource>("ImportContactsAlreadyExists"),
                            Class  = "error2"
                        });
                        error++;
                        Percentage++;
                        continue;
                    }

                    if (isGuest && !(CoreContext.Configuration.Standalone || CoreContext.UserManager.GetUsersByGroup(Constants.GroupVisitor.ID).Length < Constants.CoefficientOfVisitors * TenantExtra.GetTenantQuota().ActiveUsers))
                    {
                        break;
                    }

                    var userInfo = new UserInfo
                    {
                        Email     = userData.Email,
                        FirstName = userData.FirstName,
                        LastName  = userData.LastName
                    };

                    UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), false, true, isGuest, false, true, true);

                    var messageAction = isGuest ? MessageAction.GuestImported : MessageAction.UserImported;
                    MessageService.Send(httpHeaders, messageAction, MessageTarget.Create(userInfo.ID), string.Format("{0} ({1})", userInfo.DisplayUserName(false), userInfo.Email));

                    Data.Add(new UserResults {
                        Email = userData.Email, Result = String.Empty
                    });
                    Percentage++;
                }
            }
            catch (Exception ex)
            {
                Status = (int)Operation.Error;
                Error  = ex.Message;
            }

            IsCompleted = true;
        }
コード例 #25
0
        protected void InitForCase()
        {
            StartImportLabel = CRMCasesResource.StartImport;

            ImportFromCSVStepOneHeaderLabel = CRMCasesResource.ImportFromCSVStepOneHeader;
            ImportFromCSVStepTwoHeaderLabel = CRMCasesResource.ImportFromCSVStepTwoHeader;

            ImportFromCSVStepOneDescriptionLabel = CRMCasesResource.ImportFromCSVStepOneDescription;
            ImportFromCSVStepTwoDescriptionLabel = CRMCasesResource.ImportFromCSVStepTwoDescription;

            ImportStartingPanelHeaderLabel      = CRMCasesResource.ImportStartingPanelHeader;
            ImportStartingPanelDescriptionLabel = CRMCasesResource.ImportStartingPanelDescription;
            ImportStartingPanelButtonLabel      = CRMCasesResource.ImportStartingPanelButton;

            ImportImgSrc = WebImageSupplier.GetAbsoluteWebPath("import-cases.png", ProductEntryPoint.ID);

            var columnSelectorData = new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.NoMatchSelect,
                    isHeader = false
                },
                new
                {
                    name     = "-1",
                    title    = CRMContactResource.DoNotImportThisField,
                    isHeader = false
                },
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.GeneralInformation,
                    isHeader = true
                },
                new
                {
                    name     = "title",
                    title    = CRMCasesResource.CaseTitle,
                    isHeader = false
                }
            }.ToList();

            columnSelectorData.AddRange(Global.DaoFactory.GetCustomFieldDao().GetFieldsDescription(EntityType.Case).FindAll(customField => customField.FieldType == CustomFieldType.Date || customField.FieldType == CustomFieldType.TextField || customField.FieldType == CustomFieldType.TextArea || customField.FieldType == CustomFieldType.Heading)
                                        .ConvertAll(customField => new
            {
                name     = "customField_" + customField.ID,
                title    = customField.Label.HtmlEncode(),
                isHeader = customField.FieldType == CustomFieldType.Heading
            }));

            columnSelectorData.AddRange(
                new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMCasesResource.CasesParticipants,
                    isHeader = true
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 1),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 2),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 3),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 4),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 5),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 6),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 7),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 8),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 9),
                    isHeader = false
                },
                new
                {
                    name     = "member",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesParticipant, 10),
                    isHeader = false
                }
            });

            columnSelectorData.AddRange(
                new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMCasesResource.CasesTag,
                    isHeader = true
                },
                new
                {
                    name     = "tag",
                    title    = CRMCasesResource.CasesTagList,
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 1),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 2),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 3),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 4),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 5),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 6),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 7),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 8),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 9),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMCasesResource.CasesTag, 10),
                    isHeader = false
                }
            }
                );

            Page.RegisterInlineScript(String.Format(" var columnSelectorData = {0}; ", JavaScriptSerializer.Serialize(columnSelectorData)), onReady: false);

            var privatePanel = (PrivatePanel)Page.LoadControl(PrivatePanel.Location);

            privatePanel.CheckBoxLabel = CRMCasesResource.PrivatePanelCheckBoxLabel;
            privatePanel.IsPrivateItem = false;

            var usersWhoHasAccess = new List <string> {
                CustomNamingPeople.Substitute <CRMCommonResource>("CurrentUser")
            };

            privatePanel.UsersWhoHasAccess = usersWhoHasAccess;
            privatePanel.DisabledUsers     = new List <Guid> {
                SecurityContext.CurrentAccount.ID
            };
            privatePanel.HideNotifyPanel = true;
            _phPrivatePanel.Controls.Add(privatePanel);
        }
コード例 #26
0
 protected void Page_Load(object sender, EventArgs e)
 {
     LinkText = CustomNamingPeople.Substitute <Resources.Resource>("InviteUsersToPortalLink").HtmlEncode();
 }
コード例 #27
0
 public override string GetReportFileName()
 {
     return(CustomNamingPeople.Substitute <ReportResource>("ReportEmployeesWithoutActiveTasks_Title").HtmlEncode());
 }
コード例 #28
0
 protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
 {
     return(new List <KeyValuePair <string, object> >(10)
     {
         RegisterResourceSet("ProjectsJSResource", ProjectsJSResource.ResourceManager),
         RegisterResourceSet("ProjectsFilterResource", ProjectsFilterResource.ResourceManager),
         RegisterResourceSet("ImportResource", ImportResource.ResourceManager),
         RegisterResourceSet("TasksResource", TaskResource.ResourceManager),
         RegisterResourceSet("CommonResource", ProjectsCommonResource.ResourceManager),
         RegisterResourceSet("TimeTrackingResource", TimeTrackingResource.ResourceManager),
         RegisterResourceSet("MessageResource", MessageResource.ResourceManager),
         RegisterResourceSet("ProjectResource", ProjectResource.ResourceManager),
         RegisterResourceSet("MilestoneResource", MilestoneResource.ResourceManager),
         RegisterResourceSet("ProjectTemplatesResource", ProjectTemplatesResource.ResourceManager),
         RegisterResourceSet("ProjectsFileResource", ProjectsFileResource.ResourceManager),
         RegisterResourceSet("ReportResource", ReportResource.ResourceManager),
         RegisterObject(
             new
         {
             ViewByDepartments = CustomNamingPeople.Substitute <ReportResource>("ViewByDepartments").HtmlEncode(),
             ViewByUsers = CustomNamingPeople.Substitute <ReportResource>("ViewByUsers").HtmlEncode(),
             AllDepartments = CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments").HtmlEncode(),
             AllUsers = CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode(),
             PaymentStatus = new
             {
                 NotChargeable = ResourceEnumConverter.ConvertToString(PaymentStatus.NotChargeable),
                 NotBilled = ResourceEnumConverter.ConvertToString(PaymentStatus.NotBilled),
                 Billed = ResourceEnumConverter.ConvertToString(PaymentStatus.Billed)
             },
             GrammaticalResource.DayGenitiveSingular,
             GrammaticalResource.MonthNominative,
             GrammaticalResource.MonthGenitiveSingular,
             GrammaticalResource.MonthGenitivePlural,
             ProjectStatus = new[]
             {
                 new { id = ProjectStatus.Open, title = ProjectsJSResource.StatusOpenProject },
                 new { id = ProjectStatus.Paused, title = ProjectsJSResource.StatusSuspendProject },
                 new { id = ProjectStatus.Closed, title = ProjectsJSResource.StatusClosedProject }
             },
             StartModules = new[]
             {
                 StartModule.TaskModule,
                 StartModule.ProjectsModule,
                 StartModule.DiscussionModule,
                 StartModule.TimeTrackingModule
             }.Select(r => new { r.Page, r.StartModuleType, Title = r.Title() }),
             Statuses = CustomTaskStatus.GetDefaults().Select(r => new
             {
                 id = r.Id,
                 image = r.Image,
                 imageType = r.ImageType,
                 title = r.Title,
                 description = r.Description,
                 color = r.Color,
                 statusType = r.StatusType,
                 isDefault = r.IsDefault,
                 available = r.Available,
                 canChangeAvailable = r.CanChangeAvailable
             })
         })
     });
 }
コード例 #29
0
        public object SendJoinInviteMail(string email)
        {
            try
            {
                if (!EnabledJoin)
                {
                    throw new MethodAccessException("Method not available");
                }

                if (!email.TestEmailRegex())
                {
                    throw new Exception(Resource.ErrorNotCorrectEmail);
                }

                var user = CoreContext.UserManager.GetUserByEmail(email);
                if (!user.ID.Equals(Constants.LostUser.ID))
                {
                    throw new Exception(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists"));
                }

                var tenant   = CoreContext.TenantManager.GetCurrentTenant();
                var settings = IPRestrictionsSettings.Load();

                if (settings.Enable && !IPSecurity.IPSecurity.Verify(tenant))
                {
                    throw new Exception(Resource.ErrorAccessRestricted);
                }

                var trustedDomainSettings = StudioTrustedDomainSettings.Load();
                var emplType          = trustedDomainSettings.InviteUsersAsVisitors ? EmployeeType.Visitor : EmployeeType.User;
                var enableInviteUsers = TenantStatisticsProvider.GetUsersCount() <
                                        TenantExtra.GetTenantQuota().ActiveUsers;

                if (!enableInviteUsers)
                {
                    emplType = EmployeeType.Visitor;
                }

                switch (tenant.TrustedDomainsType)
                {
                case TenantTrustedDomainsType.Custom:
                {
                    var address = new MailAddress(email);
                    if (
                        tenant.TrustedDomains.Any(
                            d => address.Address.EndsWith("@" + d, StringComparison.InvariantCultureIgnoreCase)))
                    {
                        StudioNotifyService.Instance.SendJoinMsg(email, emplType);
                        MessageService.Send(HttpContext.Current.Request, MessageInitiator.System,
                                            MessageAction.SentInviteInstructions, email);
                        return(new { Status = 1, Message = Resource.FinishInviteJoinEmailMessage });
                    }

                    throw new Exception(Resource.ErrorEmailDomainNotAllowed);
                }

                case TenantTrustedDomainsType.All:
                {
                    StudioNotifyService.Instance.SendJoinMsg(email, emplType);
                    MessageService.Send(HttpContext.Current.Request, MessageInitiator.System,
                                        MessageAction.SentInviteInstructions, email);
                    return(new { Status = 1, Message = Resource.FinishInviteJoinEmailMessage });
                }

                default:
                    throw new Exception(Resource.ErrorNotCorrectEmail);
                }
            }
            catch (FormatException)
            {
                return(new { Status = 0, Message = Resource.ErrorNotCorrectEmail });
            }
            catch (Exception e)
            {
                return(new { Status = 0, Message = e.Message.HtmlEncode() });
            }
        }
コード例 #30
0
        protected void InitForContacts()
        {
            StartImportLabel = CRMContactResource.StartImport;

            ImportFromCSVStepOneHeaderLabel = CRMContactResource.ImportFromCSVStepOneHeader;
            ImportFromCSVStepTwoHeaderLabel = CRMContactResource.ImportFromCSVStepTwoHeader;

            ImportFromCSVStepOneDescriptionLabel = CRMContactResource.ImportFromCSVStepOneDescription;
            ImportFromCSVStepTwoDescriptionLabel = CRMContactResource.ImportFromCSVStepTwoDescription;


            ImportStartingPanelHeaderLabel      = CRMContactResource.ImportStartingPanelHeader;
            ImportStartingPanelDescriptionLabel = CRMContactResource.ImportStartingPanelDescription;
            ImportStartingPanelButtonLabel      = CRMContactResource.ImportStartingPanelButton;

            ImportImgSrc = WebImageSupplier.GetAbsoluteWebPath("import_contacts.png", ProductEntryPoint.ID);

            var columnSelectorData = new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.NoMatchSelect,
                    isHeader = false
                },
                new
                {
                    name     = "-1",
                    title    = CRMContactResource.DoNotImportThisField,
                    isHeader = false
                },
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.GeneralInformation,
                    isHeader = true
                },
                new
                {
                    name     = "firstName",
                    title    = CRMContactResource.FirstName,
                    isHeader = false
                },
                new
                {
                    name     = "lastName",
                    title    = CRMContactResource.LastName,
                    isHeader = false
                },
                new
                {
                    name     = "title",
                    title    = CRMContactResource.JobTitle,
                    isHeader = false
                },
                new
                {
                    name     = "companyName",
                    title    = CRMContactResource.CompanyName,
                    isHeader = false
                },
                new
                {
                    name     = "notes",
                    title    = CRMContactResource.About,
                    isHeader = false
                }
            }.ToList();

            foreach (ContactInfoType infoTypeEnum in Enum.GetValues(typeof(ContactInfoType)))
            {
                foreach (Enum categoryEnum in Enum.GetValues(ContactInfo.GetCategory(infoTypeEnum)))
                {
                    var localName  = String.Format("contactInfo_{0}_{1}", infoTypeEnum, Convert.ToInt32(categoryEnum));
                    var localTitle = String.Format("{1} ({0})", categoryEnum.ToLocalizedString().ToLower(), infoTypeEnum.ToLocalizedString());

                    if (infoTypeEnum == ContactInfoType.Address)
                    {
                        foreach (AddressPart addressPartEnum in Enum.GetValues(typeof(AddressPart)))
                        {
                            columnSelectorData.Add(new
                            {
                                name     = String.Format(localName + "_{0}", addressPartEnum),
                                title    = String.Format(localTitle + " {0}", addressPartEnum.ToLocalizedString().ToLower()),
                                isHeader = false
                            });
                        }
                    }
                    else
                    {
                        columnSelectorData.Add(new
                        {
                            name     = localName,
                            title    = localTitle,
                            isHeader = false
                        });
                    }
                }
            }

            columnSelectorData.AddRange(Global.DaoFactory.GetCustomFieldDao().GetFieldsDescription(EntityType.Contact).FindAll(customField => customField.FieldType == CustomFieldType.TextField || customField.FieldType == CustomFieldType.TextArea || customField.FieldType == CustomFieldType.Heading)
                                        .ConvertAll(customField => new
            {
                name     = "customField_" + customField.ID,
                title    = customField.Label.HtmlEncode(),
                isHeader = customField.FieldType == CustomFieldType.Heading
            }));

            columnSelectorData.AddRange(
                new[]
            {
                new
                {
                    name     = String.Empty,
                    title    = CRMContactResource.ContactTags,
                    isHeader = true
                },
                new
                {
                    name     = "tag",
                    title    = CRMContactResource.ContactTagList,
                    isHeader = false
                }, new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 1),
                    isHeader = false
                }, new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 2),
                    isHeader = false
                }, new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 3),
                    isHeader = false
                }, new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 4),
                    isHeader = false
                }, new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 5),
                    isHeader = false
                }, new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 6),
                    isHeader = false
                }, new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 7),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 8),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 9),
                    isHeader = false
                },
                new
                {
                    name     = "tag",
                    title    = String.Format("{0} {1}", CRMContactResource.ContactTag, 10),
                    isHeader = false
                },
            }.ToList()
                );


            Page.ClientScript.RegisterClientScriptBlock(GetType(),
                                                        Guid.NewGuid().ToString(),
                                                        String.Format(" var {0} = {1}; ", "columnSelectorData", JavaScriptSerializer.Serialize(columnSelectorData)),
                                                        true);

            var privatePanel = (PrivatePanel)Page.LoadControl(PrivatePanel.Location);

            privatePanel.CheckBoxLabel = CRMContactResource.PrivatePanelCheckBoxLabelForContact;
            privatePanel.IsPrivateItem = false;

            var usersWhoHasAccess = new List <string> {
                CustomNamingPeople.Substitute <CRMCommonResource>("CurrentUser")
            };

            privatePanel.UsersWhoHasAccess = usersWhoHasAccess;
            privatePanel.DisabledUsers     = new List <Guid> {
                SecurityContext.CurrentAccount.ID
            };
            privatePanel.HideNotifyPanel = true;

            _phPrivatePanel.Controls.Add(privatePanel);
        }