/// <summary> /// Obtem as passagens pendentes disponiveis para processamento. /// </summary> /// <param name="tempoMaximoTtlEmMinutos">Tempo do TTL em minutos.</param> /// <param name="qtdMaximaPassagensParaProcessar">Quantidade máxima de passagens a processar.</param> /// <returns>PassagemPendenteMessage[]</returns> private List<PassagemPendenteMessage> ObterPassagensDisponiveisParaProcessamento(int tempoMaximoTtlEmMinutos , int qtdMaximaPassagensParaProcessar , IEnumerable<ConcessionariaModel> concessionarias) { Log.Debug(GeradorPassagemPendenteResource.ObterPassagensPendentes); if (concessionarias == null || !concessionarias.Any()) { throw new ArgumentNullException("concessionarias", GeradorPassagemPendenteResource.NaoExisteConcessionarias); } var concessionariasArtesp = concessionarias.Where(x => x.AtivoProtocoloArtesp); if (concessionariasArtesp == null || !concessionariasArtesp.Any()) { throw new ArgumentNullException("concessionariasArtesp", GeradorPassagemPendenteResource.NaoExisteConcessionariasArtesp); } var request = new ObterPassagensPendentesFilter { QuantidadeMinutosTtl = tempoMaximoTtlEmMinutos, QtdMaximaPassagens = qtdMaximaPassagensParaProcessar }; var obterPassagensPendentesQuery = new ObterPassagensPendentesQuery(_dataSourceMensageria); var passagensDisponiveisProcessamento = obterPassagensPendentesQuery.Execute(request); if (passagensDisponiveisProcessamento == null || !passagensDisponiveisProcessamento.Any()) { throw new ArgumentNullException("passagensDisponiveisProcessamento", GeradorPassagemPendenteResource.NaoExistePassagensPendentes); } if (passagensDisponiveisProcessamento == null || !passagensDisponiveisProcessamento.Any()) { throw new ArgumentNullException("passagensDisponiveisProcessamento", GeradorPassagemPendenteResource.NaoExistePassagensPendentes); } return passagensDisponiveisProcessamento.ToList(); }
public override IEnumerable <PassagemPendenteMessage> Execute(ObterPassagensPendentesFilter filter) { var resultado = DataSource.Connection.Query <PassagemPendenteMessage>( "spObterMensagemPendenteProcessamento", new { filter.QtdMaximaPassagens, }, commandType: CommandType.StoredProcedure, commandTimeout: 600 ); foreach (var item in resultado) { item.DataCriacao = new System.DateTime (year: item.DataCriacao.Year, month: item.DataCriacao.Month, day: item.DataCriacao.Day, hour: item.DataCriacao.Hour, minute: item.DataCriacao.Minute, second: item.DataCriacao.Second, kind: System.DateTimeKind.Utc); } return(resultado); }