Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace InventoryManager
- {
- public class Program
- {
- static void Main()
- {
- List<Market> marcetInventar = new List<Market>();
- Dictionary<string, List<Tuple<double, string>>> storage = new Dictionary<string, List<Tuple<double, string>>>();
- HashSet<string> names = new HashSet<string>();
- HashSet<string> types = new HashSet<string>();
- StringBuilder output = new StringBuilder();
- string input = Console.ReadLine();
- while (input != "end")
- {
- var inputTokens = input.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToArray();
- string command = inputTokens[0];
- if (command == "add")
- {
- string name = inputTokens[1];
- if (names.Contains(name))
- {
- output.AppendLine($"Error: Item {name} already exists");
- input = Console.ReadLine();
- continue;
- }
- double price = double.Parse(inputTokens[2]);
- string type = inputTokens[3];
- var product = new Market(name, price, type);
- marcetInventar.Add(product);
- names.Add(name);
- types.Add(type);
- if (!storage.ContainsKey(type))
- {
- storage[type] = new List<Tuple<double, string>>();
- }
- var currentTuple = new Tuple<double, string>(price, name);
- storage[type].Add(currentTuple);
- output.AppendLine($"Ok: Item {name} added successfully");
- }
- else
- {
- if (inputTokens[2] == "type")
- {
- var searchedType = inputTokens[3];
- if (!types.Contains(searchedType))
- {
- output.AppendLine($"Error: Type {searchedType} does not exist");
- input = Console.ReadLine();
- continue;
- }
- else
- {
- var currentTypeList = storage[searchedType]
- .OrderBy(x => x.Item1)
- .ThenBy(x => x.Item2)
- .Take(10)
- .Select(x => $"{x.Item2}({x.Item1:f2})")
- .ToArray();
- output.AppendLine($"Ok: {string.Join(", ", currentTypeList)}");
- }
- }
- else if (inputTokens.Count() == 7)
- {
- double minPrice = double.Parse(inputTokens[4]);
- double maxPrice = double.Parse(inputTokens[6]);
- var priceRangeSortedInvetory = marcetInventar
- .Where(x => x.ItemPrice >= minPrice && x.ItemPrice <= maxPrice)
- .OrderBy(x => x.ItemPrice)
- .Take(10)
- .OrderBy(x => x.ItemPrice)
- .ThenBy(x => x.ItemName)
- .Select(x => $"{x.ItemName}({x.ItemPrice:f2})")
- .ToArray();
- output.AppendLine($"Ok: {string.Join(", ", priceRangeSortedInvetory)}");
- }
- else
- {
- var price = double.Parse(inputTokens[4]);
- if (inputTokens.Contains("to"))
- {
- var maxPriceSortedInventory = marcetInventar
- .Where(x => x.ItemPrice <= price)
- .OrderBy(x => x.ItemPrice)
- .Take(10)
- .OrderBy(x => x.ItemPrice)
- .ThenBy(x => x.ItemName)
- .Select(x => $"{x.ItemName}({x.ItemPrice:f2})")
- .ToArray();
- output.AppendLine($"Ok: {string.Join(", ", maxPriceSortedInventory)}");
- }
- else
- {
- var maxPriceSortedInventory = marcetInventar
- .Where(x => x.ItemPrice >= price)
- .OrderBy(x => x.ItemPrice)
- .Take(10)
- .OrderBy(x => x.ItemPrice)
- .ThenBy(x => x.ItemName)
- .Select(x => $"{x.ItemName}({x.ItemPrice:f2})")
- .ToArray();
- output.AppendLine($"Ok: {string.Join(", ", maxPriceSortedInventory)}");
- }
- }
- }
- input = Console.ReadLine();
- }
- Console.WriteLine(output.ToString());
- }
- }
- public class Market
- {
- public Market(string itemName, double price, string itemType)
- {
- ItemName = itemName;
- ItemPrice = price;
- ItemType = itemType;
- }
- public string ItemName { get; set; }
- public string ItemType { get; set; }
- public double ItemPrice { get; set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement