/// <summary> /// Apaga uma Webpages_Roles /// </summary> /// <param name="param"></param> /// <returns></returns> public static void Delete(string token, Int32 RoleId, painel_taxservices_dbContext _dbContext = null) { painel_taxservices_dbContext _db; if (_dbContext == null) { _db = new painel_taxservices_dbContext(); } else { _db = _dbContext; } try { webpages_Roles role = _db.webpages_Roles.Where(r => r.RoleId == RoleId).FirstOrDefault(); if (role == null) { throw new Exception("Role inexistente"); // não existe role com o Id informado } Int32 RoleLevelMin = Permissoes.GetRoleLevelMin(token, _db); //if (role.RoleName.ToUpper().Equals("COMERCIAL") || role.RoleLevel < RoleLevelMin) throw new Exception("401"); // não possui autorização para remover o privilégio if (Permissoes.isAtosRoleVendedor(role) || role.RoleLevel < RoleLevelMin) { throw new Exception("401"); // não possui autorização para remover o privilégio } GatewayWebpagesPermissions.Delete(token, RoleId, _db); GatewayWebpagesUsersInRoles.Delete(token, RoleId, true, _db); _db.webpages_Roles.Remove(_db.webpages_Roles.Where(e => e.RoleId.Equals(RoleId)).First()); _db.SaveChanges(); } catch (Exception e) { if (e is DbEntityValidationException) { string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e); throw new Exception(erro.Equals("") ? "Falha ao apagar role" : erro); } throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message); } finally { if (_dbContext == null) { // Fecha conexão _db.Database.Connection.Close(); _db.Dispose(); } } }
/// <summary> /// Altera webpages_Users /// </summary> /// <param name="param"></param> /// <returns></returns> public static void Update(string token, Models.Object.Usuario param, painel_taxservices_dbContext _dbContext = null) { painel_taxservices_dbContext _db; if (_dbContext == null) { _db = new painel_taxservices_dbContext(); } else { _db = _dbContext; } try { if (param.Id_grupo != 0) { // Altera grupo empresa do usuário logado Int32 IdUser = Permissoes.GetIdUser(token); webpages_Users value = _db.webpages_Users .Where(e => e.id_users == IdUser) .FirstOrDefault <webpages_Users>(); if (value != null) { // VALIDAR PERMISSÂO PARA FUNCIONALIDADE if (param.Id_grupo == -1) { value.id_grupo = null; } else { value.id_grupo = param.Id_grupo; } value.nu_cnpjEmpresa = null; _db.SaveChanges(); } else { throw new Exception("Usuário inválido!"); } } else { if (param.Webpagesusers.id_users == 0) { throw new Exception("Falha ao parâmetro"); } // Altera um usuário que não necessiariamente é o logado webpages_Users value = _db.webpages_Users .Where(e => e.id_users == param.Webpagesusers.id_users) .First <webpages_Users>(); if (value != null) { if (param.Pessoa != null) { param.Pessoa.id_pesssoa = (int)value.id_pessoa; GatewayPessoa.Update(token, param.Pessoa); } if (param.Webpagesusersinroles != null) { foreach (webpages_UsersInRoles item in param.Webpagesusersinroles) { if (item.UserId == -1) { item.UserId = param.Webpagesusers.id_users; GatewayWebpagesUsersInRoles.Delete(token, item); } else { item.UserId = param.Webpagesusers.id_users; webpages_UsersInRoles verificacao = _db.webpages_UsersInRoles.Where(p => p.UserId == item.UserId).Where(p => p.RoleId == item.RoleId).FirstOrDefault(); if (verificacao != null) { webpages_UsersInRoles principal = _db.webpages_UsersInRoles .Where(p => p.UserId == item.UserId) .Where(p => p.RolePrincipal == true).FirstOrDefault(); if (principal != null) { principal.RolePrincipal = false; } verificacao.RolePrincipal = item.RolePrincipal; _db.SaveChanges(); } else { GatewayWebpagesUsersInRoles.Add(token, item); } } } } // Associa grupos empresas ao vendedor if (param.Addidsgrupoempresavendedor != null) { foreach (var idGrupo in param.Addidsgrupoempresavendedor) { grupo_empresa grupo = _db.grupo_empresa.Where(g => g.id_grupo == idGrupo).FirstOrDefault(); if (grupo != null) { grupo.id_vendedor = param.Webpagesusers.id_users; _db.SaveChanges(); } } } // Desassocia grupos empresas if (param.Removeidsgrupoempresavendedor != null) { foreach (var idGrupo in param.Removeidsgrupoempresavendedor) { grupo_empresa grupo = _db.grupo_empresa.Where(g => g.id_grupo == idGrupo).FirstOrDefault(); if (grupo != null) { grupo.id_vendedor = null; _db.SaveChanges(); } } } if (param.Webpagesusers.ds_login != null && param.Webpagesusers.ds_login != value.ds_login) { webpages_Users old = _db.webpages_Users.Where(e => e.ds_login.ToLower().Equals(param.Webpagesusers.ds_login.ToLower())) .FirstOrDefault(); if (old == null || old.id_users == value.id_users) { value.ds_login = param.Webpagesusers.ds_login; } } if (param.Webpagesusers.ds_email != null && param.Webpagesusers.ds_email != value.ds_email) { webpages_Users old = _db.webpages_Users.Where(e => e.ds_email.ToLower().Equals(param.Webpagesusers.ds_email.ToLower())) .FirstOrDefault(); if (old == null || old.id_users == value.id_users) { value.ds_email = param.Webpagesusers.ds_email; } } if (param.Webpagesusers.fl_ativo != value.fl_ativo) { value.fl_ativo = param.Webpagesusers.fl_ativo; } Boolean grupoEmpresaAlterado = false; if (param.Webpagesusers.nu_cnpjEmpresa != null && param.Webpagesusers.nu_cnpjEmpresa != value.nu_cnpjEmpresa) { if (param.Webpagesusers.nu_cnpjEmpresa == "") { value.nu_cnpjEmpresa = null; } else { value.nu_cnpjEmpresa = param.Webpagesusers.nu_cnpjEmpresa; value.id_grupo = _db.empresas.Where(f => f.nu_cnpj.Equals(param.Webpagesusers.nu_cnpjEmpresa)).Select(f => f.id_grupo).FirstOrDefault(); grupoEmpresaAlterado = true; // já forçou o grupo pela filial } }// só pode colocar grupo empresa ao qual a filial está ou sem nenhuma filial if (!grupoEmpresaAlterado && param.Webpagesusers.id_grupo != null && param.Webpagesusers.id_grupo != 0 && param.Webpagesusers.id_grupo != value.id_grupo) { if (param.Webpagesusers.id_grupo == -1) { value.id_grupo = null; value.nu_cnpjEmpresa = null; // Não pode estar associado a uma filial sem estar associado a um grupo } else { value.id_grupo = param.Webpagesusers.id_grupo; // Avalia se tem empresa associado => A filial TEM QUE SER associada ao grupo if (value.nu_cnpjEmpresa != null) { Int32 id_grupo = _db.empresas.Where(f => f.nu_cnpj.Equals(value.nu_cnpjEmpresa)).Select(f => f.id_grupo).FirstOrDefault(); if (id_grupo != value.id_grupo) { value.nu_cnpjEmpresa = null; // filial que estava associado é de um grupo diferente do grupo recém associado } } } } _db.SaveChanges(); } else { throw new Exception("Usuário não cadastrado"); } } } catch (Exception e) { if (e is DbEntityValidationException) { string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e); throw new Exception(erro.Equals("") ? "Falha ao alterar usuário" : erro); } throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message); } finally { if (_dbContext == null) { // Fecha conexão _db.Database.Connection.Close(); _db.Dispose(); } } }
/// <summary> /// Apaga uma Webpages_Users /// </summary> /// <param name="param"></param> /// <returns></returns> //public static void Delete(string token, Int32 id_users) //{ // _db.webpages_Users.Remove(_db.webpages_Users.Where(e => e.id_users.Equals(id_users)).First()); // _db.SaveChanges(); //} public static void Delete(string token, Int32 id_users, painel_taxservices_dbContext _dbContext = null) { painel_taxservices_dbContext _db; if (_dbContext == null) { _db = new painel_taxservices_dbContext(); } else { _db = _dbContext; } DbContextTransaction transaction = _db.Database.BeginTransaction(); try { if (_db.LogAcesso1.Where(e => e.idUsers == id_users).ToList().Count == 0) { GatewayWebpagesUsersInRoles.Delete(token, id_users, false, _db); GatewayWebpagesMembership.Delete(token, id_users, _db); // Obtem o usuário com o id_users webpages_Users value = _db.webpages_Users .Where(e => e.id_users.Equals(id_users)) .First <webpages_Users>(); int id_pessoa = (value.id_pessoa != null) ? Convert.ToInt32(value.id_pessoa) : 0; _db.webpages_Users.RemoveRange(_db.webpages_Users.Where(e => e.id_users == id_users)); _db.SaveChanges(); if (id_pessoa > 0) { GatewayPessoa.Delete(token, id_pessoa, _db); } } else { throw new Exception("Usuário não pode ser deletado!"); } } catch (Exception e) { transaction.Rollback(); if (e is DbEntityValidationException) { string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e); throw new Exception(erro.Equals("") ? "Falha ao apagar usuário" : erro); } throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message); } finally { if (_dbContext == null) { // Fecha conexão _db.Database.Connection.Close(); _db.Dispose(); } } }