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