Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.22 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Work_Item_Management_System.Commands.Base;
  5. using Work_Item_Management_System.Core.Factories;
  6. using Work_Item_Management_System.Models.WorkItems.Contracts;
  7. using Work_Item_Management_System.Core.Contracts;
  8. using System.Text;
  9. using System.Runtime.CompilerServices;
  10.  
  11. public class FilterCommand : BaseCommand
  12. {
  13. public FilterCommand(IFactory factory, IDatabase datebase) : base(factory, datebase) { }
  14.  
  15. public override string Execute(IList<string> parameters)
  16. {
  17. var filteredWorkItems = new List<IWorkItem>();
  18.  
  19. try
  20. {
  21. switch (parameters.Count())
  22. {
  23. case 0:
  24. {
  25. Console.WriteLine("Would you like to see the HELP menu?");
  26. Console.WriteLine("Yes/No");
  27.  
  28. string input = Console.ReadLine();
  29.  
  30. if (input.ToLower() == "yes")
  31. {
  32. Console.WriteLine(HelpMenu());
  33. return "Try some of the commands in the help menu";
  34. }
  35. else
  36. {
  37. filteredWorkItems = this._database.WorkItems.OrderBy(x => x.Title).ToList();
  38. }
  39.  
  40. }
  41. break;
  42. case 1:
  43. {
  44. if (parameters.ToArray()[0].ToLower() == "size")
  45. {
  46. filteredWorkItems = _database.WorkItems.OfType<IStory>().Cast<IWorkItem>().ToList();
  47. break;
  48.  
  49. }
  50. else if (parameters.ToArray()[0].ToLower() == "title")
  51. {
  52. filteredWorkItems = _database.WorkItems.OrderBy(x => x.Title).ToList();
  53. break;
  54.  
  55. }
  56. else if (parameters.ToArray()[0].ToLower() == "priority")
  57. {
  58. filteredWorkItems = this._database.WorkItems.OfType<IIssue>().OrderBy(x => x.Priority).Cast<IWorkItem>().ToList();
  59. break;
  60.  
  61. }
  62. else if (parameters.ToArray()[0].ToLower() == "severity")
  63. {
  64. filteredWorkItems = this._database.WorkItems.OfType<IBug>().OrderBy(x => x.Severity).Cast<IWorkItem>().ToList();
  65. break;
  66.  
  67. }
  68. else if (parameters.ToArray()[0].ToLower() == "rating")
  69. {
  70. filteredWorkItems = this._database.WorkItems.OfType<IFeedback>().OrderBy(x => x.Rating).Cast<IWorkItem>().ToList();
  71. break;
  72.  
  73. }
  74. else if (parameters.ToArray()[0].ToLower() == "assignee")
  75. {
  76. filteredWorkItems = this._database.WorkItems.Where(x => x is IIssue && ((IIssue)x).Owner != null).ToList();
  77. break;
  78. }
  79. else
  80. {
  81. filteredWorkItems = this._database.WorkItems.Where(x =>
  82. {
  83. return x.Type.Name.ToLower() == parameters.ToArray()[0].ToLower();
  84. }
  85. ).OrderBy(x => x.Title).ToList();
  86.  
  87. }
  88. break;
  89. }
  90. case 2:
  91. {
  92. if (parameters.ToArray()[0].ToLower() == "assignee")
  93. {
  94. if (!string.IsNullOrEmpty(parameters.ToArray()[1].ToLower()))
  95. {
  96. filteredWorkItems = this._database.WorkItems.Where(
  97. x => x is IIssue
  98. && ((IIssue)x).Owner != null
  99. && ((IIssue)x).Owner.Name.ToLower() == parameters.ToArray()[1].ToLower())
  100. .ToList();
  101. }
  102.  
  103. }
  104.  
  105. else if (parameters.ToArray()[0].ToLower() == "status")
  106. {
  107. if (!string.IsNullOrEmpty(parameters.ToArray()[1].ToLower()))
  108. {
  109. if (parameters.ToArray()[1].ToLower() == "bug")
  110. {
  111. filteredWorkItems = this._database.WorkItems.OfType<IBug>().OrderBy(x => x.Status).Cast<IWorkItem>().ToList();
  112. }
  113. if (parameters.ToArray()[1].ToLower() == "feedback")
  114. {
  115. filteredWorkItems = this._database.WorkItems.OfType<IFeedback>().OrderBy(x => x.Status).Cast<IWorkItem>().ToList();
  116. }
  117. if (parameters.ToArray()[1].ToLower() == "story")
  118. {
  119. filteredWorkItems = this._database.WorkItems.OfType<IStory>().OrderBy(x => x.Status).Cast<IWorkItem>().ToList();
  120. }
  121. }
  122.  
  123. }
  124.  
  125. }
  126. break;
  127. default: throw new ArgumentNullException("Not a valid input");
  128.  
  129.  
  130. }
  131. }
  132. catch (Exception ex)
  133. {
  134. Console.WriteLine("Not a proper command for filter [property]");
  135. Console.WriteLine(ex.Message);
  136. }
  137.  
  138. return PrintList(filteredWorkItems);
  139.  
  140. }
  141.  
  142. public string HelpMenu()
  143. {
  144. StringBuilder builder = new StringBuilder();
  145.  
  146. builder.AppendLine("You can use one of the following options in order to filter the database");
  147. builder.AppendLine("filter [title / description / size / severity / rating ] - will sort by property value");
  148. builder.AppendLine("filter [bug / feedback / story] - will sort the specific workitems type by title");
  149. builder.AppendLine("filter assignee - will give you the assigned workitems");
  150. builder.AppendLine("filter assignee [assignee name]- will give you the assigned workitems for a specific member");
  151. builder.AppendLine("filter status [bug / feedback / story]- will give you the assigned workitems");
  152.  
  153. return builder.ToString();
  154. }
  155.  
  156. public string PrintList(IList<IWorkItem> list)
  157. {
  158. if (list.Count == 0)
  159. {
  160. return "The Database is empty";
  161. }
  162.  
  163. else
  164. {
  165. foreach (var workitem in list)
  166. {
  167. workitem.PrintColourfulInfo();
  168. }
  169. return "WorkItems are filtered";
  170. }
  171. }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement