Esempio n. 1
0
        /// <summary>
        /// Carrega as quantidades de aulas.
        /// </summary>
        public void CarregaQuantidadeAula()
        {
            try
            {
                btnGerar.Visible = false;

                if (UCCCalendario1.Valor > 0 && !rbtPeriodo.SelectedValue.Equals(""))
                {
                    int       tpc_id = Convert.ToInt32(rbtPeriodo.SelectedValue);
                    DataTable dtAula = CLS_TurmaAulaGeradaBO.GerarAula(VsIdDoc, UCCCalendario1.Valor, tpc_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id);

                    gdvAulas.Columns[indiceColunaCurso].HeaderText = GestaoEscolarUtilBO.nomePadraoCurso(__SessionWEB.__UsuarioWEB.Usuario.ent_id);
                    gdvAulas.Columns[indiceColunaSab].Visible      = ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.EXIBIR_SABADO_GERAR_AULAS, __SessionWEB.__UsuarioWEB.Usuario.ent_id);

                    periodosEfetivados  = "";
                    gdvAulas.DataSource = dtAula;
                    gdvAulas.DataBind();

                    if (!string.IsNullOrEmpty(periodosEfetivados))
                    {
                        lblPeriodoEfetivado.Visible = true;
                        lblPeriodoEfetivado.Text    = UtilBO.GetErroMessage(GetGlobalResourceObject("Classe", "PlanejamentoDiario.MensagemEfetivado").ToString(),
                                                                            UtilBO.TipoMensagem.Informacao);
                    }
                }
            }
            catch (Exception ex)
            {
                ApplicationWEB._GravaErro(ex);
                lblMessage.Text = UtilBO.GetErroMessage("Erro ao carregar gerar aulas.", UtilBO.TipoMensagem.Erro);
            }
        }
