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; }
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); }
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)); }
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)); }
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)); }
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; }
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; }
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"); }
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)); } }
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)); }
public UserSessionController(IUserSessionRepository userSessionRepository) { _userSessionRepository = userSessionRepository; }
public ValidateTokenHandler(IUserSessionRepository userSessionRepository, IJwtService jwtService, ILogger <ValidateTokenHandler> logger) { _userSessionRepository = userSessionRepository; _jwtService = jwtService; _logger = logger; }
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; }
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 }); } }
public AzureService(IAzureSettings azureSettings, ISessionDetailRepository sessionDetailRepository, IUserSessionRepository userSessionRepository) { _azureSettings = azureSettings; _sessionDetailRepository = sessionDetailRepository; _userSessionRepository = userSessionRepository; }
public UserSessionService(IUserSessionRepository userSessionRepo, ISessionDetailRepository sessionDetailRepo) { _userSessionRepo = userSessionRepo; _sessionDetailRepo = sessionDetailRepo; }
public UserSessionManager(IUserSessionRepository userSessionRepo, ISessionUtility sessionUtil) { _userSessionRepo = userSessionRepo; _sessionUtil = sessionUtil; }
public UserSessionService(IUserSessionRepository userSessionRepository) { _userSessionRepository = userSessionRepository; }
public UserSessionService(IMapper mapper, IUserSessionRepository userSessionRepository, IPocketService pocketService) { _mapper = mapper; _pocketService = pocketService; _userSessionRepository = userSessionRepository; }
public UserSessionService(ISettingsManager settingsManager, IUserRepository userRepository, IUserSessionRepository userSessionRepository, ISecurityLogService securityLogService) { _settingsManager = settingsManager; _userRepository = userRepository; _userSessionRepository = userSessionRepository; _securityLogService = securityLogService; }
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))); } }
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 }); } }
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 }); } }
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)); }