public void UpdateModuleResurce(CoachingModule module, CoachingModuleBaseResource newResource) { var resource = new CoachingModuleResourceReference(newResource.Id, newResource.RevisionHistory.ReferenceId); //Create the new version PushResourceVersion(newResource, resource.RevisionHistoryReferenceId); //Update the module revision if (module.Introduction.RevisionHistoryReferenceId == resource.RevisionHistoryReferenceId) { module.Introduction = new CoachingModuleResourceReference(newResource.Id, newResource.RevisionHistory.ReferenceId); } else if (module.Exercise.RevisionHistoryReferenceId == resource.RevisionHistoryReferenceId) { module.Exercise = new CoachingModuleResourceReference(newResource.Id, newResource.RevisionHistory.ReferenceId); } else if (module.Reflection.RevisionHistoryReferenceId == resource.RevisionHistoryReferenceId) { module.Reflection = new CoachingModuleResourceReference(newResource.Id, newResource.RevisionHistory.ReferenceId); } //Save _moduleRepository.SaveModule(module); if (newResource is CoachingModuleResource) { _resourceRepository.CreateModuleResource(newResource as CoachingModuleResource); } else if (newResource is CoachingModuleExerciseResource) { _exerciseRepository.CreateModuleResource(newResource as CoachingModuleExerciseResource); } }
/// <summary> /// Add the new version to the revision history by adding reference to resource /// </summary> /// <param name="newVersion"></param> /// <param name="revisionId"></param> /// <param name="resourseRepos"></param> private void PushResourceVersion(CoachingModuleBaseResource newVersion, Guid revisionId) { CoachingModuleBaseResource last = null; if (newVersion is CoachingModuleResource) { last = _resourceRepository.GetItems(i => i.RevisionHistory.ReferenceId == revisionId).OrderBy(i => i.Version).LastOrDefault(); } else if (newVersion is CoachingModuleExerciseResource) { last = _exerciseRepository.GetItems(i => i.RevisionHistory.ReferenceId == revisionId).OrderBy(i => i.Version).LastOrDefault(); } if (last != null) { newVersion.Version = last.Version + 1; } else { newVersion.Version = 1; } newVersion.RevisionHistory = new ResourseRevisionHistoryReference() { ReferenceId = revisionId }; }