Ejemplo n.º 1
0
        public ActionResult <List <FechamentoCaixaDTO> > Put(int id, [FromBody] Caixa caixa)
        {
            if (caixa == null)
            {
                return(BadRequest("Não foi possível fechar o caixa, sem dados para o fechamento."));
            }

            if (id == caixa.Id)
            {
                var caixaBaseDeDados = _caixaRepositorio.Selecionar(id);
                if (caixaBaseDeDados.EstaAberto())
                {
                    foreach (var item in caixa.Descartes)
                    {
                        ProdutoFinal descarte = (ProdutoFinal)_produtoRepositorio.Selecionar(item.IdProdutoFinal);

                        Estoque estoqueDescarte = new Estoque()
                        {
                            Produto     = descarte,
                            Data        = DateTime.Now,
                            Quantidade  = item.Quantidade,
                            TipoEstoque = EnumTipoEstoque.SAIDA
                        };
                        _estoqueRepositorio.Incluir(estoqueDescarte);
                        descarte.QuantidadeEstoque -= estoqueDescarte.Quantidade;
                        _produtoRepositorio.Alterar(descarte);
                    }

                    caixaBaseDeDados.DataFechameto = DateTime.Now;
                    caixaBaseDeDados.SituacaoCaixa = EnumSitucaoCaixa.FECHADO;
                    _caixaRepositorio.Alterar(caixaBaseDeDados);

                    var valores = _vendaRepositorio.VendaCaixa(caixa.Id);

                    return(Ok(valores));
                }
            }
            return(BadRequest("Impossível realizar o fechamento do caixa, pois o caixa não está aberto."));
        }