public ActionResult AdicionarProduto(int idCliente, int idProduto) { var cliente = Mapper.Map <Cliente, ClienteViewModel>(_clienteService.GetById(idCliente)); var compra = Mapper.Map <IList <Compra>, IList <CompraViewModel> >(_compraService.BuscarCompraPorCliente(idCliente)); var compraAssociada = Mapper.Map <Compra, CompraViewModel>(_compraService.BuscarCompraPorClienteEProduto(idCliente, idProduto)); var produto = Mapper.Map <Produto, ProdutoViewModel>(_produtoService.GetById(idProduto)); var produtos = Mapper.Map <IList <Produto>, IList <ProdutoViewModel> >(_produtoService.GetAll()); ViewData["Cliente"] = cliente; ViewData["ListaProdutos"] = produtos; if (compra.Count == Rules.LimiteDeProdutosPorCliente) { ViewBag.CompraReturnMessageError = Messaging.MessageClienteProdutoAdicionadoLimite; return(View("Produtos", compra)); } if (compraAssociada != null) { ViewBag.CompraReturnMessageError = Messaging.MessageClienteProdutoAdicionado; return(View("Produtos", compra)); } try { CompraViewModel viewModel = new CompraViewModel { Cliente = cliente, Produto = produto }; _compraService.InsertOrUpdate(Mapper.Map <CompraViewModel, Compra>(viewModel)); ViewBag.CompraReturnMessageOk = Messaging.MessageClienteAddProdutoSavedOk; return(View("Produtos", compra)); } catch (Exception ex) { ViewBag.CompraReturnMessageError = Messaging.MessageSavedError; return(View("Produtos", compra)); } }