public async Task AddAsync(AddProjectionInputModel inputModel) { var projectionSeats = new List <ProjectionSeat>(); var projection = new Projection { Id = Guid.NewGuid().ToString(), HallId = inputModel.HallId, MovieId = inputModel.MovieId, ProjectionDateTime = inputModel.ProjectionDateTime.ToUniversalTime(), Seats = projectionSeats, }; var seats = this.seatsRepository .All() .Where(s => s.HallId == inputModel.HallId) .ToList(); foreach (var seat in seats) { var projectionSeat = new ProjectionSeat { Id = Guid.NewGuid().ToString(), SeatId = seat.Id, ProjectionId = projection.Id, }; projectionSeats.Add(projectionSeat); } await this.projectionsRepository.AddAsync(projection); await this.projectionsRepository.SaveChangesAsync(); }
public async Task EditAsync(AddProjectionInputModel inputModel) { var projection = await this.projectionsRepository.GetByIdWithDeletedAsync(inputModel.Id); if (projection == null) { throw new ArgumentNullException(InvalidIdExceptionMessage); } if (projection.HallId != inputModel.HallId) { var oldSeats = this.projectionsSeatsRepo.All().Where(s => s.ProjectionId == inputModel.Id).ToList(); foreach (var oldSeat in oldSeats) { this.projectionsSeatsRepo.HardDelete(oldSeat); } await this.projectionsSeatsRepo.SaveChangesAsync(); var projectionSeats = new List <ProjectionSeat>(); var seats = this.seatsRepository .All() .Where(s => s.HallId == inputModel.HallId) .ToList(); foreach (var seat in seats) { var projectionSeat = new ProjectionSeat { Id = Guid.NewGuid().ToString(), SeatId = seat.Id, ProjectionId = projection.Id, }; projectionSeats.Add(projectionSeat); } projection.Seats = projectionSeats; } projection.HallId = inputModel.HallId; projection.MovieId = inputModel.MovieId; projection.ProjectionDateTime = inputModel.ProjectionDateTime.ToUniversalTime(); this.projectionsRepository.Update(projection); await this.projectionsRepository.SaveChangesAsync(); }
public ActionResult SubmitProjection(AddProjectionVM model, string btnType) { //if (!ModelState.IsValid) // return DefinedDateTime ddt = new DefinedDateTime(); if (principal.DefinedDateTimes.Where(x => x.DateTimeStart == model.Projection.DateTimeStart).FirstOrDefault() == null) { ddt.DateTimeStart = model.Projection.DateTimeStart; ddt.IsDeleted = false; principal.DefinedDateTimes.Add(ddt); principal.SaveChanges(); } else { ddt = principal.DefinedDateTimes.Where(x => x.DateTimeStart == model.Projection.DateTimeStart).First(); } Projection p = new Projection(); p.CinemaHallID = model.CinemaHallID; p.CinemaHall = principal.CinemaHalls.Where(x => x.CinemaHallID == model.CinemaHallID).First(); p.DateTimeEnd = model.Projection.DateTimeEnd; p.DateTimeStart = ddt.DateTimeStart; p.MovieID = model.Projection.Movie.MovieID; p.Movie = principal.Movies.Where(x => x.MovieID == model.Projection.Movie.MovieID).First(); p.TechnologyTypeID = model.TechTypeID; p.TechnologyType = principal.TechnologyTypes.Where(x => x.TechnologyTypeID == model.TechTypeID).First(); p.TicketPrice = model.Projection.TicketPrice; p.IsDeleted = false; principal.Projections.Add(p); principal.SaveChanges(); foreach (Seat s in principal.Seats.Where(x => x.CinemaHallID == p.CinemaHallID && !x.IsDeleted).ToList()) { ProjectionSeat ps = new ProjectionSeat(); ps.IsDeleted = false; ps.IsReserved = false; ps.Seat = s; ps.SeatID = s.SeatID; ps.ProjectionID = p.ProjectionID; ps.Projection = p; principal.ProjectionSeats.Add(ps); principal.SaveChanges(); } return(RedirectToAction("AddProjection", new { descript = "New projection successfuly added !" })); }