示例#1
0
        protected override bool IsValid(object value)
        {
            _validationErrors = new ValidationError[0];
            if (value is IList <EmailAddress> )
            {
                foreach (var emailAddress in (IList <EmailAddress>)value)
                {
                    var validator = (IValidator)EmailAddressValidatorFactory.CreateValidator(EmailAddressValidationMode.SingleEmail, false);
                    if (!validator.IsValid(emailAddress.Address))
                    {
                        _validationErrors = _validationErrors.Concat(validator.GetValidationErrors(null)).ToArray();
                    }
                }
            }

            return(_validationErrors.Length == 0);
        }
示例#2
0
        private void SendToEmailAddresses(Guid id, Campaign campaign, string emailAddresses)
        {
            IValidator validator = EmailAddressValidatorFactory.CreateValidator(EmailAddressValidationMode.MultipleEmails, false);
            var        errors    = validator.IsValid(emailAddresses)
                ? null
                : validator.GetValidationErrors("EmailAddresses");

            if (errors != null && errors.Length > 0)
            {
                throw new ValidationErrorsException(errors);
            }

            var emails = from a in emailAddresses.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                         select _campaignEmailsCommand.CreateEmail(campaign, CreateUser(campaign.Category, a));

            _campaignEmailsCommand.Send(emails, id, true);
        }
示例#3
0
        protected override bool EvaluateIsValid()
        {
            // Empty is valid (if it's not then include a LinkMeRequiredFieldValidator).

            string controlValidationValue = GetControlValidationValue(ControlToValidate);

            if (controlValidationValue == null || controlValidationValue.Trim().Length == 0)
            {
                return(true);
            }

            // Validate.

            IValidator validator = EmailAddressValidatorFactory.CreateValidator(EmailAddressValidationMode, CheckDns);
            var        errors    = validator.IsValid(controlValidationValue)
                ? null
                : validator.GetValidationErrors("EmailAddress");

            ErrorMessage = errors == null || errors.Length == 0 ? null : ((IErrorHandler) new StandardErrorHandler()).FormatErrorMessage(errors[0]);
            return(errors == null || errors.Length == 0);
        }
示例#4
0
        private void OnSearchRequested(NameValueCollection query)
        {
            var name         = query[NameQueryParameter];
            var emailAddress = query[EmailQueryParameter];

            txtQuery.Text = name;
            txtEmail.Text = emailAddress;

            if (!string.IsNullOrEmpty(name) || !string.IsNullOrEmpty(emailAddress))
            {
                if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(emailAddress))
                {
                    AddError("Please enter a name or email address, not both");
                    return;
                }

                if (!string.IsNullOrEmpty(name))
                {
                    if (new Regex(LinkMe.Domain.RegularExpressions.DisallowedNameCharPattern).IsMatch(name))
                    {
                        AddError(ValidationErrorMessages.INVALID_NAME_SEARCH_CRITERIA + " " + ValidationErrorMessages.PLEASE_TRY_AGAIN);
                        return;
                    }
                }

                if (!string.IsNullOrEmpty(emailAddress))
                {
                    IValidator validator = EmailAddressValidatorFactory.CreateValidator(EmailAddressValidationMode.SingleEmail, false);
                    var        errors    = validator.IsValid(emailAddress)
                        ? null
                        : validator.GetValidationErrors("EmailAddress");

                    if (errors != null && errors.Length > 0)
                    {
                        AddError(((IErrorHandler) new StandardErrorHandler()).FormatErrorMessage(errors[0]) + " " + ValidationErrorMessages.PLEASE_TRY_AGAIN);
                        return;
                    }
                }
            }
            else
            {
                AddError(string.Format(ValidationErrorMessages.REQUIRED_FIELD_MISSING_1, "search term"));
                return;
            }


            var loggedInNetworkerId = LoggedInUserId.Value;
            var exactMatch          = ParseUtil.ParseUserInputBooleanOptional(Request.QueryString[ExactMatchParameter], "exactMatch parameter", false);

            // Perform find by email address search.

            IList <Guid> resultIds;

            if (!string.IsNullOrEmpty(emailAddress))
            {
                var id = _memberContactsQuery.GetContact(loggedInNetworkerId, emailAddress);
                resultIds = id == null ? new Guid[0] : new[] { id.Value };
            }
            else
            {
                resultIds = _memberContactsQuery.GetContacts(loggedInNetworkerId, name, exactMatch);
            }

            InitPagingBar(resultIds.Count, name);
            var results = ucPagingBar.GetResultSubset(resultIds);

            var haveResults = (results.Count > 0);

            if (haveResults)
            {
                var members    = _membersQuery.GetMembers(results);
                var candidates = _candidatesQuery.GetCandidates(results);
                var resumes    = _resumesQuery.GetResumes(from c in candidates where c.ResumeId != null select c.ResumeId.Value);
                var views      = _memberViewsQuery.GetPersonalViews(LoggedInUserId, members);
                ucResultList.DisplayContacts(results, views, members, candidates, resumes);
            }

            ucResultList.Visible = haveResults;
            phNoMatches.Visible  = !haveResults;
            phResults.Visible    = true;
        }
