public (IEnumerable <TicketViewModel>, int) TicketFilter(TicketSearchModel search)
        {
            var query = Context.Tickets.Where(t =>
                                              (search.ticketIds.Count == 0 || search.ticketIds.Contains(t.Id)) &&
                                              (search.employeesIds.Count == 0 || search.employeesIds.Contains(t.UpdatedById.Value)) &&
                                              (search.statusIds.Count == 0 || search.statusIds.Contains(t.StatusId)) &&
                                              (search.SpecificDate == null || search.SpecificDate.Value.Date == t.CreatedAt.Date))
                        .Select(t => new TicketViewModel
            {
                Id                  = t.Id,
                CreateTime          = t.CreatedAt,
                TicketNumber        = t.TicketNumber,
                VisitorId           = t.CreatedById.Value,
                VisitorName         = t.CreatedBy.UserName,
                BranchId            = t.BranchDepartement.BranchId,
                BranchNameAR        = t.BranchDepartement.Branch.NameAR,
                BranchNameEN        = t.BranchDepartement.Branch.NameEN,
                DepartementId       = t.BranchDepartement.DepartementId,
                DepartementNameAR   = t.BranchDepartement.Departement.NameAR,
                DepartementNameEN   = t.BranchDepartement.Departement.NameEN,
                StatusId            = t.StatusId,
                StatusNameAR        = t.Status.NameAR,
                StatusNameEN        = t.Status.NameEN,
                BranchDepartementId = t.BranchDepartementId
            });
            var count = query.Count();
            var data  = query.OrderBy(c => c.Id).Skip((search.pageNumber - 1) * search.pageSize).Take(search.pageSize);

            return(data, count);
        }
Beispiel #2
0
        public TicketSearchResult FindFlights(TicketSearchModel searchCriteria)
        {
            var result = new TicketSearchResult();

            result.ToFlights = _flightRepository.GetAll().
                               Where(x => CompareDates(x.DepartureDate, searchCriteria.DepartureDate) &&
                                     x.CityToId == searchCriteria.CityToId &&
                                     x.CityFromId == searchCriteria.CityFromId &&
                                     x.BookedSeats + searchCriteria.NumberOfPassengers <= x.TotalSeats)
                               .OrderByDescending(x => x.DepartureDate)
                               .ToList();

            if (searchCriteria.IsRoundWay)
            {
                result.ReturnFlights = _flightRepository.GetAll().
                                       Where(x => CompareDates(x.DepartureDate, searchCriteria.BackDate.Value) &&
                                             x.CityToId == searchCriteria.CityFromId &&
                                             x.CityFromId == searchCriteria.CityToId &&
                                             x.BookedSeats + searchCriteria.NumberOfPassengers <= x.TotalSeats)
                                       .OrderByDescending(x => x.DepartureDate)
                                       .ToList();
            }

            return(result);
        }
        public ActionResult Search(TicketSearchModel model)
        {
            var search = Mapper.Map <TicketSearchQuery>(model);

            search.BuyerId = User.Identity.GetUserIdInt();
            return(PartialView("Partials/_Tickets", Mapper.Map <TicketResultViewModel>(_ticketsService.Where(search))));
        }
Beispiel #4
0
        public IResponse GetTicket(TicketSearchModel search)
        {
            var(result, totalRows)  = UOW.Tickets.TicketFilter(search);
            response.pagesTotalRows = totalRows;
            float all_pages = (float)totalRows / search.pageSize;

            response.pagesTotalNumber = (int)Math.Ceiling(all_pages);
            response.pageSize         = search.pageSize;
            response.pageNumber       = search.pageNumber;
            response.data             = result;
            return(response);
        }
Beispiel #5
0
 public ActionResult Search()
 {
     log.Debug("Begin Search()");
     try
     {
         var result = new TicketSearchModel(ServicesProxy);
         log.Debug(string.Format("{0} new TicketSearchModel: {1}", result.OK ? "Call" : "Fail", result.Errors != null && result.Errors.Count > 0 ? result.Errors.Aggregate((i, j) => i + "." + j) : null));
         return(View(result));
     }
     finally
     {
         log.Debug("End Search()");
     }
 }
Beispiel #6
0
        public void FindFlights_RoundWayAndFlightsExist_ReturnToAndFromFlights()
        {
            //Arrange
            var searchCriteria = new TicketSearchModel()
            {
                IsRoundWay         = true,
                DepartureDate      = DateTime.Now.AddDays(1),
                BackDate           = DateTime.Now.AddDays(3),
                CityFromId         = MoscowCityId,
                CityToId           = LondonCityId,
                NumberOfPassengers = 1
            };


            //Act
            var actualResult = _ticketService.FindFlights(searchCriteria);

            //Assert
            Assert.AreEqual(1, actualResult.ToFlights.Count);
            Assert.AreEqual(1, actualResult.ReturnFlights.Count);
        }
Beispiel #7
0
        public ActionResult GetTickets([FromQuery] TicketSearchModel search)
        {
            var response = service.GetTicket(search);

            return(Ok(response));
        }