Beispiel #1
0
        public async Task <CinemaDomainModel> GetCinemaByIdAsync(int id)
        {
            var data = await _cinemasRepository.GetByIdAsync(id);

            if (data == null)
            {
                return(null);
            }

            CinemaDomainModel domainModel = new CinemaDomainModel
            {
                Id   = data.Id,
                Name = data.Name
            };

            return(domainModel);
        }
        public async Task <CreateAuditoriumResultModel> CreateAuditorium(AuditoriumDomainModel domainModel, int numberOfRows, int numberOfSeats)
        {
            var cinema = await _cinemasRepository.GetByIdAsync(domainModel.CinemaId);

            if (cinema == null)
            {
                return(new CreateAuditoriumResultModel
                {
                    IsSuccessful = false,
                    ErrorMessage = Messages.AUDITORIUM_UNVALID_CINEMAID
                });
            }

            var auditorium = await _auditoriumsRepository.GetByAuditName(domainModel.Name, domainModel.CinemaId);

            var sameAuditoriumName = auditorium.ToList();

            if (sameAuditoriumName != null && sameAuditoriumName.Count > 0)
            {
                return(new CreateAuditoriumResultModel
                {
                    IsSuccessful = false,
                    ErrorMessage = Messages.AUDITORIUM_SAME_NAME
                });
            }

            Auditorium newAuditorium = new Auditorium
            {
                Name     = domainModel.Name,
                CinemaId = domainModel.CinemaId,
            };

            newAuditorium.Seats = new List <Seat>();

            for (int i = 1; i <= numberOfRows; i++)
            {
                for (int j = 1; j <= numberOfSeats; j++)
                {
                    Seat newSeat = new Seat()
                    {
                        Row    = i,
                        Number = j
                    };

                    newAuditorium.Seats.Add(newSeat);
                }
            }

            Auditorium insertedAuditorium = _auditoriumsRepository.Insert(newAuditorium);

            if (insertedAuditorium == null)
            {
                return(new CreateAuditoriumResultModel
                {
                    IsSuccessful = false,
                    ErrorMessage = Messages.AUDITORIUM_CREATION_ERROR
                });
            }

            CreateAuditoriumResultModel resultModel = new CreateAuditoriumResultModel
            {
                IsSuccessful = true,
                ErrorMessage = null,
                Auditorium   = new AuditoriumDomainModel
                {
                    Id        = insertedAuditorium.Id,
                    Name      = insertedAuditorium.Name,
                    CinemaId  = insertedAuditorium.CinemaId,
                    SeatsList = new List <SeatDomainModel>()
                }
            };

            foreach (var item in insertedAuditorium.Seats)
            {
                resultModel.Auditorium.SeatsList.Add(new SeatDomainModel
                {
                    AuditoriumId = insertedAuditorium.Id,
                    Id           = item.Id,
                    Number       = item.Number,
                    Row          = item.Row
                });
            }

            return(resultModel);
        }
Beispiel #3
0
        public async Task <CinemaDomainModel> DeleteCinemaAsync(int id)
        {
            var cinema = await _cinemasRepository.GetByIdAsync(id);

            if (cinema == null)
            {
                return(null);
            }

            var allAuditoriums = await _auditoriumsRepository.GetAll();

            if (allAuditoriums == null)
            {
                return(null);
            }

            var auditoriumsInCinema = allAuditoriums.Where(a => a.CinemaId == id);

            var seats = await _seatsRepository.GetAll();

            foreach (var auditorium in auditoriumsInCinema)
            {
                seats = seats.Where(s => s.AuditoriumId == auditorium.Id);

                foreach (var seat in seats)
                {
                    if (seat.ReservationSeats.Any())
                    {
                        return(null);
                    }
                    _seatsRepository.Delete(seat.Id);
                }

                _auditoriumsRepository.Delete(auditorium.Id);
            }

            CinemaDomainModel cinemaModel = new CinemaDomainModel
            {
                Id              = cinema.Id,
                Name            = cinema.Name,
                CityId          = cinema.CityId,
                AuditoriumsList = cinema.Auditoriums.Select(a => new AuditoriumDomainModel
                {
                    Id        = a.Id,
                    CinemaId  = a.CinemaId,
                    Name      = a.AuditName,
                    SeatsList = a.Seats.Select(s => new SeatDomainModel
                    {
                        Id           = s.Id,
                        AuditoriumId = s.AuditoriumId,
                        Number       = s.Number,
                        Row          = s.Row
                    })
                                .ToList()
                })
                                  .ToList()
            };

            _cinemasRepository.Delete(cinema.Id);

            _cinemasRepository.Save();

            return(cinemaModel);
        }