public ActionResult GenerateTicket()
        {
            ViewBag.amt2 = TempData["amount2"];
            List <string> seatslist = (List <string>)TempData["ss"];

            TicketDetail ticket = new TicketDetail();

            ticket.MovieId   = mvId;
            ticket.TheatreId = thId;
            ticket.Price     = Convert.ToDecimal(TempData["amount2"]);
            entities.TicketDetails.Add(ticket);
            entities.SaveChanges();
            int identity    = entities.TicketDetails.Select(t => t.TicketId).Max();
            int newIdentity = identity + 1;

            foreach (var item in seatslist)
            {
                entities.InsertTicketSeats(identity, item);
            }
            foreach (var item in seatslist)
            {
                BookedSeat bookedSeat = new BookedSeat();
                bookedSeat.MovieId    = mvId;
                bookedSeat.SlotId     = sId;
                bookedSeat.TheatreId  = thId;
                bookedSeat.UserId     = Convert.ToInt32(Session["userId"]);
                bookedSeat.SeatNumber = item;
                entities.BookedSeats.Add(bookedSeat);
                entities.SaveChanges();
            }
            ViewBag.seats  = seatslist;
            ViewBag.poster = entities.Movies.Where(i => i.MovieId == mvId).FirstOrDefault().Poster;
            var slot = entities.Slots.Where(s => s.SlotId == sId).Select(s => s.StartTime).Single();

            TempData["nslot"] = slot;
            var tname = entities.Theatres.Where(t => t.TheatreId == thId).FirstOrDefault().TheatreName;

            ViewBag.thname = tname;
            return(View("Ticket"));
        }
Exemple #2
0
        public async Task <IActionResult> CreatePlay(PlayForCreation newPlay, IFormFile file)
        {
            #region check if file uploaded

            var filePath = Path.GetTempFileName();


            if (file != null)
            {
                if (file.Length > 0)
                {
                    // use filestream to get the file from local to the controller
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        await file.CopyToAsync(stream);
                    }
                }
            }

            #endregion

            // proceed only if data input is valid
            if (ModelState.IsValid)
            {
                if (newPlay.PriceEnd < newPlay.PriceStart)
                {
                    ModelState.AddModelError("", "Price start must be less than last price.");
                    return(View(newPlay));
                }

                Play playCreated = new Play
                {
                    // prepare play for database
                    PriceStart     = newPlay.PriceStart,
                    PriceEnd       = newPlay.PriceEnd,
                    Name           = newPlay.Name,
                    Description    = newPlay.Description,
                    AgeRestriction = newPlay.AgeRestriction
                };

                // make use of Dispose functionality to make sure file data is removed
                // once finished with it
                using (var memoryStream = new MemoryStream())
                {
                    await file.CopyToAsync(memoryStream);

                    #region Convert Data from TheatrePerformance to ERD Class Performance

                    playCreated.Picture = memoryStream.ToArray();


                    // for each valid date create an instance of performance
                    foreach (var perfDate in newPlay.LiveDates)
                    {
                        if (!perfDate.Date.Day.Equals(DateTime.Now.Day) && perfDate.Date > DateTime.Now)
                        {
                            Performance performanceDate = new Performance()
                            {
                                Date   = perfDate,
                                PlayId = playCreated.Id
                            };
                            playCreated.Performances.Add(performanceDate);
                        }
                    }

                    // for each created performance create seating plan
                    foreach (var perfDate in playCreated.Performances)
                    {
                        foreach (var seat in _context.Seats)
                        {
                            BookedSeat booked = new BookedSeat()
                            {
                                SeatId = seat.Id,
                                Booked = 0
                            };
                            perfDate.BookedSeats.Add(booked);
                        }
                    }


                    #endregion

                    // save all the changes to the database
                    await _context.AddAsync(playCreated);

                    await _context.SaveChangesAsync();

                    // redirect to main page
                    return(RedirectToAction(nameof(Index)));
                }
            }

            // if program reached here something went wrong so return view to create performance
            return(View(newPlay));
        }
