public Fr8AccountDO GetOrCreateUser(EmailAddressDO emailAddressDO, string userRole = Roles.StandardUser, OrganizationDO organizationDO = null)
        {
            var matchingUser = UnitOfWork.UserRepository.DBSet.Local.FirstOrDefault(u => u.EmailAddress.Address == emailAddressDO.Address);

            if (matchingUser == null)
            {
                matchingUser = UnitOfWork.UserRepository.GetQuery().FirstOrDefault(u => u.EmailAddress.Address == emailAddressDO.Address);
            }

            if (matchingUser == null)
            {
                matchingUser =
                    new Fr8AccountDO
                {
                    EmailAddress  = emailAddressDO,
                    UserName      = emailAddressDO.Address,
                    FirstName     = emailAddressDO.Name,
                    SecurityStamp = Guid.NewGuid().ToString(),
                    Organization  = organizationDO,
                    State         = UserState.Active
                };
                UnitOfWork.UserRepository.Add(matchingUser);

                if (!userRole.Equals(Roles.Guest))
                {
                    // Assign StandardUser role only if creation of Guest user is not intended
                    UnitOfWork.AspNetUserRolesRepository.AssignRoleToUser(Roles.StandardUser, matchingUser.Id);
                }
            }


            return(matchingUser);
        }
        public static EmailAddressDO TestEmailAddress6()
        {
            var emailAddressDO = new EmailAddressDO("*****@*****.**");

            emailAddressDO.Id = 6;
            return(emailAddressDO);
        }
        //  EmailAddress  is valid then send mail .
        // return "success" or  error
        public async Task <ActionResult> ProcessSubmittedEmail(string name, string emailId, string message)
        {
            string result = "";

            try
            {
                EmailAddressDO emailAddressDO = new EmailAddressDO(emailId);

                RegexUtilities.ValidateEmailAddress(_configRepository, emailAddressDO.Address);
                using (IUnitOfWork uow = ObjectFactory.GetInstance <IUnitOfWork>())
                {
                    _emailAddress.ConvertFromMailAddress(uow, new MailAddress(emailId, name));
                    string toRecipient = _configRepository.Get("CustomerSupportEmail");
                    string fromAddress = emailId;

                    string subject = "Customer query";
                    await _email.SendAsync(uow, subject, message, fromAddress, toRecipient);

                    uow.SaveChanges();
                }
                result = "success";
            }
            catch (ValidationException ex)
            {
                result = "You need to provide a valid Email Address.";
                Logger.GetLogger().Warn("Invalid email provided: " + emailId);
            }
            catch (Exception ex)
            {
                result = "Something went wrong with our effort to send this message. Sorry! Please try emailing your message directly to [email protected]";
                Logger.GetLogger().Error($"Error processing a home page email form submission. Name = {name}; EmailId = {emailId}; Exception = {ex}");
            }
            return(Content(result));
        }
Example #4
0
        //  EmailAddress  is valid then send mail .
        // return "success" or  error
        public ActionResult ProcessSubmittedEmail(string name, string emailId, string message)
        {
            string result = "";

            try
            {
                EmailAddressDO emailAddressDO = new EmailAddressDO(emailId);

                RegexUtilities.ValidateEmailAddress(emailAddressDO.Address);
                using (IUnitOfWork uow = ObjectFactory.GetInstance <IUnitOfWork>())
                {
                    _emailAddress.ConvertFromMailAddress(uow, new MailAddress(emailId, name));
                    string toRecipient = "*****@*****.**";
                    string fromAddress = emailId;

                    // EmailDO emailDO = email.GenerateBasicMessage(emailAddressDO, message);
                    string subject = "Customer query";
                    _email.Send(uow, subject, message, fromAddress, toRecipient);
                    //uow.EnvelopeRepository.ConfigurePlainEmail(emailDO);
                    uow.SaveChanges();
                }
                result = "success";
            }
            catch (ValidationException)
            {
                result = "You need to provide a valid Email Address.";
            }
            catch (System.Exception ex)
            {
                result = "Something went wrong with our effort to send this message. Sorry! Please try emailing your message directly to [email protected]";
                Logger.GetLogger().Error("Error processing a home page email form submission.", ex);
            }
            return(Content(result));
        }
