Example #1
0
        public UserSessionModel GetUserSessionModel(string userName)
        {
            var user          = _userRepository.GetUser(_userLoginRepository.GetByUserName(userName).Id);
            var orgRoles      = _organizationRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(user.Id);
            var orgs          = _organizationRepository.GetAllOrganizationsforUser(user.Id);
            var files         = orgs.Where(o => o.LogoImageId > 0).Select(o => _fileRepository.GetById(o.LogoImageId)).ToArray();
            var mediaLocation = _mediaRepository.GetOrganizationLogoImageFolderLocation();

            var roles = _roleRepository.GetAll();

            return(_userSessionModelFactory.Create(user, orgRoles, orgs, roles, files, mediaLocation));
        }
Example #2
0
        public void DeactivateAllOrganizationRolesForUser()
        {
            _organizationRoleUserRepository.DeactivateAllOrganizationRolesForUser(VAILD_USER_ID);

            var orgRoles = _organizationRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(VAILD_USER_ID);

            Assert.AreEqual(0, orgRoles.Length);
        }
Example #3
0
        public string DownloadZipFile(MediaLocation mediaLocation, string csvfileName, long userId, ILogger logger)
        {
            var csvFilePath = mediaLocation.PhysicalPath + csvfileName;
            var fileName    = string.Empty;

            try
            {
                var isPinRequired = false;
                var user          = _userRepository.GetUser(userId);
                var orgRoles      = _organizationRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(userId);
                var defaultRole   = orgRoles.FirstOrDefault(oru => oru.RoleId == (long)user.DefaultRole);
                if (defaultRole != null)
                {
                    Role role = _roleRepository.GetByRoleId(defaultRole.RoleId);
                    isPinRequired = role.IsPinRequired;
                }
                var password = "";
                if (isPinRequired)
                {
                    var userSetting = _loginSettingRepository.Get(userId);
                    if (userSetting != null)
                    {
                        password = userSetting.DownloadFilePin;
                    }
                }

                string zipFilePath = _zipHelper.CreateZipOfSingleFile(csvFilePath, password);

                fileName = Path.GetFileName(zipFilePath);
                if (fileName == null || fileName.IndexOfAny(Path.GetInvalidFileNameChars()) != -1)
                {
                    throw new InvalidFileNameException();
                }
            }
            finally
            {
                try
                {
                    DirectoryOperationsHelper.Delete(csvFilePath);
                }
                catch (Exception ex)
                {
                    logger.Error("exception Message : " + ex.Message + " Stack Trace :" + ex.StackTrace);
                }
            }

            return(fileName);
        }
