Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.45 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. if (filteredWorkItems.Count == 0)
  87. {
  88. filteredWorkItems = this._database.WorkItems.OrderBy(x => x.Title).ToList();
  89. }
  90.  
  91. }
  92. break;
  93. }
  94. case 2:
  95. {
  96. if (parameters.ToArray()[0].ToLower() == "assignee")
  97. {
  98. if (!string.IsNullOrEmpty(parameters.ToArray()[1].ToLower()))
  99. {
  100. filteredWorkItems = this._database.WorkItems.Where(
  101. x => x is IIssue
  102. && ((IIssue)x).Owner != null
  103. && ((IIssue)x).Owner.Name.ToLower() == parameters.ToArray()[1].ToLower())
  104. .ToList();
  105. }
  106.  
  107. }
  108.  
  109. else if (parameters.ToArray()[0].ToLower() == "status")
  110. {
  111. if (!string.IsNullOrEmpty(parameters.ToArray()[1].ToLower()))
  112. {
  113. if (parameters.ToArray()[1].ToLower() == "bug")
  114. {
  115. filteredWorkItems = this._database.WorkItems.OfType<IBug>().OrderBy(x => x.Status).Cast<IWorkItem>().ToList();
  116. }
  117. if (parameters.ToArray()[1].ToLower() == "feedback")
  118. {
  119. filteredWorkItems = this._database.WorkItems.OfType<IFeedback>().OrderBy(x => x.Status).Cast<IWorkItem>().ToList();
  120. }
  121. if (parameters.ToArray()[1].ToLower() == "story")
  122. {
  123. filteredWorkItems = this._database.WorkItems.OfType<IStory>().OrderBy(x => x.Status).Cast<IWorkItem>().ToList();
  124. }
  125. }
  126.  
  127. }
  128.  
  129. }
  130. break;
  131. default: throw new ArgumentNullException("Not a valid input");
  132.  
  133.  
  134. }
  135. }
  136. catch (Exception ex)
  137. {
  138. Console.WriteLine("Not a proper command for filter [property]");
  139. Console.WriteLine(ex.Message);
  140. }
  141.  
  142. return PrintList(filteredWorkItems);
  143.  
  144. }
  145.  
  146. public string HelpMenu()
  147. {
  148. StringBuilder builder = new StringBuilder();
  149.  
  150. builder.AppendLine("You can use one of the following options in order to filter the database");
  151. builder.AppendLine("filter [title / description / size / severity / rating ] - will sort by property value");
  152. builder.AppendLine("filter [bug / feedback / story] - will sort the specific workitems type by title");
  153. builder.AppendLine("filter assignee - will give you the assigned workitems");
  154. builder.AppendLine("filter assignee [assignee name]- will give you the assigned workitems for a specific member");
  155. builder.AppendLine("filter status [bug / feedback / story]- will give you the assigned workitems");
  156.  
  157. return builder.ToString();
  158. }
  159.  
  160. public string PrintList(IList<IWorkItem> list)
  161. {
  162. if (list.Count == 0)
  163. {
  164. return "The Database is empty";
  165. }
  166.  
  167. else
  168. {
  169. foreach (var workitem in list)
  170. {
  171. workitem.PrintColourfulInfo();
  172. }
  173. return "WorkItems are filtered";
  174. }
  175. }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement