Beispiel #1
0
        /// <summary>
        /// Inicia uma nova instância da classe <see cref="ConverterCadastroAtualizacaoParaEstoqueReal"/>.
        /// </summary>
        /// <param name="cadastro">O DTO de cadastro, enviado para o endpoint.</param>
        /// <param name="atual">O estoque do produto atual (opcional), para que sejam aproveitados os valores, se necessário.</param>
        public ConverterCadastroAtualizacaoParaEstoqueReal(
            CadastroAtualizacaoRealDto cadastro,
            Data.Model.ProdutoLoja atual = null)
        {
            this.cadastro = cadastro;
            this.estoque  = new Lazy <Data.Model.ProdutoLoja>(() =>
            {
                var destino = atual ?? new Data.Model.ProdutoLoja();
                this.ConverterDtoParaModelo(destino);

                return(destino);
            });
        }
        public IHttpActionResult AlterarEstoqueReal(int idProduto, int idLoja, [FromBody] CadastroAtualizacaoRealDto dadosParaAlteracao)
        {
            using (var sessao = new GDATransaction())
            {
                try
                {
                    var validacao = this.ValidarExistenciaIdProdutoIdLoja(sessao, idProduto, idLoja);

                    if (validacao != null)
                    {
                        return(validacao);
                    }

                    var estoque = ProdutoLojaDAO.Instance.GetElement(sessao, (uint)idLoja, (uint)idProduto);

                    if (estoque == null)
                    {
                        return(this.NaoEncontrado($"Estoque de produto não encontrado."));
                    }

                    estoque = new ConverterCadastroAtualizacaoParaEstoqueReal(dadosParaAlteracao, estoque)
                              .ConverterParaEstoque();

                    sessao.BeginTransaction();

                    ProdutoLojaDAO.Instance.AtualizaEstoque(sessao, estoque);
                    sessao.Commit();

                    return(this.Aceito("Estoque do produto atualizado com sucesso!"));
                }
                catch (Exception ex)
                {
                    sessao.Rollback();
                    return(this.ErroValidacao("Erro ao atualizar estoque do produto.", ex));
                }
            }
        }