public void PreSelect(Model.Survey survey, int userId, IUserService userService, ISurveyService surveyService) { var request = new SurveyRequest() { SurveyName = Settings.SurveyNames.Enrollment, UserID = userId, IncludeResponse = true }; var isComplete = false; // Get Enrollment status var enrollmentSurvey = surveyService.GetSurvey(request); if (enrollmentSurvey != null) { isComplete = enrollmentSurvey.CalculateStatus().IsComplete(); } // Find succession question var question = survey.Questions.FirstOrDefault(q => q.QuestionName == "EnrollmentComplete"); if (question == null) { return; } // Pre-select answers based on enrollment status question.FindPossibleAnswer("Yes").IsSelected = isComplete; question.FindPossibleAnswer("No").IsSelected = !isComplete; // Disable question question.IsDisabled = true; }
public async Task <SurveyRequest> PostNestedInverted(SurveyRequest survey) { return(await _runner.RunAction(async context => { context.Logger.Debug("Simulating saving survey information..."); context.State.SetParam("Survey", survey); await _runner.RunAction(async context => { context.Logger.Debug("This is a nested wrapper..."); for (var x = 0; x < 5; x++) { await _runner.RunAction(async context => { context.Logger.Debug($"this is service {x} inside of the nested wrapper..."); context.State.SetParam($"Survey{x}", survey); return survey; }, $"NestedService{x}"); } }, $"WrapperService"); return survey; }, "SurveyService", "nested")); }
public dynamic Get([FromUri] SurveyRequest request) { var surveys = _surveyService.GetSurveys(); return(new { Surveys = surveys }); }
public async Task <APIResponseBase> SaveUserSurvey(SurveyRequest request) { APIResponseBase response = ValidateUserToken(); if (response != null && response.ErrorCode == (int)LAMPConstants.API_SUCCESS_CODE) { response = await Task.Run(() => _SurveyService.SaveUserSurvey(request)); } return(response); }
public async Task <SurveyRequest> Post(SurveyRequest survey) { return(await _runner.RunAction(async context => { context.Logger.Debug("Simulating saving survey information..."); context.State.SetParam("Survey", survey); return survey; }, "SurveyService")); }
public SurveySummary GetSurveySummary(string surveyName, int userId) { var request = new SurveyRequest() { SurveyName = surveyName, IncludeResponse = true, UserID = userId, CacheForUser = true }; var survey = GetSurvey(request); if (survey == null) { throw new Exception("Invalid Survey Name: " + surveyName); } var summary = new SurveySummary() { SurveyID = survey.SurveyID, SurveyName = survey.SurveyName, Score = survey.Status.Score, State = survey.Status.State, DisplayScore = survey.Status.DisplayScore }; foreach (var page in survey.Pages.Where(p => !p.IsSummary)) { var pageStatus = survey.Status.Pages.First(p => p.Name == page.PageName); var pageScoreDescription = page.ScoreRanges.FirstOrDefault(d => pageStatus.Score >= d.MinScore && pageStatus.Score <= d.MaxScore); var pageSummary = new SurveyPageSummary() { SurveyPageID = page.SurveyPageID, PageName = page.PageName, Score = pageStatus.Score, DisplayScore = pageStatus.DisplayScore, State = pageStatus.State, Tooltip = page.Tooltip, ScoreSummary = pageScoreDescription != null ? pageScoreDescription.Description : string.Empty }; if (!page.SuggestedContents.IsNullOrEmpty()) { pageSummary.SuggestedContent = page.SuggestedContents.DistinctBy(a => a.Url).Select(s => new SurveySummaryContent() { Title = s.Title, Url = s.Url }).ToList(); } summary.Pages.Add(pageSummary); } return(summary); }
public SurveyRequestController() { _context = new ErpEntities(Constants.ConnectionString); _SurveyRequest = new SurveyRequest(_context); _documentNoSetting = new DocumentNoSetting(_context); _lookup = new Lookups(_context); _shipmentType = new BaseModel <iffsShipmentType>(_context); _userOperationMapping = new BaseModel <iffsUserOperationTypeMapping>(_context); _ReceivingClient = new ReceivingClient(_context); _notification = new BaseModel <iffsNotification>(_context); }
public Model.Survey GetSurvey(SurveyRequest request) { if (!request.CacheForUser || request.UserID <= 0 || string.IsNullOrEmpty(request.SurveyName) || !request.IncludeResponse) { return(GetSurveyInternal(request)); } var cacheKey = string.Format("Survey.{0}.{1}", request.SurveyName, request.UserID); return(_cacheStorage.Retrieve(cacheKey, () => GetSurveyInternal(request))); }
public async Task <SurveyRequest> Put(SurveyRequest survey) { using var context = _runner.Create("SurveyService"); context.Logger.Debug("Pretending we're updating the survey information..."); context.State.SetParam("Survey", survey); var logger = LogManager.LogFactory.GetCurrentClassLogger(); logger.Debug("This is yet another test"); return(survey); }
public async Task <SurveyRequest> Post2(SurveyRequest survey) { return(await _runner.RunAction(async context => { context.Logger.Debug("Simulating saving survey information..."); context.State.SetParam("Survey", survey); var logger = LogManager.LogFactory.GetCurrentClassLogger(); logger.Debug("This is a test w/ deprecated method"); return survey; }, "SurveyService")); }
public async Task <SurveyRequest> Post(SurveyRequest survey) { return(await _runner.CreateAndAppendToActionExceptions(async context => { context.Logger.Debug("Simulating saving survey information..."); context.State.SetParam("Survey", survey); var logger = LogManager.LogFactory.GetCurrentClassLogger(); logger.Debug("This is a test"); return survey; }, "SurveyService")); }
public Survey GetSurvey(SurveyRequest request) { var proxy = _surveyService.CreateProxy(); return(proxy.GetSurvey(request)); }
private Model.Survey GetSurveyInternal(SurveyRequest request) { if (request == null || (request.SurveyID <= 0 && string.IsNullOrEmpty(request.SurveyName))) { return(null); } var survey = null as Model.Survey; if (request.SurveyID > 0) { survey = _surveyRepository.GetSurveyByID(request.SurveyID); } else if (!string.IsNullOrEmpty(request.SurveyName)) { survey = _surveyRepository.GetSurveyByName(request.SurveyName); } if (survey == null) { throw new Exception(string.Format("Invalid survey id: {0}, name: {1}: ", request.SurveyID, request.SurveyName)); } if (request.UserID <= 0) { return(survey); } var injector = ValueInjectorFactory.CreateValueInjector(survey.SurveyName); // Inject Possible Answers to questions based on the user's profile if (injector != null) { injector.Inject(survey, request.UserID, _userService, this); } if (survey.IsReviewVisible) { survey.Pages = new List <SurveyPage>(survey.Pages); survey.Pages.Add(new SurveyPage() { PageName = survey.ReviewTabText, SurveyID = survey.SurveyID, IsVisible = true, IsSummary = true, SortOrder = survey.Pages.Last().SortOrder + 1, SurveyPageID = 0 }); } if (request.IncludeResponse) { var surveyResponse = GetSurveyResponse(new SurveyResponseRequest() { SurveyName = request.SurveyName, UserID = request.UserID, IncludeAnswers = true }); if (surveyResponse == null) { surveyResponse = new SurveyResponse() { SurveyID = survey.SurveyID, SelectedSurveyPageID = survey.Pages.OrderBy(p => p.SortOrder).First().SurveyPageID, CreateUserID = request.UserID, CreateDate = DateTime.Now, CreateDateUtc = DateTime.UtcNow, ModifyUserID = request.UserID, ModifyDate = DateTime.Now, ModifyDateUtc = DateTime.UtcNow }; } ApplySurveyResponse(survey, surveyResponse); } if (request.ApplyResponse && request.ResponseToApply != null) { ApplySurveyResponse(survey, request.ResponseToApply); } // Ensure Status is calculated survey.CalculateStatus(); // Pre-Select answers based on the user's profile (if not already answered) if (injector != null) { injector.PreSelect(survey, request.UserID, _userService, this); } // Populate suggested content PopulateSuggestedContent(survey); return(survey); }
public async Task <IActionResult> CreateSurvey([FromBody] SurveyRequest request) { Response <SurveyResponse> response = new Response <SurveyResponse>(); try { var isFaulted = IsAuthenticationFaulted(UserIdentity); if (isFaulted) { response = new Response <SurveyResponse> { ResponseBody = new SuccessResponse <SurveyResponse> { Data = null, ResponseCode = "E009", ResponseMessage = "You do not have the permission to carry out this operation, kindly login and try again." } }; return(Unauthorized(response.ResponseBody)); } if (!ModelState.IsValid) { var requestResponse = ApiResponseFormatter.RequestResponse(ModelState); return(BadRequest(requestResponse)); } Survey survey = new Survey { DateCreated = DateTime.UtcNow, Description = request.Description, Status = SurveyStatus.Open.ToString(), Title = request.Title }; using (var _context = new MiniSurveyContext()) { _context.Surveys.Add(survey); await _context.SaveChangesAsync(); } SurveyResponse surveyResponse = new SurveyResponse { Id = survey.Id, Title = survey.Title, DateCreated = survey.DateCreated, Description = survey.Description, Status = survey.Status }; response = new Response <SurveyResponse> { ResponseBody = new SuccessResponse <SurveyResponse> { Data = surveyResponse, ResponseCode = "00", ResponseMessage = "You have successfully created a survey. Kindly proceed to add questions to the survey." } }; return(Ok(response.ResponseBody)); } catch (Exception) { response = new Response <SurveyResponse> { ResponseBody = new SuccessResponse <SurveyResponse> { Data = null, ResponseCode = "E001", ResponseMessage = "Sorry, we are unable to process your request at the moment, kindly try again later." } }; return(StatusCode(500, response.ResponseBody)); } }
/// <inheritdoc /> public async Task <SurveyResponse> PostSurveyAsync(SurveyRequest request) { WebOperationContext context = WebOperationContext.Current; SurveyResponse response = new Models.SurveyResponse(); // Validate that we have a bearer token. string authorization = context.IncomingRequest.Headers["authorization"]; if (string.IsNullOrEmpty(authorization)) { response.IsError = true; response.Message = "Bearer token not found."; context.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized; return(response); } string[] parts = authorization.Split(' '); if (parts.Length != 2 || !string.Equals(parts[0], BearerTokenType, StringComparison.OrdinalIgnoreCase) || string.IsNullOrEmpty(parts[1])) { response.IsError = true; response.Message = "Bearer token not found."; context.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized; return(response); } string bearerToken = parts[1]; ActionableMessageTokenValidator validator = new ActionableMessageTokenValidator(); // ValidateTokenAsync will verify the following // 1. The token is issued by Microsoft and its digital signature is valid. // 2. The token has not expired. // 3. The audience claim matches the service domain URL. // // Replace https://api.contoso.com with your service domain URL. // For example, if the service URL is https://api.xyz.com/finance/expense?id=1234, // then replace https://api.contoso.com with https://api.xyz.com. ActionableMessageTokenValidationResult result = await validator.ValidateTokenAsync(bearerToken, "https://api.contoso.com"); if (!result.ValidationSucceeded) { if (result.Exception != null) { Trace.TraceError(result.Exception.ToString()); response.Message = result.Exception.Message; } response.IsError = true; context.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized; return(response); } // We have a valid token. We will verify the sender and the action performer. // You should replace the code below with your own validation logic. // In this example, we verify that the email is sent by [email protected] // and the action performer has to be someone with @contoso.com email. // // You should also return the CARD-ACTION-STATUS header in the response. // The value of the header will be displayed to the user. if (!string.Equals(result.Sender, @"*****@*****.**", StringComparison.OrdinalIgnoreCase) || !result.ActionPerformer.EndsWith("@contoso.com")) { response.IsError = true; response.Message = "Invalid sender or the action performer is not allowed."; context.OutgoingResponse.Headers.Add("CARD-ACTION-STATUS", "Invalid sender or the action performer is not allowed."); context.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden; return(response); } // Further business logic code here to process the expense report. context.OutgoingResponse.Headers.Add("CARD-ACTION-STATUS", "The survey was accepted."); return(response); }