Esempio n. 2
0
        protected void gdvAulas_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                Dictionary <CLS_TurmaAulaGeradaDiaSemana, string> diasSemana = CLS_TurmaAulaGeradaBO.RetornaDiasSemanaGerarAulas();

                if (VS_PeriodoEfetivado(Convert.ToInt32(rbtPeriodo.SelectedValue), UCCCalendario1.Valor,
                                        Convert.ToInt64(gdvAulas.DataKeys[e.Row.RowIndex]["tur_id"]),
                                        Convert.ToDateTime(gdvAulas.DataKeys[e.Row.RowIndex]["cap_dataFim"])))
                {
                    periodosEfetivados += "<br/>" + gdvAulas.DataKeys[e.Row.RowIndex]["cap_descricao"].ToString() + ", " +
                                          gdvAulas.DataKeys[e.Row.RowIndex]["escola"].ToString() + ", " +
                                          gdvAulas.DataKeys[e.Row.RowIndex]["curso"].ToString() + ", " +
                                          gdvAulas.DataKeys[e.Row.RowIndex]["turno"].ToString() + ", " +
                                          gdvAulas.DataKeys[e.Row.RowIndex]["TurmaDisciplina"].ToString();

                    foreach (var dia in diasSemana)
                    {
                        TextBox txt = e.Row.FindControl(string.Format("txtAulas{0}", dia.Value)) as TextBox;
                        if (txt != null)
                        {
                            //txt.Text = "";
                            txt.Enabled = false;
                        }
                    }
                }
                else
                {
                    var tud_tipo = Convert.ToByte(gdvAulas.DataKeys[e.Row.RowIndex]["tud_tipo"]);
                    var ttn_tipo = Convert.ToByte(gdvAulas.DataKeys[e.Row.RowIndex]["ttn_tipo"]);

                    foreach (var dia in diasSemana)
                    {
                        TextBox txt = e.Row.FindControl(string.Format("txtAulas{0}", dia.Value)) as TextBox;
                        if (txt != null && tud_tipo == (byte)TurmaDisciplinaTipo.DisciplinaPrincipal && ttn_tipo == (byte)ACA_TipoTurnoBO.TipoTurno.Integral)
                        {
                            //txt.Text = "";
                            txt.Enabled = false;
                        }
                    }

                    btnGerar.Visible = __SessionWEB.__UsuarioWEB.GrupoPermissao.grp_alterar ||
                                       __SessionWEB.__UsuarioWEB.GrupoPermissao.grp_inserir;
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Salva as aulas geradas.
        /// </summary>
        private void Salvar()
        {
            try
            {
                if (Page.IsValid)
                {
                    DateTime?dataInicio = null;
                    DateTime?dataFim    = null;

                    #region Se informado um intervalo de datas, valida

                    if (chkIntervalo.Checked)
                    {
                        DateTime temp;
                        if (!DateTime.TryParse(txtDataInicio.Text, out temp))
                        {
                            throw new ValidationException("Data de início está inválida, deve estar no formato DD/MM/AAAA.");
                        }
                        dataInicio = temp;

                        if (!DateTime.TryParse(txtDataFim.Text, out temp))
                        {
                            throw new ValidationException("Data de fim está inválida, deve estar no formato DD/MM/AAAA.");
                        }
                        dataFim = temp;

                        if (dataFim < dataInicio)
                        {
                            throw new ValidationException("Data de início não pode ser maior que a data de fim.");
                        }
                    }

                    #endregion

                    int tpc_id = Convert.ToInt32(rbtPeriodo.SelectedValue);

                    var aulasSalvar          = new List <CLS_TurmaAulaGerada>();
                    var dicTurmasDisciplinas = new Dictionary <long, string>();

                    #region Valida a qtde de horas semanais e preenche aulasSalvar e dicTurmasDisciplinas

                    Dictionary <CLS_TurmaAulaGeradaDiaSemana, string> diasSemana = CLS_TurmaAulaGeradaBO.RetornaDiasSemanaGerarAulas();

                    string str_tud_ids = string.Join(";", (from GridViewRow row in gdvAulas.Rows
                                                           select gdvAulas.DataKeys[row.RowIndex]["tud_id"].ToString()).Distinct().ToArray());
                    // Recupera as CLS_TurmaAulaGerada que já existem no banco para o docente e período informado
                    var tagsBanco = CLS_TurmaAulaGeradaBO.SelectBy_DisciplinaDocente(str_tud_ids, VsIdDoc, tpc_id);

                    long tud_idAnterior      = 0;
                    int  cargaHorariaSemanal = 0;
                    int  cargaHorariaDia     = 0;
                    var  nomeTurmaDisciplina = string.Empty;

                    foreach (GridViewRow row in gdvAulas.Rows)
                    {
                        var tud_id = Convert.ToInt64(gdvAulas.DataKeys[row.RowIndex]["tud_id"]);
                        var tud_cargaHorariaSemanal = Convert.ToInt32(gdvAulas.DataKeys[row.RowIndex]["tud_cargaHorariaSemanal"]);
                        var tud_tipo                   = Convert.ToByte(gdvAulas.DataKeys[row.RowIndex]["tud_tipo"]);
                        var tud_idRelacionada          = String.IsNullOrEmpty(gdvAulas.DataKeys[row.RowIndex]["tud_idRelacionada"].ToString()) ? -1 : Convert.ToInt64(gdvAulas.DataKeys[row.RowIndex]["tud_idRelacionada"]);
                        var tdt_posicao                = Convert.ToByte(gdvAulas.DataKeys[row.RowIndex]["tdt_posicao"].ToString());
                        var fav_fechamentoAutomatico   = Convert.ToBoolean(gdvAulas.DataKeys[row.RowIndex]["fav_fechamentoAutomatico"]);
                        var fav_tipoApuracaoFrequencia = Convert.ToByte(gdvAulas.DataKeys[row.RowIndex]["fav_tipoApuracaoFrequencia"]);
                        var ttn_tipo                   = Convert.ToByte(gdvAulas.DataKeys[row.RowIndex]["ttn_tipo"]);

                        //Se a turma estiver em um período efetivado não adiciona para salvar
                        if (VS_PeriodoEfetivado(tpc_id, Convert.ToInt32(gdvAulas.DataKeys[row.RowIndex]["cal_id"]),
                                                Convert.ToInt64(gdvAulas.DataKeys[row.RowIndex]["tur_id"]),
                                                Convert.ToDateTime(gdvAulas.DataKeys[row.RowIndex]["cap_dataFim"])))
                        {
                            continue;
                        }

                        // Mantem a contagem de aulas a gerar, caso seja o mesmo tud_id (docencia compartilhada com mais de uma disciplina),
                        // pois o somatorio deve considerar todas as disciplinas relacionadas.
                        if (tud_id != tud_idAnterior)
                        {
                            cargaHorariaSemanal = 0;
                            tud_idAnterior      = tud_id;

                            nomeTurmaDisciplina = gdvAulas.DataKeys[row.RowIndex]["TurmaDisciplina"].ToString();

                            if (tud_tipo == (byte)TurmaDisciplinaTipo.DocenciaCompartilhada)
                            {
                                nomeTurmaDisciplina = nomeTurmaDisciplina.Substring(0, nomeTurmaDisciplina.LastIndexOf('/') - 1);
                            }

                            if (!dicTurmasDisciplinas.ContainsKey(tud_id))
                            {
                                dicTurmasDisciplinas.Add(tud_id, nomeTurmaDisciplina);
                            }
                        }

                        foreach (var dia in diasSemana)
                        {
                            cargaHorariaDia = 0;

                            TextBox txt = row.FindControl(string.Format("txtAulas{0}", dia.Value)) as TextBox;
                            if (!string.IsNullOrEmpty(txt.Text) &&
                                (!int.TryParse(txt.Text, out cargaHorariaDia) || cargaHorariaDia <= 0))
                            {
                                // se informou um valor não-numérico ou negativo
                                throw new ValidationException(GetGlobalResourceObject("Classe", "PlanejamentoDiario.Cadastro.lblAviso.Text").ToString());
                            }

                            cargaHorariaSemanal += cargaHorariaDia;

                            // se estourou o limite de horas da semana, dá erro
                            if (cargaHorariaSemanal > tud_cargaHorariaSemanal)
                            {
                                throw new ValidationException(string.Format(GetGlobalResourceObject("Classe", "PlanejamentoDiario.Cadastro.MensagemCargaHorariaTurma").ToString(), nomeTurmaDisciplina));
                            }

                            var tag = tagsBanco.FirstOrDefault(i => i.tud_id == tud_id &&
                                                               i.tag_diaSemana == (byte)dia.Key &&
                                                               i.tdt_posicao == tdt_posicao &&
                                                               i.tpc_id == tpc_id &&
                                                               (tud_idRelacionada <= 0 || i.tud_idRelacionada == tud_idRelacionada));

                            if (tag == null)
                            {
                                tag = new CLS_TurmaAulaGerada()
                                {
                                    tag_id = -1
                                };
                            }

                            tag.tud_id                     = tud_id;
                            tag.tag_diaSemana              = (byte)dia.Key;
                            tag.tag_numeroAulas            = cargaHorariaDia;
                            tag.tdt_posicao                = tdt_posicao;
                            tag.tag_situacao               = 1;
                            tag.tpc_id                     = tpc_id;
                            tag.tud_idRelacionada          = tud_idRelacionada;
                            tag.uni_id                     = Convert.ToInt32(gdvAulas.DataKeys[row.RowIndex]["uni_id"]);
                            tag.esc_id                     = Convert.ToInt32(gdvAulas.DataKeys[row.RowIndex]["esc_id"]);
                            tag.cal_id                     = Convert.ToInt32(gdvAulas.DataKeys[row.RowIndex]["cal_id"]);
                            tag.tur_id                     = Convert.ToInt64(gdvAulas.DataKeys[row.RowIndex]["tur_id"]);
                            tag.tud_tipo                   = tud_tipo;
                            tag.tud_cargaHorariaSemanal    = tud_cargaHorariaSemanal;
                            tag.fav_fechamentoAutomatico   = fav_fechamentoAutomatico;
                            tag.fav_tipoApuracaoFrequencia = fav_tipoApuracaoFrequencia;
                            tag.ttn_tipo                   = ttn_tipo;
                            aulasSalvar.Add(tag);
                        }
                    }

                    #endregion

                    bool gerouTodasAulas;
                    Dictionary <long, string>    ultrapassouCargaHorariaSemanal;
                    Dictionary <long, string>    semVigencia;
                    Dictionary <long, string>    semAulasPrevistas;
                    Dictionary <long, Exception> outrosErros;

                    if (CLS_TurmaAulaGeradaBO.GerarAulasPlanejamentoDiario(aulasSalvar, tpc_id, VsIdDoc, dataInicio, dataFim,
                                                                           __SessionWEB.__UsuarioWEB.Usuario.usu_id,
                                                                           __SessionWEB.__UsuarioWEB.Usuario.ent_id,
                                                                           dicTurmasDisciplinas,
                                                                           out gerouTodasAulas,
                                                                           out ultrapassouCargaHorariaSemanal,
                                                                           out semVigencia,
                                                                           out semAulasPrevistas,
                                                                           out outrosErros,
                                                                           (byte)LOG_TurmaAula_Alteracao_Origem.WebAgenda))
                    {
                        ApplicationWEB._GravaLogSistema(tagsBanco.Count > 0 ? LOG_SistemaTipo.Update : LOG_SistemaTipo.Insert
                                                        , "Agenda gerada | " + "doc_id: " + VsIdDoc + " | tpc_id: " + tpc_id + " | tud_id: " + str_tud_ids);

                        StringBuilder alerta = new StringBuilder();

                        if (!gerouTodasAulas)
                        {
                            alerta.Append(GetGlobalResourceObject("Classe", "PlanejamentoDiario.Cadastro.MensagemAulaFuturaComConteudo"));
                        }

                        if (ultrapassouCargaHorariaSemanal.Any())
                        {
                            alerta.Append(alerta.Length == 0 ? string.Empty : "<br />")
                            .Append(GetGlobalResourceObject("Classe", "PlanejamentoDiario.Cadastro.MensagemCargaHorariaUltrapassada"));

                            ultrapassouCargaHorariaSemanal.Values.ToList().ForEach(msg => alerta.Append("<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- ")
                                                                                   .Append(msg));
                        }

                        if (semVigencia.Any())
                        {
                            alerta.Append(alerta.Length == 0 ? string.Empty : "<br />")
                            .Append(GetGlobalResourceObject("Classe", "PlanejamentoDiario.Cadastro.MensagemSemVigencia"));

                            semVigencia.Values.ToList().ForEach(msg => alerta.Append("<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- ")
                                                                .Append(msg));
                        }

                        if (outrosErros.Any())
                        {
                            alerta.Append(alerta.Length == 0 ? string.Empty : "<br /><br />")
                            .Append("Outros alertas:");

                            foreach (var erro in outrosErros)
                            {
                                if (erro.Value is ValidationException)
                                {
                                    alerta.AppendFormat("<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- {0}", erro.Value.Message);
                                }
                                else
                                {
                                    ApplicationWEB._GravaErro(erro.Value);

                                    alerta.Append("<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- ")
                                    .AppendFormat("Falha inesperada ao gravar {0}", dicTurmasDisciplinas[erro.Key]);
                                }
                            }
                        }

                        lblAlerta.Text    = UtilBO.GetErroMessage(alerta.ToString(), UtilBO.TipoMensagem.Alerta);
                        lblAlerta.Visible = (alerta.Length > 0);

                        if (alerta.Length == 0)
                        {
                            var msg = tagsBanco.Count > 0 ? GetGlobalResourceObject("Classe", "PlanejamentoDiario.Cadastro.AgendaAlteradaComSucesso").ToString()
                                                          : GetGlobalResourceObject("Classe", "PlanejamentoDiario.Cadastro.AgendaGeradaComSucesso").ToString();

                            lblMessage.Text = UtilBO.GetErroMessage(msg, UtilBO.TipoMensagem.Sucesso);
                        }
                    }
                }
            }
            catch (ArgumentException ex)
            {
                lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta);
            }
            catch (DuplicateNameException ex)
            {
                lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta);
            }
            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 gerar agenda.", UtilBO.TipoMensagem.Erro);
            }
        }