示例#1
0
        public void DeactivateAllOrganizationRolesForUser()
        {
            _organizationRoleUserRepository.DeactivateAllOrganizationRolesForUser(VAILD_USER_ID);

            var orgRoles = _organizationRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(VAILD_USER_ID);

            Assert.AreEqual(0, orgRoles.Length);
        }
示例#2
0
        public ActionResult SetUserIsActiveStatus(long id, bool isActive)
        {
            try
            {
                var orgRoleUser = _organizationRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(id);

                if (!isActive && orgRoleUser != null && orgRoleUser.Count() > 0)
                {
                    var physicianIds = orgRoleUser.Where(org => org.RoleId == (long)Roles.MedicalVendorUser).Select(org => org.Id).ToArray();
                    if (physicianIds.Count() > 0)
                    {
                        if (physicianIds.Any(physicianId => _physicianRepository.IsPhysicianAssignedForFutureEvent(physicianId)))
                        {
                            return(Json(new { Result = false, Message = "User is assigned as a physician for future event. You can not deactivate." }));
                        }
                    }

                    var technicianIds = orgRoleUser.Where(org => org.RoleId == (long)Roles.Technician).Select(org => org.Id).ToArray();
                    if (technicianIds.Count() > 0)
                    {
                        if (technicianIds.Any(technicianId => _eventStaffAssignmentRepository.IsTechnicianAssignedForFutureEvent(technicianId)))
                        {
                            return(Json(new { Result = false, Message = "User is assigned as a technician for future event. You can not deactivate." }));
                        }
                    }
                }

                _userRepository.UpdateUserIsActiveStatus(id, isActive);
                _userLoginRepository.UpdateUserLoginIsActiveStatus(id, isActive);
                if (isActive)
                {
                    _organizationRoleUserRepository.ActivateAllOrganizationRolesForUser(id);
                }
                else
                {
                    _organizationRoleUserRepository.DeactivateAllOrganizationRolesForUser(id);
                }

                //  if (orgRoleUser != null && orgRoleUser.Count() > 0)
                ExportToMedicareForDeActivateUser(id, isActive, orgRoleUser);

                return(Json(new { Result = true, Message = "" }));
            }
            catch (Exception ex)
            {
                return(Json(new { Result = false, Message = "System Failure! " + ex.Message }));
            }
        }
        public void PollForDeactivation()
        {
            _logger.Info("Getting users which have not logged in since past " + _lastLoggedInBeforeDays + " days.");

            var userLogins = _userLoginRepository.GetUsersNotLoggedInWithinDays(_lastLoggedInBeforeDays).OrderBy(x => x.Id);

            foreach (var userLogin in userLogins)
            {
                try
                {
                    if (userLogin.LastLogged.HasValue)
                    {
                        _logger.Info("Deactivating login for user : "******" as last log in date is " + userLogin.LastLogged.Value.ToString("M/dd/yyyy hh:mm:ss tt"));
                    }
                    else
                    {
                        _logger.Info("Deactivating login for user : "******" as user never logged in.");
                    }

                    using (var scope = new TransactionScope())
                    {
                        _userRepository.UpdateUserIsActiveStatus(userLogin.Id, false);

                        _userLoginRepository.UpdateUserLoginIsActiveStatus(userLogin.Id, false);

                        _organizationRoleUserRepository.DeactivateAllOrganizationRolesForUser(userLogin.Id);

                        scope.Complete();
                    }

                    _logger.Info("User : "******" deactivated successfully.");
                }
                catch (Exception ex)
                {
                    _logger.Error(string.Format("Error deactivating user : {0} \nMessage : {1}\nStack Trace : {2}", userLogin.Id, ex.Message, ex.StackTrace));
                }
            }
        }
