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)); }
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); }