Example #5
0
        //public void Create(IUnitOfWork uow, UserDO submittedUserData, string role, bool sendEmail)
        //{
        //    if (sendEmail)
        //    {
        //	  new Email().SendUserSettingsNotification(uow, submittedUserData);
        //    }
        //    new Account().Register(uow, submittedUserData.EmailAddress.Address, submittedUserData.FirstName, submittedUserData.LastName, "test@1234", role);
        //}

        //if we have a first name and last name, use them together
        //else if we have a first name only, use that
        //else if we have just an email address, use the portion preceding the @ unless there's a name
        //else throw
        public string GetDisplayName(Fr8AccountDO curDockyardAccount)
        {
            string firstName = curDockyardAccount.FirstName;
            string lastName  = curDockyardAccount.LastName;

            if (firstName != null)
            {
                if (lastName == null)
                {
                    return(firstName);
                }

                return(firstName + " " + lastName);
            }

            EmailAddressDO curEmailAddress = curDockyardAccount.EmailAddress;

            if (curEmailAddress.Name != null)
            {
                return(curEmailAddress.Name);
            }

            RegexUtilities.ValidateEmailAddress(_configRepository, curEmailAddress.Address);
            return(curEmailAddress.Address.Split(new[] { '@' })[0]);
        }
        public static EmailAddressDO TestEmailAddress7()
        {
            var emailAddressDO = new EmailAddressDO("*****@*****.**");

            emailAddressDO.Id = 7;
            return(emailAddressDO);
        }
        public static EmailAddressDO TestEmailAddress8()
        {
            var emailAddressDO = new EmailAddressDO("*****@*****.**");

            emailAddressDO.Id = 8;
            return(emailAddressDO);
        }
        public static EmailAddressDO TestEmailAddress5()
        {
            var emailAddressDO = new EmailAddressDO("*****@*****.**");

            emailAddressDO.Id = 5;
            return(emailAddressDO);
        }
        public static EmailAddressDO TestEmailAddress4()
        {
            var emailAddressDO = new EmailAddressDO("*****@*****.**");

            emailAddressDO.Id = 4;
            return(emailAddressDO);
        }
        public static EmailAddressDO TestEmailAddress3()
        {
            var emailAddressDO = new EmailAddressDO("*****@*****.**");

            emailAddressDO.Id = 3;
            return(emailAddressDO);
        }
        public static EmailAddressDO TestEmailAddress2()
        {
            var emailAddressDO = new EmailAddressDO("*****@*****.**");

            emailAddressDO.Id = 2;
            return(emailAddressDO);
        }
        public static EmailAddressDO TestEmailAddress1()
        {
            var emailAddressDO = new EmailAddressDO("*****@*****.**");

            emailAddressDO.Id   = 1;
            emailAddressDO.Name = "Alex";
            return(emailAddressDO);
        }
Example #13
0
        private Fr8AccountDO CreateAndAddUserDO()
        {
            using (var uow = ObjectFactory.GetInstance <IUnitOfWork>())
            {
                var emailAddress = new EmailAddressDO
                {
                    Address = "*****@*****.**",
                    Name    = "Test Tester"
                };

                var userDO = uow.UserRepository.GetOrCreateUser(emailAddress);
                uow.SaveChanges();

                return(userDO);
            }
        }
Example #14
0
        /// <summary>
        /// Register Guest account
        /// </summary>
        /// <param name="email"></param>
        /// <param name="password"></param>
        /// <param name="tempEmail"></param>
        /// <param name="organizationDO">Name of organization where the user belongs to</param>
        /// <returns></returns>
        public Task <RegistrationStatus> UpdateGuestUserRegistration(IUnitOfWork uow, string email, string password, string tempEmail, OrganizationDO organizationDO = null)
        {
            RegistrationStatus curRegStatus         = RegistrationStatus.Successful;
            Fr8AccountDO       newDockyardAccountDO = null;

            EmailAddressDO existingEmailAddressDO =
                uow.EmailAddressRepository.GetQuery().FirstOrDefault(ea => ea.Address == email);

            if (existingEmailAddressDO != null)
            {
                curRegStatus = RegistrationStatus.UserMustLogIn;
                return(Task.FromResult(curRegStatus));
            }

            //check if we know this email address

            EmailAddressDO guestUserexistingEmailAddressDO =
                uow.EmailAddressRepository.GetQuery().FirstOrDefault(ea => ea.Address == tempEmail);

            if (guestUserexistingEmailAddressDO != null)
            {
                var existingUserDO =
                    uow.UserRepository.GetQuery().FirstOrDefault(u => u.EmailAddressID == guestUserexistingEmailAddressDO.Id);

                // Update Email
                uow.UserRepository.UpdateUserCredentials(existingUserDO, email, password);

                // update organization
                if (organizationDO != null)
                {
                    existingUserDO.Organization = organizationDO;
                }

                guestUserexistingEmailAddressDO.Address = email;

                uow.AspNetUserRolesRepository.RevokeRoleFromUser(Roles.Guest, existingUserDO.Id);
                // Add new role
                uow.AspNetUserRolesRepository.AssignRoleToUser(Roles.StandardUser, existingUserDO.Id);
            }

            uow.SaveChanges();
            return(Task.FromResult(curRegStatus));
        }
        public EmailAddressDO ConvertFromString(string emailString, IUnitOfWork uow)
        {
            String email = string.Empty;
            String name  = string.Empty;

            emailString = emailString.Replace("\"", string.Empty);
            if (emailString.Contains("<"))
            {
                string[] parts = emailString.Split('<');
                name  = parts[0];
                email = parts[1];
                email = email.Replace(">", string.Empty);
            }
            else
            {
                email = emailString;
            }

            EmailAddressDO convertAddresFromString = uow.EmailAddressRepository.GetOrCreateEmailAddress(email, name);

            return(convertAddresFromString);
        }
 public ActionResult ValidateEmailAddress(string emailString)
 {
     try
     {
         using (var uow = ObjectFactory.GetInstance <IUnitOfWork>())
         {
             EmailAddressDO emailAddressDO = _emailAddress.ConvertFromString(emailString, uow);
             if (!(RegexUtilities.IsValidEmailAddress(_configRepository, emailAddressDO.Address)))
             {
                 return(Json("Invalid email format"));
             }
             else
             {
                 return(Json(true));
             }
         }
     }
     catch (Exception ex)
     {
         return(Json(ex.Message));
     }
 }
Example #17
0
        /// <summary>
        /// Register account
        /// </summary>
        /// <param name="uow"></param>
        /// <param name="email"></param>
        /// <param name="password"></param>
        /// <param name="organizationDO">organization where the user belongs</param>
        /// <param name="isNewOrganization">In case of new created organization, make user admin of that organization</param>
        /// <param name="anonimousId"></param>
        /// <returns></returns>
        public RegistrationStatus ProcessRegistrationRequest(IUnitOfWork uow, string email, string password, OrganizationDO organizationDO, bool isNewOrganization, string anonimousId)
        {
            RegistrationStatus curRegStatus;
            Fr8AccountDO       newFr8Account = null;
            //check if we know this email address

            EmailAddressDO existingEmailAddressDO =
                uow.EmailAddressRepository.GetQuery().FirstOrDefault(ea => ea.Address == email);

            if (existingEmailAddressDO != null)
            {
                var existingUserDO =
                    uow.UserRepository.GetQuery().FirstOrDefault(u => u.EmailAddressID == existingEmailAddressDO.Id);
                if (existingUserDO != null)
                {
                    if (existingUserDO.PasswordHash == null)
                    {
                        //this is an existing implicit user, who sent in a request in the past, had a DockyardAccountDO created, and now is registering. Add the password
                        UpdatePassword(uow, existingUserDO, password);
                        existingUserDO.Organization = organizationDO;

                        curRegStatus = RegistrationStatus.Successful;
                    }
                    else
                    {
                        //tell 'em to login
                        curRegStatus = RegistrationStatus.UserMustLogIn;
                    }
                }
                else
                {
                    newFr8Account = Register(uow, email, email, email, password, Roles.StandardUser, organizationDO);
                    curRegStatus  = RegistrationStatus.Successful;
                }
            }
            else
            {
                newFr8Account = Register(uow, email, email, email, password, Roles.StandardUser, organizationDO);
                curRegStatus  = RegistrationStatus.Successful;
            }

            if (newFr8Account != null)
            {
                if (organizationDO != null)
                {
                    AssingRolesAndProfilesBasedOnOrganization(uow, newFr8Account, organizationDO.Name, isNewOrganization);
                }
                else
                {
                    AssignProfileToUser(uow, newFr8Account, DefaultProfiles.StandardUser);
                }
            }

            uow.SaveChanges();

            if (newFr8Account != null)
            {
                EventManager.UserRegistration(newFr8Account);
                ObjectFactory.GetInstance <ITracker>().Registered(anonimousId, newFr8Account);
            }

            return(curRegStatus);
        }
 public Fr8AccountDO UpdateUserCredentials(EmailAddressDO emailAddressDO, String userName = null, String password = null)
 {
     return(UpdateUserCredentials(UnitOfWork.UserRepository.GetOrCreateUser(emailAddressDO), userName, password));
 }