예제 #1
0
        private DateTime RetornaDataConclusaoPrevista(Chamado chamado)
        {
            var dataAbertura      = chamado.DataAbertura;
            var conclusaoPrevista = DateTime.MinValue;

            var solicitacao = _solicitacao.ProcurarSolicitacaoPorId(chamado.IdSolicitacao);
            var sla         = Convert.ToDouble(solicitacao.Sla);
            var grupo       = new Grupo();

            if (solicitacao.IdGrupo.HasValue)
            {
                grupo = _grupo.ProcurarGrupoPorId(solicitacao.IdGrupo.Value);
            }

            conclusaoPrevista = dataAbertura.AddHours(sla);
            var diaUtil = true;

            do
            {
                var feriado   = ListarFeriado().Where(x => x.Dia == conclusaoPrevista.Day && x.Mes == conclusaoPrevista.Month && x.Ano == conclusaoPrevista.Year).Any();
                var diaSemana = conclusaoPrevista.DayOfWeek.ToString().ToUpper();

                if (feriado)
                {
                    conclusaoPrevista = conclusaoPrevista.AddDays(1);
                    diaUtil           = false;
                }

                else if (RetornaDiaTrabalhado(grupo, diaSemana) == false)
                {
                    conclusaoPrevista = conclusaoPrevista.AddDays(1);
                    diaUtil           = false;
                }
                else
                {
                    diaUtil = true;
                }
            } while (diaUtil == false);

            return(conclusaoPrevista);
        }
예제 #2
0
        public Grupo ProcurarGrupoPorId(int idGrupo)
        {
            var retorno = _grupoDAL.ProcurarGrupoPorId(idGrupo);

            return(retorno);
        }