示例#4
0
        public UserEditModel Save(UserEditModel userToSave)
        {
            _userModelValidator.ValidateAndThrow(userToSave);

            var userAddress = _addressService.SaveAfterSanitizing(Mapper.Map <AddressEditModel, Address>(userToSave.Address));
            OrganizationRoleUser organizationRoleUser = Mapper.Map <OrganizationRoleUserModel, OrganizationRoleUser>(_sessionContext.UserSession.CurrentOrganizationRole);

            userToSave.DataRecorderMetaData = new DataRecorderMetaData(organizationRoleUser, DateTime.Now, DateTime.Now);

            var        user = Mapper.Map <UserEditModel, User>(userToSave);
            var        isPasswordUpdatedOrCreated = false;
            SecureHash secureHash = null;

            if (userToSave.Id > 0 && string.IsNullOrEmpty(userToSave.Password))
            {
                var existingUser = _userRepository.GetUser(userToSave.Id);
                user.UserLogin.Password               = existingUser.UserLogin.Password;
                user.UserLogin.Salt                   = existingUser.UserLogin.Salt;
                user.UserLogin.UserVerified           = existingUser.UserLogin.UserVerified;//For a scenario: User is created and then immediatly updated
                user.UserLogin.LastPasswordChangeDate = existingUser.UserLogin.LastPasswordChangeDate;
                user.UserLogin.LastLogged             = existingUser.UserLogin.LastLogged;
            }
            else if (!string.IsNullOrEmpty(userToSave.Password))
            {
                secureHash = _oneWayHashingService.CreateHash(userToSave.Password);
                user.UserLogin.Password               = secureHash.HashedText;
                user.UserLogin.Salt                   = secureHash.Salt;
                isPasswordUpdatedOrCreated            = true;
                user.UserLogin.LastPasswordChangeDate = DateTime.Now;
            }

            user.Address = userAddress;
            if (isPasswordUpdatedOrCreated)//&& user.Id > 0 && userToSave.UsersRoles.Count() == 1 && userToSave.UsersRoles.Single().RoleId == (long)Roles.Customer)
            {
                user.UserLogin.UserVerified = false;
            }

            user.UserLogin.IsTwoFactorAuthrequired = userToSave.OverRideTwoFactorAuthrequired ? userToSave.IsTwoFactorAuthrequired : (bool?)null;


            user = _userRepository.SaveUser(user);
            if (isPasswordUpdatedOrCreated && secureHash != null && !(user.Id > 0 && userToSave.UsersRoles.Count() == 1 && userToSave.UsersRoles.Single().RoleId == (long)Roles.Customer))
            {
                _passwordChangelogService.Update(user.Id, secureHash, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);
            }

            userToSave.Id = user.Id;
            //map & save user roles
            _orgRoleUserRepository.DeactivateAllOrganizationRolesForUser(user.Id);
            foreach (var organizationRoleModel in userToSave.UsersRoles)
            {
                organizationRoleModel.UserId = user.Id;
                var orgRoleUser = _orgRoleUserRepository.SaveOrganizationRoleUser(Mapper.Map <OrganizationRoleUserModel, OrganizationRoleUser>(organizationRoleModel));
                var roleId      = GetParentRoleIdByRoleId(orgRoleUser.RoleId);
                switch (roleId)
                {
                case (long)Roles.Technician:
                    var technician = Mapper.Map <TechnicianModel, Technician>(userToSave.TechnicianProfile);
                    technician.TechnicianId = orgRoleUser.Id;
                    var repository = ((IRepository <Technician>)_technicianRepository);
                    repository.Save(technician);
                    if (!string.IsNullOrWhiteSpace(userToSave.TechnicianProfile.Pin))
                    {
                        _pinChangeLogService.Update(userToSave.TechnicianProfile.Pin.Encrypt(), orgRoleUser.Id, organizationRoleUser.Id);
                    }
                    break;

                case (long)Roles.MedicalVendorUser:
                    var physician = Mapper.Map <PhysicianModel, Physician>(userToSave.PhysicianProfile);
                    physician.PhysicianId             = orgRoleUser.Id;
                    physician.AuthorizedStateLicenses =
                        _physicianLicenseModelFactory.CreateMultiple(userToSave.PhysicianProfile.Licenses,
                                                                     orgRoleUser.Id);
                    _physicianRepository.SavePhysician(physician);
                    break;

                case (long)Roles.CorporateAccountCoordinator:
                    var accountCoordinator = Mapper.Map <AccountCoordinatorProfileModel, AccountCoordinatorProfile>(userToSave.AccountCoordinatorProfile);
                    accountCoordinator.AccountCoordinatorId = orgRoleUser.Id;
                    var accountCoordinatorRepository = ((IRepository <AccountCoordinatorProfile>)_accountCoordinatorProfileRepository);
                    accountCoordinatorRepository.Save(accountCoordinator);
                    break;

                case (long)Roles.CallCenterRep:
                    var callCenterRepProfile = new CallCenterRepProfile
                    {
                        CallCenterRepId = orgRoleUser.Id,
                        CanRefund       = false,
                        CanChangeNotes  = false,
                        DialerUrl       = organizationRoleModel.DialerUrl
                    };
                    _callCenterRepProfileRepository.Save(callCenterRepProfile);
                    break;
                }
            }

            if (userToSave.UsersRoles.Any(x => x.RoleId == (long)Roles.NursePractitioner))
            {
                var userNpiInfo = new UserNpiInfo
                {
                    UserId     = userToSave.Id,
                    Npi        = !string.IsNullOrEmpty(userToSave.Npi) ? userToSave.Npi : null,
                    Credential = !string.IsNullOrEmpty(userToSave.Credential) ? userToSave.Credential : null
                };
                _userNpiInfoRepository.Save(userNpiInfo);
            }

            var systemUserInfo = new SystemUserInfo
            {
                EmployeeId = userToSave.UsersRoles.Count() == 1 && userToSave.UsersRoles.Any(x => x.RoleId == (long)Roles.Customer) ? string.Empty : userToSave.EmployeeId,
                UserId     = userToSave.Id
            };

            _systemUserInfoRepository.Save(systemUserInfo);

            return(userToSave); //this does not return the same object. the saved user are out of sync at this point.!!
        }