Exemplo n.º 1
0
        public static eRetorno Datas(DateTime?dataInicial, string nomeDataInicial, DateTime?dataFinal, string nomeDataFinal, bool compararDiferencaDias, int?intervalo)
        {
            eRetorno      retorno                = new eRetorno();
            eRetorno      retornoInicial         = null;
            eRetorno      retornoFinal           = null;
            StringBuilder sbErro                 = new StringBuilder();
            int           intervaloEmDias        = 0;
            DateTime      dataComIntervaloDeDias = DateTime.MinValue;

            try
            {
                retornoInicial = Validar.Datas(dataInicial, nomeDataInicial);
                retornoFinal   = Validar.Datas(dataFinal, nomeDataFinal);

                if (retornoInicial.OperacaoRealizadaComSucesso && retornoFinal.OperacaoRealizadaComSucesso)
                {
                    if (dataInicial.Value > dataFinal.Value)
                    {
                        sbErro.AppendFormat(";A data {1} não pode ser maior que a data {0}"
                                            , nomeDataInicial
                                            , nomeDataFinal);
                    }

                    if (string.IsNullOrEmpty(sbErro.ToString()) && compararDiferencaDias)
                    {
                        intervaloEmDias = intervalo.GetValueOrDefault();

                        if (intervaloEmDias > 0)
                        {
                            dataComIntervaloDeDias = dataInicial.Value.AddDays(intervaloEmDias);

                            if (dataFinal.Value > dataComIntervaloDeDias)
                            {
                                sbErro.AppendFormat(";A data {0} não pode ser {1} dias maior que a data {2}"
                                                    , nomeDataFinal
                                                    , intervaloEmDias
                                                    , nomeDataInicial);
                            }
                        }
                        else
                        {
                            sbErro.Append(";Informe a qual a diferença maxima de dias entre as datas");
                        }
                    }
                }
                else
                {
                    if (!retornoInicial.OperacaoRealizadaComSucesso)
                    {
                        sbErro.AppendFormat(";{0}", retornoInicial.MensagemErro);
                    }

                    if (!retornoFinal.OperacaoRealizadaComSucesso)
                    {
                        sbErro.AppendFormat(";{0}", retornoFinal.MensagemErro);
                    }
                }


                if (string.IsNullOrEmpty(sbErro.ToString()))
                {
                    retorno.OperacaoRealizadaComSucesso = true;
                }
                else
                {
                    retorno.OperacaoRealizadaComSucesso = false;
                    retorno.MensagemErro = sbErro.ToString();
                }
            }
            catch (Exception ex)
            {
                retorno = Excecao.TratarRetorno(ex);
            }
            finally
            {
                dataInicial     = null;
                nomeDataInicial = null;
                dataFinal       = null;
                nomeDataFinal   = null;
                intervalo       = null;
                retornoInicial  = null;
                retornoFinal    = null;
                sbErro          = null;
            }

            return(retorno);
        }