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")); }
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)); }
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)); }
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 }