示例#5
0
        public bool SendInvitations()
        {
            Page.Validate();
            if (!Page.IsValid)
            {
                return(false);
            }

            try
            {
                string[] emailAddresses = TextUtil.SplitEmailAddresses(txtEmailAddresses.Text);

                if (emailAddresses != null)
                {
                    txtEmailAddresses.Text = "";

                    // Filter out all invalid emails
                    var validEmails          = new List <string>();
                    var invalidEmails        = new List <string>();
                    var alreadyInvitedEmails = new Dictionary <String, DateTime>();

                    bool ownEmailSupplied = false;
                    var  existingInvites  = _memberFriendsQuery.GetFriendInvitations(LoggedInMember.Id);

                    foreach (string email in emailAddresses)
                    {
                        IValidator validator = EmailAddressValidatorFactory.CreateValidator(EmailAddressValidationMode.SingleEmail, false);
                        var        errors    = validator.IsValid(email)
                            ? null
                            : validator.GetValidationErrors("EmailAddress");

                        if (errors == null || errors.Length == 0)
                        {
                            if ((String.Compare(LoggedInMember.GetBestEmailAddress().Address, email, true)) == 0)
                            {
                                ownEmailSupplied = true;
                                continue;
                            }

                            var existingInvite = GetInviteForEmail(email, existingInvites);

                            if (existingInvite != null && !_memberFriendsCommand.CanSendInvitation(existingInvite))
                            {
                                if (existingInvite.LastSentTime == null)
                                {
                                    throw new ArgumentNullException("The last sending time was not set, but invite sending was not allowed.");
                                }

                                alreadyInvitedEmails.Add(email, existingInvite.LastSentTime.Value);
                                continue;
                            }

                            validEmails.Add(email);
                            continue;
                        }

                        invalidEmails.Add(email);
                    }

                    // Create a donation request.

                    DonationRequest request = GetDonationRequest();

                    // Create invitations.

                    var duplicateFriends = SendFriendInvitations(LoggedInMember.Id, validEmails, txtBody.Text, request == null ? (Guid?)null : request.Id);

                    foreach (string duplicateEmail in duplicateFriends)
                    {
                        validEmails.Remove(duplicateEmail);
                    }

                    // Display all errors
                    if (invalidEmails.Count > 0)
                    {
                        string invalidEmailsToReproccess = String.Empty;
                        for (int i = 0; i < invalidEmails.Count; i++)
                        {
                            if (i != 0)
                            {
                                invalidEmailsToReproccess += ",";
                            }

                            invalidEmailsToReproccess += invalidEmails[i];
                        }

                        txtEmailAddresses.Text = invalidEmailsToReproccess;

                        // Setup the styles to display the mock validator inline
                        txtEmailAddresses.Style.Add("float", "left");

                        invalidEmailsPanel.Style.Add("float", "left");
                        invalidEmailsPanel.Style.Add("width", "160px");
                        invalidEmailsPanel.Style.Add("padding-left", "20px");


                        // Show the error image and display error text
                        invalidEmailsPanel.Visible = true;
                    }

                    if (duplicateFriends.Count > 0)
                    {
                        alreadyFriendsPanel.Visible = true;
                        var sb = new StringBuilder();
                        foreach (string email in duplicateFriends)
                        {
                            sb.AppendLine(email + "<br />");
                        }

                        alreadyFriendsList.InnerHtml = sb.ToString();
                    }

                    if (alreadyInvitedEmails.Keys.Count > 0)
                    {
                        duplicateInvitesPanel.Visible = true;
                        var sb = new StringBuilder();
                        foreach (KeyValuePair <String, DateTime> emailAndDatePair in alreadyInvitedEmails)
                        {
                            int      resendableDays   = Container.Current.Resolve <int>("linkme.domain.roles.networking.invitationResendableDays");
                            DateTime dateLastSent     = emailAndDatePair.Value;
                            int      daysBeforeResend = (dateLastSent.AddDays(resendableDays) - DateTime.Now).Days;

                            string whenCanBeResentDescription;

                            if (daysBeforeResend == 0)
                            {
                                whenCanBeResentDescription = String.Format("today at {0}", dateLastSent.ToShortTimeString());
                            }
                            else if (daysBeforeResend == 1)
                            {
                                whenCanBeResentDescription = "tomorrow";
                            }
                            else
                            {
                                whenCanBeResentDescription = String.Format("in {0} days", daysBeforeResend);
                            }

                            sb.AppendLine(String.Format("{0} (Can be resent {1}.)<br />", emailAndDatePair.Key, whenCanBeResentDescription));
                        }
                        duplicateList.InnerHtml = sb.ToString();
                    }

                    if (ownEmailSupplied)
                    {
                        LinkMePage.AddError(ValidationErrorMessages.INVITE_YOURSELF);
                    }

                    if (validEmails.Count > 0)
                    {
                        if (request != null)
                        {
                            donationWillBeMade.Visible = true;
                        }

                        invitesSentPanel.Visible = true;
                        var sb = new StringBuilder();
                        foreach (string email in validEmails)
                        {
                            sb.AppendLine(email + "<br />");
                        }

                        invitesSent.InnerHtml = sb.ToString();
                    }

                    return(true);
                }

                return(false);
            }
            catch (DailyLimitException)
            {
                LinkMePage.AddError(ValidationErrorMessages.DAILY_LIMIT_EXCEEDED);
                return(false);
            }
        }
