示例#1
0
        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();
        }
示例#2
0
        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 !" }));
        }