public async Task ItemList_Delete_DoesDelete() { // Arrange var planning = new Planning { Description = Guid.NewGuid().ToString(), Enabled = true, RelatedEFormId = 35, RelatedEFormName = Guid.NewGuid().ToString(), RepeatType = RepeatType.Day, UpdatedByUserId = 1, CreatedByUserId = 1, RepeatEvery = 1, DayOfMonth = 1, RepeatUntil = new DateTime(2050, 1, 1, 1, 1, 1), WorkflowState = Constants.WorkflowStates.Created, DayOfWeek = DayOfWeek.Friday, PlanningNumber = "1", LocationCode = "2", }; await planning.Create(DbContext); var planingNameTranslations = new List <PlanningNameTranslation>() { new PlanningNameTranslation() { Name = Guid.NewGuid().ToString(), Language = new Language() { LanguageCode = "da", Name = "Danish" }, Planning = planning } }; foreach (var translationModel in planingNameTranslations) { await translationModel.Create(DbContext); } // Act // planning = await DbContext.Plannings.AsNoTracking().FirstOrDefaultAsync(); Assert.AreEqual(Constants.WorkflowStates.Created, planning.WorkflowState); await planning.Delete(DbContext); await planingNameTranslations[0].Delete(DbContext); var plannings = DbContext.Plannings.AsNoTracking().ToList(); var planingNameTranslationsList = DbContext.PlanningNameTranslation .AsNoTracking() .Where(x => x.Planning.Id == plannings[0].Id) .ToList(); var planningVersions = DbContext.PlanningVersions.AsNoTracking().ToList(); var planingNameTranslationsListVersions = DbContext.PlanningNameTranslationVersions .AsNoTracking() .Where(x => x.PlanningNameTranslationId == planingNameTranslationsList[0].Id) .ToList(); // Assert Assert.AreEqual(1, plannings.Count); Assert.AreEqual(2, planningVersions.Count); Assert.AreEqual(1, planingNameTranslationsList.Count); Assert.AreEqual(2, planingNameTranslationsListVersions.Count); Assert.AreEqual(planingNameTranslationsList[0].Name, planingNameTranslations[0].Name); Assert.AreEqual(planning.Description, plannings[0].Description); Assert.AreEqual(planning.Enabled, plannings[0].Enabled); Assert.AreEqual(planning.RepeatType, plannings[0].RepeatType); Assert.AreEqual(planning.RelatedEFormId, plannings[0].RelatedEFormId); Assert.AreEqual(planning.RelatedEFormName, plannings[0].RelatedEFormName); Assert.AreEqual(planning.UpdatedByUserId, plannings[0].UpdatedByUserId); Assert.AreEqual(planning.CreatedByUserId, plannings[0].CreatedByUserId); Assert.AreEqual(planning.RepeatEvery, plannings[0].RepeatEvery); Assert.AreEqual(planning.RepeatUntil, plannings[0].RepeatUntil); Assert.AreEqual(planning.DayOfWeek, plannings[0].DayOfWeek); Assert.AreEqual(planning.DayOfMonth, plannings[0].DayOfMonth); Assert.AreEqual(Constants.WorkflowStates.Removed, plannings[0].WorkflowState); Assert.AreEqual(planning.Id, plannings[0].Id); Assert.AreEqual(planning.LocationCode, plannings[0].LocationCode); Assert.AreEqual(planning.PlanningNumber, plannings[0].PlanningNumber); Assert.AreEqual(2, plannings[0].Version); // Versions Assert.AreEqual(planingNameTranslations[0].Name, planingNameTranslationsListVersions[0].Name); Assert.AreEqual(planning.Description, planningVersions[0].Description); Assert.AreEqual(planning.Enabled, planningVersions[0].Enabled); Assert.AreEqual(planning.RepeatType, planningVersions[0].RepeatType); Assert.AreEqual(planning.RelatedEFormId, planningVersions[0].RelatedEFormId); Assert.AreEqual(planning.RelatedEFormName, planningVersions[0].RelatedEFormName); Assert.AreEqual(planning.UpdatedByUserId, planningVersions[0].UpdatedByUserId); Assert.AreEqual(planning.CreatedByUserId, planningVersions[0].CreatedByUserId); Assert.AreEqual(planning.RepeatEvery, planningVersions[0].RepeatEvery); Assert.AreEqual(planning.RepeatUntil, planningVersions[0].RepeatUntil); Assert.AreEqual(planning.DayOfWeek, planningVersions[0].DayOfWeek); Assert.AreEqual(planning.DayOfMonth, planningVersions[0].DayOfMonth); Assert.AreEqual(planning.Id, planningVersions[0].PlanningId); Assert.AreEqual(Constants.WorkflowStates.Created, planningVersions[0].WorkflowState); Assert.AreEqual(1, planningVersions[0].Version); Assert.AreEqual(planingNameTranslations[0].Name, planingNameTranslationsListVersions[1].Name); Assert.AreEqual(planning.Description, planningVersions[1].Description); Assert.AreEqual(planning.Enabled, planningVersions[1].Enabled); Assert.AreEqual(planning.RepeatType, planningVersions[1].RepeatType); Assert.AreEqual(planning.RelatedEFormId, planningVersions[1].RelatedEFormId); Assert.AreEqual(planning.RelatedEFormName, planningVersions[1].RelatedEFormName); Assert.AreEqual(planning.UpdatedByUserId, planningVersions[1].UpdatedByUserId); Assert.AreEqual(planning.CreatedByUserId, planningVersions[1].CreatedByUserId); Assert.AreEqual(planning.RepeatEvery, planningVersions[1].RepeatEvery); Assert.AreEqual(planning.RepeatUntil, planningVersions[1].RepeatUntil); Assert.AreEqual(planning.DayOfWeek, planningVersions[1].DayOfWeek); Assert.AreEqual(planning.Id, planningVersions[1].PlanningId); Assert.AreEqual(Constants.WorkflowStates.Removed, planningVersions[1].WorkflowState); Assert.AreEqual(2, planningVersions[1].Version); }
private async Task DeleteOnePlanning(Planning planning) { var core = await _coreService.GetCore(); await using var sdkDbContext = core.DbContextHelper.GetDbContext(); var planningCases = await _dbContext.PlanningCases .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed) .Where(x => x.PlanningId == planning.Id) .ToListAsync(); foreach (var planningCase in planningCases) { var planningCaseSites = await _dbContext.PlanningCaseSites .Where(x => x.PlanningCaseId == planningCase.Id).ToListAsync(); foreach (var planningCaseSite in planningCaseSites .Where(planningCaseSite => planningCaseSite.MicrotingSdkCaseId != 0) .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)) { var theCase = await sdkDbContext.Cases.SingleOrDefaultAsync(x => x.Id == planningCaseSite.MicrotingSdkCaseId); if (theCase != null) { if (theCase.MicrotingUid != null) { await core.CaseDelete((int)theCase.MicrotingUid); } } else { var checkListSite = await sdkDbContext.CheckListSites.SingleOrDefaultAsync(x => x.Id == planningCaseSite.MicrotingCheckListSitId); if (checkListSite != null) { await core.CaseDelete(checkListSite.MicrotingUid); } } } // Delete planning case await planningCase.Delete(_dbContext); } var planningSites = await _dbContext.PlanningSites .Where(x => x.PlanningId == planning.Id) .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed) .ToListAsync(); foreach (var planningSite in planningSites) { await planningSite.Delete(_dbContext); } var nameTranslationsPlanning = await _dbContext.PlanningNameTranslation .Where(x => x.Planning.Id == planning.Id) .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed) .ToListAsync(); foreach (var translation in nameTranslationsPlanning) { await translation.Delete(_dbContext); } // Delete planning await planning.Delete(_dbContext); }