Exemple #3
0
        public async Task <IActionResult> EditPlay(int Id, EditPlay play)
        {
            // check if Ids match, if not return 404 Not Found Exception
            if (Id != play.Id)
            {
                return(NotFound());
            }

            // find play to edit
            var perfEdit = await _context.Plays.Include(x => x.Performances)
                           .FirstOrDefaultAsync(x => x.Id == play.Id);

            // check model
            if (ModelState.IsValid)
            {
                // add new date fields, check if date was changed and
                // it is in the future, starting from the day after
                foreach (var date in play.LiveDates)
                {
                    if (!date.Date.Day.Equals(DateTime.Now.Day))
                    {
                        Performance performanceDate = new Performance()
                        {
                            Date   = date.Date,
                            PlayId = play.Id
                        };
                        // create booked seats for each date and set them as not booked
                        foreach (var seat in _context.Seats)
                        {
                            BookedSeat booked = new BookedSeat()
                            {
                                SeatId = seat.Id,
                                Booked = 0
                            };
                            performanceDate.BookedSeats.Add(booked);
                        }
                        perfEdit.Performances.Add(performanceDate);
                    }
                }

                perfEdit.Name           = play.Name;
                perfEdit.Description    = play.Description;
                perfEdit.AgeRestriction = play.AgeRestriction.ToString();
                // try update database
                try
                {
                    _context.Update(perfEdit);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PlayExists(play.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(IndexPlays)));
            }
            return(View(play));
        }
Exemple #4
0
        protected void CopyTo <T>(T dataItem) where T : BasePNRDataItem
        {
            dataItem.ID      = ID;
            dataItem.IDInPNR = IDInPNR;
            dataItem.Type    = Type;

            if (TravellerRef != null)
            {
                dataItem.TravellerRef = new RefList <int>(TravellerRef);
            }
            if (ServiceRef != null)
            {
                dataItem.ServiceRef = new RefList <int>(ServiceRef);
            }
            if (SegmentRef != null)
            {
                dataItem.SegmentRef = new RefList <int>(SegmentRef);
            }

            #region Клонирование внутренних элементов
            switch (Type)
            {
            case PNRDataItemType.Remark:
                dataItem.Remark = Remark?.Copy();
                break;

            case PNRDataItemType.TL:
                dataItem.TimeLimits = TimeLimits?.Copy();
                break;

            case PNRDataItemType.SSR:
                dataItem.SSR = SSR?.DeepCopy();
                break;

            case PNRDataItemType.Commission:
                dataItem.Commission = Commission?.Copy();
                break;

            case PNRDataItemType.FOP:
                dataItem.FOPInfo = FOPInfo?.Copy();
                break;

            case PNRDataItemType.SourceInfo:
                dataItem.SourceInfo = SourceInfo?.Copy();
                break;

            case PNRDataItemType.IDDocument:
                dataItem.Document = Document?.Copy();
                break;

            case PNRDataItemType.ContactInfo:
                dataItem.ContactInfo = ContactInfo?.Copy();
                break;

            case PNRDataItemType.LoyaltyCard:
                dataItem.LoyaltyCard = LoyaltyCard?.Copy();
                break;

            case PNRDataItemType.Meal:
                dataItem.Meal = Meal?.DeepCopy();
                break;

            case PNRDataItemType.ED:
                dataItem.ElectronicDocument = ElectronicDocument?.DeepCopy();
                break;

            case PNRDataItemType.PD:
                dataItem.PaperDocument = PaperDocument?.Copy();
                break;

            case PNRDataItemType.FE:
                dataItem.Endorsements = Endorsements?.Copy();
                break;

            case PNRDataItemType.Visa:
                dataItem.Visa = Visa?.Copy();
                break;

            case PNRDataItemType.ArrivalAddress:
                dataItem.ArrivalAddress = ArrivalAddress?.Copy();
                break;

            case PNRDataItemType.BookedSeat:
                dataItem.BookedSeat = BookedSeat?.Copy();
                break;

            case PNRDataItemType.ValidatingCompany:
                dataItem.ValidatingCompany = ValidatingCompany?.Copy();
                break;

            case PNRDataItemType.TourCode:
                dataItem.TourCode = TourCode?.Copy();
                break;

            case PNRDataItemType.Discount:
                dataItem.Discount = Discount?.Copy();
                break;

            case PNRDataItemType.FareSourceCode:
                dataItem.FareSourceCode = FareSourceCode?.Copy();
                break;

            case PNRDataItemType.AdditionalLocators:
                dataItem.AdditionalLocators = AdditionalLocators?.Copy();
                break;

            case PNRDataItemType.OSI:
                dataItem.OSI = OSI?.Copy();
                break;

            case PNRDataItemType.ReferencedBooks:
                dataItem.ReferencedBooks = ReferencedBooks?.Copy();
                break;

            case PNRDataItemType.FareInfo:
                dataItem.FareInfo = FareInfo?.Copy();
                break;

            case PNRDataItemType.DiscountDocument:
                dataItem.DiscountDocument = DiscountDocument?.Copy();
                break;

            case PNRDataItemType.VoucherFile:
                dataItem.Voucher = Voucher?.Copy();
                break;

            case PNRDataItemType.LinkedBooks:
                dataItem.LinkedBooks = LinkedBooks?.Copy();
                break;
            }
            #endregion
        }