/// <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(); } } }
/// <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> /// Adiciona nova Webpages_Users /// </summary> /// <param name="param"></param> /// <returns></returns> public static Int32 Add(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; } DbContextTransaction transaction = _db.Database.BeginTransaction(); try { // Adiciona os dados da pessoa param.Pessoa.id_pesssoa = GatewayPessoa.Add(token, param.Pessoa, _db); //_db.pessoas.Add(param.Pessoa); //_db.SaveChanges(); // Cria a conta com o login informado e a senha padrão "atos123" //WebSecurity.CreateAccount(param.Webpagesusers.ds_login, "atos123", false); WebSecurity.CreateUserAndAccount(param.Webpagesusers.ds_login, "atos123", propertyValues: new { ds_email = param.Webpagesusers.ds_email, fl_ativo = true }, requireConfirmationToken: false); param.Webpagesusers.id_users = WebSecurity.GetUserId(param.Webpagesusers.ds_login); // Cria o usuário webpages_Users usr = _db.webpages_Users.Find(param.Webpagesusers.id_users); //usr.ds_email = param.Webpagesusers.ds_email; usr.id_grupo = param.Webpagesusers.id_grupo; usr.nu_cnpjBaseEmpresa = param.Webpagesusers.nu_cnpjBaseEmpresa; usr.nu_cnpjEmpresa = param.Webpagesusers.nu_cnpjEmpresa; usr.id_pessoa = param.Pessoa.id_pesssoa; //usr.fl_ativo = true; _db.SaveChanges(); transaction.Commit(); foreach (var item in param.Webpagesusersinroles) { if (item.UserId == 0) { item.UserId = param.Webpagesusers.id_users; _db.webpages_UsersInRoles.Add(item); try { _db.SaveChanges(); } catch { } } } // 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; try { _db.SaveChanges(); } catch { // não é porque não associou algum grupo ao vendedor que deve retornar erro por completo } } } } return(param.Webpagesusers.id_users); } catch (Exception e) { transaction.Rollback(); if (e is DbEntityValidationException) { string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e); throw new Exception(erro.Equals("") ? "Falha ao salvar 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(); } } }