public static void Main()
Console.WriteLine("Hello World");
public class QuestionService
var question = GetQuestion(id);
questin.IsArchived = true;
categoryService.EnsureNotEmpty(question.categoryId);
public class CategoryService
var cagetory = getCategory(id);
category.questions.forEach(question => questionService.Archive(question.id))
sectionService.EnsureNotEmpty(category.sectionId)
void EnsureNotEmpty(int id)
var category = getCategory(id);
if(!category.Questions.Any())
category.IsArchived = true;
public class SectionService
var section = getSection(id);
section.Categories.ForEach(category => categoryService.Archive(category.id));
void EnsureNotEmpty(int id)
var section = getSection(id);
if(!section.Categories.Any())
section.IsArchived = true;
public class TemplteService : IUnitOfWork
private QuestionService questionService;
private CategoryService categoryService;
private SectionService sectionService;
void ArchiveQuestion(int id)
this.questionService.Archive(id);
void ArchiveCategory(int id)
this.questionService.Archive(id);
void ArchiveSection(int id)
this.questionService.Archive(id);