Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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();
        }
Exemple #5
0
        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();
 }
Exemple #7
0
        /// <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);
        }
Exemple #8
0
        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));
        }
Exemple #9
0
        /// <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);
        }
Exemple #10
0
        /// <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);
                });
            }
        }
Exemple #13
0
        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;
            }
        }
Exemple #15
0
        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));
        }
Exemple #16
0
        /// <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);
        }
Exemple #17
0
        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);
        }
Exemple #18
0
        [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);
        }
Exemple #20
0
 /// <summary>
 /// Filter process.
 /// </summary>
 /// <param name="request">RequestModel</param>
 /// <returns>ResponseModel</returns>
 public FilterResponseModel Invoke(FilterRequestModel request)
 {
     var responseModel = Execute(request);
     return responseModel;
 }
Exemple #21
0
        /// <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));
 }
Exemple #24
0
        /// <summary>
        /// Filter process.
        /// </summary>
        /// <param name="request">RequestModel</param>
        /// <returns>ResponseModel</returns>
        public FilterResponseModel Invoke(FilterRequestModel request)
        {
            var responseModel = Execute(request);

            return(responseModel);
        }