Exemplo n.º 1
0
		public UserSessionService(ISettingsManager settingsManager, IUserRepository userRepository, IUserSessionRepository userSessionRepository, ISecurityLogService securityLogService)
		{
			_settingsManager = settingsManager;
			_userRepository = userRepository;
			_userSessionRepository = userSessionRepository;
			_securityLogService = securityLogService;
		}
 public UserSessionManager(
     IHostingEnvironment hostingEnvironment,
     IHttpContextAccessor httpContextAccessor,
     ISystemClock clock,
     IDataProtectionProvider dataProtectionProvider,
     IUserSessionRepository userSessionRepository,
     ILogFactory logFactory,
     LifetimeSettings lifetimeSettings)
 {
     _hostingEnvironment  = hostingEnvironment;
     _httpContextAccessor = httpContextAccessor;
     _clock = clock;
     _userSessionRepository = userSessionRepository;
     _log              = logFactory.CreateLog(this);
     _dataProtector    = dataProtectionProvider.CreateProtector(UserSessionCookieProtector);
     _lifetimeSettings = lifetimeSettings;
 }
Exemplo n.º 3
0
        public ActionResult Index()
        {
            var sessionId = this.Session["SessionID"].ToString();
            IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
            UserSession            userSession           = userSessionRepository.FindByID(sessionId);

            string currentLanguage = Session["AdminCulture"] != null ? Session["AdminCulture"].ToString() : "EN";

            if (Session["AdminCulture"] == null)
            {
                Session["AdminCulture"] = currentLanguage;
            }

            FindAllItemReponse <MenuModel> menuReponse = _menuCategoryService.FindAllMenus(currentLanguage);

            return(View(menuReponse.Items));
        }
        public GetUserSessionTests()
        {
            httpRequest = A.Fake <HttpRequest>();
            var httpContextAccessor   = A.Fake <IHttpContextAccessor>();
            var questionSetRepository = A.Fake <IQuestionSetRepository>();

            userSessionRepository = A.Fake <IUserSessionRepository>();
            sessionClient         = A.Fake <ISessionClient>();
            var correlationProvider = new RequestHeaderCorrelationIdProvider(httpContextAccessor);

            using var telemetryConfig = new TelemetryConfiguration();
            var telemetryClient     = new TelemetryClient(telemetryConfig);
            var logger              = new LogService(correlationProvider, telemetryClient);
            var correlationResponse = new ResponseWithCorrelation(correlationProvider, httpContextAccessor);

            functionApp = new NewAssessmentFunctions(logger, correlationResponse, questionSetRepository, userSessionRepository, sessionClient, correlationProvider);
        }
