public async Task <IActionResult> Delete(DeleteAccountViewModel davm) { try { if (!ModelState.IsValid || !davm.Confirm) { ModelState.AddModelError("", "You must confirm that you want to delete your user account and associated settings."); return(View("Delete")); } var deleted = await _userStore.DeleteUserAsync(User.Identity.Name); if (deleted) { // delete user's settings try { var us = await _userStore.GetUserSettingsAsync(User.Identity.Name); await _userStore.DeleteUserSettingsAsync(User.Identity.Name); } catch (UserSettingsNotFoundException) { // no action needed } catch (UserStoreException e) { Log.Error($"Error deleting user settings during user account {User.Identity.Name} deletion", e); } // repositories try { var repos = await _repoSettingsStore.GetRepoSettingsForOwnerAsync(User.Identity.Name); foreach (var r in repos) { await _repoSettingsStore.DeleteRepoSettingsAsync(r.OwnerId, r.RepositoryId); } } catch (RepoSettingsNotFoundException) { // no action needed } catch (RepoSettingsStoreException e) { Log.Error($"Error deleting repo settings during user account {User.Identity.Name} deletion", e); } // owner settings try { var owner = await _ownerSettingsStore.GetOwnerSettingsAsync(User.Identity.Name); await _ownerSettingsStore.DeleteOwnerSettingsAsync(owner.OwnerId); } catch (OwnerSettingsNotFoundException) { // no action needed } catch (OwnerSettingsStoreException e) { Log.Error($"Error deleting owner settings during user account {User.Identity.Name} deletion", e); } // datasets try { await _datasetStore.DeleteDatasetsForOwnerAsync(User.Identity.Name); } catch (DatasetStoreException e) { Log.Error($"Error deleting datasets during user account {User.Identity.Name} deletion", e); } // templates try { await _schemaStore.DeleteSchemaRecordsForOwnerAsync(User.Identity.Name); } catch (Exception e) { Log.Error($"Error deleting templates during user account {User.Identity.Name} deletion", e); } // jobs try { await _jobStore.DeleteJobsForOwnerAsync(User.Identity.Name); } catch (Exception e) { Log.Error($"Error deleting jobs during user account {User.Identity.Name} deletion", e); } await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); return(RedirectToAction("Index", "Home")); } // error ViewBag.Message = "Unable to delete account at this time, if the problem persists please open a ticket with support."; return(View("Delete")); } catch (Exception e) { Console.WriteLine(e); throw; } }