예제 #1
0
        /// <summary>
        /// Salva as entidades dos docentes para a disciplina.
        /// </summary>
        /// <param name="tur_id">ID da turma</param>
        /// <param name="cad">Estrutura com dados da disciplina e lista de docentes</param>
        /// <param name="banco">Transação com banco</param>
        /// <param name="listaDocentesTodasDisciplinas">Lista de todos os docentes cadastrados para todas as disciplinas da turma - para verificar os que irá excluir</param>
        /// <param name="ent_id">Id da entidade do usuário logado.</param>
        public static void SalvarDocentesDisciplina(long tur_id
                                                    , CadastroTurmaDisciplina cad
                                                    , TalkDBTransaction banco
                                                    , List <TUR_Turma_Docentes_Disciplina> listaDocentesTodasDisciplinas
                                                    , Guid ent_id)
        {
            // Pegar os docentes que existiam antes na disciplina.
            List <TUR_Turma_Docentes_Disciplina> docentesCadastrados =
                (from TUR_Turma_Docentes_Disciplina item in listaDocentesTodasDisciplinas
                 where item.entDocente.tud_id == cad.entTurmaDisciplina.tud_id
                 select item
                ).ToList();

            foreach (TUR_Turma_Docentes_Disciplina docente in cad.listaTurmaDocente)
            {
                DateTime VigenciaFinalDocente = docente.entDocente.tdt_vigenciaFim == new DateTime() ? DateTime.MaxValue : docente.entDocente.tdt_vigenciaFim;

                // Validar se existem vigências com conflito de data.
                var x = from TUR_Turma_Docentes_Disciplina item in cad.listaTurmaDocente
                        where
                        GestaoEscolarUtilBO.ExisteConflitoDatas
                            (item.entDocente.tdt_vigenciaInicio, item.entDocente.tdt_vigenciaFim == new DateTime() ? DateTime.MaxValue : item.entDocente.tdt_vigenciaFim
                            , docente.entDocente.tdt_vigenciaInicio, VigenciaFinalDocente) &&
                        item.indice != docente.indice &&
                        item.entDocente.tdt_posicao == docente.entDocente.tdt_posicao
                        select item;

                if (x.Count() > 0)
                {
                    throw new ValidationException(
                              "Existe um conflito de datas da vigência do docente \"" + docente.doc_nome + "\".");
                }

                // Verifica se o mesmo docente está vigente em mais de uma posição.
                var y = from TUR_Turma_Docentes_Disciplina item in cad.listaTurmaDocente
                        where
                        GestaoEscolarUtilBO.ExisteConflitoDatas
                            (item.entDocente.tdt_vigenciaInicio, item.entDocente.tdt_vigenciaFim == new DateTime() ? DateTime.MaxValue : item.entDocente.tdt_vigenciaFim
                            , docente.entDocente.tdt_vigenciaInicio, VigenciaFinalDocente) &&
                        item.entDocente.tdt_posicao != docente.entDocente.tdt_posicao &&
                        item.entDocente.doc_id == docente.entDocente.doc_id &&
                        item.entDocente.coc_id == docente.entDocente.coc_id &&
                        item.entDocente.col_id == docente.entDocente.col_id &&
                        item.entDocente.crg_id == docente.entDocente.crg_id
                        select item;

                if (y.Count() > 0)
                {
                    throw new ValidationException(
                              "O docente \"" + docente.doc_nome + "\" não pode estar vigente em mais de uma posição.");
                }

                // Remove do cache as turmas do docente.
                TUR_TurmaBO.RemoveCacheDocenteControleTurma(ent_id, docente.entDocente.doc_id);
                TUR_TurmaBO.RemoveCacheDocente_TurmaDisciplina(tur_id, docente.entDocente.doc_id, ent_id);

                TUR_TurmaDocente entTurmaDocente = docente.entDocente;
                entTurmaDocente.tud_id = cad.entTurmaDisciplina.tud_id;

                LimpaCache(entTurmaDocente, ent_id);

                // Salvar entidade.
                Save(entTurmaDocente, banco);
            }

            // Se remover docente, transfere os lançamentos.
            if (!cad.listaTurmaDocente.Exists(p => (p.entDocente.tdt_posicao > 1 && p.entDocente.tdt_situacao == 1)) &&
                ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.ALTERAR_AULAS_PARA_TITULAR_ATRIBUICAO_DOCENTES, ent_id))
            {
                TransferirLancamentos_Posicao(cad.entTurmaDisciplina.tud_id, banco);
            }

            foreach (TUR_Turma_Docentes_Disciplina docente in docentesCadastrados)
            {
                // Verificar se o docente existia antes e não existe mais.
                if (!cad.listaTurmaDocente.Exists(p =>
                                                  (p.entDocente.tud_id == docente.entDocente.tud_id &&
                                                   p.entDocente.tdt_id == docente.entDocente.tdt_id)))
                {
                    // Excluir.
                    Delete(docente.entDocente, banco);
                }
            }
        }
