Esempio n. 1
0
        public async Task <ActionResult> PostWithAuditoriumsAndSeats([FromBody] CreateCinemaWithAuditoriumAndSeatsModel createCinemaWithAuditoriumAndSeatsModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            CreateCinemaDomainModel domainModel = new CreateCinemaDomainModel
            {
                CinemaName        = createCinemaWithAuditoriumAndSeatsModel.CinemaName,
                listOfAuditoriums = new List <AuditoriumDomainModel>()
            };
            var listofAuditoriums = createCinemaWithAuditoriumAndSeatsModel.listOfAuditoriums;

            foreach (var item in listofAuditoriums)
            {
                domainModel.listOfAuditoriums.Add(new AuditoriumDomainModel
                {
                    Name          = item.name,
                    SeatRows      = item.seatRows,
                    NumberOfSeats = item.numberOfSeats
                });
            }

            CreateCinemaResultModel createCinemaResultModel;

            try
            {
                createCinemaResultModel = await _cinemaService.AddCinemaWithAuditoriumsAndSeats(domainModel);
            }
            catch (DbUpdateException e)
            {
                ErrorResponseModel errorResponse = new ErrorResponseModel
                {
                    ErrorMessage = e.InnerException.Message ?? e.Message,
                    StatusCode   = System.Net.HttpStatusCode.BadRequest
                };
                return(BadRequest(errorResponse));
            }
            if (!createCinemaResultModel.IsSuccessful)
            {
                ErrorResponseModel errorResponse = new ErrorResponseModel()
                {
                    ErrorMessage = createCinemaResultModel.ErrorMessage,
                    StatusCode   = System.Net.HttpStatusCode.BadRequest
                };

                return(BadRequest(errorResponse));
            }

            return(Created("cinemas//" + createCinemaResultModel.Cinema.Id, createCinemaResultModel));
        }
Esempio n. 2
0
        public async Task <CreateCinemaResultModel> AddCinemaWithAuditoriumsAndSeats(CreateCinemaDomainModel newCinema)
        {
            var checkName = await _cinemasRepository.GetByNameAsync(newCinema.CinemaName);

            if (checkName != null)
            {
                return(new CreateCinemaResultModel
                {
                    ErrorMessage = Messages.CINEMA_SAME_NAME,
                    IsSuccessful = false
                });
            }

            Data.Cinema newCinemaToAdd = new Data.Cinema
            {
                Name        = newCinema.CinemaName,
                Auditoriums = new List <Auditorium>()
            };

            var listofAuditoriums = newCinema.listOfAuditoriums;

            foreach (var item in listofAuditoriums)
            {
                newCinemaToAdd.Auditoriums.Add(new Auditorium
                {
                    Name  = item.Name,
                    Seats = new List <Seat>()
                });

                var auditoriumName = newCinemaToAdd.Auditoriums.FirstOrDefault(x => x.Name.Equals(item.Name)).Name;

                for (int i = 1; i < item.SeatRows + 1; i++)
                {
                    for (int j = 1; j < item.NumberOfSeats + 1; j++)
                    {
                        Seat seat = new Seat()
                        {
                            Row    = i,
                            Number = j
                        };
                        newCinemaToAdd.Auditoriums.SingleOrDefault(x => x.Name.Equals(auditoriumName)).Seats.Add(seat);
                    }
                }
            }

            Data.Cinema insertedCinema = _cinemasRepository.Insert(newCinemaToAdd);
            if (insertedCinema == null)
            {
                return(new CreateCinemaResultModel
                {
                    IsSuccessful = false,
                    ErrorMessage = Messages.CINEMA_CREATION_ERROR
                });
            }

            _cinemasRepository.Save();

            CreateCinemaResultModel createCinemaResultModel = new CreateCinemaResultModel
            {
                IsSuccessful = true,
                ErrorMessage = null,
                Cinema       = new CinemaDomainModel
                {
                    Id   = insertedCinema.Id,
                    Name = insertedCinema.Name,
                    AuditoriumDomainModels = new List <AuditoriumDomainModel>()
                }
            };

            foreach (var insertedAuditorium in insertedCinema.Auditoriums)
            {
                createCinemaResultModel.Cinema.AuditoriumDomainModels.Add(new AuditoriumDomainModel
                {
                    CinemaId = insertedAuditorium.CinemaId,
                    Id       = insertedAuditorium.Id,
                    Name     = insertedAuditorium.Name
                });
            }
            return(createCinemaResultModel);
        }