Example #4
0
        public UserEditModel Get(long id)
        {
            var user     = _userRepository.GetUser(id);
            var orgRoles = _orgRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(user.Id);
            var orgs     = _organizationRepository.GetAllOrganizationsforUser(user.Id);
            var roles    = _roleRepository.GetAll();

            var userEditModel = Mapper.Map <User, UserEditModel>(user);

            userEditModel.UsersRoles = _organizationRoleUserModelFactory.CreateMulti(user, orgRoles, orgs, roles, null, null);

            var defaultRole = userEditModel.UsersRoles.FirstOrDefault(x => x.IsDefault);

            if (defaultRole != null)
            {
                var role = _roleRepository.GetByRoleId(defaultRole.RoleId);
                if (user.UserLogin.IsTwoFactorAuthrequired == null)
                {
                    userEditModel.IsTwoFactorAuthrequired       = role.IsTwoFactorAuthrequired;
                    userEditModel.OverRideTwoFactorAuthrequired = false;
                }
                else
                {
                    userEditModel.IsTwoFactorAuthrequired = user.UserLogin.IsTwoFactorAuthrequired.Value;
                    if (user.UserLogin.IsTwoFactorAuthrequired.Value)
                    {
                        userEditModel.OverRideTwoFactorAuthrequired = true;
                    }
                    else
                    {
                        userEditModel.OverRideTwoFactorAuthrequired = role.IsTwoFactorAuthrequired;
                    }
                }
            }
            foreach (var organizationRoleUser in orgRoles)
            {
                var roleId = GetParentRoleIdByRoleId(organizationRoleUser.RoleId);
                switch (roleId)
                {
                case (long)Roles.Technician:
                    var technician = _technicianRepository.GetTechnician(organizationRoleUser.Id);
                    userEditModel.TechnicianProfile = Mapper.Map <Technician, TechnicianModel>(technician);
                    break;

                case (long)Roles.MedicalVendorUser:
                    var states    = _stateRepository.GetAllStates();
                    var physician = _physicianRepository.GetPhysician(organizationRoleUser.Id);
                    userEditModel.PhysicianProfile = Mapper.Map <Physician, PhysicianModel>(physician);
                    if (physician.AuthorizedStateLicenses != null && physician.AuthorizedStateLicenses.Count() > 0)
                    {
                        userEditModel.PhysicianProfile.Licenses =
                            _physicianLicenseModelFactory.CreateMultiple(physician.AuthorizedStateLicenses, states);
                    }

                    break;

                case (long)Roles.CorporateAccountCoordinator:
                    var accountCoordinator = _accountCoordinatorProfileRepository.GetAccountCoordinatorProfile(organizationRoleUser.Id);
                    userEditModel.AccountCoordinatorProfile = Mapper.Map <AccountCoordinatorProfile, AccountCoordinatorProfileModel>(accountCoordinator);
                    break;

                    /*case (long)Roles.CallCenterRep:
                     *  var callCenterRepProfile = _callCenterRepProfileRepository.Get(organizationRoleUser.Id);
                     *  userEditModel.CallCenterAgentProfile = new CallCenterAgentProfileModel { DialerUrl = callCenterRepProfile != null ? callCenterRepProfile.DialerUrl : "" };
                     *  break;*/
                }
            }

            foreach (var usersRole in userEditModel.UsersRoles)
            {
                if (usersRole.CheckRole(usersRole.RoleId))
                {
                    var callCenterRepProfile = _callCenterRepProfileRepository.Get(usersRole.OrganizationRoleUserId);
                    usersRole.DialerUrl = callCenterRepProfile != null && !string.IsNullOrEmpty(callCenterRepProfile.DialerUrl) ? callCenterRepProfile.DialerUrl : string.Empty;
                }
            }

            var userNpiInfo = _userNpiInfoRepository.Get(id);

            if (userNpiInfo != null)
            {
                userEditModel.Npi        = userNpiInfo.Npi ?? string.Empty;
                userEditModel.Credential = userNpiInfo.Credential ?? string.Empty;
            }
            else
            {
                userEditModel.Npi        = string.Empty;
                userEditModel.Credential = string.Empty;
            }

            var systemUserInfo = _systemUserInfoRepository.Get(id);

            if (systemUserInfo != null)
            {
                userEditModel.EmployeeId = systemUserInfo.EmployeeId;
            }
            return(userEditModel);
        }
