Exemplo n.º 1
0
        /// <summary>
        /// Salva o relatório de atendimento
        /// </summary>
        /// <param name="rea">Entidade do relatório de atendimento</param>
        /// <param name="lstGrupo">Lista de grupos</param>
        /// <param name="lstCargo">Lista de cargos</param>
        /// <param name="lstQuestionario">Lista de questionários</param>
        /// <param name="postedFile">Arquivo anexo</param>
        /// <returns></returns>
        public static bool Salvar(CLS_RelatorioAtendimento rea, List <CLS_RelatorioAtendimentoGrupo> lstGrupo, List <CLS_RelatorioAtendimentoCargo> lstCargo, List <CLS_RelatorioAtendimentoQuestionario> lstQuestionario, List <CLS_RelatorioAtendimentoPeriodo> lstRelatorioPeriodo, long arquivo, int TamanhoMaximoArquivo, string[] TiposArquivosPermitidos)
        {
            CLS_RelatorioAtendimentoDAO dao = new CLS_RelatorioAtendimentoDAO();

            dao._Banco.Open(IsolationLevel.ReadCommitted);
            try
            {
                rea.arq_idAnexo = arquivo;

                if (arquivo > 0)
                {
                    SYS_Arquivo arq = new SYS_Arquivo {
                        arq_id = arquivo
                    };
                    SYS_ArquivoBO.GetEntity(arq, dao._Banco);
                    arq.arq_situacao = (byte)SYS_ArquivoSituacao.Ativo;
                    SYS_ArquivoBO.Save(arq, dao._Banco);
                }

                bool isNew = rea.IsNew;
                if (!Save(rea, dao._Banco))
                {
                    throw new ValidationException("Erro ao salvar o relatório de atendimento.");
                }

                List <CLS_RelatorioAtendimentoQuestionario> lstQuestionarioBanco = CLS_RelatorioAtendimentoQuestionarioBO.SelectBy_rea_id(rea.rea_id);

                if (!isNew)
                {
                    CLS_RelatorioAtendimentoCargoBO.DeleteBy_rea_id(rea.rea_id, dao._Banco);
                    CLS_RelatorioAtendimentoGrupoBO.DeleteBy_rea_id(rea.rea_id, dao._Banco);

                    //Exclui todos os questionários que não estão mais ligados ao relatório
                    foreach (CLS_RelatorioAtendimentoQuestionario raq in lstQuestionarioBanco.Where(b => !lstQuestionario.Any(q => q.raq_id == b.raq_id && q.raq_situacao == (byte)CLS_RelatorioAtendimentoQuestionarioSituacao.Ativo && !q.IsNew)))
                    {
                        if (raq.emUso)
                        {
                            throw new ValidationException(string.Format("O questionário ({0}) possui lançamentos no relatório e não pode ser excluído.", raq.qst_titulo));
                        }

                        raq.raq_situacao = (byte)CLS_RelatorioAtendimentoQuestionarioSituacao.Excluido;
                        if (!CLS_RelatorioAtendimentoQuestionarioBO.Delete(raq, dao._Banco))
                        {
                            throw new ValidationException("Erro ao remover questionário do relatório de atendimento.");
                        }
                    }
                }

                if (lstRelatorioPeriodo.Any())
                {
                    lstRelatorioPeriodo.ForEach(p => p.rea_id = rea.rea_id);
                    CLS_RelatorioAtendimentoPeriodoBO.AtualizarPeriodos(lstRelatorioPeriodo, dao._Banco);
                }

                foreach (CLS_RelatorioAtendimentoGrupo rag in lstGrupo)
                {
                    rag.rea_id = rea.rea_id;
                    if (!CLS_RelatorioAtendimentoGrupoBO.Save(rag, dao._Banco))
                    {
                        throw new ValidationException("Erro ao salvar grupo do relatório de atendimento.");
                    }
                }

                foreach (CLS_RelatorioAtendimentoCargo rac in lstCargo)
                {
                    rac.rea_id = rea.rea_id;
                    if (!CLS_RelatorioAtendimentoCargoBO.Save(rac, dao._Banco))
                    {
                        throw new ValidationException("Erro ao salvar cargo do relatório de atendimento.");
                    }
                }

                foreach (CLS_RelatorioAtendimentoQuestionario raq in lstQuestionario.Where(q => q.raq_situacao == (byte)CLS_RelatorioAtendimentoQuestionarioSituacao.Ativo))
                {
                    raq.rea_id = rea.rea_id;
                    if (raq.IsNew)
                    {
                        raq.raq_id = -1;
                    }
                    if (!CLS_RelatorioAtendimentoQuestionarioBO.Save(raq, dao._Banco))
                    {
                        throw new ValidationException("Erro ao salvar questionário do relatório de atendimento.");
                    }
                }
            }
            catch (Exception ex)
            {
                dao._Banco.Close(ex);
                throw;
            }
            finally
            {
                dao._Banco.Close();
            }
            return(true);
        }
Exemplo n.º 2
0
        public static bool Salvar
        (
            int tad_id,
            Guid uad_idSuperior,
            int esc_id,
            List <ACA_ArquivoArea> listDocumentos
        )
        {
            //Inicio do processo de Registro no BD.
            ACA_ArquivoAreaDAO dao = new ACA_ArquivoAreaDAO();

            //Abertura de BEGIN TRAN para Salvar Documentos.
            dao._Banco.Open(IsolationLevel.ReadCommitted);

            SYS_EntidadeDAO entDao = new SYS_EntidadeDAO();

            entDao._Banco.Open(IsolationLevel.ReadCommitted);

            try
            {
                List <ACA_ArquivoArea> listaBanco;
                using (DataTable dtBanco = GetSelectBy_Id_Dre_Escola(tad_id, esc_id, uad_idSuperior, -1, true, false, dao._Banco))
                {
                    listaBanco = dtBanco.Rows.Count > 0 ?
                                 dtBanco.Rows.Cast <DataRow>().Select(p => dao.DataRowToEntity(p, new ACA_ArquivoArea())).ToList() :
                                 new List <ACA_ArquivoArea>();
                }

                foreach (ACA_ArquivoArea entityArquivoArea in listDocumentos)
                {
                    ACA_ArquivoAreaBO.Save(entityArquivoArea, dao._Banco);

                    if (entityArquivoArea.arq_id > 0)
                    {
                        SYS_Arquivo arq = new SYS_Arquivo {
                            arq_id = entityArquivoArea.arq_id
                        };
                        SYS_ArquivoBO.GetEntity(arq, dao._Banco);
                        arq.arq_situacao = (byte)SYS_ArquivoSituacao.Ativo;
                        SYS_ArquivoBO.Save(arq, dao._Banco);
                    }
                }

                bool teste = listaBanco.Where(p => !listDocumentos.Exists(q => q.aar_id == p.aar_id && q.tad_id == p.tad_id))
                             .ToList()
                             .Aggregate(true, (deletou, doc) => deletou & Delete(doc, dao._Banco));

                return(true);
            }
            catch (Exception err)
            {
                //Roolback da transação
                dao._Banco.Close(err);
                entDao._Banco.Close(err);
                throw;
            }
            finally
            {
                //Fechamento da transação
                if (dao._Banco.ConnectionIsOpen)
                {
                    dao._Banco.Close();
                }

                if (entDao._Banco.ConnectionIsOpen)
                {
                    entDao._Banco.Close();
                }
            }
        }