public async Task <IActionResult> Post([FromBody] Job entity) { var filterRequestModel = new FilterRequestModel { CityId = entity.CityId.ToString(), CategoryId = entity.CategoryId.ToString(), EducationId = entity.EducationId.ToString(), Salary = entity.SalaryMin }; var result = await _jobService.Add(entity); if (result != Guid.Empty) { var currJob = await _jobService.GetById(result.ToString()); var users = await _filterService.GetUsers(filterRequestModel); if (users.Count() > 0) { foreach (var user in users) { //await _mailService.SendMailAsync(user.Username, user.Email, "aue"); await _notifyService.RefreshNotification(currJob, entity.RecruiterId.ToString()); //await _smsService.SendMailAsync(user.Number, "aue"); } } } return(Ok(result)); }
public IActionResult FindFlights([FromBody] FilterRequestModel requestModel) { var validresult = IsFilterValid(requestModel); if (validresult.IsValid) { //fetch flight data var flights = _flightBuider.GetFlights(); //filter flights that have not already departed based on provided departure date, if null use now var query = flights.Where(x => !x.Segments.Any(x => x.DepartureDate < (requestModel.DepartureDateStart ?? DateTime.Now))); //fliter flights that have arrival before departed dates, I assume these are invalid flights so we always want to filter these out query = query.Where(x => !x.Segments.Any(x => x.ArrivalDate < x.DepartureDate)); //flights that have not grounded longer than combined grounded hours range provide, default to 2 if not provided query = query.Where(x => x.Segments.Count > 1 ? ( x.Segments.Select((i, index) => { return(new { hours = x.Segments.Skip(index + 1).FirstOrDefault()?.DepartureDate.Subtract(i.ArrivalDate).TotalHours }); }).Select(x => x.hours).Sum() <= (requestModel.GroundedHours ?? 2) ) : true); validresult.Result = query.ToList(); return(Ok(validresult)); } return(BadRequest(validresult)); }
public void FindFlights_Invalid(int groundedHours, string expectedErrorCode, string expectedErrorMessage) { using var resources = new Resources(); var requestModel = new FilterRequestModel { DepartureDateStart = DateTime.Now, GroundedHours = groundedHours }; //When var result = resources.Controller.FindFlights(requestModel) as BadRequestObjectResult; //Then Assert.IsNotNull(result); Assert.IsTrue(result.StatusCode == 400); //Verify the validation result var validResult = result.Value as ValidationResult; Assert.IsNotNull(validResult); Assert.IsFalse(validResult.IsValid); var validationMessage = validResult.Messages[0]; Assert.AreEqual(expectedErrorCode, validationMessage.Code); Assert.AreEqual(expectedErrorMessage, validationMessage.MessageText); //verify the call to the FlightBuilder was not made resources.FlightBuilder.Verify(x => x.GetFlights(), Times.Never); resources.FlightBuilder.VerifyNoOtherCalls(); }
public void FindFlights() { using var resources = new Resources(); //Given var requestModel = new FilterRequestModel { DepartureDateStart = DateTime.Now, GroundedHours = 2 }; var expectedResult = new ValidationResult(); //setup the mocked api to return a validation result resources.ApiHelper.Setup(x => x.Process <ValidationResult>("api/Flight/FindFlights", It.Is <FilterRequestModel>(m => m.GroundedHours == requestModel.GroundedHours && m.DepartureDateStart == requestModel.DepartureDateStart), HttpMethod.Post)).Returns(expectedResult); //When var result = resources.Handler.GetFilteredFlights(requestModel); //Then Assert.IsNotNull(result); Assert.IsTrue(result.IsValid); //verify api call was made resources.ApiHelper.Verify(x => x.Process <ValidationResult>("api/Flight/FindFlights", It.Is <FilterRequestModel>(m => m.GroundedHours == requestModel.GroundedHours && m.DepartureDateStart == requestModel.DepartureDateStart), HttpMethod.Post), Times.Once); resources.ApiHelper.VerifyNoOtherCalls(); }
public async Task <IEnumerable <TempUser> > GetUsers(FilterRequestModel filterRequestModel) { if (!String.IsNullOrWhiteSpace(filterRequestModel.CityId)) { getUsers += @" and S.CityId = @cityId "; } if (!String.IsNullOrWhiteSpace(filterRequestModel.CategoryId)) { getUsers += @" and S.CategoryId = @categoryId "; } if (!String.IsNullOrWhiteSpace(filterRequestModel.EducationId)) { getUsers += @" and S.EducationId = @educationId "; } if (filterRequestModel.Salary != 0) { getUsers += @" and S.Salary= @salary "; } if (!String.IsNullOrWhiteSpace(filterRequestModel.UserId)) { getUsers += " and U.Id = @userId "; } else { getUsers += " and U.Id = S.UserId "; } var results = await _unitOfWork.GetConnection().QueryAsync <TempUser>(getUsers, filterRequestModel, _unitOfWork.GetTransaction()); return(results); }
public ListItemReportColumnFilterViewModel(ListReportColumnFilterViewModel listViewModel, FilterRequestModel filter) : base("Filter", filter) { // Inicializa las propiedades ListViewModel = listViewModel; Filter = filter; // Inicializa el viewModel InitViewModel(); }
/// <summary> /// Validate the Filter Request Model /// </summary> /// <param name="requestModel"></param> /// <returns></returns> private ValidationResult IsFilterValid(FilterRequestModel requestModel) { var validResult = new ValidationResult(); if (requestModel.GroundedHours <= 0) { validResult.Invalidate(Constants.FlightFilter.FilterInvalid_GroundedHours_Code, Constants.FlightFilter.FilterInvalid_GroundedHours_Message); } return(validResult); }
public async Task <IActionResult> Get( [FromQuery] FilterRequestModel model) { //sample: Id = '11c43ee8-b9d3-4e51-b73f-bd9dda66e29c' AND Date > '2019-11-05' AND Title LIKE 'Maggie Cruz' AND Count <= 133 var postQueryable = Db.Set <Post>(); var filteredPosts = await FilterProvider.Apply(postQueryable, model) .ToListAsync(); return(Ok(filteredPosts)); }
/// <summary> /// Execute convert input. /// </summary> /// <param name="request">RequestModel</param> /// <returns>DataModel</returns> private FilterDataModel Convert(FilterRequestModel request) { // Local variable declaration FilterDataModel inputObject = null; // Variable initialize inputObject = new FilterDataModel(); // Convert data input DataHelper.ConvertInput(request, inputObject); // Return value return(inputObject); }
/// <summary> /// Execute convert input. /// </summary> /// <param name="request">RequestModel</param> /// <returns>DataModel</returns> private FilterDataModel Convert(FilterRequestModel request) { // Local variable declaration FilterDataModel inputObject = null; // Variable initialize inputObject = new FilterDataModel(); // Convert data input DataHelper.ConvertInput(request, inputObject); // Return value return inputObject; }
public void FindFlights_Invalid() { using var resources = new Resources(); //Given var requestModel = new FilterRequestModel { DepartureDateStart = DateTime.Now, GroundedHours = 0 }; //setup the mocked api to return an invalid validation result var expectedResult = new ValidationResult { IsValid = false, Messages = new List <ValidationResultMessage> { new ValidationResultMessage { Code = "SomeCode", MessageText = "Some Message" } } }; resources.ApiHelper.Setup(x => x.Process <ValidationResult>("api/Flight/FindFlights", It.Is <FilterRequestModel>(m => m.GroundedHours == requestModel.GroundedHours && m.DepartureDateStart == requestModel.DepartureDateStart), HttpMethod.Post)).Returns(expectedResult); //When var result = resources.Handler.GetFilteredFlights(requestModel); //Then Assert.IsNotNull(result); Assert.IsFalse(result.IsValid); Assert.AreEqual(expectedResult.Messages, result.Messages); //verify api call was made resources.ApiHelper.Verify(x => x.Process <ValidationResult>("api/Flight/FindFlights", It.Is <FilterRequestModel>(m => m.GroundedHours == requestModel.GroundedHours && m.DepartureDateStart == requestModel.DepartureDateStart), HttpMethod.Post), Times.Once); resources.ApiHelper.VerifyNoOtherCalls(); }
/// <summary> /// Execute Flight Search /// </summary> /// <param name="apiHelper"></param> /// <param name="requestModel"></param> private static void ExecuteFlightSearch(IApiHelper apiHelper, FilterRequestModel requestModel) { var flightHandler = new FlightHandler(apiHelper); var flightResult = flightHandler.GetFilteredFlights(requestModel); if (flightResult.IsValid) { var flights = JsonConvert.DeserializeObject <List <Flight> >(flightResult.Result.ToString()); Console.WriteLine("--------------------------------------"); Console.WriteLine($"{flights.Count} flight(s) found...."); for (int i = 0; i < flights.Count; i++) { Console.WriteLine("--------------------------------------"); Console.WriteLine($"Flight {i + 1} Details:"); var segments = flights[i].Segments; for (int s = 0; s < segments.Count; s++) { Console.WriteLine("======================================"); Console.WriteLine($"Departure: {segments[s].DepartureDate.ToString("yyyy-MM-dd :HH:mm")}"); Console.WriteLine($"Arrival: {segments[s].ArrivalDate.ToString("yyyy-MM-dd :HH:mm")}"); Console.WriteLine("======================================"); if (s + 1 % 2 != 0) { Console.WriteLine(" __|__ "); Console.WriteLine(" --@--@--(_)--@--@-- "); } } } } else { Console.WriteLine("Invalid Flight Search....."); flightResult.Messages.ForEach(m => { Console.WriteLine(m.MessageText); }); } }
public FilterRequestBuilder(DimensionRequestBuilder builder, FilterRequestModel.ConditionType condition, FilterEvaluation mode) { // Obtiene los objetos Builder = builder; Filter = new FilterRequestModel { Condition = condition }; // Asigna el filtro a la solicitud al punto adecuado switch (mode) { case FilterEvaluation.Where: builder.Column.FiltersWhere.Add(Filter); break; case FilterEvaluation.Having: builder.Column.FiltersHaving.Add(Filter); break; } }
static void Main(string[] args) { //setup services and configuration var apiHelper = BuildServiceProvider().GetService <IApiHelper>(); var requestModel = new FilterRequestModel { DepartureDateStart = DateTime.Now, GroundedHours = 2 }; Console.WriteLine("Search flights with default criteria (today's date and 2 hours for the grounded range) (Y/N)?"); var response = Console.ReadLine(); switch (response.ToLower()) { case "y": //default flight filter search ExecuteFlightSearch(apiHelper, requestModel); break; case "n": //custom input Console.WriteLine($"Please enter grounded range:"); var groundedRange = 0.0; double.TryParse(Console.ReadLine(), out groundedRange); Console.WriteLine($"Please enter date (yyyy-MM-dd):"); var enteredDate = DateTime.Now; DateTime.TryParse(Console.ReadLine(), out enteredDate); requestModel.DepartureDateStart = enteredDate; requestModel.GroundedHours = groundedRange; ExecuteFlightSearch(apiHelper, requestModel); break; default: Console.WriteLine("Invalid Option"); break; } }
public async Task <Guid> SubscribeFilter(Filter filter, string userId) { var tmpList = filter.Filters as List <FilterRequestModel>; var tempFilterRequestModel = new FilterRequestModel { CategoryId = tmpList[0].CategoryId, CityId = tmpList[0].CityId, EducationId = tmpList[0].EducationId, Salary = tmpList[0].Salary, UserId = userId }; var tmpResult = await _filterQuery.GetUsers(tempFilterRequestModel) as List <TempUser>; if (tmpResult.Count > 0) { return(tmpResult[0].Id); } return(await _filterCommand.SubscribeFilter(filter, userId)); }
/// <summary> /// Execute processing. /// </summary> /// <param name="request">RequestModel</param> /// <returns>ResponseModel</returns> private FilterResponseModel Execute(FilterRequestModel request) { // Local variable declaration FilterResponseModel responseModel = null; FilterDataModel inputObject = null; FilterDataModel resultObject = null; // Variable initialize responseModel = new FilterResponseModel(); // Execute convert input. inputObject = Convert(request); // Check infomation Check(inputObject); // Get infomation resultObject = GetInfo(inputObject); // Execute convert ouput. responseModel = Convert(resultObject); return(responseModel); }
public async void TestServiceAsync() { string expected = "{\"version\":\"2.0\",\"totalItem\":2,\"perPage\":5,\"totalPageNumber\":1,\"currentPage\":1,\"FirstRowOnPage\":1,\"LastRowOnPage\":2,\"Profiles\":[{\"id\":1,\"name\":\"iFew\",\"about_us\":\"Hello World!\",\"add_datetime\":\"2019-01-16T11:59:59\"},{\"id\":2,\"name\":\"Chitpong\",\"about_us\":\"My Name is Chitpong\",\"add_datetime\":\"2019-01-16T12:00:00\"}]}"; FilterRequestModel querystring = new FilterRequestModel { Limit = "5", Page = "1" }; var _options = new DbContextOptionsBuilder <FunctionContext>().UseInMemoryDatabase("list_profile").Options; FunctionContext db_context = new FunctionContext(_options); db_context.Profiles.Add(new ProfileModel { id = 1, name = "iFew", about_us = "Hello World!", add_datetime = DateTime.Parse("2019-01-16 11:59:59") }); db_context.Profiles.Add(new ProfileModel { id = 2, name = "Chitpong", about_us = "My Name is Chitpong", add_datetime = DateTime.Parse("2019-01-16 12:00:00") }); db_context.SaveChanges(); ProfileService service = new ProfileService(db_context); var response = await service.ListProfileAsync(querystring); ListProfileModel responseBody = JsonConvert.DeserializeObject <ListProfileModel>(response.Body); Assert.Equal(200, response.StatusCode); Assert.Equal(expected, response.Body); Assert.Equal(2, responseBody.totalItem); }
[TestCase(3, 7, 0, -3, 2)] //expect 3 flights; 7 segments; days from range:0 ; departureDateDayRange: -3 for 3 days ago; grounded hour range: 2 public void FindFlights(int expectedFlights, int expectedSegments, int daysFromRange, int departureDateDayRange, double groundedHours) { using var resources = new Resources(); //Given var daysFromNow = DateTime.Now.AddDays(daysFromRange); //setup expected Data to be returned by the mocked interface var expectedFlightData = new List <Flight> { //standard flight with 1 segment TestHelper.CreateFlight(daysFromNow, daysFromNow.AddHours(2)), //standard flight with 2 segemets TestHelper.CreateFlight(daysFromNow, daysFromNow.AddHours(2), daysFromNow.AddHours(3), daysFromNow.AddHours(5)), //standard flight with 4 segemets and with the same arrival and departure dates TestHelper.CreateFlight(daysFromNow, daysFromNow.AddHours(2), daysFromNow.AddHours(3), daysFromNow.AddHours(5), daysFromNow, daysFromNow.AddHours(2), daysFromNow.AddHours(3), daysFromNow.AddHours(5)), // A flight that departs before it arrives TestHelper.CreateFlight(daysFromNow, daysFromNow.AddHours(-6)), // A flight with 1 segment and more than 2 hours ground time TestHelper.CreateFlight(daysFromNow, daysFromNow.AddHours(2), daysFromNow.AddHours(5), daysFromNow.AddHours(6)), // Another flight with 2 segemets and more than 2 hours ground time TestHelper.CreateFlight(daysFromNow, daysFromNow.AddHours(2), daysFromNow.AddHours(3), daysFromNow.AddHours(4), daysFromNow.AddHours(6), daysFromNow.AddHours(7)) }; //setup data to return resources.FlightBuilder.Setup(x => x.GetFlights()).Returns(expectedFlightData); var requestModel = new FilterRequestModel { DepartureDateStart = DateTime.Now.AddDays(departureDateDayRange), GroundedHours = groundedHours }; //When var result = resources.Controller.FindFlights(requestModel) as OkObjectResult; //Then Assert.IsNotNull(result); Assert.IsTrue(result.StatusCode == 200); //Verify the validation result var validResult = result.Value as ValidationResult; Assert.IsNotNull(validResult); Assert.IsTrue(validResult.IsValid); //Flights result var flights = validResult.Result as List <Flight>; var flightSegments = flights.SelectMany(x => x.Segments).ToList(); Assert.AreEqual(expectedFlights, flights.Count); Assert.AreEqual(expectedSegments, flightSegments.Count); //verify the call the the FlightBuilder Interface resources.FlightBuilder.Verify(x => x.GetFlights(), Times.Once); resources.FlightBuilder.VerifyNoOtherCalls(); }
public async Task <IEnumerable <TempUser> > GetUsers(FilterRequestModel filterRequestModel) { var result = await _filterRepository.GetUsers(filterRequestModel); return(result); }
/// <summary> /// Filter process. /// </summary> /// <param name="request">RequestModel</param> /// <returns>ResponseModel</returns> public FilterResponseModel Invoke(FilterRequestModel request) { var responseModel = Execute(request); return responseModel; }
/// <summary> /// Execute processing. /// </summary> /// <param name="request">RequestModel</param> /// <returns>ResponseModel</returns> private FilterResponseModel Execute(FilterRequestModel request) { // Local variable declaration FilterResponseModel responseModel = null; FilterDataModel inputObject = null; FilterDataModel resultObject = null; // Variable initialize responseModel = new FilterResponseModel(); // Execute convert input. inputObject = Convert(request); // Check infomation Check(inputObject); // Get infomation resultObject = GetInfo(inputObject); // Execute convert ouput. responseModel = Convert(resultObject); return responseModel; }
public async Task <ActionResult <IEnumerable <FilterResponseModel> > > GetFilteredUsers(FilterRequestModel model) { var userList = await _context.Users.Where(u => u.Name.StartsWith(model.Filter)).ToListAsync(); return(userList.Select(u => new FilterResponseModel() { Id = u.Id, Name = u.Name }).ToArray()); }
public ValidationResult GetFilteredFlights(FilterRequestModel requestModel) { return(_apiHelper.Process <ValidationResult>("api/Flight/FindFlights", requestModel, HttpMethod.Post)); }
/// <summary> /// Filter process. /// </summary> /// <param name="request">RequestModel</param> /// <returns>ResponseModel</returns> public FilterResponseModel Invoke(FilterRequestModel request) { var responseModel = Execute(request); return(responseModel); }