Example #1
0
        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);
        }