Esempio n. 1
0
        //public UserLoginService()
        //    : this(new UserLoginRepository(), new UserRepository<User>(), new OrganizationRoleUserRepository(), )
        //{ }

        public void ValidateUser(string userName, string password)
        {
            try
            {
                var userLogin = _userLoginRepository.GetByUserName(userName);

                if (userLogin != null && userLogin.Locked && userLogin.LastLoginAttemptAt.HasValue && userLogin.LastLoginAttemptAt.Value.AddMinutes(60) > DateTime.Now && OnLoginAccountLocked != null)
                {
                    OnLoginAccountLocked();
                }

                if (userLogin != null && userLogin.Password == password && OnLoginSuccessful != null)
                {
                    OnLoginSuccessful(userLogin.Id, true);
                }
                if ((userLogin == null || userLogin.Password != password) && OnLoginUnuccessful != null)
                {
                    OnLoginUnuccessful(userLogin != null ? userLogin.Id : 0, false);
                }
            }
            catch (Exception)
            {
                if (OnLoginUnuccessful != null)
                {
                    OnLoginUnuccessful(0, false);
                }
            }
        }
        public void PollForCallParsing()
        {
            try
            {
                _logger.Info("Entering In Vici Dialer Parsing...");
                var timeOfDay = DateTime.Now;
                if (_isDevEnvironment || (timeOfDay.TimeOfDay < new TimeSpan(1, 0, 0)) || (timeOfDay.TimeOfDay > new TimeSpan(2, 0, 0)))
                {
                    //Check for file

                    var listModel = Get <IEnumerable <ViciDialerCallModel> >(_settings.ViciDialerApiUrl);

                    _logger.Info("Getting data from API.");

                    if (listModel.IsNullOrEmpty())
                    {
                        _logger.Info("No data found to parse.");
                        return;
                    }

                    long orgRoleUserId = 1;

                    var ViciUser = _userLoginRepository.GetByUserName(_settings.ViciDialerUserName);
                    if (ViciUser != null)
                    {
                        var organizationRoleUser = _organizationRoleUserRepository.GetOrganizationRoleUsermodel(ViciUser.Id, (long)Roles.CallCenterRep);
                        if (organizationRoleUser != null)
                        {
                            orgRoleUserId = organizationRoleUser.OrganizationRoleUserId;
                        }
                    }

                    foreach (var model in listModel)
                    {
                        try
                        {
                            _callUploadService.SaveViciDialerCall(model, orgRoleUserId);
                        }
                        catch (Exception ex)
                        {
                            _logger.Error(string.Format("Error for Customer Id: {0}. Message: {2}. \n Stack Trace{3}", model.CustomerId, ex.Message, ex.StackTrace));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Vici Dialer Parsing Exception Message: " + ex.Message + "\n Stack Trace:" + ex.StackTrace);
            }
        }
Esempio n. 3
0
        public UserLoginResponseModel ValidateUser(UserLoginModel userLoginModel, string guid)
        {
            var onlineRequestValidationModel = _tempcartService.ValidateOnlineRequest(guid);

            var model = new UserLoginResponseModel()
            {
                RequestValidationModel = onlineRequestValidationModel
            };

            if (onlineRequestValidationModel.RequestStatus != OnlineRequestStatus.Valid)
            {
                return(model);
            }

            if (!ModelState.IsValid)
            {
                throw new Exception("Please enter a valid Username/Password!");
            }

            var isValid = _userLoginRepository.ValidateUser(userLoginModel.UserName, userLoginModel.Password);

            if (!isValid)
            {
                GetLoginFailureMessage(userLoginModel);
            }

            var userLogin = _userLoginRepository.GetByUserName(userLoginModel.UserName);
            var customer  = _customerRepository.GetCustomerByUserId(userLogin.Id);

            model = new UserLoginResponseModel {
                CustomerId = customer.CustomerId, CustomerName = customer.NameAsString, IsValid = true, Message = "", RequestValidationModel = onlineRequestValidationModel
            };


            return(model);
        }
Esempio n. 4
0
        public void PollForCallParsing()
        {
            try
            {
                _logger.Info("Entering In GMS Dialer Parsing ");
                var timeOfDay = DateTime.Now;
                if (_isDevEnvironment || (timeOfDay.TimeOfDay < new TimeSpan(1, 0, 0)) || (timeOfDay.TimeOfDay > new TimeSpan(2, 0, 0)))
                {
                    //Check for file
                    _logger.Info("Getting files");

                    var sourceLocation = _settings.GmsDialerFilePath;
                    var dialerFiles    = DirectoryOperationsHelper.GetFiles(sourceLocation, "*.csv");
                    if (dialerFiles.IsNullOrEmpty())
                    {
                        _logger.Info("No dialer file found at " + sourceLocation);
                        return;
                    }

                    //move file to media location
                    var mediaLocation       = _mediaRepository.GetGMSDialerMediaFileLocation();
                    var archiveMediaLoation = _mediaRepository.GetGMSDialerArchiveMediaLocation();
                    foreach (var dialerFile in dialerFiles)
                    {
                        var fileInfo = new FileInfo(dialerFile);

                        DirectoryOperationsHelper.Move(dialerFile, mediaLocation.PhysicalPath + fileInfo.Name);
                    }

                    long orgRoleUserId = 1;

                    var gmsUser = _userLoginRepository.GetByUserName(_settings.GmsUserName);
                    if (gmsUser != null)
                    {
                        var organizationRoleUser = _organizationRoleUserRepository.GetOrganizationRoleUsermodel(gmsUser.Id, (long)Roles.CallCenterRep);
                        if (organizationRoleUser != null)
                        {
                            orgRoleUserId = organizationRoleUser.OrganizationRoleUserId;
                        }
                    }

                    //parse file
                    var files = DirectoryOperationsHelper.GetFiles(mediaLocation.PhysicalPath, "*.csv");
                    foreach (var file in files)
                    {
                        try
                        {
                            var fileInfo = new FileInfo(file);

                            var callTable = _csvReader.ReadWithTextQualifier(file);
                            if (callTable.Rows.Count == 0)
                            {
                                _logger.Info(string.Format("No data for file FileName:{0}.", file));
                                return;
                            }

                            var missingColumnNames = _gmsCallParserHelper.CheckForColumns(callTable.Rows[0]);
                            if (!string.IsNullOrEmpty(missingColumnNames))
                            {
                                _logger.Info(string.Format("Invalid file FileName:{0}. Missing headers: {1}", file, missingColumnNames));
                                return;
                            }

                            foreach (DataRow row in callTable.Rows)
                            {
                                var model = _gmsCallParserHelper.GetGmsDialerCallModel(row);
                                try
                                {
                                    _callUploadService.SaveGmsDialerCall(model, orgRoleUserId, _logger);
                                }
                                catch (Exception ex)
                                {
                                    _logger.Error(string.Format("Error for Customer Id: {0} in file: {1}. Message: {2}. \n Stack Trace{3}", model.CustomerId, fileInfo.Name, ex.Message, ex.StackTrace));
                                }
                            }

                            //move to archive location
                            DirectoryOperationsHelper.Move(file, archiveMediaLoation.PhysicalPath + fileInfo.Name);
                        }
                        catch (Exception ex)
                        {
                            _logger.Error(string.Format("Error for file {0}. Message: {1} \n Stack Trace : {2}", file, ex.Message, ex.StackTrace));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("GMSDialerParsing Exception Message: " + ex.Message + "\n Stack Trace:" + ex.StackTrace);
            }
        }
Esempio n. 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)));
        }