Exemple #1
0
        public MobileResponseModel UpdateTechnicianPin(TechnicianPinEditModel model)
        {
            var orgId = _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId;

            if (!_pinChangeLogService.IsPinRepeated(orgId, model.Pin))
            {
                _technicianRepository.UpdatePin(orgId, model.Pin);
                _pinChangeLogService.Update(model.Pin, orgId, orgId);

                int pinExpirationDays = 0;
                Int32.TryParse(_configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.PinExpirationDays), out pinExpirationDays);

                int daysBeforAlert = 0;

                Int32.TryParse(_configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.AlertBeforePinExpirationInDays), out daysBeforAlert);
                var pinExpireInDays = _technicianRepository.GetPinExpireInDays(orgId, pinExpirationDays);

                if (pinExpireInDays <= daysBeforAlert)
                {
                    pinExpireInDays = pinExpireInDays <= 0 ? 0 : pinExpireInDays;
                }

                return(new MobileResponseModel
                {
                    IsSuccess = true,
                    Message = "Successfully Updated PIN",
                    StatusCode = 200,
                    Data = new PinUpdateResponseModel
                    {
                        ShowAlertBeforePinExpirationInDays = daysBeforAlert,
                        RemainingDays = pinExpireInDays,
                    }
                });
            }
            else
            {
                var nonRepeatCount = Convert.ToInt32(_configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.PreviousPinNonRepetitionCount));
                return(new MobileResponseModel
                {
                    IsSuccess = false,
                    Message = "New password can not be same as last " + nonRepeatCount + " password(s). Please enter a different password.",
                    StatusCode = 200
                });
            }
        }
Exemple #2
0
        public ActionResult Edit(UserEditModel userEditModel)
        {
            try
            {
                if (userEditModel.UsersRoles != null && userEditModel.UsersRoles.Count() > 0)
                {
                    if (!userEditModel.UsersRoles.Any(ur => ur.GetSystemRoleId == (long)Roles.MedicalVendorUser))
                    {
                        userEditModel.PhysicianProfile = null;
                    }
                }
                var userValidator = IoC.Resolve <UserEditModelValidator>();
                var result        = userValidator.Validate(userEditModel);
                if (result.IsValid)//ModelState.IsValid
                {
                    if (!string.IsNullOrEmpty(userEditModel.Password) && _passwordChangelogService.IsPasswordRepeated(userEditModel.Id, userEditModel.Password))
                    {
                        SetTestsAndPodsForPhysicianProfile(userEditModel);
                        var nonRepeatCount = _configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.PreviousPasswordNonRepetitionCount);
                        userEditModel.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("New password can not be same as last " + nonRepeatCount + " password(s). Please enter a different password.");
                        return(View(userEditModel));
                    }

                    if (!string.IsNullOrEmpty(userEditModel.TechnicianProfile.Pin) && _pinChangelogService.IsPinRepeated(userEditModel.TechnicianProfile.TechnicianId, userEditModel.TechnicianProfile.Pin.Encrypt()))
                    {
                        SetTestsAndPodsForPhysicianProfile(userEditModel);
                        var nonRepeatPinCount = _configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.PreviousPinNonRepetitionCount);
                        userEditModel.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("New Pin can not be same as last " + nonRepeatPinCount + " pin(s). Please enter a different Pin.");
                        return(View(userEditModel));
                    }

                    try
                    {
                        if (userEditModel.PhysicianProfile != null)
                        {
                            if (Request.Files.Count > 0)
                            {
                                var signatureFile = UploadFile(Request.Files[0], userEditModel.FullName.ToString());
                                if (signatureFile != null)
                                {
                                    signatureFile.Id = userEditModel.PhysicianProfile.SignatureFile.Id;
                                    userEditModel.PhysicianProfile.SignatureFile = signatureFile;
                                }
                                else if (userEditModel.PhysicianProfile.SignatureFile != null && userEditModel.PhysicianProfile.SignatureFile.Id > 0)
                                {
                                    userEditModel.PhysicianProfile.SignatureFile =
                                        _fileRepository.GetById(userEditModel.PhysicianProfile.SignatureFile.Id);
                                }
                                else
                                {
                                    userEditModel.PhysicianProfile.SignatureFile = null;
                                }
                            }
                        }

                        var currentRoles = _organizationRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(userEditModel.Id).Where(x => x.RoleId == (long)Roles.CallCenterRep || x.RoleId == (long)Roles.Technician ||
                                                                                                                                             x.RoleId == (long)Roles.NursePractitioner || x.RoleId == (long)Roles.Coder || x.RoleId == (long)Roles.MedicalVendorUser).Select(x => x.RoleId);
                        var newRoles = userEditModel.UsersRoles.Where(x => x.RoleId == (long)Roles.CallCenterRep || x.RoleId == (long)Roles.Technician ||
                                                                      x.RoleId == (long)Roles.NursePractitioner || x.RoleId == (long)Roles.Coder || x.RoleId == (long)Roles.MedicalVendorUser).Select(x => x.RoleId);

                        List <string> removedRoleAlias = new List <string>();
                        var           removedRoles     = currentRoles.Select(x => x).Except(newRoles).ToList();
                        removedRoleAlias = _roleRepository.GetByRoleIds(removedRoles).Select(x => x.Alias).ToList();


                        userEditModel = _userService.Save(userEditModel);

                        ExportToMedicare(userEditModel, removedRoleAlias);

                        userEditModel.Password        = null;
                        userEditModel.ConfirmPassword = null;


                        if (userEditModel.PhysicianProfile != null && userEditModel.PhysicianProfile.SignatureFile != null)
                        {
                            var signatureMediaFileLocation = _mediaRepository.GetPhysicianSignatureMediaFileLocation();
                            userEditModel.PhysicianProfile.SignatureFile.Path = signatureMediaFileLocation.Url +
                                                                                userEditModel.PhysicianProfile.SignatureFile.Path;
                        }

                        SetTestsAndPodsForPhysicianProfile(userEditModel);
                        userEditModel.FeedbackMessage = FeedbackMessageModel.CreateSuccessMessage(string.Format("The user {0} was saved successfully.", userEditModel.FullName));
                        return(View(userEditModel));
                    }

                    catch (InvalidAddressException)
                    {
                        SetTestsAndPodsForPhysicianProfile(userEditModel);
                        userEditModel.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("Unable to save this address. Please check the city, state and zip are valid.");
                        return(View(userEditModel));
                    }

                    catch (Exception exception)
                    {
                        SetTestsAndPodsForPhysicianProfile(userEditModel);
                        userEditModel.FeedbackMessage =
                            FeedbackMessageModel.CreateFailureMessage("System Error:" + exception.Message);
                        return(View(userEditModel));
                    }
                }
                SetTestsAndPodsForPhysicianProfile(userEditModel);
                return(View(userEditModel));
            }
            catch
            {
                SetTestsAndPodsForPhysicianProfile(userEditModel);
                return(View(userEditModel));
            }
        }