예제 #2
0
        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                try
                {
                    List <TUR_Turma_Docentes_Disciplina> list = RetornaDadosGrid();

                    DateTime vigenciaInicio = Convert.ToDateTime(txtVigenciaIni.Text);
                    DateTime vigenciaFim    = string.IsNullOrEmpty(txtVigenciaFim.Text) ? new DateTime() : Convert.ToDateTime(txtVigenciaFim.Text);
                    int      tdt_id         = string.IsNullOrEmpty(lbltdt_id.Text) ? 0 : Convert.ToInt32(lbltdt_id.Text);

                    // Se for uma alteração deleta do list e adiciona novamente
                    if (!string.IsNullOrEmpty(lblIndice.Text))
                    {
                        list.Remove(list.Find(p => p.indice == Convert.ToInt32(lblIndice.Text)));
                    }

                    DateTime dtFim2 = vigenciaFim == new DateTime() ? DateTime.MaxValue : vigenciaFim;

                    // Verifica se não existe conflito de datas
                    foreach (TUR_Turma_Docentes_Disciplina item in list)
                    {
                        DateTime dtFim = item.entDocente.tdt_vigenciaFim == new DateTime() ? DateTime.MaxValue : item.entDocente.tdt_vigenciaFim;

                        if (GestaoEscolarUtilBO.ExisteConflitoDatas(item.entDocente.tdt_vigenciaInicio, dtFim, vigenciaInicio, dtFim2))
                        {
                            throw new ValidationException("Existe conflito entre as vigências.");
                        }
                    }

                    // RF_076
                    string periodoVigencia;
                    if (!RHU_ColaboradorCargoBO.ValidarVigenciaPorData(uccDocente.Valor, vigenciaInicio, vigenciaFim, out periodoVigencia))
                    {
                        throw new ValidationException
                                  ("A vigência do docente na turma deve estar dentro da vigência do seu cargo (" +
                                  periodoVigencia + ").");
                    }

                    TUR_Turma_Docentes_Disciplina entDoc = new TUR_Turma_Docentes_Disciplina
                    {
                        doc_nome   = uccDocente.TextoSelecionado,
                        entDocente = new TUR_TurmaDocente
                        {
                            doc_id             = uccDocente.Doc_id,
                            col_id             = uccDocente.Valor[1],
                            crg_id             = (int)uccDocente.Valor[2],
                            coc_id             = (int)uccDocente.Valor[3],
                            tdt_vigenciaInicio = vigenciaInicio,
                            tdt_vigenciaFim    = vigenciaFim,
                            tdt_id             = tdt_id
                        }
                    };

                    list.Add(entDoc);
                    AtualizaGrid(list);
                    LimparCampos();

                    CarregarDocenteVigente(list);
                }
                catch (ValidationException ex)
                {
                    lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta);
                }
                catch (Exception ex)
                {
                    ApplicationWEB._GravaErro(ex);
                    lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar o docente.", UtilBO.TipoMensagem.Erro);
                }
            }
        }