public IActionResult Adicionar([FromBody] LocacaoViewModel pLocacao) { pLocacao.DataLocacao = DateTime.Now; pLocacao.Locacoes = null; var locacao = _mapper.Map <LocacaoViewModel, Locacao>(pLocacao); try { _locacaoRepository.Adicionar(locacao); _locacaoRepository.SaveChanges(); foreach (var fId in pLocacao.FilmesId) { var locFilme = new LocacaoFilme { FilmeId = fId, LocacaoId = locacao.Id }; _locacaoFilmeRepository.Adicionar(locFilme); _locacaoFilmeRepository.SaveChanges(); } var locacoesFilme = _locacaoFilmeRepository.PegarLocacoesFilmePorLocacaoId(locacao.Id, UsuarioCPF); MontarFilmesDaLocacao(locacao, locacoesFilme); var retorno = _mapper.Map <Locacao, LocacaoViewModel>(locacao); return(Response(true, retorno)); } catch (Exception) { return(Response(false, erros: locacao.ValidationErrors)); } }
public override Locacao Adicionar(Locacao locacao) { int dispnivel = _repository.FilmeDisponivel(locacao.FilmeId); if (dispnivel == 0) { throw new Exception("filme indisponivel."); } try { _repository.BeginTransaction(); _repository.UpdateLocacao(locacao.FilmeId, (dispnivel - 1)); var a = _repository.Adicionar(locacao); _repository.SaveChanges(); _repository.Commit(); return(a); } catch (Exception) { _repository.Rollback(); throw; } }