Example #5
0
        public ActionResult Index(UserLoginModel userLoginModel, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(userLoginModel));
            }

            bool isValid = _loginRepository.ValidateUser(userLoginModel.UserName, userLoginModel.Password);

            if (isValid)
            {
                try
                {
                    var userLogin = _loginRepository.GetByUserName(userLoginModel.UserName);
                    var user      = _userRepository.GetUser(userLogin.Id);
                    var orgRoles  = _organizationRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(user.Id);
                    if (orgRoles.Any(oru => oru.RoleId == (long)Roles.Customer) && user.DefaultRole == Roles.Customer)
                    {
                        var customer = _customerRepository.GetCustomerByUserId(user.Id);
                        if (!string.IsNullOrEmpty(customer.Tag))
                        {
                            var account = _corporateAccountRepository.GetByTag(customer.Tag);
                            if (account != null && !account.AllowCustomerPortalLogin)
                            {
                                userLoginModel.FeedbackMessage =
                                    FeedbackMessageModel.CreateFailureMessage("Unable to login in. Please contact " +
                                                                              _settings.SupportEmail + " OR call us at " +
                                                                              _settings.PhoneTollFree);
                                return(View(userLoginModel));
                            }
                        }
                    }

                    var userName = userLoginModel.UserName;
                    FormsAuthentication.SetAuthCookie(userName, true);
                    _sessionContext.UserSession      = _loginService.GetUserSessionModel(userName);
                    _sessionContext.LastLoggedInTime = userLogin.LastLogged.ToString();

                    if (_sessionContext.UserSession.CurrentOrganizationRole == null)
                    {
                        userLoginModel.FeedbackMessage =
                            FeedbackMessageModel.CreateFailureMessage(
                                "Your default role has been removed. Please contact your administrator.");
                        return(View(userLoginModel));
                    }

                    Role role = null;
                    var  isTwoFactorAuthrequired = true;
                    var  useOtpSms   = _configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.OtpNotificationMediumSms);
                    var  useOtpEmail = _configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.OtpNotificationMediumEmail);
                    var  useOtpByGoogleAuthenticator = _configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.OtpByGoogleAuthenticator);

                    var isPinRequired = false;


                    if (useOtpSms == "True" || useOtpEmail == "True" || useOtpByGoogleAuthenticator == "True")
                    {
                        var defaultRole = orgRoles.FirstOrDefault(oru => oru.RoleId == (long)user.DefaultRole);
                        if (defaultRole != null)
                        {
                            role          = _roleRepository.GetByRoleId(defaultRole.RoleId);
                            isPinRequired = role.IsPinRequired;
                        }

                        if (userLogin.IsTwoFactorAuthrequired == null)
                        {
                            if (defaultRole != null)
                            {
                                isTwoFactorAuthrequired = role.IsTwoFactorAuthrequired;
                            }
                        }
                        else
                        {
                            isTwoFactorAuthrequired = userLogin.IsTwoFactorAuthrequired.Value;
                        }
                    }
                    else
                    {
                        isTwoFactorAuthrequired = false;
                    }

                    if (isTwoFactorAuthrequired || isPinRequired)
                    {
                        var loginSettings = _loginSettingRepository.Get(_sessionContext.UserSession.UserId);

                        if (loginSettings == null || loginSettings.IsFirstLogin)
                        {
                            TempData["IsTwoFactorAuthrequired"] = isTwoFactorAuthrequired;
                            return(RedirectToAction("Setup"));
                        }
                        else if (isPinRequired && loginSettings.DownloadFilePin == "")
                        {
                            TempData["IsTwoFactorAuthrequired"] = isTwoFactorAuthrequired;
                            TempData["setPinOnly"] = true;
                            return(RedirectToAction("Setup"));
                        }

                        if (isTwoFactorAuthrequired)
                        {
                            var isSafe        = false;
                            var isSafeAllowed = _configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.AllowSafeComputerRemember);

                            if (isSafeAllowed == "True")
                            {
                                var browserName  = Request.Browser.Browser + " " + Request.Browser.Version;
                                var requestingIp = Request.UserHostAddress;
                                var safeComputer = new SafeComputerHistory()
                                {
                                    BrowserType = browserName,
                                    ComputerIp  = requestingIp,
                                    DateCreated = DateTime.Now,
                                    IsActive    = true,
                                    UserLoginId = user.Id
                                };
                                isSafe = _safeComputerHistoryService.IsSafe(safeComputer);
                            }

                            if (!isSafe)
                            {
                                if (loginSettings.AuthenticationModeId == (long)AuthenticationMode.Sms)
                                {
                                    if (useOtpSms == "True")
                                    {
                                        return(RedirectToAction("Otp"));
                                    }
                                    TempData["IsTwoFactorAuthrequired"] = true;
                                    TempData["IsOnGlobalSettingChange"] = true;
                                    return(RedirectToAction("Setup"));
                                }
                                if (loginSettings.AuthenticationModeId == (long)AuthenticationMode.Email)
                                {
                                    if (useOtpEmail == "True")
                                    {
                                        return(RedirectToAction("Otp"));
                                    }
                                    TempData["IsTwoFactorAuthrequired"] = true;
                                    TempData["IsOnGlobalSettingChange"] = true;
                                    return(RedirectToAction("Setup"));
                                }
                                if (loginSettings.AuthenticationModeId == (long)AuthenticationMode.BothSmsEmail)
                                {
                                    if (useOtpSms == "True" || useOtpEmail == "True")
                                    {
                                        return(RedirectToAction("Otp"));
                                    }
                                    TempData["IsTwoFactorAuthrequired"] = true;
                                    TempData["IsOnGlobalSettingChange"] = true;
                                    return(RedirectToAction("Setup"));
                                }
                                if (loginSettings.AuthenticationModeId == (long)AuthenticationMode.AuthenticatorApp)
                                {
                                    return(RedirectToAction("Authenticator"));
                                }
                            }
                        }
                    }


                    return(GoToDashboard(_sessionContext.UserSession.UserId, returnUrl));
                }
                catch (Exception ex)
                {
                    _logger.Error("Error: Message: " + ex.Message + "\n Stack trace:" + ex.StackTrace);
                    userLoginModel.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("System Error: Unable to login in. Please contact support.");
                    return(View(userLoginModel));
                }
            }

            //not logged in.
            return(View(GetLoginFailureMessage(userLoginModel)));
        }
        protected void DownloadZipFile(MediaLocation mediaLocation, string csvfileName)
        {
            var csvFilePath = mediaLocation.PhysicalPath + csvfileName;

            var response = Response;

            try
            {
                if (_sessionContext == null || _sessionContext.UserSession == null)
                {
                    _logger.Error("User Session is null while downloading report file: " + csvFilePath);
                    throw new Exception();
                }

                var userId        = _sessionContext.UserSession.UserId;
                var isPinRequired = false;
                var user          = _userRepository.GetUser(userId);
                var orgRoles      = _organizationRoleUserRepository.GetOrganizationRoleUserCollectionforaUser(userId);
                var defaultRole   = orgRoles.FirstOrDefault(oru => oru.RoleId == (long)user.DefaultRole);
                if (defaultRole != null)
                {
                    Role role = _roleRepository.GetByRoleId(defaultRole.RoleId);
                    isPinRequired = role.IsPinRequired;
                }
                var password = "";
                if (isPinRequired)
                {
                    var userSetting = _loginSettingRepository.Get(userId);
                    if (userSetting != null)
                    {
                        password = userSetting.DownloadFilePin;
                    }
                }

                var zipFilePath = _zipHelper.CreateZipOfSingleFile(csvFilePath, password);

                var fileName = Path.GetFileName(zipFilePath);
                if (fileName == null || fileName.IndexOfAny(Path.GetInvalidFileNameChars()) != -1)
                {
                    throw new InvalidFileNameException();
                }
                response.Clear();
                response.ClearHeaders();
                response.ContentType = "application/zip";
                response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.HtmlEncode(fileName.Replace(Environment.NewLine, "")));
                response.Cache.SetCacheability(HttpCacheability.NoCache);
                var buffer = DirectoryOperationsHelper.ReadAllBytes(zipFilePath);
                response.BinaryWrite(buffer);
            }
            catch (Exception ex)
            {
                _logger.Error("Error while creating zip file. CSV File Name :  " + csvFilePath + ". Message: " + ex.Message + " \n\t Stack Trace:" + ex.StackTrace);
            }
            finally
            {
                try
                {
                    DirectoryOperationsHelper.Delete(csvFilePath);
                }
                catch (Exception exception)
                {
                    _logger.Error("Error while deleting file. Name :  " + csvFilePath + ". Message: " + exception.Message + " \n\t Stack Trace:" + exception.StackTrace);
                }
                response.End();
            }
        }
Example #7
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));
            }
        }