// GET: Secrets public async Task <ActionResult> List(string filter = "") { var username = User.Identity.Name; var query = @"SELECT s.SecretId as SecretId, Description, Text, Name as [User] FROM Users u JOIN Secrets s ON s.UserId = u.UserId WHERE Name = '{0}'"; var completeQuery = string.Format(query, username); if (!string.IsNullOrWhiteSpace(filter)) { completeQuery += string.Format(" AND Description LIKE '%{0}%'", filter); } using (var entities = new PenEntities()) { var secrets = await entities.Database.SqlQuery <SecretModel>(completeQuery).ToListAsync(); // var secrets = await entities // .Users // .Where(x => x.Name == username) // .SelectMany(x => x.Secrets) // .Select(x => new SecretModel() { SecretId = x.SecretId, Description = x.Description, Text = x.Text, User = x.User.Name }) // .ToListAsync(); return(View(new SecretsListModel() { User = username, Secrets = secrets, Filter = filter })); } }
public async Task <ActionResult> Index() { using (var entities = new PenEntities()) { var user = await entities.Users.FirstAsync(x => x.Name == User.Identity.Name); return(View(new UserModel() { Name = user.Name, Status = user.Status })); } }
public async Task <ActionResult> Create(SecretModel model) { if (!ModelState.IsValid) { return(this.View(model)); } using (var entities = new PenEntities()) { var user = await entities.Users.FirstAsync(x => x.Name == User.Identity.Name); user.Secrets.Add(new Secret() { Description = model.Description, Text = model.Text }); await entities.SaveChangesAsync(); } return(RedirectToAction("List")); }
// GET: Secrets/1 public async Task <ActionResult> Details(int secretId) { //NOTE: We do not check user using (var entities = new PenEntities()) { var secret = await entities.Secrets.FirstOrDefaultAsync(x => x.SecretId == secretId); if (secret == null) { throw new HttpException(404, "Secret not found"); } return(this.View(new SecretModel { SecretId = secret.SecretId, Description = secret.Description, Text = secret.Text, User = secret.User.Name })); } }
private static async Task NewUserHandler(IOwinContext context, Func <Task> next) { var user = context.Authentication.User; if (user != null) { var username = user.Identity.Name; using (var entities = new PenEntities()) { using (var transaction = entities.Database.BeginTransaction(IsolationLevel.Serializable)) { try { var userEntity = await entities.Users.FirstOrDefaultAsync(x => x.Name == username); if (userEntity == null) { entities.Users.Add(new User() { Name = username, Status = "" }); await entities.SaveChangesAsync(); } transaction.Commit(); } catch { transaction.Rollback(); throw; } } } } await next.Invoke(); }
public async Task <ActionResult> ChangeStatus(string status = null) { using (var entities = new PenEntities()) { var user = await entities .Users .Where(x => x.Name == User.Identity.Name) .FirstAsync(); if (status == null) { return(this.View("ChangeStatus", new StatusModel { Status = user.Status })); } ; user.Status = status; await entities.SaveChangesAsync(); return(RedirectToAction("Index")); } }