Exemplo n.º 5
0
        public JsonResult SavePayment(PaymentModel payment)
        {
            var sessionId = this.Session["SessionID"].ToString();
            IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
            UserSession            userSession           = userSessionRepository.FindByID(sessionId);

            if (userSession == null)
            {
                return(Json(new { errorCode = (int)ErrorCode.Redirect, message = Resources.AdminResource.msg_sessionInvalid }, JsonRequestBehavior.AllowGet));
            }

            payment.PaymentID   = Guid.NewGuid().ToString();
            payment.CreatedBy   = userSession.UserID;
            payment.CreatedDate = DateTime.Now;
            InsertResponse response = _paymentService.Create(payment);

            return(Json(new { ErrorCode = response.ErrorCode, Message = response.Message }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 6
0
        public JsonResult SaveUpdateArticle(ArticleModel article)
        {
            var sessionId = this.Session["SessionID"].ToString();
            IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
            UserSession            userSession           = userSessionRepository.FindByID(sessionId);

            if (userSession == null)
            {
                return(Json(new { errorCode = (int)ErrorCode.Redirect, message = Resources.AdminResource.msg_sessionInvalid }, JsonRequestBehavior.AllowGet));
            }

            //if (!string.IsNullOrEmpty(article.MenuID))
            //{
            //    article.ActionURL = string.Format("{0}-{1}", UrlSlugger.ToUrlSlug(article.Title), UrlSlugger.Get8Digits());
            //}
            article.UpdatedBy = userSession.UserID;
            BaseResponse response = _articleService.UpdateArticle(article);

            return(Json(new { errorCode = response.ErrorCode, message = response.Message }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 7
0
        public JsonResult SaveRole(RoleModel role)
        {
            var sessionId = this.Session["SessionID"].ToString();
            IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
            UserSession            userSession           = userSessionRepository.FindByID(sessionId);

            if (userSession == null)
            {
                return(Json(new { errorCode = (int)ErrorCode.Redirect, message = Resources.AdminResource.msg_sessionInvalid }, JsonRequestBehavior.AllowGet));
            }

            role.RoleID      = Guid.NewGuid().ToString();
            role.CreatedBy   = userSession.UserID;
            role.CreatedDate = DateTime.Now;
            role.Type        = (int)RoleType.Custom;

            InsertResponse response = _adminService.CreateRole(role);

            return(Json(new { errorCode = response.ErrorCode, message = response.Message, roleid = response.InsertID, roleName = Enum.GetName(typeof(RoleType), role.Type) }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 8
0
 public BaseResponse Logout(string sessionID)
 {
     try
     {
         IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
         userSessionRepository.Delete(sessionID);
         return(new BaseResponse
         {
             ErrorCode = (int)ErrorCode.None,
             Message = string.Empty
         });
     }
     catch (Exception ex)
     {
         return(new BaseResponse
         {
             ErrorCode = (int)ErrorCode.Error,
             Message = ex.Message
         });
     }
 }
 public ResourcesController(
     IUserSessionManager userSessionManager,
     IUserSessionRepository userSessionRepository,
     IClientAccountClient clientAccountClient,
     IHttpClientFactory httpClientFactory,
     IDiscoveryCache discoveryCache,
     IClientSessionsClient clientSessionsClient,
     IroncladSettings ironcladSettings,
     LifetimeSettings lifetimeSettings,
     ILykkeSessionManager lykkeSessionManager)
 {
     _ironcladSettings      = ironcladSettings;
     _lifetimeSettings      = lifetimeSettings;
     _lykkeSessionManager   = lykkeSessionManager;
     _userSessionRepository = userSessionRepository;
     _clientAccountClient   = clientAccountClient;
     _userSessionManager    = userSessionManager;
     _httpClientFactory     = httpClientFactory;
     _discoveryCache        = discoveryCache;
     _clientSessionsClient  = clientSessionsClient;
 }
Exemplo n.º 10
0
        public JsonResult SaveUpdatePhoto(PhotoModel photo, HttpPostedFileBase imageFile)
        {
            var sessionId = this.Session["SessionID"].ToString();
            IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
            UserSession            userSession           = userSessionRepository.FindByID(sessionId);

            if (userSession == null)
            {
                return(Json(new { errorCode = (int)ErrorCode.Redirect, message = Resources.AdminResource.msg_sessionInvalid }, JsonRequestBehavior.AllowGet));
            }
            //photo.ActionURL = string.Format("{0}-{1}", UrlSlugger.ToUrlSlug(photo.Title), UrlSlugger.Get8Digits());
            photo.UpdatedBy   = userSession.UserID;
            photo.UpdatedDate = DateTime.Now;
            BaseResponse response = _photoService.UpdatePhoto(photo);

            if (response.ErrorCode == (int)ErrorCode.None)
            {
                //Image
                if (imageFile != null)
                {
                    //Create Folder
                    try
                    {
                        if (!System.IO.File.Exists(Server.MapPath("~/Content/upload/images/Photo/")))
                        {
                            Directory.CreateDirectory(Server.MapPath("~/Content/upload/images/Photo/"));
                        }
                    }
                    catch (Exception) { }
                    string extension = imageFile.FileName.Substring(imageFile.FileName.LastIndexOf("."));
                    string filename  = imageFile.FileName.Substring(0, imageFile.FileName.LastIndexOf(".")).Replace(" ", "-");
                    filename = string.Format("{0}-{1}", filename, UrlSlugger.Get8Digits());
                    imageFile.SaveAs(Server.MapPath("~/Content/upload/images/Photo/" + filename + extension));
                    photo.ImageURL = "/Content/upload/images/Photo/" + filename + extension;
                    _photoService.UpdatePhoto(photo);
                }
            }
            return(Json(new { errorCode = response.ErrorCode, message = response.Message }, JsonRequestBehavior.AllowGet));
        }
 public InternalIdentityServiceProvider(
     UserManager <User> userManager,
     SignInManager <User> signInManager,
     RoleManager <Role> roleManager,
     IOptionsMonitor <JwtBearerOptions> jwtBearerOptions,
     IIssuedTokenRepository issuedTokenRepository,
     IUserSessionRepository userSessionRepository,
     IRoleRepository roleRepository,
     IEmailServiceProvider emailServiceProvider,
     IServiceLogger <InternalIdentityServiceProvider> serviceLogger
     )
 {
     _userManager           = userManager;
     _signInManager         = signInManager;
     _jwtBearerOptions      = jwtBearerOptions;
     _issuedTokenRepository = issuedTokenRepository;
     _userSessionRepository = userSessionRepository;
     _roleRepository        = roleRepository;
     _emailServiceProvider  = emailServiceProvider;
     _roleManager           = roleManager;
     _serviceLogger         = serviceLogger;
 }
Exemplo n.º 12
0
        public CreateNewAssessmentIntegrationTests()
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                                .Build();

            var cosmosDbConnection = configuration.GetSection("CosmosDbConnection").Get <CosmosDbConnection>();
            var sessionConfig      = configuration.GetSection("SessionConfig").Get <SessionConfig>();
            var documentClient     = new DocumentClient(new Uri(cosmosDbConnection.EndpointUrl), cosmosDbConnection.AccessKey);

            this.userSessionRepository = new UserSessionRepository(documentClient, cosmosDbConnection);

            var serviceProvider = new ServiceCollection().AddSessionServices(sessionConfig);

            serviceProvider.AddLogging();
            serviceProvider.AddHttpContextAccessor();

            var services = serviceProvider.BuildServiceProvider();

            sessionClient = services.GetService <ISessionClient>();

            apiBaseUrl = configuration.GetConnectionString("ApiBaseUrl");
        }
Exemplo n.º 13
0
        public async Task <IJResponse> Logout(
            [FromServices] IUserSessionRepository userSessionRepository,
            [FromBody] JLogoutRequest body)
        {
            try
            {
                Guard.ArgumentNotNull(body);
                Guard.ArgumentNotNull(body.token);
            }
            catch
            {
                return(JResponse.Error(JErrorMessages.InvalidRequest));
            }

            if (await userSessionRepository.RevokeToken(body.token))
            {
                return(JResponse.OK());
            }
            else
            {
                return(JResponse.Error(JErrorMessages.InvalidToken));
            }
        }
Exemplo n.º 14
0
        public JsonResult AssignAbstractSubmission(string userID, string submissionNumber, int status)
        {
            var sessionId = this.Session["SessionID"].ToString();
            IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
            UserSession            userSession           = userSessionRepository.FindByID(sessionId);

            if (userSession == null)
            {
                return(Json(new { errorCode = (int)ErrorCode.Redirect, message = Resources.AdminResource.msg_sessionInvalid }, JsonRequestBehavior.AllowGet));
            }

            UserSubmissionModel model = new UserSubmissionModel();

            model.SubmitID         = Guid.NewGuid().ToString();
            model.CreatedDate      = DateTime.Now;
            model.SubmissionNumber = submissionNumber;
            model.UserID           = userID;
            model.Status           = status;

            InsertResponse response = _userSubmissionService.Create(model);

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 15
0
 public UserSessionController(IUserSessionRepository userSessionRepository)
 {
     _userSessionRepository = userSessionRepository;
 }
Exemplo n.º 16
0
 public ValidateTokenHandler(IUserSessionRepository userSessionRepository, IJwtService jwtService, ILogger <ValidateTokenHandler> logger)
 {
     _userSessionRepository = userSessionRepository;
     _jwtService            = jwtService;
     _logger = logger;
 }
Exemplo n.º 17
0
        public JsonResult SaveArticle(ArticleModel article, string menuTitle, HttpPostedFileBase file)
        {
            var sessionId = this.Session["SessionID"].ToString();
            IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
            UserSession            userSession           = userSessionRepository.FindByID(sessionId);

            if (userSession == null)
            {
                return(Json(new { errorCode = (int)ErrorCode.Redirect, message = Resources.AdminResource.msg_sessionInvalid }, JsonRequestBehavior.AllowGet));
            }

            InsertResponse response = new InsertResponse();

            string menuID = null;
            string url    = string.Empty;

            if (!string.IsNullOrEmpty(menuTitle))
            {
                FindItemReponse <MenuModel> findParentMenu = _menuCategoryService.FindByTitle(menuTitle);
                if (findParentMenu.Item == null)
                {
                    return(Json(new { errorCode = (int)ErrorCode.Error, message = string.Format(Resources.AdminResource.msg_menuCategoryNotFound, menuTitle) }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    menuID = findParentMenu.Item.MenuID;
                }
            }

            //Create article
            article.Title = article.Title.Length > 200 ? article.Title.Substring(0, 100) + "..." : article.Title;
            if (article.ShortContent != null)
            {
                article.ShortContent = article.ShortContent.Length > 300 ? article.ShortContent.Substring(0, 296) + "..." : article.ShortContent;
            }
            article.ArticleID   = Guid.NewGuid().ToString();
            article.ActionURL   = string.Format("{0}-{1}", UrlSlugger.ToUrlSlug(article.Title), UrlSlugger.Get8Digits());
            article.CreatedDate = DateTime.Now;
            article.CreatedBy   = userSession.UserID;
            article.MenuID      = menuID;

            if (string.IsNullOrEmpty(menuID))
            {
                url = string.Format("{0}://{1}:{2}/Home/ArticleView/{3}", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, article.ActionURL);
            }

            response = _articleService.CreateArticle(article);

            if (response.ErrorCode == (int)ErrorCode.None)
            {
                //Image
                if (file != null)
                {
                    //Create folder
                    try
                    {
                        if (!System.IO.File.Exists(Server.MapPath("~/Content/upload/images/article/")))
                        {
                            Directory.CreateDirectory(Server.MapPath("~/Content/upload/images/article/"));
                        }
                    }
                    catch (Exception) { }

                    string extension = file.FileName.Substring(file.FileName.LastIndexOf("."));
                    string filename  = file.FileName.Substring(0, file.FileName.LastIndexOf(".")).Replace(" ", "-");
                    filename = string.Format("{0}-{1}", filename, UrlSlugger.Get8Digits());
                    file.SaveAs(Server.MapPath("~/Content/upload/images/article/" + filename + extension));

                    article.ImageURL = "/Content/upload/images/article/" + filename + extension;
                    _articleService.UpdateArticle(article);
                }
            }

            return(Json(new { errorCode = response.ErrorCode, message = response.Message, url = url }, JsonRequestBehavior.AllowGet));
        }
 public UserSessionService(IUserSessionRepository userSessionRepository)
 {
     _userSessionRepository = userSessionRepository;
 }
Exemplo n.º 19
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "result/{sessionId}/{jobCategory}")] HttpRequest req,
            string sessionId,
            string jobCategory,
            ILogger log,
            [Inject] IHttpRequestHelper httpRequestHelper,
            [Inject] IHttpResponseMessageHelper httpResponseMessageHelper,
            [Inject] IUserSessionRepository userSessionRepository,
            [Inject] IJobProfileRepository jobProfileRepository)
        {
            try
            {
                var correlationId = httpRequestHelper.GetDssCorrelationId(req);
                if (string.IsNullOrEmpty(correlationId))
                {
                    log.LogInformation("Unable to locate 'DssCorrelationId' in request header");
                }

                if (!Guid.TryParse(correlationId, out var correlationGuid))
                {
                    log.LogInformation("Unable to parse 'DssCorrelationId' to a Guid");
                    correlationGuid = Guid.NewGuid();
                }

                if (string.IsNullOrEmpty(sessionId))
                {
                    log.LogInformation($"Correlation Id: {correlationId} - Session Id not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                var userSession = await userSessionRepository.GetUserSession(sessionId);

                if (userSession == null)
                {
                    log.LogInformation($"Correlation Id: {correlationId} - Session Id does not exist {sessionId}");
                    return(httpResponseMessageHelper.NoContent());
                }

                if (userSession.ResultData == null)
                {
                    log.LogInformation($"Correlation Id: {correlationId} - Result data does not yet exist for session {userSession.PrimaryKey}");
                    return(httpResponseMessageHelper.BadRequest());
                }

                var traits      = userSession.ResultData.Traits;
                int traitsTake  = (traits.Length > 3 && traits[2].TotalScore == traits[3].TotalScore) ? 4 : 3;
                var jobFamilies = userSession.ResultData.JobCategories;

                if (!jobCategory.EqualsIgnoreCase("short"))
                {
                    jobCategory = JobCategoryHelper.GetCode(jobCategory);
                }

                var suggestedJobProfiles = new List <JobProfileResult>();
                foreach (var category in jobFamilies)
                {
                    if (category.FilterAssessmentResult == null)
                    {
                        continue;
                    }

                    var categoryProfiles = new List <JobProfileResult>();
                    if (category.TotalQuestions == 0)
                    {
                        // Build the list of job profiles
                        var jobProfiles =
                            await jobProfileRepository.JobProfilesForJobFamily(category.JobCategoryName);

                        var profilesSet = category.FilterAssessmentResult.SuggestedJobProfiles.ToHashSet(StringComparer.InvariantCultureIgnoreCase);

                        foreach (var jobProfile in jobProfiles.Where(p =>
                                                                     (p.JobProfileCategories == null || p.JobProfileCategories.Contains(category.JobCategoryName, StringComparer.InvariantCultureIgnoreCase)) &&
                                                                     profilesSet.Contains(p.Title))
                                 )
                        {
                            categoryProfiles.Add(new JobProfileResult()
                            {
                                CareerPathAndProgression = jobProfile.CareerPathAndProgression,
                                Overview           = jobProfile.Overview,
                                SalaryExperienced  = jobProfile.SalaryExperienced,
                                SalaryStarter      = jobProfile.SalaryStarter,
                                JobCategory        = category.JobCategoryName,
                                SocCode            = jobProfile.SocCode,
                                Title              = jobProfile.Title,
                                UrlName            = jobProfile.UrlName,
                                TypicalHours       = jobProfile.TypicalHours,
                                TypicalHoursPeriod = String.Join("/", jobProfile.WorkingHoursDetails),
                                ShiftPattern       = String.Join("/", jobProfile.WorkingPattern),
                                ShiftPatternPeriod = String.Join("/", jobProfile.WorkingPatternDetails),
                                WYDDayToDayTasks   = jobProfile.WYDDayToDayTasks
                            });
                        }
                    }

                    category.ResultsShown =
                        category.ResultsShown ||
                        category.JobCategoryCode.EqualsIgnoreCase(jobCategory) ||
                        (category.TotalQuestions == 0 && (categoryProfiles.Count == 0));

                    suggestedJobProfiles.AddRange(categoryProfiles);
                }

                var model = new ResultsResponse()
                {
                    AssessmentType     = userSession.AssessmentType,
                    SessionId          = userSession.UserSessionId,
                    JobFamilyCount     = userSession.ResultData.JobCategories.Length,
                    JobFamilyMoreCount = userSession.ResultData.JobCategories.Length - 3,
                    Traits             = traits.Take(traitsTake).Select(x => x.TraitText).ToArray(),
                    JobCategories      = jobFamilies,
                    JobProfiles        = suggestedJobProfiles.ToArray(),
                    WhatYouToldUs      = userSession.ResultData?.JobCategories.SelectMany(r => r.FilterAssessmentResult?.WhatYouToldUs ?? new string[] { }).Distinct().ToArray() ?? new string[] { }
                };

                await userSessionRepository.UpdateUserSession(userSession);

                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(model)));
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Fatal exception {message}", ex.ToString());
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
        }
Exemplo n.º 20
0
 public AzureService(IAzureSettings azureSettings, ISessionDetailRepository sessionDetailRepository, IUserSessionRepository userSessionRepository)
 {
     _azureSettings           = azureSettings;
     _sessionDetailRepository = sessionDetailRepository;
     _userSessionRepository   = userSessionRepository;
 }
Exemplo n.º 21
0
 public UserSessionService(IUserSessionRepository userSessionRepo, ISessionDetailRepository sessionDetailRepo)
 {
     _userSessionRepo   = userSessionRepo;
     _sessionDetailRepo = sessionDetailRepo;
 }
Exemplo n.º 22
0
 public UserSessionManager(IUserSessionRepository userSessionRepo, ISessionUtility sessionUtil)
 {
     _userSessionRepo = userSessionRepo;
     _sessionUtil = sessionUtil;
 }
 public UserSessionService(IUserSessionRepository userSessionRepository)
 {
     _userSessionRepository = userSessionRepository;
 }
Exemplo n.º 24
0
 public UserSessionService(IMapper mapper, IUserSessionRepository userSessionRepository, IPocketService pocketService)
 {
     _mapper                = mapper;
     _pocketService         = pocketService;
     _userSessionRepository = userSessionRepository;
 }
Exemplo n.º 25
0
 public UserSessionService(ISettingsManager settingsManager, IUserRepository userRepository, IUserSessionRepository userSessionRepository, ISecurityLogService securityLogService)
 {
     _settingsManager       = settingsManager;
     _userRepository        = userRepository;
     _userSessionRepository = userSessionRepository;
     _securityLogService    = securityLogService;
 }
Exemplo n.º 26
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assessment/notify/email")] HttpRequest req,
            ILogger log,
            [Inject] IHttpRequestHelper httpRequestHelper,
            [Inject] IHttpResponseMessageHelper httpResponseMessageHelper,
            [Inject] IUserSessionRepository userSessionRepository,
            [Inject] INotifyClient notifyClient)
        {
            try
            {
                var correlationId = httpRequestHelper.GetDssCorrelationId(req);
                if (string.IsNullOrEmpty(correlationId))
                {
                    log.LogInformation("Unable to locate 'DssCorrelationId' in request header");
                }

                if (!Guid.TryParse(correlationId, out var correlationGuid))
                {
                    log.LogInformation("Unable to parse 'DssCorrelationId' to a Guid");
                    correlationGuid = Guid.NewGuid();
                }

                SendSessionEmailRequest sendSessionEmailRequest;
                using (var streamReader = new StreamReader(req.Body))
                {
                    var body = streamReader.ReadToEnd();
                    sendSessionEmailRequest = JsonConvert.DeserializeObject <SendSessionEmailRequest>(body);
                }

                if (sendSessionEmailRequest == null || string.IsNullOrEmpty(sendSessionEmailRequest.SessionId))
                {
                    log.LogError($"CorrelationId: {correlationGuid} - Session Id not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(sendSessionEmailRequest.Domain))
                {
                    log.LogError($"CorrelationId: {correlationGuid} - Domain not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(sendSessionEmailRequest.TemplateId))
                {
                    log.LogError($"CorrelationId: {correlationGuid} - TemplateId not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(sendSessionEmailRequest.EmailAddress))
                {
                    log.LogError($"CorrelationId: {correlationGuid} - EmailAddress not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                var userSession = await userSessionRepository.GetUserSession(sendSessionEmailRequest.SessionId);

                if (userSession == null)
                {
                    log.LogError($"CorrelationId: {correlationGuid} - Session Id does not exist {sendSessionEmailRequest.SessionId}");
                    return(httpResponseMessageHelper.NoContent());
                }

                await notifyClient.SendEmail(sendSessionEmailRequest.Domain, sendSessionEmailRequest.EmailAddress, sendSessionEmailRequest.TemplateId, userSession.UserSessionId);

                var result = new SendSessionEmailResponse()
                {
                    IsSuccess = true,
                };

                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(result)));
            }
            catch (Exception ex)
            {
                var result = new SendSessionEmailResponse()
                {
                    IsSuccess = false,
                    Message   = ex.Message
                };
                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(result)));
            }
        }
Exemplo n.º 27
0
        public AdminLoginResponse Login(string username, string password)
        {
            try
            {
                IAdminRepository adminRepository = RepositoryClassFactory.GetInstance().GetAdminRepository();
                Admin            _admin          = adminRepository.FindByUserName(username);
                if (_admin != null)
                {
                    if (_admin.Locked)
                    {
                        return(new AdminLoginResponse
                        {
                            ErrorCode = (int)ErrorCode.Error,
                            Message = Resources.Resource.msg_account_locked
                        });
                    }
                }
                Admin admin = adminRepository.Login(username, password);

                if (admin != null)
                {
                    IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();

                    //Delete session id existed
                    try
                    {
                        userSessionRepository.DeleteByUserID(admin.AdminID);
                    }
                    catch (Exception)
                    {
                    }

                    int timeOut = TIME_OUT_MINUTES * 60 * 1000;

                    UserSession userSession = new UserSession
                    {
                        CreatedDate = DateTime.Now,
                        UserID      = admin.AdminID,
                        SessionID   = Guid.NewGuid().ToString(),
                        UpdatedDate = DateTime.Now
                    };

                    object sessionID = userSessionRepository.Insert(userSession);

                    return(new AdminLoginResponse
                    {
                        ErrorCode = (int)ErrorCode.None,
                        Message = "",
                        SessionId = userSession.SessionID,
                        AdminId = admin.AdminID,
                        AdminName = admin.LastName
                    });
                }
                else
                {
                    return(new AdminLoginResponse
                    {
                        ErrorCode = (int)ErrorCode.Error,
                        Message = Resources.Resource.msg_login_fail
                    });
                }
            }
            catch (Exception ex)
            {
                return(new AdminLoginResponse
                {
                    ErrorCode = (int)ErrorCode.Error,
                    Message = ex.Message
                });
            }
        }
Exemplo n.º 28
0
 public void Dispose()
 {
     _httpRequestHelper         = null;
     _httpResponseMessageHelper = null;
     _userSessionRepository     = null;
 }
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assessment/{sessionId}/{assessment}/q/{questionNumber}")] HttpRequest req,
            string sessionId,
            string assessment,
            int questionNumber,
            ILogger log,
            [Inject] IHttpRequestHelper httpRequestHelper,
            [Inject] IHttpResponseMessageHelper httpResponseMessageHelper,
            [Inject] IUserSessionRepository userSessionRepository,
            [Inject] IQuestionRepository questionRepository,
            [Inject] IOptions <AppSettings> appSettings)
        {
            try
            {
                var correlationId = httpRequestHelper.GetDssCorrelationId(req);
                if (string.IsNullOrEmpty(correlationId))
                {
                    log.LogInformation("Unable to locate 'DssCorrelationId' in request header");
                }

                if (!Guid.TryParse(correlationId, out var correlationGuid))
                {
                    log.LogInformation("Unable to parse 'DssCorrelationId' to a Guid");
                    correlationGuid = Guid.NewGuid();
                }

                if (string.IsNullOrEmpty(sessionId))
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} - Session Id not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(assessment))
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} - Assessment not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(appSettings?.Value.SessionSalt))
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} -Session salt not missing from configuration");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (!sessionId.Contains("-"))
                {
                    var datetimeStamp = SessionIdHelper.Decode(appSettings?.Value.SessionSalt, sessionId);
                    if (datetimeStamp == null)
                    {
                        log.LogError($"CorrelationId: {correlationGuid} - Could not decode session id correctly: {sessionId}");
                        return(httpResponseMessageHelper.BadRequest());
                    }
                    string partitionKey = SessionIdHelper.GetYearMonth(datetimeStamp);
                    sessionId = $"{partitionKey}-{sessionId}";
                }

                var userSession = await userSessionRepository.GetUserSession(sessionId);

                if (userSession == null)
                {
                    log.LogError($"CorrelationId: {correlationGuid} - Session Id does not exist {sessionId}");
                    return(httpResponseMessageHelper.NoContent());
                }

                Question question = null;

                if (assessment.EqualsIgnoreCase("short"))
                {
                    if (userSession.AssessmentState.IsComplete && questionNumber == 1)
                    {
                        userSession.AssessmentState.RecordedAnswers = new Answer[] {};
                        await userSessionRepository.UpdateUserSession(userSession);
                    }

                    question = await questionRepository.GetQuestion(questionNumber, userSession.CurrentQuestionSetVersion);

                    userSession.AssessmentState.CurrentQuestion = questionNumber;
                }
                else
                {
                    userSession.FilteredAssessmentState.CurrentFilterAssessmentCode = JobCategoryHelper.GetCode(assessment);
                    userSession.FilteredAssessmentState.CurrentQuestion             = questionNumber;

                    question = await questionRepository.GetQuestion(userSession.FilteredAssessmentState.CurrentQuestionId);
                }

                if (question == null)
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} - Question number {userSession.CurrentQuestion} could not be found on session {userSession.PrimaryKey}");
                    return(httpResponseMessageHelper.NoContent());
                }

                var percentageComplete = userSession.AssessmentState.PercentageComplete;

                var nextQuestion = question.IsFilterQuestion ? userSession.FilteredAssessmentState.MoveToNextQuestion() : userSession.AssessmentState.MoveToNextQuestion();
                await userSessionRepository.UpdateUserSession(userSession);

                var response = new AssessmentQuestionResponse()
                {
                    CurrentFilterAssessmentCode = userSession.FilteredAssessmentState?.CurrentFilterAssessmentCode,
                    IsComplete           = question.IsFilterQuestion ? (userSession.FilteredAssessmentState?.IsComplete ?? false) : userSession.AssessmentState.IsComplete,
                    NextQuestionNumber   = nextQuestion,
                    QuestionId           = question.QuestionId,
                    QuestionText         = question.Texts.FirstOrDefault(x => x.LanguageCode.ToLower() == "en")?.Text,
                    TraitCode            = question.TraitCode,
                    QuestionNumber       = questionNumber,
                    SessionId            = userSession.PrimaryKey,
                    PercentComplete      = percentageComplete,
                    ReloadCode           = userSession.UserSessionId,
                    MaxQuestionsCount    = userSession.MaxQuestions,
                    RecordedAnswersCount = userSession.RecordedAnswers.Length,
                    RecordedAnswer       = userSession.RecordedAnswers.SingleOrDefault(r => r?.QuestionId == question.QuestionId)?.SelectedOption,
                    StartedDt            = userSession.StartedDt,
                    IsFilterAssessment   = !assessment.EqualsIgnoreCase("short"),
                    JobCategorySafeUrl   = userSession.FilteredAssessmentState?.JobFamilyNameUrlSafe
                };

                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(response)));
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Fatal exception {message}", ex.ToString());
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
        }
Exemplo n.º 30
0
 public UserSessionBusinessLogic(IUserBusinessLogic userBusinessLogic, IUserSessionRepository userSessionRepository)
 {
     _userBusinessLogic     = userBusinessLogic;
     _userSessionRepository = userSessionRepository;
 }
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assessment/{sessionId}")] HttpRequest req,
            string sessionId,
            ILogger log,
            [Inject] IHttpRequestHelper httpRequestHelper,
            [Inject] IHttpResponseMessageHelper httpResponseMessageHelper,
            [Inject] IUserSessionRepository userSessionRepository,
            [Inject] IQuestionRepository questionRepository,
            [Inject] IAssessmentCalculationService resultsService,
            [Inject] IFilterAssessmentCalculationService filterAssessmentCalculationService)
        {
            try
            {
                var correlationId = httpRequestHelper.GetDssCorrelationId(req);
                if (string.IsNullOrEmpty(correlationId))
                {
                    log.LogInformation("Unable to locate 'DssCorrelationId' in request header");
                }

                if (!Guid.TryParse(correlationId, out var correlationGuid))
                {
                    log.LogInformation("Unable to parse 'DssCorrelationId' to a Guid");
                    correlationGuid = Guid.NewGuid();
                }

                if (string.IsNullOrEmpty(sessionId))
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} - Session Id not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                PostAnswerRequest postAnswerRequest;
                using (var streamReader = new StreamReader(req.Body))
                {
                    var body = streamReader.ReadToEnd();
                    postAnswerRequest = JsonConvert.DeserializeObject <PostAnswerRequest>(body);
                }

                AnswerOption answerValue;
                if (Enum.TryParse(postAnswerRequest.SelectedOption, out answerValue) == false)
                {
                    log.LogInformation(
                        $"CorrelationId: {correlationGuid} - Answer supplied is invalid {postAnswerRequest.SelectedOption}");
                    return(httpResponseMessageHelper.BadRequest());
                }

                var userSession = await userSessionRepository.GetUserSession(sessionId);

                if (userSession == null)
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} - Session Id does not exist {sessionId}");
                    return(httpResponseMessageHelper.NoContent());
                }

                var question = await questionRepository.GetQuestion(postAnswerRequest.QuestionId);

                if (question == null)
                {
                    log.LogInformation(
                        $"CorrelationId: {correlationGuid} - Question Id does not exist {postAnswerRequest.QuestionId}");
                    return(httpResponseMessageHelper.NoContent());
                }

                userSession.AddAnswer(answerValue, question);

                await TryEvaluateSession(log, resultsService, filterAssessmentCalculationService, userSession);

                var displayFinish = question.IsFilterQuestion
                    ? userSession.FilteredAssessmentState.IsComplete
                    : userSession.AssessmentState.IsComplete;

                if (!question.IsFilterQuestion)
                {
                    userSession.AssessmentState.CurrentQuestion = question.Order;
                }

                var result = new PostAnswerResponse()
                {
                    IsSuccess          = true,
                    IsComplete         = displayFinish,
                    IsFilterAssessment = question.IsFilterQuestion,
                    JobCategorySafeUrl = question.IsFilterQuestion ? userSession.FilteredAssessmentState.JobFamilyNameUrlSafe : null,
                    NextQuestionNumber = question.IsFilterQuestion ? userSession.FilteredAssessmentState.MoveToNextQuestion() : userSession.AssessmentState.MoveToNextQuestion()
                };

                await userSessionRepository.UpdateUserSession(userSession);

                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(result)));
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Fatal exception {message}", ex.Message);
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
        }
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assessment/{sessionId}/reload")] HttpRequest req,
            string sessionId,
            ILogger log,
            [Inject] IHttpRequestHelper httpRequestHelper,
            [Inject] IHttpResponseMessageHelper httpResponseMessageHelper,
            [Inject] IUserSessionRepository userSessionRepository,
            [Inject] IQuestionRepository questionRepository,
            [Inject] IOptions <AppSettings> appSettings)
        {
            try
            {
                var correlationId = httpRequestHelper.GetDssCorrelationId(req);
                if (string.IsNullOrEmpty(correlationId))
                {
                    log.LogInformation("Unable to locate 'DssCorrelationId' in request header");
                }

                if (!Guid.TryParse(correlationId, out var correlationGuid))
                {
                    log.LogInformation("Unable to parse 'DssCorrelationId' to a Guid");
                    correlationGuid = Guid.NewGuid();
                }

                if (string.IsNullOrEmpty(sessionId))
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} - Session Id not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(appSettings?.Value.SessionSalt))
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} -Session salt not missing from configuration");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (!sessionId.Contains("-"))
                {
                    string partitionKey = PartitionKeyGenerator.UserSession(sessionId);
                    sessionId = $"{partitionKey}-{sessionId}";
                }

                var userSession = await userSessionRepository.GetUserSession(sessionId);

                if (userSession == null)
                {
                    log.LogError($"CorrelationId: {correlationGuid} - Session Id does not exist {sessionId}");
                    return(httpResponseMessageHelper.NoContent());
                }

                if (userSession.ResultData?.JobCategories?.Length == 0)
                {
                    userSession.AssessmentState.CurrentQuestion = 1;
                    userSession.AssessmentState.RecordedAnswers = new Answer[] {};
                    userSession.ResultData = null;
                    await userSessionRepository.UpdateUserSession(userSession);
                }

                var questionSetVersion = userSession.CurrentQuestionSetVersion;

                var question = await questionRepository.GetQuestion(userSession.CurrentQuestion, questionSetVersion);

                if (question == null)
                {
                    log.LogInformation($"CorrelationId: {correlationGuid} - Question number {userSession.CurrentQuestion} could not be found on session {userSession.PrimaryKey}");
                    return(httpResponseMessageHelper.NoContent());
                }

                int percentComplete = Convert.ToInt32((((decimal)userSession.CurrentQuestion - 1M) / (decimal)userSession.MaxQuestions) * 100);
                var response        = new AssessmentQuestionResponse()
                {
                    CurrentFilterAssessmentCode = userSession.FilteredAssessmentState?.CurrentFilterAssessmentCode,
                    IsComplete           = userSession.IsComplete,
                    NextQuestionNumber   = question.IsFilterQuestion ? userSession.FilteredAssessmentState?.MoveToNextQuestion() : userSession.AssessmentState.MoveToNextQuestion(),
                    QuestionId           = question.QuestionId,
                    QuestionText         = question.Texts.FirstOrDefault(x => x.LanguageCode.ToLower() == "en")?.Text,
                    TraitCode            = question.TraitCode,
                    QuestionNumber       = question.Order,
                    SessionId            = userSession.PrimaryKey,
                    PercentComplete      = percentComplete,
                    ReloadCode           = userSession.UserSessionId,
                    MaxQuestionsCount    = userSession.MaxQuestions,
                    RecordedAnswersCount = userSession.RecordedAnswers.Count(),
                    StartedDt            = userSession.StartedDt,
                    IsFilterAssessment   = userSession.IsFilterAssessment,
                    JobCategorySafeUrl   = (userSession.CurrentState as FilteredAssessmentState)?.JobFamilyNameUrlSafe
                };

                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(response)));
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Fatal exception {message}", ex.ToString());
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
        }
        public JsonResult SaveConference(ConferenceDeclarationModel conference, HttpPostedFileBase imageFile, HttpPostedFileBase file)
        {
            var sessionId = this.Session["SessionID"].ToString();
            IUserSessionRepository userSessionRepository = RepositoryClassFactory.GetInstance().GetUserSessionRepository();
            UserSession            userSession           = userSessionRepository.FindByID(sessionId);

            if (userSession == null)
            {
                return(Json(new { errorCode = (int)ErrorCode.Redirect, message = Resources.AdminResource.msg_sessionInvalid }, JsonRequestBehavior.AllowGet));
            }

            InsertResponse response = new InsertResponse();

            conference.Title = conference.Title.Length > 200 ? conference.Title.Substring(0, 100) + "..." : conference.Title;
            if (!string.IsNullOrEmpty(conference.ShortContent))
            {
                conference.ShortContent = conference.ShortContent.Length > 300 ? conference.ShortContent.Substring(0, 296) + "..." : conference.ShortContent;
            }
            else
            {
                conference.ShortContent = null;
            }
            conference.ActionURL    = string.Format("{0}-{1}", UrlSlugger.ToUrlSlug(conference.Title), UrlSlugger.Get8Digits());
            conference.CreatedDate  = DateTime.Now;
            conference.ConferenceID = Guid.NewGuid().ToString();
            conference.CreatedBy    = userSession != null ? userSession.UserID : string.Empty;

            response = _conferenceService.CreateConference(conference);
            if (response.ErrorCode == (int)ErrorCode.None)
            {
                //Image
                if (imageFile != null)
                {
                    //Create Folder
                    try
                    {
                        if (!System.IO.File.Exists(Server.MapPath("~/Content/upload/images/Conference/")))
                        {
                            Directory.CreateDirectory(Server.MapPath("~/Content/upload/images/Conference/"));
                        }
                    }
                    catch (Exception) { }
                    string extension = imageFile.FileName.Substring(imageFile.FileName.LastIndexOf("."));
                    string filename  = imageFile.FileName.Substring(0, imageFile.FileName.LastIndexOf(".")).Replace(" ", "-");
                    filename = string.Format("{0}-{1}", filename, UrlSlugger.Get8Digits());
                    imageFile.SaveAs(Server.MapPath("~/Content/upload/images/Conference/" + filename + extension));
                    conference.ImageURL = "/Content/upload/images/Conference/" + filename + extension;
                    _conferenceService.UpdateConference(conference);
                }
                if (file != null)
                {
                    //Create Folder
                    try
                    {
                        if (!System.IO.File.Exists(Server.MapPath("~/Content/upload/documents/Conference/")))
                        {
                            Directory.CreateDirectory(Server.MapPath("~/Content/upload/documents/Conference/"));
                        }
                    }
                    catch (Exception) { }
                    string extension = file.FileName.Substring(file.FileName.LastIndexOf("."));
                    string filename  = file.FileName.Substring(0, file.FileName.LastIndexOf(".")).Replace(" ", "-");
                    filename = string.Format("{0}-{1}", filename, UrlSlugger.Get8Digits());
                    file.SaveAs(Server.MapPath("~/Content/upload/documents/Conference/" + filename + extension));
                    conference.AttachmentURL = "/Content/upload/documents/Conference/" + filename + extension;
                    _conferenceService.UpdateConference(conference);
                }
            }
            return(Json(new { errorCode = response.ErrorCode, message = response.Message }, JsonRequestBehavior.AllowGet));
        }