public bool CheckNumeroDocumentoExists(string numeroDocumento, Guid fornecedorId, Guid novaDuplicataId) { var numeroDocumentoSpecification = new DuplicataNumeroDocumentoSpecification(numeroDocumento); var fornecedorSpecification = new DuplicataFornecedorIdSpecification(fornecedorId); Duplicata duplicata = _dbSet .AsNoTracking() .Where(numeroDocumentoSpecification .And(fornecedorSpecification) .ToExpression()) .FirstOrDefault(); if (duplicata == null || novaDuplicataId == duplicata.Id) { return(false); } return(true); }
public IActionResult Index(bool?apenasNaoPagas, bool?apenasVencidas, Guid?fornecedorId, string numeroDocumento = null, string minValor = null, string maxValor = null, string dataEmissao = null, string dataVencimento = null, int pageNumber = 1, int pageSize = 20) { var pagaSpecification = new DuplicataNaoPagaSpecification(apenasNaoPagas); var vencidaSpecification = new DuplicataVencidaSpecification(apenasVencidas); var fornecedorIdSpecification = new DuplicataFornecedorIdSpecification(fornecedorId); var numeroDocumentoSpecification = new DuplicataNumeroDocumentoSpecification(numeroDocumento); var valorSpecification = new DuplicataValorSpecification(minValor.ToDecimal(), maxValor.ToDecimal()); var dataSpecification = new DuplicataDataSpecification(dataEmissao.ToDateTime(), dataVencimento.ToDateTime()); var list = _duplicataApplicationService.Get(pagaSpecification .And(vencidaSpecification) .And(valorSpecification) .And(fornecedorIdSpecification) .And(numeroDocumentoSpecification) .And(dataSpecification) .ToExpression()) .OrderBy(d => d.DataVencimento) .ThenBy(d => d.FornecedorId) .ThenBy(d => d.NumeroDocumento); var viewModel = new DuplicataIndexViewModel { Duplicatas = list.ToPagedList(pageNumber, pageSize), Fornecedores = _fornecedorApplicationService.Get().OrderBy(f => f.Nome), ApenasNaoPagas = apenasNaoPagas, ApenasVencidas = apenasVencidas, MinValor = minValor, MaxValor = maxValor, FornecedorId = fornecedorId, NumeroDocumento = numeroDocumento, DataEmissao = dataEmissao, DataVencimento = dataVencimento, TotalResultados = list.ToList().Count(), ValorTotalResultados = list.ToList().Sum(d => d.Valor), ValorTotalVencidas = list.ToList().Where(d => d.Vencido).Sum(d => d.Valor) }; return(View(viewModel)); }