示例#1
0
        private PlayerPanel GetPlayerPanel(int seat)
        {
            // 映射
            int uiSeat = SeatHelper.MappingToView(LocalPlayerComponent.Instance.LocalPlayerSeatIndex, seat, this.playerPanels.Length);

            return(this.playerPanels[uiSeat]);
        }
示例#2
0
        public ActionResult Edit(int TicketID)
        {
            Ticket ticket = db.Tickets.Find(TicketID);

            if (ticket == null)
            {
                return(HttpNotFound());
            }
            if (User.IsInRole("Manager") || User.IsInRole("Employee"))
            {
                ViewBag.AllSeatsWithName = SeatHelper.FindAvailableSeatsForEdit(ticket.Showing.Tickets, User.Identity.GetUserId());
                return(View(ticket));
            }
            else
            {
                String UserID = User.Identity.GetUserId();
                if (ticket.Order.AppUser.Id == UserID)
                {
                    ViewBag.AllSeatsWithName = SeatHelper.FindAvailableSeatsForEdit(ticket.Showing.Tickets, User.Identity.GetUserId());
                    return(View(ticket));
                }
                else
                {
                    return(View("Error", new string[] { "This is not your ticket!!" }));
                }
            }
        }
示例#3
0
        public SelectList GetAllTicketSeats(int SelectedShowing)
        {
            Showing       showing  = db.Showings.Find(SelectedShowing);
            List <Ticket> tickets  = db.Tickets.Where(t => t.Order.Orderstatus == OrderStatus.Completed && t.Showing.ShowingID == showing.ShowingID).ToList();
            SelectList    selSeats = SeatHelper.FindAvailableSeats(tickets);

            return(selSeats);
        }
示例#4
0
        public async Task LoadDataAsync()
        {
            Seats.Clear();
            var data = await _flightService.GetSeatsAsync();

            foreach (var item in data)
            {
                Seats.Add(item);
            }
            await Task.Run(() =>
            {
                Chairs = SeatHelper.GetChairs(GetAmountOfChairs());
                Rows   = SeatHelper.GetRows(GetAmountOfRows());
            });
        }
示例#5
0
        public void TestInverseMapping1()
        {
            int val = SeatHelper.InverseMapping(2, 1, 4);

            Assert.AreEqual(val, 3);

            val = SeatHelper.InverseMapping(3, 1, 4);
            Assert.AreEqual(val, 0);

            val = SeatHelper.InverseMapping(3, 3, 4);
            Assert.AreEqual(val, 2);

            val = SeatHelper.InverseMapping(3, 0, 4);
            Assert.AreEqual(val, 3);
        }
示例#6
0
        public void TestInverseMapping()
        {
            // 2
            int val = SeatHelper.InverseMapping(1, 1, 4);

            Assert.AreEqual(val, 2);

            val = SeatHelper.InverseMapping(1, 2, 4);
            Assert.AreEqual(val, 3);

            val = SeatHelper.InverseMapping(1, 3, 4);
            Assert.AreEqual(val, 0);

            val = SeatHelper.InverseMapping(1, 0, 4);
            Assert.AreEqual(val, 1);
        }
示例#7
0
        public ActionResult Create(int ShowingID)
        {
            Showing show = db.Showings.Find(ShowingID);

            Ticket tic = new Ticket();

            tic.Showing = show;

            AppUser user        = db.Users.Find(User.Identity.GetUserId());
            Decimal TicketPrice = Utilities.GenerateTicketPrice.GetTicketPrice(show.StartTime);


            if (show.SpecialEventStatus == SpecialEvent.NotSpecial)
            {
                //sets senior citizen discount
                //TODO: Add logic for only allowing discount for 2 tickets per transaction
                if ((DateTime.Now.Year - user.Birthday.Year) >= 60)
                {
                    TicketPrice           = TicketPrice - 2;
                    ViewBag.SeniorCitizen = "$2 Senior Citizen Discount Applied";
                }
                else
                {
                    ViewBag.SeniorCitizen = "No Discount";
                }

                //vars for determining time between now and showing start time
                TimeSpan TimeBetween = (show.StartTime - DateTime.Now);

                //sets discount if ticket is purchased 48 hours in advance
                if ((TimeBetween.TotalHours >= 48))
                {
                    TicketPrice     = TicketPrice - 1;
                    ViewBag.Advance = "$1 Discount for Purchasing Early";
                }
                else
                {
                    ViewBag.Advance = "No Discount";
                }
            }

            tic.TicketPrice = TicketPrice;

            ViewBag.AllSeats = SeatHelper.FindAvailableSeats(show.Tickets, User.Identity.GetUserId());
            return(View(tic));
        }
示例#8
0
        public void TestMapping()
        {
            int count    = 4;
            int selfSeat = 1;

            // 3
            int val = SeatHelper.MappingToView(selfSeat, 0, count);

            Assert.AreEqual(val, 3);

            // 0
            val = SeatHelper.MappingToView(selfSeat, 1, count);
            Assert.AreEqual(val, 0);

            // 1
            val = SeatHelper.MappingToView(selfSeat, 2, count);
            Assert.AreEqual(val, 1);

            // 2
            val = SeatHelper.MappingToView(selfSeat, 3, count);
            Assert.AreEqual(val, 2);
        }
