public async Task <ActionResult> Post([FromBody] CinemaModel cinemaModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } CinemaDomainModel cinemaWithoutAuditorium = new CinemaDomainModel() { Name = cinemaModel.Name }; CreateCinemaWithAuditoriumModel cinemaWithAuditoriumModel = new CreateCinemaWithAuditoriumModel { AuditoriumName = cinemaModel.auditName, CinemaName = cinemaModel.Name, NumberOfRows = cinemaModel.seatRows, NumberOfColumns = cinemaModel.numberOfSeats }; CreateCinemaResultModel createCinema; try { if (cinemaModel.auditName != null && cinemaModel.numberOfSeats > 0 && cinemaModel.seatRows > 0) { createCinema = await _cinemaService.AddCinemaWithAuditorium(cinemaWithAuditoriumModel); } else { createCinema = await _cinemaService.AddCinema(cinemaWithoutAuditorium); } } catch (DbUpdateException e) { ErrorResponseModel errorResponse = new ErrorResponseModel { ErrorMessage = e.InnerException.Message ?? e.Message, StatusCode = System.Net.HttpStatusCode.BadRequest }; return(BadRequest(errorResponse)); } if (createCinema.IsSuccessful != true) { ErrorResponseModel errorResponse = new ErrorResponseModel() { ErrorMessage = createCinema.ErrorMessage, StatusCode = System.Net.HttpStatusCode.BadRequest }; return(BadRequest(errorResponse)); } return(Created("cinemas//" + createCinema.Cinema.Id, createCinema.Cinema)); }
// CreateAuditorium(AuditoriumDomainModel domainModel, int numberOfRows, int numberOfSeats) public async Task <CreateCinemaResultModel> AddCinemaWithAuditorium(CreateCinemaWithAuditoriumModel newCinemaWithAuditorium) { var cinema = await _cinemasRepository.GetByCinemaName(newCinemaWithAuditorium.CinemaName); var sameCinemaName = cinema.ToList(); if (sameCinemaName != null && sameCinemaName.Count > 0) { return(new CreateCinemaResultModel { IsSuccessful = false, ErrorMessage = Messages.CINEMA_SAME_NAME }); } Data.Cinema cinemaToCreate = new Data.Cinema() { Name = newCinemaWithAuditorium.CinemaName }; var cinemaData = _cinemasRepository.Insert(cinemaToCreate); if (cinemaData == null) { return(new CreateCinemaResultModel { IsSuccessful = false, ErrorMessage = Messages.CINEMA_CREATION_ERROR }); } _cinemasRepository.Save(); AuditoriumDomainModel auditoriumToCreate = new AuditoriumDomainModel() { CinemaId = cinemaData.Id, Name = newCinemaWithAuditorium.AuditoriumName }; var auditoriumData = await _auditoriumService.CreateAuditorium(auditoriumToCreate, newCinemaWithAuditorium.NumberOfRows, newCinemaWithAuditorium.NumberOfColumns); if (auditoriumData == null) { return(new CreateCinemaResultModel { IsSuccessful = false, ErrorMessage = Messages.AUDITORIUM_CREATION_ERROR }); } List <AuditoriumDomainModel> auditoriumDomainModels = new List <AuditoriumDomainModel>(); auditoriumDomainModels.Add(auditoriumData.Auditorium); CinemaDomainModel createdCinema = new CinemaDomainModel() { Id = cinemaData.Id, Name = cinemaData.Name, AuditoriumsList = auditoriumDomainModels }; CreateCinemaResultModel cinemaResultModel = new CreateCinemaResultModel() { IsSuccessful = true, ErrorMessage = null, Cinema = createdCinema }; return(cinemaResultModel); }