public HttpResponseMessage SalvaTrocaMembroItemFornecedor(HttpRequestMessage request, TrocaItemFornecedorViewModel itemTroca) { return(CreateHttpResponse(request, () => { HttpResponseMessage response = null; Usuario usuario = _usuarioRep.GetSingle(int.Parse(HttpContext.Current.User.Identity.GetUserId())); var itemToChange = _itemPedidoRep.GetSingle(itemTroca.ItemId); var _pedido = _pedidoRep.GetSingle(itemToChange.PedidoId); //Verifca se o fornecedor escolhido ainda nao aprovou os itens que o mesmo ganhou var existePedParaAprovar = _pedido.ItemPedidos.Any(x => x.FornecedorId == itemTroca.FornecedorId && !x.AprovacaoFornecedor && x.Ativo); if (existePedParaAprovar) { var formaPagtoIdFornecedorChosen = _pedido.ItemPedidos.Where(x => x.FornecedorId == itemTroca.FornecedorId).Select(x => x.FormaPagtoId).FirstOrDefault(); itemToChange.Observacao = itemTroca.Observacao; itemToChange.FornecedorId = itemTroca.FornecedorId; itemToChange.PrecoNegociadoUnit = itemTroca.ValorItemFornecedor; itemToChange.UsuarioAlteracaoId = usuario.Id; itemToChange.FormaPagtoId = formaPagtoIdFornecedorChosen; itemToChange.AprovacaoFornecedor = false; itemToChange.Ativo = true; _itemPedidoRep.Edit(itemToChange); _unitOfWork.Commit(); _utilServiceRep.EnviaEmailSmsNovoPedidoItemfornecedor(_pedido.Id, itemTroca.ItemId, usuario, existePedParaAprovar); } else { if (itemTroca.FornecedorPagtoIdChosen == 0) { ModelState.AddModelError("FormaPagto de Pagamento", "Selecione uma forma de pagamento para o fornecedor selecionado"); response = request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Keys.SelectMany(k => ModelState[k].Errors) .Select(m => m.ErrorMessage).ToArray()); return response; } else { var formaPagtoIdFornecedorChosen = _pedido.ItemPedidos.Where(x => x.FornecedorId == itemTroca.FornecedorId).Select(x => x.FormaPagtoId).FirstOrDefault(); itemToChange.Observacao = itemTroca.Observacao; itemToChange.FornecedorId = itemTroca.FornecedorId; itemToChange.PrecoNegociadoUnit = itemTroca.ValorItemFornecedor; itemToChange.UsuarioAlteracaoId = usuario.Id; itemToChange.FormaPagtoId = formaPagtoIdFornecedorChosen != null && formaPagtoIdFornecedorChosen > 0 ? formaPagtoIdFornecedorChosen : itemTroca.FornecedorPagtoIdChosen; itemToChange.AprovacaoFornecedor = false; itemToChange.Ativo = true; _itemPedidoRep.Edit(itemToChange); _unitOfWork.Commit(); _utilServiceRep.EnviaEmailSmsNovoPedidoItemfornecedor(_pedido.Id, itemTroca.ItemId, usuario, existePedParaAprovar); } } if (_pedido.StatusSistemaId == 36 || _pedido.StatusSistemaId == 29) { _pedido.StatusSistemaId = 24; _pedidoRep.Edit(_pedido); _unitOfWork.Commit(); } response = request.CreateResponse(HttpStatusCode.OK, new { success = true }); return response; })); }