public IActionResult BookedTicketList([FromBodyAttribute] BookedTicketFilter filter)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             return(Ok(new Application_ResponseWrapper()
             {
                 ResponseCode = "1000", ResponseMessage = "Invalid model", Status = "failed"
             }));
         }
         using (IApplicationProcessor _processor = new ApplicationProcessor(_applicationDbContext))
         {
             string pagesSize = _processor.GetApplicationSettingByKey("displayList_Count");
             if (!string.IsNullOrEmpty(pagesSize) || int.Parse(Convert.ToString(pagesSize)) <= 0)
             {
                 filter.pages = int.Parse(pagesSize);
             }
             else
             {
                 _errorRepository.Add(new Application_Errors
                 {
                     applicationID    = 1,
                     errorDescription = "Page size value not found.",
                     errorType        = "Log",
                     logDate          = System.DateTime.Now,
                     pageID           = 0,
                     Source           = "Mpower/Rail/History/Ticket/List"
                 });
                 _errorRepository.Commit();
                 return(Ok(new Application_ResponseWrapper()
                 {
                     ResponseCode = "1013", ResponseMessage = "Page Size is not found!", Status = "failed"
                 }));
             }
         }
         using (ITicketProcessor _ticketProcessor = new TicketProcessor(_applicationDbContext))
         {
             var list = _ticketProcessor.BookedTicketList(filter);
             if (list == null || list.Count == 0)
             {
                 return(Ok(new Application_ResponseWrapper()
                 {
                     ResponseCode = "1004", ResponseMessage = "Record not found", Status = "failed"
                 }));
             }
             return(Ok(new Application_ResponseWrapper()
             {
                 ResponseCode = "0", ResponseMessage = "success", Status = "success", ResponseResult = list
             }));
         }
     }
     catch (Exception ex)
     {
         _errorRepository.
         Add(new Application_Errors
         {
             applicationID    = 1,
             errorDescription = ex.StackTrace,
             errorType        = "Exception",
             logDate          = System.DateTime.Now,
             pageID           = 0,
             Source           = "Mpower/Rail/History/Ticket/List"
         });
         _errorRepository.Commit();
         return(Ok(new Application_ResponseWrapper()
         {
             ResponseCode = "1005", ResponseMessage = "An error has occured", Status = "failed"
         }));
     }
 }
Example #2
0
        /// <summary>
        //  This Method will return the Booked ticket list.
        /// </summary>
        /// <param name="BookedTicketFilter">Class for ticket filtering.</param>
        /// <returns>this will return the booked ticket view model object</returns>
        public List <BookedTicketViewModel> BookedTicketList(BookedTicketFilter filter)
        {
            var ticketOrdersList = _ticketOrdersRepository.FindBy(x => x.loginAccountNo == filter.agentAccountNo && x.ticketStatus == filter.ticketStatus);
            var bookedTicketList = _bookedTicketsRepository.GetAll();
            var ticketStatus     = _ticketStatusRepository.GetAll();

            DateTime defaultDate = Convert.ToDateTime("01/01/1900");

            if (!ticketOrdersList.Any() || !bookedTicketList.Any() || !ticketStatus.Any())
            {
                return(null);
            }

            var ticketList = (from t in ticketOrdersList.ToList()
                              join b in bookedTicketList.ToList() on t.Id equals b.ticketOrderId
                              join s in ticketStatus.ToList() on t.ticketStatus equals s.Id
                              select new BookedTicketViewModel
            {
                Id = b.Id,
                ticketOrderId = t.Id,
                irctcTxnNumber = t.irctcTxnNumber,
                ticketNumber = b.ticketNumber,
                pnrNumber = b.pnrNumber,
                sourceStation = t.sourceStation,
                destStation = t.destStation,
                journeyDay = t.journeyDay,
                journeyMonth = t.journeyMonth,
                journeyYear = t.journeyYear,
                bookedOn = b.bookedOn,
                status = s.shortName
            }).AsQueryable();

            if (!string.IsNullOrEmpty(filter.pnr))
            {
                ticketList = ticketList.Where(x => x.pnrNumber == filter.pnr);
            }

            if (!string.IsNullOrEmpty(filter.fromStation))
            {
                ticketList = ticketList.Where(x => x.sourceStation == filter.fromStation);
            }

            if (!string.IsNullOrEmpty(filter.toStation))
            {
                ticketList = ticketList.Where(x => x.destStation == filter.toStation);
            }

            if (!string.IsNullOrEmpty(filter.ticketNumber))
            {
                ticketList = ticketList.Where(x => x.ticketNumber == filter.ticketNumber);
            }

            if (filter.dateOfJourney != defaultDate)
            {
                ticketList = ticketList.Where(x => x.journeyDay == filter.dateOfJourney.Day &&
                                              x.journeyMonth == filter.dateOfJourney.Month && x.journeyYear == filter.dateOfJourney.Year);
            }

            ticketList.Skip((filter.pageIndex - 1) * filter.pages)
            .Take(filter.pages);

            return(ticketList.ToList());
        }