public bool ExcluiSubsecao(string id_subsecao) { //verifica se a sunseção tem funcionários alocados //caso tenha não permite a exclusão using (gsatOrganogramaDataContext objDs = new gsatOrganogramaDataContext()) { var funcionarios = (from f in objDs.ORG_FUNCIONARIO_ALOCADO where f.COD_SECAO.Equals(id_subsecao) select new { f.NOME }).Distinct(); //não poderá excluir! if (funcionarios.Count() > 0) { StringBuilder objStrErro = new StringBuilder(); objStrErro.Append(@"Você não pode excluir esta subseção pois existem funcionários alocados.\n"); foreach (object f in funcionarios) { objStrErro.Append(string.Format(@"{0}\n", f.ToString().Replace("{ NOME =", "").Replace("}", ""))); } Erro = objStrErro.ToString(); return(false); } else { //Log no Audit AuditTrail.GravaLogAuditTrail("SUBSEÇÃO EXCLUIDA", id_subsecao, ""); //deleta a hierarquia da subseção. objDs.ORG_HIERARQUIA.DeleteObject( objDs.ORG_HIERARQUIA.Where(f => f.COD_SECAO.Equals(id_subsecao)).FirstOrDefault()); objDs.SaveChanges(); return(true); } } }
public bool AtualizaSecao(ORG_LISTA_SECOES objSecao) { string strAtu = "", strAnt = ""; //cria o datacontext gsatOrganogramaDataContext objDs = new gsatOrganogramaDataContext(); //verifica se existe a entrada desta secao na tabela de hierarquia. var objHierarquia = (from h in objDs.ORG_HIERARQUIA where h.COD_SECAO.Equals(objSecao.COD_SECAO) && h.COD_EMPRESA.Equals(objSecao.COD_EMPRESA) select h).FirstOrDefault(); bool add = false; if (objHierarquia != null) { strAnt = string.Format("COD_SECAO:{0}, NOME_MOD:({1} {2}), GESTOR_MOD:({3} {4}), PUBLICO:{5}, POSSUI_SUPERIOR?:{6} ", objHierarquia.COD_SECAO, objHierarquia.NOME_MOD.Equals("1") ? "Sim": "Não", objHierarquia.NOME, objHierarquia.GESTOR_MOD.Equals("1")? "Sim": "Não", objHierarquia.GESTOR, objHierarquia.PUBLICO.Equals("1")? "Sim" : "Não", objHierarquia.POSSUI_SUPERIOR.Equals("1")? "Sim" : "Não"); } else { add = true; objHierarquia = new ORG_HIERARQUIA(); } objHierarquia.COD_EMPRESA = objSecao.COD_EMPRESA; objHierarquia.COD_SECAO = objSecao.COD_SECAO; objHierarquia.COD_SECAO_SUP = objSecao.COD_SECAO_SUP; objHierarquia.COD_EMPRESA_SUP = objSecao.COD_EMPRESA_SUP; objHierarquia.GESTOR = objSecao.CPF_GESTOR_MOD; objHierarquia.GESTOR_MOD = objSecao.GESTOR_MOD; objHierarquia.NOME = objSecao.NOME_MODIFICADO; objHierarquia.NOME_MOD = objSecao.NOME_MOD; objHierarquia.PUBLICO = objSecao.PUBLICO; objHierarquia.POSSUI_SUPERIOR = objSecao.POSSUI_SUPERIOR; strAtu = string.Format("COD_SECAO:{0}, NOME_MOD:({1} {2}), GESTOR_MOD:({3} {4}), PUBLICO:{5}, POSSUI_SUPERIOR?:{6} ", objHierarquia.COD_SECAO, objHierarquia.NOME_MOD.Equals("1") ? "Sim" : "Não", objHierarquia.NOME, objHierarquia.GESTOR_MOD.Equals("1") ? "Sim" : "Não", objHierarquia.GESTOR, objHierarquia.PUBLICO.Equals("1") ? "Sim" : "Não", objHierarquia.POSSUI_SUPERIOR.Equals("1") ? "Sim" : "Não"); //caso o objeto tenha sido adicionado if (add) { objDs.ORG_HIERARQUIA.AddObject(objHierarquia); } //commit nas mudanças objDs.SaveChanges(); AuditTrail.GravaLogAuditTrail("ALTERAÇÃO DE SEÇÃO", strAnt, strAtu); return(true); }
public bool AdicionaOuRecriaSubsecao(ORG_HIERARQUIA secao, List <ORG_FUNCIONARIO_ALOCADO> funcionarios, bool Logar) { if (Logar) { string strAtu = "", strAnt = ""; //cria a linha de novos registros strAtu = string.Format("SUBSEÇÃO:{0} CÓDIGO:{1} SEÇÃO_SUP: {2} GESTOR: {3} - FUNCIONÁRIOS: (", secao.NOME, secao.COD_SECAO, secao.COD_SECAO_SUP, secao.GESTOR ); foreach (ORG_FUNCIONARIO_ALOCADO fu in funcionarios) { strAtu += string.Format("{0} ,", fu.CPF); } strAtu += ")"; strAtu = strAtu.Replace(",)", ")"); AuditTrail.GravaLogAuditTrail("CRIAÇÃO DE SUBSEÇÃO", strAtu, strAnt); } using (gsatOrganogramaDataContext objDs = new gsatOrganogramaDataContext()) { //remove os funcionarios alocados na hierarquia (caso exista) foreach (ORG_FUNCIONARIO_SUBSECAO fu in objDs.ORG_FUNCIONARIO_SUBSECAO.Where(f => f.COD_EMPRESA.Equals(secao.COD_EMPRESA) && f.COD_SECAO.Equals(secao.COD_SECAO))) { //verifica se o funcionário é gestor de alguma subseção/secao com gestor modificado var funcAloc = from h in objDs.ORG_HIERARQUIA where h.GESTOR_MOD.Equals("1") && h.GESTOR.Equals(fu.CPF) select h; //caso encontre algum resultado, atualiza a tabela de hierarquia setando //o flag de gestor modificado como 0 e o CPF do gestor como vazio. foreach (ORG_HIERARQUIA fGest in funcAloc) { fGest.GESTOR = string.Empty; fGest.GESTOR_MOD = "0"; objDs.SaveChanges(); } //remove ele da tabela de hierarquia objDs.ORG_FUNCIONARIO_SUBSECAO.DeleteObject(fu); } //remove o registro da hierarquia (caso exista) foreach (ORG_HIERARQUIA h in objDs.ORG_HIERARQUIA.Where(f => f.COD_SECAO.Equals(secao.COD_SECAO) && f.COD_EMPRESA.Equals(secao.COD_EMPRESA))) { objDs.ORG_HIERARQUIA.DeleteObject(h); } //adiciona a nova hierarquia objDs.ORG_HIERARQUIA.AddObject(secao); //adiciona os funcionarios foreach (ORG_FUNCIONARIO_ALOCADO fu in funcionarios) { ORG_FUNCIONARIO_SUBSECAO objSub = new ORG_FUNCIONARIO_SUBSECAO(); objSub.COD_SECAO = secao.COD_SECAO; objSub.COD_EMPRESA = secao.COD_EMPRESA; objSub.CPF = fu.CPF; objDs.ORG_FUNCIONARIO_SUBSECAO.AddObject(objSub); } objDs.SaveChanges(); return(true); } }
public bool AtualizaSubsecao(string strCodSecaoOrignal, string strCodEmpresaOriginal, ORG_HIERARQUIA secaoNova, List <ORG_FUNCIONARIO_ALOCADO> funcionarios) { string strAtu = "", strAnt = ""; //cria o contexto de dados using (gsatOrganogramaDataContext objDS = new gsatOrganogramaDataContext()) { //deleta a hierarquia ORG_HIERARQUIA objHierarquia = objDS.ORG_HIERARQUIA.Where(f => f.COD_SECAO.Equals(strCodSecaoOrignal) && f.COD_EMPRESA.Equals(strCodEmpresaOriginal)).FirstOrDefault(); if (objHierarquia == null) { Erro = "Sub Seção não encontrada ou modificada por outro usuário"; return(false); } else { strAnt = string.Format("SUBSEÇÃO:{0} CÓDIGO:{1} SEÇÃO_SUP: {2} GESTOR: {3} - FUNCIONÁRIOS: (", objHierarquia.NOME, objHierarquia.COD_SECAO, objHierarquia.COD_SECAO_SUP, objHierarquia.GESTOR); } //exclui os funcionarios alocados foreach (ORG_FUNCIONARIO_SUBSECAO fu in objDS.ORG_FUNCIONARIO_SUBSECAO.Where (f => f.COD_SECAO.Equals(strCodSecaoOrignal) && f.COD_EMPRESA.Equals(strCodEmpresaOriginal))) { strAnt += string.Format("{0} ,", fu.CPF); objDS.ORG_FUNCIONARIO_SUBSECAO.DeleteObject(fu); } strAnt += ")"; strAnt = strAnt.Replace(",)", ")"); //exclui a hierarquia (original) objDS.ORG_HIERARQUIA.DeleteObject(objHierarquia); //salva info no bd objDS.SaveChanges(); //cria a linha de novos registros strAtu = string.Format("SUBSEÇÃO:{0} CÓDIGO:{1} SEÇÃO_SUP: {2} GESTOR: {3} - FUNCIONÁRIOS: (", secaoNova.NOME, secaoNova.COD_SECAO, secaoNova.COD_SECAO_SUP, secaoNova.GESTOR ); foreach (ORG_FUNCIONARIO_ALOCADO fu in funcionarios) { strAtu += string.Format("{0} ,", fu.CPF); } strAtu += ")"; strAtu = strAtu.Replace(",)", ")"); //grava o audit trail AuditTrail.GravaLogAuditTrail("ALTERAÇÃO DE SUBSEÇÃO", strAnt, strAtu); //cria a nova return(AdicionaOuRecriaSubsecao(secaoNova, funcionarios, false)); } }
public bool AtualizaDiretoria(List <ORG_LISTA_DIRETORIAS> lista, String Empresa) { //atualiza todas os registros existentes desmarca como diretoria gsatOrganogramaDataContext objDs = new gsatOrganogramaDataContext(); var dirsAtuais = from k in objDs.ORG_HIERARQUIA where k.DIRETORIA.Equals("1") && k.COD_EMPRESA.Equals(Empresa) select k; string strAnterior = "DIRETORIAS: ("; string strAtual = "DIRETORIAS: ("; foreach (ORG_HIERARQUIA h in dirsAtuais) { //Log de Auditoria Anterior strAnterior += string.Format("{0},", h.COD_SECAO); h.DIRETORIA = "0"; } //grava a limpeza nas hierarquias objDs.SaveChanges(); //adiciona a flag de diretoria aos novos foreach (ORG_LISTA_DIRETORIAS d in lista) { //Log de Auditoria Atual strAtual += string.Format("{0},", d.COD_SECAO); //verificar se já tem a entrada desta secao na tabela de hierarquia ORG_HIERARQUIA objH = objDs.ORG_HIERARQUIA.Where(f => f.COD_SECAO.Equals(d.COD_SECAO)).FirstOrDefault(); if (objH == null || string.IsNullOrEmpty(objH.COD_SECAO)) //nao possui registro na tabela de hierarquia { objH = new ORG_HIERARQUIA(); objH.COD_EMPRESA = d.COD_EMPRESA; objH.COD_SECAO = d.COD_SECAO; objH.DIRETORIA = "1"; objDs.ORG_HIERARQUIA.AddObject(objH); } else //possui registro, atualizar o registro existente. { objH.DIRETORIA = "1"; } } //grava a hierarquia objDs.SaveChanges(); //grava o audit trail strAnterior += ")"; strAtual += ")"; strAnterior = strAnterior.Replace(",)", ""); strAtual = strAtual.Replace(",)", ""); AuditTrail.GravaLogAuditTrail("ALTERAÇÃO DE DIRETORIAS", strAnterior, strAtual); return(true); }