public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] GetAllJobsByFilterRequest req, CancellationToken cancellationToken) { try { _logger.LogInformation("GetAllJobsByFilter started"); GetAllJobsByFilterResponse response = await _mediator.Send(req, cancellationToken); return(new OkObjectResult(ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> .CreateSuccessfulResponse(response))); } catch (PostCodeException exc) { _logger.LogErrorAndNotifyNewRelic($"{req.Postcode} is an invalid postcode", exc); return(new ObjectResult(ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> .CreateUnsuccessfulResponse(RequestServiceErrorCode.ValidationError, "Invalid Postcode")) { StatusCode = StatusCodes.Status400BadRequest }); } catch (InvalidFilterException exc) { _logger.LogErrorAndNotifyNewRelic($"invalid filter", exc); return(new ObjectResult(ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> .CreateUnsuccessfulResponse(RequestServiceErrorCode.ValidationError, "Invalid filter combination")) { StatusCode = StatusCodes.Status400BadRequest }); } catch (Exception exc) { _logger.LogErrorAndNotifyNewRelic("Exception occured in GetAllJobsByFilter", exc); return(new ObjectResult(ResponseWrapper <GetAllJobsByFilterResponse, RequestServiceErrorCode> .CreateUnsuccessfulResponse(RequestServiceErrorCode.InternalServerError, "Internal Error")) { StatusCode = StatusCodes.Status500InternalServerError }); } }
public async Task PrepareTemplateData_ReturnsNullAsNoJobsReturned() { int? recipientUserId = 1; int? jobId = null; int? groupId = null; int? requestId = null; string templateName = string.Empty; _getUserGroupsResponse = new GetUserGroupsResponse() { Groups = new List <int>() { 1 } }; _user = new User() { ID = 1, SupportActivities = new List <SupportActivities>() { SupportActivities.Shopping }, PostalCode = "NG1 6DQ" }; _getAllJobsByFilterResponse = new GetAllJobsByFilterResponse() { JobSummaries = new List <JobSummary>(), ShiftJobs = new List <ShiftJob>() }; var result = await _classUnderTest.PrepareTemplateData(Guid.NewGuid(), recipientUserId, jobId, groupId, requestId, null, templateName); Assert.AreEqual(null, result); }
public async Task PrepareTemplateData_Returns() { int? recipientUserId = 1; int? jobId = null; int? groupId = null; int? requestId = null; string templateName = string.Empty; _getUserGroupsResponse = new GetUserGroupsResponse() { Groups = new List <int>() { 1 } }; _user = new User() { ID = 1, SupportActivities = new List <SupportActivities>() { SupportActivities.Shopping }, PostalCode = "NG1 6DQ", SupportRadiusMiles = 20, UserPersonalDetails = new UserPersonalDetails() { FirstName = "FIRST NAME", EmailAddress = "EMAIL ADDRESS", DisplayName = "DISPLAY NAME" } }; List <JobSummary> jobSummaries = new List <JobSummary>(); jobSummaries.Add(new JobSummary() { RequestID = 1, DistanceInMiles = 1, SupportActivity = SupportActivities.Shopping, RequestType = RequestType.Task }); jobSummaries.Add(new JobSummary() { RequestID = 2, DistanceInMiles = 2, SupportActivity = SupportActivities.Shopping, RequestType = RequestType.Task }); jobSummaries.Add(new JobSummary() { RequestID = 3, DistanceInMiles = 2, SupportActivity = SupportActivities.CheckingIn, RequestType = RequestType.Task }); _getPostcodeCoordinatesResponse = new GetPostcodeCoordinatesResponse() { PostcodeCoordinates = new List <PostcodeCoordinate>() { new PostcodeCoordinate() { Postcode = "DE23 6NY", Latitude = 1d, Longitude = 1d } } }; _getAllJobsByFilterResponse = new GetAllJobsByFilterResponse() { JobSummaries = jobSummaries, ShiftJobs = new List <ShiftJob>() }; //_filteredJobs = jobSummaries; var criteriaJobs = jobSummaries.Where(x => _user.SupportActivities.Contains(x.SupportActivity) && x.DistanceInMiles < _user.SupportRadiusMiles); var otherJobs = jobSummaries.Where(x => !criteriaJobs.Contains(x)); var otherJobsStats = otherJobs.GroupBy(x => x.SupportActivity, x => x.DueDate, (activity, dueDate) => new { Key = activity, Count = dueDate.Count(), Min = dueDate.Min() }); otherJobsStats = otherJobsStats.OrderByDescending(x => x.Count); var result = await _classUnderTest.PrepareTemplateData(Guid.NewGuid(), recipientUserId, jobId, groupId, requestId, null, templateName); DailyDigestData ddd = (DailyDigestData)result.BaseDynamicData; Assert.AreEqual(criteriaJobs.Count(), ddd.ChosenRequestTasks); Assert.AreEqual(otherJobs.Count() > 0, ddd.OtherRequestTasks); }
public async Task PrepareTemplateData_ReturnsEmailBuildDataAsThereAreNoChosenJobs() { int? recipientUserId = 1; int? jobId = null; int? groupId = null; int? requestId = null; string templateName = string.Empty; _getUserGroupsResponse = new GetUserGroupsResponse() { Groups = new List <int>() { 1 } }; _user = new User() { ID = 1, SupportActivities = new List <SupportActivities>() { SupportActivities.Shopping }, PostalCode = "NG1 6DQ", SupportRadiusMiles = 2, UserPersonalDetails = new UserPersonalDetails() { FirstName = "FIRST NAME", EmailAddress = "EMAIL ADDRESS", DisplayName = "DISPLAY NAME" } }; List <JobSummary> jobSummaries = new List <JobSummary>(); jobSummaries.Add(new JobSummary() { DistanceInMiles = 2, SupportActivity = SupportActivities.CheckingIn, RequestType = RequestType.Task }); _getAllJobsByFilterResponse = new GetAllJobsByFilterResponse() { JobSummaries = jobSummaries, ShiftJobs = new List <ShiftJob>() { new ShiftJob() { SupportActivity = SupportActivities.VaccineSupport, StartDate = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc), ShiftLength = 240, DistanceInMiles = 2 } } }; _getPostcodeCoordinatesResponse = new GetPostcodeCoordinatesResponse() { PostcodeCoordinates = new List <PostcodeCoordinate>() { new PostcodeCoordinate() { Postcode = "DE23 6NY", Latitude = 1d, Longitude = 1d } } }; var chosenJobCount = jobSummaries.Count(x => _user.SupportActivities.Contains(x.SupportActivity) && x.DistanceInMiles < _user.SupportRadiusMiles); var result = await _classUnderTest.PrepareTemplateData(Guid.NewGuid(), recipientUserId, jobId, groupId, requestId, null, templateName); Assert.AreEqual(null, result); }
public async Task PrepareTemplateData_ReturnsEmailBuildDataAsThereAreChosenJobs() { int? recipientUserId = 1; int? jobId = null; int? groupId = null; int? requestId = null; string templateName = string.Empty; _getUserGroupsResponse = new GetUserGroupsResponse() { Groups = new List <int>() { 1 } }; _user = new User() { ID = 1, SupportActivities = new List <SupportActivities>() { SupportActivities.Shopping }, PostalCode = "NG1 6DQ", SupportRadiusMiles = 20, UserPersonalDetails = new UserPersonalDetails() { FirstName = "FIRST NAME", EmailAddress = "EMAIL ADDRESS", DisplayName = "DISPLAY NAME" } }; List <JobSummary> jobSummaries = new List <JobSummary>(); jobSummaries.Add(new JobSummary() { RequestID = 1, DistanceInMiles = 1, SupportActivity = SupportActivities.Shopping }); jobSummaries.Add(new JobSummary() { RequestID = 2, DistanceInMiles = 2, SupportActivity = SupportActivities.Shopping }); jobSummaries.Add(new JobSummary() { RequestID = 3, DistanceInMiles = 2, SupportActivity = SupportActivities.CheckingIn }); _getAllJobsByFilterResponse = new GetAllJobsByFilterResponse() { JobSummaries = jobSummaries, ShiftJobs = new List <ShiftJob>() }; var chosenJobCount = jobSummaries.Count(x => _user.SupportActivities.Contains(x.SupportActivity) && x.DistanceInMiles < _user.SupportRadiusMiles); var result = await _classUnderTest.PrepareTemplateData(Guid.NewGuid(), recipientUserId, jobId, groupId, requestId, null, templateName); DailyDigestData ddd = (DailyDigestData)result.BaseDynamicData; Assert.AreEqual(chosenJobCount, ddd.ChosenRequestTasks); }