public void Processar(dynamic mensagem) { int primeiro = mensagem.Primeiro; if (primeiro < 1) { throw new ArgumentException("O número do primeiro contrato deve ser no mínimo 1.", "mensagem"); } int ultimo = mensagem.Ultimo; if (ultimo < primeiro) { throw new ArgumentException("O número do último contrato deve ser maior ou igual ao primeiro.", "mensagem"); } if (ultimo > Contrato.NumeroMaximoDeContrato) { throw new ArgumentException( String.Format("O número do último contrato deve ser menor do que {0}.", Contrato.NumeroMaximoDeContrato), "mensagem"); } Guid processamentoId = mensagem.ProcessamentoId; if (processamentoId == Guid.Empty) { throw new ArgumentException("O identificador do processamento não foi encontrado.", "mensagem"); } int quantidade = ultimo - primeiro + 1; if (quantidade > _quantidadeMaximaPorLote) { Trace.WriteLine( String.Format("Subdividindo solicitação de geração dos contratos {0} a {1}.", primeiro, ultimo)); int meio = (ultimo - primeiro) / 2 + primeiro; var gerador = new GeradorDeContratos(); gerador.SolicitarGeracao(processamentoId, primeiro, meio); gerador.SolicitarGeracao(processamentoId, meio + 1, ultimo); } else { SolicitarGeracaoDeLote(processamentoId, primeiro, ultimo); } }
public ActionResult GerarContratos(GeracaoDeContratosModel model) { try { var gerador = new GeradorDeContratos(); gerador.SolicitarGeracao(model.QuantidadeContratos); return(RedirectToAction("GeracaoSolicitada")); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return(View()); } }