public async Task <Response> Handle(ExcluirCompraCommand request, CancellationToken cancellationToken)
        {
            var response = new Response();

            if (request.Invalid)
            {
                response.AddNotifications(request.Notifications);
                return(response);
            }
            var compra = await _repositorio.ObterPorId(request.Id);

            if (compra == null)
            {
                response.AddNotification("Compra não encontrada");
                return(response);
            }

            if (compra.Status == StatusCompra.Aprovado)
            {
                response.AddNotification("Compras aprovadas não podem ser excluídas");
                return(response);
            }

            await _repositorio.ExcluirAsync(compra);

            return(response);
        }
        public async Task <Response> Handle(AtualizarCompraCommand request, CancellationToken cancellationToken)
        {
            var response = new Response();

            if (request.Invalid)
            {
                response.AddNotifications(request.Notifications);
                return(response);
            }
            var compra = await _repositorio.ObterPorId(request.Id);

            if (compra == null)
            {
                response.AddNotification("Compra não encontrada");
                return(response);
            }

            if (compra.Status == StatusCompra.Aprovado)
            {
                response.AddNotification("Compras aprovadas não podem ser editadas");
                return(response);
            }

            var compraCadastrada = await _repositorio.ObterPorCodigo(request.Codigo);

            if (compraCadastrada != null && compraCadastrada.Codigo != compra.Codigo)
            {
                response.AddNotification("Jà existe uma Compra com esse código");
                return(response);
            }

            compra.Atualizar(request.Codigo, request.Valor, request.Data, request.Cpf);
            await _repositorio.AtualizarAsync(compra);

            response.AddValue(compra);

            return(response);
        }