/// <summary> /// Valida a carga horária ao salvar a lista de turmaHorario. /// </summary> /// <param name="listaTurmaHorario"></param> /// <param name="banco"></param> private static void ValidarCarga(List <TUR_TurmaHorario> listaTurmaHorario, TalkDBTransaction banco) { string tud_ids = string.Join(";", listaTurmaHorario.Where(p => p.tud_id > 0).GroupBy(p => p.tud_id).Select(p => p.Key.ToString()).ToArray()); if (!string.IsNullOrEmpty(tud_ids)) { List <TUR_TurmaDisciplina> listaDisciplinas = TUR_TurmaDisciplinaBO.SelecionaTurmaDisciplina(tud_ids, banco); var validacaoCargaSemanal = from TUR_TurmaHorario horario in listaTurmaHorario.Where(p => p.tud_id > 0) group horario by horario.tud_id into gHorario join TUR_TurmaDisciplina tud in listaDisciplinas on gHorario.Key equals tud.tud_id select new { tud_id = gHorario.Key , tud_codigo = tud.tud_codigo , tud_nome = tud.tud_nome , tud_tipo = tud.tud_tipo , quantidadeAulas = gHorario.Count() , cargaHorarioSemanal = tud.tud_cargaHorariaSemanal }; if (validacaoCargaSemanal.Any(p => p.quantidadeAulas > p.cargaHorarioSemanal && p.tud_tipo != (byte)TurmaDisciplinaTipo.DisciplinaPrincipal && p.tud_tipo != (byte)TurmaDisciplinaTipo.Regencia)) { string mensagem; mensagem = string.Join("<br />", validacaoCargaSemanal.Where(p => p.quantidadeAulas > p.cargaHorarioSemanal && p.tud_tipo != (byte)TurmaDisciplinaTipo.DisciplinaPrincipal) .Select(p => string.Format(CustomResource.GetGlobalResourceObject("BLL", "TUR_TurmaHorarioBO.SalvarTurmaHorario.ValidacaoTemposAula"), p.tud_nome, p.cargaHorarioSemanal, p.tud_codigo, (p.quantidadeAulas - p.cargaHorarioSemanal))) .ToArray()); if (!string.IsNullOrEmpty(mensagem)) { throw new ValidationException(mensagem); } } } }