/// <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); }
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(); } } }