示例#1
0
        /// <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);
                    }
                }
            }
        }