Advertisement
MeliDragon

Untitled

Apr 15th, 2023
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.32 KB | None | 0 0
  1. public class ListStoriesCommand:BaseCommand
  2. {
  3. public const int ExpectedNumberOfArguments = 2;
  4.  
  5. public ListStoriesCommand(IList<string> commandParameters, IRepository repository)
  6. : base(commandParameters, repository)
  7. {
  8. }
  9.  
  10. public override string Execute()
  11. {
  12. string filterByCommand = CommandParameters[0];
  13. string sortByCommand = CommandParameters[1];
  14. var task = Repository.Tasks.OfType<Story>().ToList();
  15. StringBuilder stringBuilder = new StringBuilder();
  16.  
  17. if (filterByCommand == "FilterNotDone")
  18. {
  19. List<Story> storyNotDone = null;
  20. switch (sortByCommand)
  21. {
  22. case "SortedTitle":
  23. storyNotDone = task.
  24. Where(story => story.Status == StoryStatusType.NotDone).
  25. OrderBy(story => story.Title).ToList(); ;
  26. break;
  27. case "SortedPriority":
  28. storyNotDone = task.
  29. Where(story => story.Status == StoryStatusType.NotDone).
  30. OrderBy(story => story.Priority == PriorityType.High).
  31. ThenBy(story => story.Priority == PriorityType.Medium).
  32. ThenBy(story => story.Priority == PriorityType.Low).ToList();
  33. break;
  34. case "SortedSize":
  35. storyNotDone = task.
  36. Where(story => story.Status == StoryStatusType.NotDone).
  37. OrderBy(story => story.Size == SizeType.Large).
  38. ThenBy(story => story.Size == SizeType.Medium).
  39. ThenBy(story => story.Size == SizeType.Small).
  40. ToList();
  41. break;
  42. default:
  43. throw new InvalidUserInputException("The input sort command is incorrect!");
  44. }
  45.  
  46. if (storyNotDone.Count == 0)
  47. {
  48. throw new InvalidUserInputException("None of the logged stories correspond to your search parameters!");
  49. }
  50.  
  51. foreach (Story story in storyNotDone)
  52. {
  53. stringBuilder.AppendLine(story.ToString());
  54. StringGenerator('*', 15);
  55. }
  56. }
  57. else if (filterByCommand == "FilterInProgress")
  58. {
  59. List<Story> storyInProgress = null;
  60. switch (sortByCommand)
  61. {
  62. case "SortedTitle":
  63. storyInProgress = task.
  64. Where(story => story.Status == StoryStatusType.InProgress).
  65. OrderBy(story => story.Title).ToList(); ;
  66. break;
  67. case "SortedPriority":
  68. storyInProgress = task.
  69. Where(story => story.Status == StoryStatusType.InProgress).
  70. OrderBy(story => story.Priority == PriorityType.High).
  71. ThenBy(story => story.Priority == PriorityType.Medium).
  72. ThenBy(story => story.Priority == PriorityType.Low).ToList();
  73. break;
  74. case "SortedSize":
  75. storyInProgress = task.
  76. Where(story => story.Status == StoryStatusType.InProgress).
  77. OrderBy(story => story.Size == SizeType.Large).
  78. ThenBy(story => story.Size == SizeType.Medium).
  79. ThenBy(story => story.Size == SizeType.Small).
  80. ToList();
  81. break;
  82. default:
  83. throw new InvalidUserInputException("The input sort command is incorrect!");
  84. }
  85.  
  86. if (storyInProgress.Count == 0)
  87. {
  88. throw new InvalidUserInputException("None of the logged stories correspond to your search parameters!");
  89. }
  90.  
  91. foreach (Story story in storyInProgress)
  92. {
  93. stringBuilder.AppendLine(story.ToString());
  94. StringGenerator('*', 15);
  95. }
  96.  
  97. }
  98. else if (filterByCommand == "FilterDone")
  99. {
  100. List<Story> storyDone = null;
  101. switch (sortByCommand)
  102. {
  103. case "SortedTitle":
  104. storyDone = task.
  105. Where(story => story.Status == StoryStatusType.Done).
  106. OrderBy(story => story.Title).ToList(); ;
  107. break;
  108. case "SortedPriority":
  109. storyDone = task.
  110. Where(story => story.Status == StoryStatusType.Done).
  111. OrderBy(story => story.Priority == PriorityType.High).
  112. ThenBy(story => story.Priority == PriorityType.Medium).
  113. ThenBy(story => story.Priority == PriorityType.Low).ToList();
  114. break;
  115. case "SortedSize":
  116. storyDone = task.
  117. Where(story => story.Status == StoryStatusType.Done).
  118. OrderBy(story => story.Size == SizeType.Large).
  119. ThenBy(story => story.Size == SizeType.Medium).
  120. ThenBy(story => story.Size == SizeType.Small).
  121. ToList();
  122. break;
  123. default:
  124. throw new InvalidUserInputException("The input sort command is incorrect!");
  125. }
  126.  
  127. if (storyDone.Count == 0)
  128. {
  129. throw new InvalidUserInputException("None of the logged stories correspond to your search parameters!");
  130. }
  131.  
  132. foreach (Story story in storyDone)
  133. {
  134. stringBuilder.AppendLine(story.ToString());
  135. StringGenerator('*', 15);
  136. }
  137.  
  138. }
  139. else if (filterByCommand == "FilterAssignee")
  140. {
  141. List<Story> storyAssignee = null;
  142. switch (sortByCommand)
  143. {
  144. case "SortedTitle":
  145. storyAssignee = task.
  146. Where(story => story.Assignee != null).
  147. OrderBy(story => story.Title).ToList(); ;
  148. break;
  149. case "SortedPriority":
  150. storyAssignee = task.
  151. Where(story => story.Assignee != null).
  152. OrderBy(story => story.Priority == PriorityType.High).
  153. ThenBy(story => story.Priority == PriorityType.Medium).
  154. ThenBy(story => story.Priority == PriorityType.Low).ToList();
  155. break;
  156. case "SortedSize":
  157. storyAssignee = task.
  158. Where(story => story.Assignee != null).
  159. OrderBy(story => story.Size == SizeType.Large).
  160. ThenBy(story => story.Size == SizeType.Medium).
  161. ThenBy(story => story.Size == SizeType.Small).
  162. ToList();
  163. break;
  164. default:
  165. throw new InvalidUserInputException("The input sort command is incorrect!");
  166. }
  167.  
  168. if (storyAssignee.Count == 0)
  169. {
  170. throw new InvalidUserInputException("None of the logged stories correspond to your search parameters!");
  171. }
  172.  
  173. foreach (Story story in storyAssignee)
  174. {
  175. stringBuilder.AppendLine(story.ToString());
  176. StringGenerator('*', 15);
  177. }
  178.  
  179. }
  180. else
  181. {
  182. throw new InvalidUserInputException("The input filter command is incorrect!");
  183. }
  184.  
  185. return stringBuilder.ToString().Trim();
  186. }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement