/// <summary> /// Deletes a dataset, which means the dataset is marked as deleted, but is not physically removed from the database. /// </summary> /// <param name="id">the identifier of the dataset to be purged.</param> /// <remarks>When a dataset is deleted, it is consodered as non-exisiting, but for the sake or provenance, citation, history, etc, it is not removed froom the database. /// The function to recover a deleted dataset, will not be provided.</remarks> /// <returns></returns> public ActionResult Delete(long id) { var datasetManager = new DatasetManager(); var entityPermissionManager = new EntityPermissionManager(); try { if (datasetManager.DeleteDataset(id, ControllerContext.HttpContext.User.Identity.Name, true)) { //entityPermissionManager.Delete(typeof(Dataset), id); // This is not needed here. if (this.IsAccessibale("DDM", "SearchIndex", "ReIndexUpdateSingle")) { var x = this.Run("DDM", "SearchIndex", "ReIndexUpdateSingle", new RouteValueDictionary() { { "id", id }, { "actionType", "DELETE" } }); } } } catch (Exception e) { ViewData.ModelState.AddModelError("", $@"Dataset {id} could not be deleted."); } return(View()); //return RedirectToAction("List"); }
public void DeleteDatasetTest() { var dm = new DatasetManager(); var rsm = new ResearchPlanManager(); var mdm = new MetadataStructureManager(); try { var dsHelper = new DatasetHelper(); StructuredDataStructure dataStructure = dsHelper.CreateADataStructure(); dataStructure.Should().NotBeNull("Failed to meet a precondition: a data strcuture is required."); var rp = dsHelper.CreateResearchPlan(); rp.Should().NotBeNull("Failed to meet a precondition: a research plan is required."); var mds = mdm.Repo.Query().First(); mds.Should().NotBeNull("Failed to meet a precondition: a metadata strcuture is required."); Dataset dataset = dm.CreateEmptyDataset(dataStructure, rp, mds); dm.DeleteDataset(dataset.Id, "Javad", false); dataset.Should().NotBeNull(); dataset.Id.Should().BeGreaterThan(0, "Dataset is not persisted."); dataset.LastCheckIOTimestamp.Should().NotBeAfter(DateTime.UtcNow, "The dataset's timestamp is wrong."); dataset.DataStructure.Should().NotBeNull("Dataset must have a data structure."); dataset.Status.Should().Be(DatasetStatus.Deleted, "Dataset must be in Deleted status."); dm.PurgeDataset(dataset.Id); dsHelper.PurgeAllDataStructures(); } finally { dm.Dispose(); rsm.Dispose(); mdm.Dispose(); } }
public ActionResult Delete(long id) { using (var datasetManager = new DatasetManager()) using (var entityPermissionManager = new EntityPermissionManager()) using (var entityManager = new EntityManager()) using (var subjectManager = new SubjectManager()) using (var userManager = new UserManager()) { try { var userName = GetUsernameOrDefault(); var user = userManager.Users.Where(u => u.Name.Equals(userName)).FirstOrDefault(); // check if a user is logged in if (user != null) { // is the user allowed to delete this dataset if (entityPermissionManager.HasEffectiveRight(user.UserName, typeof(Dataset), id, Security.Entities.Authorization.RightType.Delete)) { //try delete the dataset if (datasetManager.DeleteDataset(id, ControllerContext.HttpContext.User.Identity.Name, true)) { //send email var es = new EmailService(); es.Send(MessageHelper.GetDeleteDatasetHeader(id), MessageHelper.GetDeleteDatasetMessage(id, user.Name), ConfigurationManager.AppSettings["SystemEmail"] ); //entityPermissionManager.Delete(typeof(Dataset), id); // This is not needed here. if (this.IsAccessible("DDM", "SearchIndex", "ReIndexUpdateSingle")) { var x = this.Run("DDM", "SearchIndex", "ReIndexUpdateSingle", new RouteValueDictionary() { { "id", id }, { "actionType", "DELETE" } }); } } } else // user is not allowed { ViewData.ModelState.AddModelError("", $@"You do not have the permission to delete the record."); var es = new EmailService(); es.Send(MessageHelper.GetTryToDeleteDatasetHeader(id), MessageHelper.GetTryToDeleteDatasetMessage(id, GetUsernameOrDefault()), ConfigurationManager.AppSettings["SystemEmail"] ); } } else // no user exist { ViewData.ModelState.AddModelError("", $@"This function can only be executed with a logged-in user."); var es = new EmailService(); es.Send(MessageHelper.GetTryToDeleteDatasetHeader(id), MessageHelper.GetTryToDeleteDatasetMessage(id, userName), ConfigurationManager.AppSettings["SystemEmail"] ); } } catch (Exception e) //for technical reasons the dataset cannot be deleted { ViewData.ModelState.AddModelError("", $@"Dataset {id} could not be deleted."); } } return(View()); }