示例#9
0
 public void GetMaxSeatIdTest(string input, int expected)
 {
     Assert.Equal(expected, SeatHelper.GetMaxSeatId(input));
 }
示例#10
0
        public ActionResult Create([Bind(Include = "TicketID,Seat,TicketPrice")] Ticket tic, Int32 ShowingID, Int32 SelectedSeat)
        {
            Showing show = db.Showings.Find(ShowingID);

            tic.Showing = show;
            AppUser user = db.Users.Find(User.Identity.GetUserId()); //TODO: make sure this is assigned correctly

            //clear existing errors - we know there is no seat
            ModelState.Clear();

            //Add the logic to see what seat they picked
            List <Seat> AllSeats = SeatHelper.GetAllSeats();
            Seat        seat     = AllSeats.FirstOrDefault(s => s.SeatID == SelectedSeat);

            tic.Seat = seat.SeatName;



            //create logic that will not allow overlapping tickets
            List <Ticket> BoughtTickets = db.Tickets.Where(t => t.Order.AppUser.Id == user.Id).ToList();

            foreach (Ticket t in BoughtTickets)
            {
                if ((!(t.Showing.ShowingID == ShowingID)) && (t.Showing.StartTime.Day == tic.Showing.StartTime.Day))
                {
                    if (t.Showing.StartTime.Add(t.Showing.EndTime - t.Showing.StartTime) > tic.Showing.StartTime && (tic.Showing.EndTime > t.Showing.StartTime))
                    {
                        //ViewBag.OverlappingTicketMessage = "Error: Overlapping Movies. Select another showing.";
                        return(View("Error", new string[] { "Cannot buy overlapping Tickets!!" }));
                    }
                }
            }
            //Order LastOrder = db.Orders.LastOrDefault(o => o.AppUser.Id == UserId);
            TimeSpan eighteenYears = new TimeSpan(24 * 365 * 18, 0, 0);

            if ((DateTime.Now - user.Birthday) < eighteenYears)
            {
                if (tic.Showing.Movie.MPAARating == MPAARating.R || tic.Showing.Movie.MPAARating == MPAARating.NC17)
                {
                    return(View("Error", new string[] { "Need to be 18 years old to see the Movie!!" }));
                }
            }


            /////////////////////////

            //double-check everything is okay now that we've added seat
            ValidateModel(tic);

            //*******  Shouldn't need this section, right? ************
            Decimal TicketPrice = Utilities.GenerateTicketPrice.GetTicketPrice(show.StartTime);

            if (show.SpecialEventStatus == SpecialEvent.NotSpecial)
            {
                //sets senior citizen discount
                //TODO: Add logic for only allowing discount for 2 tickets per transaction
                if ((DateTime.Now.Year - user.Birthday.Year) >= 60)
                {
                    TicketPrice = TicketPrice - 2;
                    tic.SeniorCitizenDiscount = "$2 Senior Citizen Discount Applied";
                }
                else
                {
                    tic.SeniorCitizenDiscount = "No Discount";
                }

                //vars for determining time between now and showing start time
                TimeSpan TimeBetween = (show.StartTime - DateTime.Now);

                //sets discount if ticket is purchased 48 hours in advance
                if ((TimeBetween.TotalHours >= 48))
                {
                    TicketPrice       = TicketPrice - 1;
                    tic.EarlyDiscount = "$1 Discount for Purchasing Early";
                }
                else
                {
                    tic.EarlyDiscount = "No Discount";
                }
            }

            tic.TicketPrice = TicketPrice;

            // ********************************************************

            if (ModelState.IsValid)
            {
                db.Tickets.Add(tic);
                db.SaveChanges();
                String UserId = User.Identity.GetUserId();

                //These six lines replace the next commented out line (Order LastOrder...)
                List <Order> TempOrdersList = db.Orders.Where(o => o.AppUser.Id == UserId).ToList();
                Order        LastOrder;
                if (TempOrdersList.Count() != 0)
                {
                    LastOrder = TempOrdersList.Last();
                }
                else
                {
                    LastOrder = null;
                }



                //Redirects the user to Orders/Create if the order is null or completed
                if (LastOrder == null || LastOrder.Status == OrderStatus.Complete || LastOrder.Status == OrderStatus.Cancelled)
                {
                    return(RedirectToAction("Create", "Orders", new { TicketID = tic.TicketID }));
                }

                //Redirects the user to Orders/Details if the order has not been completed (they are adding more tickets to the order)
                else
                {
                    LastOrder.Tickets.Add(tic);
                    db.SaveChanges();
                    return(RedirectToAction("Details", "Orders", new { OrderID = LastOrder.OrderID }));
                }
            }

            ViewBag.AllSeats = SeatHelper.FindAvailableSeats(tic.Showing.Tickets, User.Identity.GetUserId());
            return(View(tic));
        }