Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Data;
- using System.Text;
- namespace ShoppingCenter
- {
- public class ShoppingCenter
- {
- private const string ProductAdded = "Product added";
- private const string XProductsDeleted = " products deleted";
- private const string NOProductsFound = "No products found";
- private const string IncorrectCommand = "Incorrect command";
- public static DataTable center = new DataTable();
- public static void Main()
- {
- // first row contains column names:
- center.Columns.Add("Product");
- center.Columns.Add("Producer");
- center.Columns.Add("Price");
- center.Columns["Price"].DataType = typeof(decimal);
- center.CaseSensitive = true; // Case-sensitive data tables require exact match of searched data. e.g. Forest & forest are 2 different names when this property is set to true.
- StringBuilder answer = new StringBuilder();
- int commands = int.Parse(Console.ReadLine());
- for (int i = 1; i <= commands; i++)
- {
- string command = Console.ReadLine();
- string commandResult = ProcessCommand(command);
- answer.AppendLine(commandResult);
- }
- Console.Write(answer);
- }
- public static string ProcessCommand(string command)
- {
- int indexOfFirstSpace = command.IndexOf(' ');
- string method = command.Substring(0, indexOfFirstSpace);
- string parameterValues = command.Substring(indexOfFirstSpace + 1);
- string[] parameters = parameterValues.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
- string commandResult;
- switch (method)
- {
- case "AddProduct":
- {
- commandResult = AddProduct(parameters[0], parameters[1], parameters[2]);
- break;
- }
- case "DeleteProducts":
- {
- if (parameters.Length == 1)
- {
- commandResult = DeleteProducts(parameters[0]);
- }
- else
- {
- commandResult = DeleteProducts(parameters[0], parameters[1]);
- }
- break;
- }
- case "FindProductsByName":
- {
- commandResult = FindProductsByName(parameters[0]);
- break;
- }
- case "FindProductsByPriceRange":
- {
- commandResult = FindProductsByPriceRange(parameters[0], parameters[1]);
- break;
- }
- case "FindProductsByProducer":
- {
- commandResult = FindProductsByProducer(parameters[0]);
- break;
- }
- default:
- {
- commandResult = IncorrectCommand;
- break;
- }
- }
- return commandResult;
- }
- private static string FindProductsByProducer(string producer)
- {
- string filter = string.Format("Producer='" + producer + "'");
- var rows = center.Select(filter, "Product ASC, Producer ASC, Price ASC");
- int counter = 0;
- StringBuilder results = new StringBuilder();
- foreach (var row in rows)
- {
- results.Append("{");
- results.AppendFormat("{0};{1};{2:f2}", row[0], row[1], row[2]);
- results.Append("}");
- results.AppendLine();
- counter++;
- }
- if (counter == 0)
- {
- return NOProductsFound;
- }
- else
- {
- results.Length--;
- results.Length--;
- return results.ToString();
- }
- }
- private static string FindProductsByPriceRange(string priceFrom, string priceTo)
- {
- string filter1 = string.Format("Price>=" + priceFrom);
- string filter2 = string.Format("Price<=" + priceTo);
- string filter = filter1 + " AND " + filter2;
- var rows = center.Select(filter, "Product ASC, Producer ASC, Price ASC");
- int counter = 0;
- StringBuilder results = new StringBuilder();
- foreach (var row in rows)
- {
- results.Append("{");
- results.AppendFormat("{0};{1};{2:f2}", row[0], row[1], row[2]);
- results.Append("}");
- results.AppendLine();
- counter++;
- }
- if (counter == 0)
- {
- return NOProductsFound;
- }
- else
- {
- results.Length--;
- results.Length--;
- return results.ToString();
- }
- }
- private static string FindProductsByName(string product)
- {
- string filter = string.Format("Product='" + product + "'");
- var rows = center.Select(filter, "Product ASC, Producer ASC, Price ASC");
- int counter = 0;
- StringBuilder results = new StringBuilder();
- foreach (var row in rows)
- {
- results.Append("{");
- results.AppendFormat("{0};{1};{2:f2}", row[0], row[1], row[2]);
- results.Append("}");
- results.AppendLine();
- counter++;
- }
- if (counter == 0)
- {
- return NOProductsFound;
- }
- else
- {
- results.Length--;
- results.Length--;
- return results.ToString();
- }
- }
- private static string DeleteProducts(string producer)
- {
- string filter = string.Format("Producer='" + producer + "'");
- var rows = center.Select(filter);
- int counter = 0;
- foreach (var row in rows)
- {
- row.Delete();
- counter++;
- }
- if (counter == 0)
- {
- return NOProductsFound;
- }
- else
- {
- return counter + XProductsDeleted;
- }
- }
- private static string DeleteProducts(string product, string producer)
- {
- string filter1 = string.Format("Producer='" + producer + "'");
- string filter2 = string.Format("Product='" + product + "'");
- string filter = filter1 + " AND " + filter2;
- var rows = center.Select(filter);
- int counter = 0;
- foreach (var row in rows)
- {
- row.Delete();
- counter++;
- }
- if (counter == 0)
- {
- return NOProductsFound;
- }
- else
- {
- return counter + XProductsDeleted;
- }
- }
- private static string AddProduct(string product, string price, string producer)
- {
- DataRow row = center.NewRow();
- row[0] = product;
- row[1] = producer;
- row[2] = decimal.Parse(price);
- center.Rows.Add(row);
- return ProductAdded;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement