Example #1
0
 public void UpdatePassword(IUnitOfWork uow, UserDO userDO, string password)
 {
     if (userDO != null)
     {
         uow.UserRepository.UpdateUserCredentials(userDO, password: password);
     }
 }
Example #2
0
 /// <summary>
 /// Determines <see cref="CommunicationMode">communication mode</see> for user
 /// </summary>
 /// <param name="userDO">User</param>
 /// <returns>Direct if the user has a booking request or a password. Otherwise, Delegate.</returns>
 public CommunicationMode GetMode(UserDO userDO)
 {
     if (userDO.UserBookingRequests != null && userDO.UserBookingRequests.Any())
         return CommunicationMode.Direct;
     if(!String.IsNullOrEmpty(userDO.PasswordHash))
         return CommunicationMode.Direct;
     return CommunicationMode.Delegate;
 }
Example #3
0
        public void Track(UserDO userDO, String eventName, String action, Dictionary<String, object> properties = null)
        {
            if (properties == null)
                properties = new Dictionary<string, object>();
            properties["Action"] = action;

            Track(userDO, eventName, properties);
        }
Example #4
0
 public void Identify(UserDO userDO)
 {
     var props = new Traits();
     foreach (var prop in GetProperties(userDO))
         props.Add(prop.Key, prop.Value);
     
     Analytics.Client.Identify(userDO.Id, props);
 }
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);
 }
Example #6
0
 public void Login(IUnitOfWork uow, UserDO userDO)
 {
     ClaimsIdentity identity = GetIdentity(uow, userDO);
     HttpContext.Current.GetOwinContext().Authentication.SignIn(new AuthenticationProperties
     {
         IsPersistent = true
     }, identity);
     ObjectFactory.GetInstance<ITracker>().Identify(userDO);
 }
Example #7
0
 public ClaimsIdentity GetIdentity(IUnitOfWork uow, UserDO userDO)
 {
     var um = new KwasantUserManager(uow);
     var identity = um.CreateIdentity(userDO, DefaultAuthenticationTypes.ApplicationCookie);
     foreach (var roleId in userDO.Roles.Select(r => r.RoleId))
     {
         var role = uow.AspNetRolesRepository.GetByKey(roleId);
         identity.AddClaim(new Claim(ClaimTypes.Role, role.Name));
     }
     return identity;
 }
Example #8
0
        private Dictionary<String, object> GetProperties(UserDO userDO)
        {
            var user = new User();

            return new Dictionary<string, object>
            {
                {"First Name", userDO.FirstName},
                {"Last Name", userDO.LastName},
                {"Username", userDO.UserName},
                {"Email", userDO.EmailAddress.Address},
                {"Delegate Account", user.GetMode(userDO) == CommunicationMode.Delegate }
            };
        }
Example #9
0
        public void Track(UserDO userDO, String eventName, Dictionary<String, object> properties = null)
        {
            var props = new Segment.Model.Properties();
            foreach (var prop in GetProperties(userDO))
                props.Add(prop.Key, prop.Value);

            if (properties != null)
            {
                foreach (var prop in properties)
                    props[prop.Key] = prop.Value;
            }

            Analytics.Client.Track(userDO.Id, eventName, props);
        }
Example #10
0
        //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 static string GetDisplayName(UserDO curUser)
        {
            string firstName = curUser.FirstName;
            string lastName = curUser.LastName;
            if (firstName != null)
            {
                if (lastName == null)
                    return firstName;

                return firstName + " " + lastName;
            }

            EmailAddressDO curEmailAddress = curUser.EmailAddress;
            if (curEmailAddress.Name != null)
                return curEmailAddress.Name;

            RegexUtilities.ValidateEmailAddress(curEmailAddress.Address);
            return curEmailAddress.Address.Split(new[] {'@'})[0];
        }
Example #11
0
        public void UpdateAnswerData(IUnitOfWork uow, NegotiationVM curNegotiationVM,  UserDO curUserDO, Dictionary<QuestionDO, AnswerDO> questionAnswer )
        {
            //Here we add/update questions based on our proposed negotiation
            foreach (var submittedQuestion in curNegotiationVM.Questions)
            {
                var currentSelectedAnswers = ExtractSelectedAnswers(uow, submittedQuestion, curUserDO, questionAnswer);

                var previousQResponses = uow.QuestionResponseRepository.GetQuery()
                    .Where(qr =>
                        qr.Answer.QuestionID == submittedQuestion.Id &&
                        qr.UserID == curUserDO.Id).ToList();

                var currentSelectedAnswerIDs = submittedQuestion.Answers.Where(a => a.Selected).Select(a => a.Id).ToList();

                //First, remove old answers
                foreach (
                    var previousQResponse in
                        previousQResponses.Where(
                            previousQResponse =>
                                !previousQResponse.AnswerID.HasValue ||
                                !currentSelectedAnswerIDs.Contains(previousQResponse.AnswerID.Value)))
                {
                    uow.QuestionResponseRepository.Remove(previousQResponse);
                }

                var previousAnswerIds = previousQResponses.Select(a => a.AnswerID).ToList();

                //Add new answers
                foreach (var currentSelectedAnswer in
                        currentSelectedAnswers.Where(a => !previousAnswerIds.Contains(a.Id)))
                {
                    var newAnswer = new QuestionResponseDO
                    {
                        Answer = currentSelectedAnswer,
                        UserID = curUserDO.Id
                    };
                    uow.QuestionResponseRepository.Add(newAnswer);
                }
            }
        }
Example #12
0
 public void Create(IUnitOfWork uow, UserDO submittedUserData)
 {
     submittedUserData.State = UserState.Active;
     submittedUserData.Id = Guid.NewGuid().ToString();
     submittedUserData.UserName = submittedUserData.FirstName;
     submittedUserData.EmailAddress = uow.EmailAddressRepository.GetOrCreateEmailAddress(submittedUserData.EmailAddress.Address);
     submittedUserData.Roles.ToList().ForEach(e =>
         uow.AspNetUserRolesRepository.Add(new AspNetUserRolesDO
         {
             RoleId = e.RoleId,
             UserId = submittedUserData.Id
         }));
     submittedUserData.Roles.Clear();
     uow.UserRepository.Add(submittedUserData);
     uow.SaveChanges();
     AlertManager.ExplicitCustomerCreated(submittedUserData.Id);
 }
Example #13
0
        public void ReportUserRegistered(UserDO curUser)
        {
            using (var uow = ObjectFactory.GetInstance<IUnitOfWork>())
            {
                FactDO curFactDO = new FactDO
                    {
                        PrimaryCategory = "User",
                        SecondaryCategory = "",
                        Activity = "Registered",
                        CustomerId = curUser.Id,
                        ObjectId = null,
                        Data = string.Format("User registrated with :{0},", curUser.EmailAddress.Address)
                        //Data = "User registrated with " + curUser.EmailAddress.Address
                    };
                Logger.GetLogger().Info(curFactDO.Data);
                uow.FactRepository.Add(curFactDO);
                uow.SaveChanges();
            }

        }
Example #14
0
        public LoginStatus Login(IUnitOfWork uow, UserDO userDO, string password, bool isPersistent)
        {
            LoginStatus curLogingStatus = LoginStatus.Successful;

            var passwordHasher = new PasswordHasher();
            if (passwordHasher.VerifyHashedPassword(userDO.PasswordHash, password) == PasswordVerificationResult.Success)
            {
                var securityServices = ObjectFactory.GetInstance<ISecurityServices>();
                securityServices.Logout();
                securityServices.Login(uow, userDO);
            }
            else
            {
                curLogingStatus = LoginStatus.InvalidCredential;
            }

            return curLogingStatus;
        }
Example #15
0
 //this is called when a new customer is created, because the communication manager has subscribed to the alertCustomerCreated alert.
 public void NewCustomerWorkflow(UserDO userDO)
 {
     ObjectFactory.GetInstance<ITracker>().Identify(userDO);
 }
Example #16
0
        public string GetCRTemplate(UserDO curUserDO)
        {
            string templateName;
            // Max Kostyrkin: currently User#GetMode returns Direct if user has a booking request or has a password, otherwise Delegate.
            switch (_user.GetMode(curUserDO))
            {
                case CommunicationMode.Direct:
                    templateName = _configRepository.Get("CR_template_for_creator");

                    break;
                case CommunicationMode.Delegate:
                    templateName = _configRepository.Get("CR_template_for_precustomer");

                    break;
                case CommunicationMode.Precustomer:
                    templateName = _configRepository.Get("CR_template_for_precustomer");

                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
            return templateName;
        }
Example #17
0
        private void AddNewTestCustomer(EmailAddressDO emailAddress)
        {
            using (var uow = ObjectFactory.GetInstance<IUnitOfWork>())
            {
                var fixture = new FixtureData(uow);
                var outboundEmailDaemon = new OutboundEmail();

                emailAddress.Recipients = new List<RecipientDO>()
                {
                    new RecipientDO()
                    {
                        EmailAddress = Email.GenerateEmailAddress(uow, new MailAddress("*****@*****.**")),
                        EmailParticipantType = EmailParticipantType.To
                    }
                };
                uow.AspNetRolesRepository.Add(fixture.TestRole());
                var u = new UserDO();
                var user = new User();
                UserDO currUserDO = new UserDO();
                currUserDO.EmailAddress = emailAddress;
                uow.UserRepository.Add(currUserDO);
            }
        }
Example #18
0
        public List<AnswerDO> ExtractSelectedAnswers(IUnitOfWork uow, NegotiationQuestionVM submittedQuestionData, UserDO curUserDO,
            Dictionary<QuestionDO, AnswerDO> questionAnswer)
        {
            if (submittedQuestionData.Id == 0)
                throw new HttpException(400, "Invalid parameter: Id of question cannot be 0.");

            var questionDO = uow.QuestionRepository.GetByKey(submittedQuestionData.Id);

            var currentSelectedAnswers = new List<AnswerDO>();

            //Previous answers are read-only, we only allow updating of new answers
            foreach (var submittedAnswerData in submittedQuestionData.Answers)
            {
                if (submittedAnswerData.Selected)
                {
                    AnswerDO answerDO;
                    if (submittedAnswerData.Id == 0)
                    {
                        answerDO = new AnswerDO();
                        uow.AnswerRepository.Add(answerDO);

                        answerDO.Question = questionDO;
                        if (answerDO.AnswerStatus == 0)
                            answerDO.AnswerStatus = AnswerState.Proposed;

                        answerDO.Text = submittedAnswerData.Text;
                        answerDO.EventID = submittedAnswerData.EventID;
                        answerDO.UserID = curUserDO.Id;
                    }
                    else
                    {
                        answerDO = uow.AnswerRepository.GetByKey(submittedAnswerData.Id);
                    }
                    questionAnswer[questionDO] = answerDO;
                    currentSelectedAnswers.Add(answerDO);
                }
            }
            return currentSelectedAnswers;
        }
Example #19
0
        public void Update(IUnitOfWork uow, UserDO submittedUserData, UserDO existingUser)
        {
            existingUser.FirstName = submittedUserData.FirstName;
            existingUser.LastName = submittedUserData.LastName;

            //Remove old roles
            foreach (var existingRole in existingUser.Roles.ToList())
            {
                if (!submittedUserData.Roles.Select(role => role.RoleId).Contains(existingRole.RoleId))
                    uow.AspNetUserRolesRepository.Remove(uow.AspNetUserRolesRepository.FindOne(e => e.RoleId == existingRole.RoleId && e.UserId == existingUser.Id));
            }

            //Add new roles
            foreach (var newRole in submittedUserData.Roles)
            {
                if (!existingUser.Roles.Select(role => role.RoleId).Contains(newRole.RoleId))
                    uow.AspNetUserRolesRepository.Add(new AspNetUserRolesDO
                    {
                        RoleId = newRole.RoleId,
                        UserId = submittedUserData.Id
                    });
            }
            uow.SaveChanges();
        }
Example #20
0
 public void Login(IUnitOfWork uow, UserDO userDO)
 {
     lock (_locker)
         _currentLoggedInUser = userDO;
 }
Example #21
0
 public void Logout()
 {
     lock (_locker)
         _currentLoggedInUser = null;
 }
Example #22
0
 private UserVM CreateUserVM(UserDO u, IUnitOfWork uow)
 {
     return new UserVM
     {
         Id = u.Id,
         FirstName = u.FirstName,
         LastName = u.LastName,
         UserName = u.UserName,
         EmailAddress = u.EmailAddress.Address,
         Role = ConvertRolesToRoleString(uow.AspNetUserRolesRepository.GetRoles(u.Id).Select(r => r.Name).ToArray()),
         Calendars = u.Calendars.Select(c => new UserCalendarVM { Id = c.Id, Name = c.Name }).ToList(),
         EmailAddressID = u.EmailAddressID.Value,
         Status = u.State.Value
     };
 }