示例#6
0
        public AjaxResult SaveContactDetails(string homePhone, string workPhone, string mobilePhone, string emailAddress)
        {
            try
            {
                EnsureMemberLoggedIn();

                var errors = new List <string>();
                if (string.IsNullOrEmpty(homePhone) && string.IsNullOrEmpty(workPhone) && string.IsNullOrEmpty(mobilePhone))
                {
                    errors.Add(ValidationErrorMessages.REQUIRED_AT_LEAST_ONE_PHONE_NUMBER);
                }

                ValidatePhoneNumber(homePhone, errors);
                ValidatePhoneNumber(workPhone, errors);
                ValidatePhoneNumber(mobilePhone, errors);

                if (string.IsNullOrEmpty(emailAddress))
                {
                    errors.Add(ValidationErrorMessages.REQUIRED_FIELD_EMAIL_ADDRESS);
                }
                else
                {
                    IValidator validator        = EmailAddressValidatorFactory.CreateValidator(EmailAddressValidationMode.SingleEmail, false);
                    var        validationErrors = validator.IsValid(emailAddress)
                        ? null
                        : validator.GetValidationErrors("EmailAddress");

                    if (validationErrors != null && validationErrors.Length > 0)
                    {
                        errors.Add(((IErrorHandler) new StandardErrorHandler()).FormatErrorMessage(validationErrors[0]));
                    }
                }

                if (errors.Count > 0)
                {
                    return(new AjaxResult(AjaxResultCode.FAILURE, errors.ToArray()));
                }

                // Check the email.

                var emailChanged = string.Compare(LoggedInMember.GetBestEmailAddress().Address, emailAddress, StringComparison.InvariantCultureIgnoreCase) != 0;
                if (emailChanged)
                {
                    // Check that the email address is not being used by someone else.

                    var user = _membersQuery.GetMember(emailAddress);
                    if (user != null && user.Id != LoggedInMember.Id)
                    {
                        return(new AjaxResult(AjaxResultCode.FAILURE, ValidationErrorMessages.DUPLICATE_USER_PROFILE));
                    }
                }

                // Update.

                var member = LoggedInMember;
                member.EmailAddresses = new List <EmailAddress> {
                    new EmailAddress {
                        Address = emailAddress
                    }
                };
                member.PhoneNumbers = new List <PhoneNumber>();
                if (!string.IsNullOrEmpty(mobilePhone))
                {
                    member.PhoneNumbers.Add(new PhoneNumber {
                        Number = mobilePhone, Type = PhoneNumberType.Mobile
                    });
                }
                if (!string.IsNullOrEmpty(homePhone))
                {
                    member.PhoneNumbers.Add(new PhoneNumber {
                        Number = homePhone, Type = PhoneNumberType.Home
                    });
                }
                if (!string.IsNullOrEmpty(workPhone))
                {
                    member.PhoneNumbers.Add(new PhoneNumber {
                        Number = workPhone, Type = PhoneNumberType.Work
                    });
                }
                _memberAccountsCommand.UpdateMember(member);

                return(new AjaxResult(AjaxResultCode.SUCCESS));
            }
            catch (Exception ex)
            {
                return(HandleException(ex));
            }
        }