Exemple #1
0
        public int CreateSeance(SeanceInfo seance)
        {
            Seance newSeance = new Seance
            {
                MovieId  = seance.MovieId,
                HallId   = seance.HallId,
                ShowDate = seance.ShowDate,
                ShowTime = seance.ShowTime
            };

            foreach (SeanceSeatView seanceSeat in seance.SessionSeats)
            {
                var newSeanceSeat = new SeanceSeat
                {
                    SeanceId = newSeance.Id,
                    SeatId   = seanceSeat.SeatId,
                    Price    = seanceSeat.Price,
                    IsBooked = seanceSeat.IsBooked
                };

                _db.SeanceSeats.Add(newSeanceSeat);
            }

            _db.Seances.Add(newSeance);

            _db.SaveChanges();

            return(newSeance.Id);
        }
Exemple #2
0
        public void EditSeance(int seanceId, SeanceInfo seance)
        {
            Seance editSeance = _db.Seances.Find(seanceId);

            editSeance.ShowDate = seance.ShowDate;
            editSeance.ShowTime = seance.ShowTime;
            editSeance.MovieId  = seance.MovieId;
            editSeance.HallId   = seance.HallId;
            editSeance.ShowTime = seance.ShowTime;

            var seanceSeat = _db.SeanceSeats
                             .Where(s => s.SeanceId == editSeance.Id);

            foreach (SeanceSeat editSeanceSeat in seanceSeat)
            {
                var foundSeanceSeat = seance.SessionSeats
                                      .Where(s => s.SeatId == editSeanceSeat.SeatId)
                                      .SingleOrDefault();

                if (foundSeanceSeat != null)
                {
                    editSeanceSeat.Price    = foundSeanceSeat.Price;
                    editSeanceSeat.IsBooked = foundSeanceSeat.IsBooked;
                }
            }

            _db.SaveChanges();
        }
Exemple #3
0
 public bool CheckCorrectMovie(SeanceInfo seance)
 {
     return(_db.Movies
            .Any(m => m.Id == seance.MovieId &&
                 m.ReleaseDate <= seance.ShowDate &&
                 seance.ShowDate <= m.EndingDate));
 }
Exemple #4
0
        public string Post([FromBody] SeanceInfo value)
        {
            try
            {
                String   date      = value.Date + "T00:00:00";
                DateTime startDate = DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss", null);
                DateTime endDate   = startDate.AddDays(1);
                using (var db = new CinemaContext())
                {
                    return(JsonConvert.SerializeObject(
                               db.Seance.Where(s => s.FilmId.ToString().Equals(value.FilmId) & s.StartTime > startDate & s.EndTime < endDate)
                               .Join(
                                   db.HallInfo.Where(x => x.CinemaId.ToString().Equals(value.CinemaId)),
                                   s => s.HallId,
                                   h => h.Id,
                                   (s, h) => new SeanceResult()
                    {
                        Id = s.Id,
                        HallName = h.Name,
                        StartTime = s.StartTime.ToString("HH:mm"),
                        FilmId = s.FilmId,
                        HallId = s.HallId,
                        EndTime = s.EndTime.ToString("HH:mm")
                    })

                               ));
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Exemple #5
0
        public IActionResult EditSeance([FromBody] SeanceInfo seance, int seanceId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new Response(ModelState)));
            }

            if (!_seanceService.CheckSeanceExists(seanceId))
            {
                return(NotFound(new Response(ErrorOfSeanceNonexistence)));
            }

            if (_seanceService.CheckCorrectSeanceTime(seance))
            {
                return(BadRequest(new Response(ErrorOfSeanceTime)));
            }

            if (_seanceService.СheckForNonmatchingSeanceTime(seance, seanceId))
            {
                return(BadRequest(new Response(ErrorOfNonmatchingSeanceTime)));
            }

            if (_seanceService.CheckCorrectMovie(seance))
            {
                return(BadRequest(new Response(ErrorOfMovieNonexistence)));
            }

            _seanceService.EditSeance(seanceId, seance);

            return(Ok(new Response()));
        }
Exemple #6
0
 public bool CheckSeanceExists(SeanceInfo seance)
 {
     return(_db.Seances.Any(s =>
                            s.HallId == seance.HallId &&
                            s.ShowTime == seance.ShowTime &&
                            s.ShowDate == seance.ShowDate &&
                            s.MovieId == seance.MovieId &&
                            !s.IsDeleted
                            ));
 }
Exemple #7
0
        public bool СheckForNonmatchingSeanceTime(SeanceInfo seance, int?seanceId = null)
        {
            var prevSeance = _db.Seances
                             .Where(s => s.HallId == seance.HallId &&
                                    seance.ShowDate.Date == s.ShowDate.Date &&
                                    s.ShowDate < seance.ShowDate &&
                                    s.Id != seanceId)
                             .OrderBy(s => s.ShowDate)
                             .LastOrDefault();

            if (prevSeance == null)
            {
                return(true);
            }

            if (seance.ShowDate < prevSeance.ShowDate.Add(prevSeance.ShowTime))
            {
                return(false);
            }

            var nextSeance = _db.Seances
                             .Where(s => s.HallId == seance.HallId &&
                                    seance.ShowDate.Date == s.ShowDate.Date &&
                                    s.ShowDate > seance.ShowDate)
                             .OrderBy(s => s.ShowDate)
                             .FirstOrDefault();

            if (nextSeance == null)
            {
                return(true);
            }

            if (nextSeance.ShowDate < seance.ShowDate.Add(seance.ShowTime))
            {
                return(false);
            }

            return(true);
        }
Exemple #8
0
        public IActionResult CreateSeance([FromBody] SeanceInfo seance)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new Response(ModelState)));
            }

            if (_seanceService.CheckHallExists(seance.HallId))
            {
                return(BadRequest(new Response(ErrorOfHallNonexistence)));
            }

            if (_seanceService.CheckCorrectSeanceTime(seance))
            {
                return(BadRequest(new Response(ErrorOfSeanceTime)));
            }

            if (_seanceService.CheckSeanceExists(seance))
            {
                return(BadRequest(new Response(ErrorOfSeanceExistence)));
            }

            if (_seanceService.СheckForNonmatchingSeanceTime(seance))
            {
                return(BadRequest(new Response(ErrorOfNonmatchingSeanceTime)));
            }

            if (_seanceService.CheckCorrectMovie(seance))
            {
                return(BadRequest(new Response(ErrorOfMovieNonexistence)));
            }

            int id = _seanceService.CreateSeance(seance);

            var response = new CreateResponse(id);

            return(CreatedAtAction(nameof(GetSeance), new { id = response.Id }, response));
        }
Exemple #9
0
 public bool CheckCorrectSeanceTime(SeanceInfo seance)
 {
     return(seance.ShowDate.Date > DateTime.Now.Date);
 }
Exemple #10
0
 public IEnumerable <string> Get(SeanceInfo value)
 {
     return(new string[] { "value1", "value2" });
 }