Exemple #1
0
        public MyEventsView GenerateMyEvents(Customer customer, string venueName = null)
        {
            var myEventsView = new MyEventsView();

            if (customer == null)
            {
                return(myEventsView);
            }

            var concertTicketsList = ConcertTicketDbContext.ReturnPurchasedTicketsByCustomerId(customer.CustomerId);
            var venuesList         = VenuesDbContext.GetVenues();
            var concertsList       = new List <Concert>(ConcertDbContext.GetConcerts());
            var ticketLevelsList   = ConcertTicketDbContext.GetTicketLevels();

            foreach (var ticket in concertTicketsList)
            {
                var concert = concertsList.Find(c => c.ConcertId.Equals(ticket.ConcertId));

                var tempTicket = new PurchasedTicket(
                    concert.Performer.ShortName,
                    concert.ConcertId,
                    venuesList.Find(v => v.VenueId.Equals(concert.VenueId)).VenueName,
                    1,
                    Convert.ToInt32(ticketLevelsList.Find(l => l.TicketLevelId.Equals(ticket.TicketLevelId)).TicketPrice).ToString(),
                    "N/A",
                    concert.ConcertDate,
                    ticket.ConcertId,
                    concert.VenueId
                    );

                switch (Convert.ToInt32(tempTicket.SectionName))
                {
                case 55:
                    tempTicket.SectionName = "219-221";
                    break;

                case 60:
                    tempTicket.SectionName = "218-214";
                    break;

                case 65:
                    tempTicket.SectionName = "222-226";
                    break;

                case 70:
                    tempTicket.SectionName = "210-213";
                    break;

                case 75:
                    tempTicket.SectionName = "201-204";
                    break;

                case 80:
                    tempTicket.SectionName = "114-119";
                    break;

                case 85:
                    tempTicket.SectionName = "120-126";
                    break;

                case 90:
                    tempTicket.SectionName = "104-110";
                    break;

                case 95:
                    tempTicket.SectionName = "111-113";
                    break;

                case 100:
                    tempTicket.SectionName = "101-103";
                    break;
                }

                if (myEventsView.PurchasedTickets.Exists(x => x.ConcertId == ticket.ConcertId && x.SectionName == tempTicket.SectionName))
                {
                    var index = myEventsView.PurchasedTickets.FindIndex(x => x.ConcertId == ticket.ConcertId && x.SectionName == tempTicket.SectionName);
                    myEventsView.PurchasedTickets[index].TicketQuantity++;
                }
                else
                {
                    myEventsView.PurchasedTickets.Add(tempTicket);
                }

                // Sort all events by date
                if (myEventsView.PurchasedTickets != null && myEventsView.PurchasedTickets.Count > 0)
                {
                    myEventsView.PurchasedTickets.Sort((a, b) => a.EventDateTime.CompareTo(b.EventDateTime));
                }
            }

            return(myEventsView);
        }