예제 #1
0
        public TicketDataTable GetBoughtTickets(string param, int page, int pageSize)
        {
            param = param ?? "";
            var boughtTickets = _ticketRepository.GetAllQueryable()
                                .Where(t => t.Deleted == false)
                                .Where(t => t.TicketCode.ToLower().Contains(param.ToLower()))
                                .Where(t => t.Status == Core.Enum.TicketStatus.Bought)
                                .Skip((page - 1) * pageSize).Take(pageSize).ToList();

            foreach (var bt in boughtTickets)
            {
                if (bt.ExpiredDateTimeUTC <= DateTime.UtcNow)
                {
                    bt.Status = 0;
                }
            }
            var totalBoughtTickets = _ticketRepository.GetAllQueryable()
                                     .Where(t => t.Deleted == false)
                                     .Where(t => t.TicketCode.ToLower().Contains(param.ToLower()))
                                     .Where(t => t.Status == Core.Enum.TicketStatus.Bought).Count();
            var ticketRowViewModels = _mapper.Map <List <Ticket>, List <TicketRowViewModel> >(boughtTickets);

            var ticketDataTable = new TicketDataTable()
            {
                Data  = ticketRowViewModels,
                Total = totalBoughtTickets
            };

            return(ticketDataTable);
        }
예제 #2
0
        public TicketDataTable GetCompletedTickets(string param, int page, int pageSize)
        {
            param = param ?? "";
            var completedTickets = _ticketRepository.GetAllQueryable()
                                   .Where(t => t.TicketCode.ToLower().Contains(param.ToLower()))
                                   .Where(t => t.Status == TicketStatus.Completed || t.Status == TicketStatus.RenamedFail)
                                   .OrderByDescending(t => t.UpdatedAtUTC)
                                   .Skip((page - 1) * pageSize).Take(pageSize).ToList();
            var totalCompletedTickets = _ticketRepository.GetAllQueryable()
                                        .Where(t => t.TicketCode.ToLower().Contains(param.ToLower()))
                                        .Where(t => t.Status == TicketStatus.Completed || t.Status == TicketStatus.RenamedFail).Count();
            var ticketRowViewModels = _mapper.Map <List <Ticket>, List <TicketRowViewModel> >(completedTickets);

            var ticketDataTable = new TicketDataTable()
            {
                Data  = ticketRowViewModels,
                Total = totalCompletedTickets
            };

            return(ticketDataTable);
        }
예제 #3
0
        public TicketDataTable GetReplaceTickets(int routeTicketId)
        {
            var routeTickets = _routeTicketRepository.Get(
                x => x.Deleted == false && x.Id == routeTicketId &&
                x.Route.Status == RouteStatus.Bought)
                               .Route.RouteTickets.OrderBy(x => x.Order);

            var ticketDataTable = new TicketDataTable();

            if (routeTickets.Count() == 2)
            {
                var firstTicket    = routeTickets.FirstOrDefault().Ticket;
                var lastTicket     = routeTickets.LastOrDefault().Ticket;
                var replaceTickets = new List <Ticket>();
                if (firstTicket.Status == TicketStatus.RenamedFail)
                {
                    var lastTicketDepartureDatetime = lastTicket.DepartureDateTimeUTC;
                    replaceTickets = _ticketRepository.GetAllQueryable()
                                     .Where(x => x.Deleted == false && x.ExpiredDateTimeUTC > DateTime.UtcNow && x.Status == TicketStatus.Valid)
                                     .Where(x => x.ArrivalDateTimeUTC <= lastTicketDepartureDatetime && x.SellingPrice <= firstTicket.SellingPrice).ToList();
                }
                else
                {
                    var firstArrivalDateTime = firstTicket.ArrivalDateTimeUTC;
                    replaceTickets = _ticketRepository.GetAllQueryable()
                                     .Where(x => x.Deleted == false && x.ExpiredDateTimeUTC > DateTime.UtcNow && x.Status == TicketStatus.Valid)
                                     .Where(x => x.DepartureDateTimeUTC >= firstArrivalDateTime && x.SellingPrice <= lastTicket.SellingPrice).ToList();
                }

                var replaceTicketVms = _mapper.Map <List <Ticket>, List <TicketRowViewModel> >(replaceTickets);
                ticketDataTable.Data  = replaceTicketVms;
                ticketDataTable.Total = replaceTickets.Count();
            }
            else if (routeTickets.Count() == 3)
            {
            }

            return(ticketDataTable);
        }
예제 #4
0
        public TicketDataTable GetRenamedTickets(string param, int page, int pageSize)
        {
            param = param ?? "";
            var renamedTickets = _ticketRepository.GetAllQueryable()
                                 .Where(t => t.Deleted == false)
                                 .Where(t => t.TicketCode.ToLower().Contains(param.ToLower()))
                                 .Where(t => t.Status == Core.Enum.TicketStatus.Renamed)
                                 .Skip((page - 1) * pageSize).Take(pageSize).ToList();

            var totalRenamedTickets = _ticketRepository.GetAllQueryable()
                                      .Where(t => t.Deleted == false)
                                      .Where(t => t.TicketCode.ToLower().Contains(param.ToLower()))
                                      .Where(t => t.Status == Core.Enum.TicketStatus.Renamed).Count();
            var ticketRowViewModels = _mapper.Map <List <Ticket>, List <TicketRowViewModel> >(renamedTickets);

            var ticketDataTable = new TicketDataTable()
            {
                Data  = ticketRowViewModels,
                Total = totalRenamedTickets
            };

            return(ticketDataTable);
        }