SHARE
TWEET

Untitled

a guest Feb 27th, 2020 82 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top