Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using OlympicGames.Core.Commands.Abstracts;
- using OlympicGames.Core.Contracts;
- using OlympicGames.Olympics.Contracts;
- using System.Linq;
- using System.Text;
- namespace OlympicGames.Core.Commands
- {
- public class ListOlympiansCommand : Command
- {
- public ListOlympiansCommand(IList<string> commandLine, IOlympicCommittee committee)
- : base(commandLine, committee)
- {
- }
- private List<IOlympian> Print(string name = "firstname", string order = "asc")
- {
- var orderedList = new List<IOlympian>();
- switch (CommandParameters.Count)
- {
- case 1:
- if (Equals(name, "firstname"))
- {
- return orderedList = Committee.Olympians.OrderBy(x => x.FirstName).ToList();
- }
- if (Equals(name, "lastname"))
- {
- return orderedList = Committee.Olympians.OrderBy(x => x.LastName).ToList();
- }
- return orderedList = Committee.Olympians.OrderBy(x => x.Country).ToList();
- case 2:
- if (Equals(order, "asc"))
- {
- if (Equals(name, "firstname"))
- {
- return orderedList = Committee.Olympians.OrderBy(x => x.FirstName).ToList();
- }
- if (Equals(name, "lastname"))
- {
- return orderedList = Committee.Olympians.OrderBy(x => x.LastName).ToList();
- }
- return orderedList = Committee.Olympians.OrderBy(x => x.Country).ToList();
- }
- if (Equals(name, "firstname"))
- {
- return orderedList = Committee.Olympians.OrderByDescending(x => x.FirstName).ToList();
- }
- if (Equals(name, "lastname"))
- {
- return orderedList = Committee.Olympians.OrderByDescending(x => x.LastName).ToList();
- }
- return orderedList = Committee.Olympians.OrderByDescending(x => x.Country).ToList();
- default: return Committee.Olympians.OrderBy(x => x.FirstName).ToList();
- }
- }
- public override string Execute()
- {
- var count = CommandParameters.Count;
- var result = count switch
- {
- 1 => Print(CommandParameters[0]),
- 2 => Print(CommandParameters[0], CommandParameters[2]),
- _ => Print()
- };
- if (Equals(result.Count, 0))
- {
- return "NO OLYMPIANS ADDED";
- }
- var sb = new StringBuilder();
- foreach (var olympian in result)
- {
- sb.AppendLine(olympian.Print());
- }
- return sb.ToString().Trim();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment