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); }
public Grupo ProcurarGrupoPorId(int idGrupo) { var retorno = _grupoDAL.ProcurarGrupoPorId(idGrupo); return(retorno); }