public async Task <IActionResult> DeleteValue(DeleteValueModel model) { var currentUser = await _userManager.GetUserAsync(User); if (currentUser == null) { return(Challenge()); } Guid[] deletedValues = null; var succeeded = await _appService.DeleteVariableAsync(currentUser, model, (x) => deletedValues = x); return(Json(new { success = succeeded, values = deletedValues })); }
public async Task <bool> DeleteVariableAsync(IdentityUser user, DeleteValueModel model, Action <Guid[]> deleteValues = null) { var variable = await _context.Variables.SingleOrDefaultAsync(x => x.Id == model.Id); if (variable == null) { return(false); } var app = await _context.Applications.SingleOrDefaultAsync(x => x.AppId == variable.AppId); if (app == null || app.UserId != user.Id) { return(false); } //Iterate via name to delete the one for the test mode too var toBeDeleted = await _context.Variables.Where(x => x.AppId == app.AppId && x.VariableName == variable.VariableName).ToArrayAsync(); deleteValues?.Invoke(toBeDeleted.Select(x => x.Id).ToArray()); _context.Variables.RemoveRange(toBeDeleted); return((await _context.SaveChangesAsync()) == 2); }