public SPUsuario Obtener(int id) { var usuario = new SPUsuario(); try { using (var ctx = new PresupuestoContext()) { usuario = ctx.SPUsuario.Where(x => x.Id == id) .SingleOrDefault(); } } catch (Exception) { throw; } return(usuario); }
public bool Save(CreateUsuarioDto model) { var rpta = false; try { using (var ctx = new PresupuestoContext()) { using (DbContextTransaction transacion = ctx.Database.BeginTransaction()) { try { if (model.Id == 0) { model.password = HashHelper.SHA256(model.password); } var usuario = new SPUsuario { Id = model.Id, email = model.email, usuario = model.usuario, password = model.password, estado = "A" }; if (usuario.Id > 0) { ctx.Entry(usuario).State = EntityState.Modified; } else { ctx.Entry(usuario).State = EntityState.Added; } ctx.SaveChanges(); var usuarioId = usuario.Id; //eliminamos los existentes para sustituirlos var permisos = ctx.SPUsuarioPermiso.Where(x => x.usuarioId == usuarioId).ToList(); ctx.SPUsuarioPermiso.RemoveRange(permisos); ctx.SaveChanges(); foreach (var u in model.permisos) { var usuario_permiso = new SPUsuarioPermiso { usuarioId = usuarioId, permisoId = u }; ctx.Entry(usuario_permiso).State = EntityState.Added; ctx.SaveChanges(); } //eliminamos los existentes de la tabla paises var paises = ctx.SPUsuarioPais.Where(x => x.usuarioId == usuarioId).ToList(); ctx.SPUsuarioPais.RemoveRange(paises); ctx.SaveChanges(); foreach (var p in model.paises) { var usuario_pais = new SPUsuarioPais { usuarioId = usuarioId, paisId = p }; ctx.Entry(usuario_pais).State = EntityState.Added; ctx.SaveChanges(); } //eliminamos los presupuestos asignados anteriormente var presupuestos = ctx.SPUsuarioPresupuesto.Where(x => x.usuarioId == usuarioId).ToList(); ctx.SPUsuarioPresupuesto.RemoveRange(presupuestos); ctx.SaveChanges(); if (model.presupuestos != null) { foreach (var p in model.presupuestos) { var usuario_p = new SPUsuarioPresupuesto { usuarioId = usuarioId, tipoId = p }; ctx.Entry(usuario_p).State = EntityState.Added; ctx.SaveChanges(); } } transacion.Commit(); rpta = true; }catch (Exception e) { transacion.Rollback(); throw e; } } } }catch (Exception e) { throw e; } return(rpta); }