using System.Collections.Generic;
public static void Main()
var shop = new ConsignmentShop();
public string Name {get;set;}
public string Description {get;set;}
public decimal Price {get;set;}
public bool IsSold {get;set;}
public bool IsPaymentDone {get;set;}
public Vendor Vendor {get;set;}
public int Stock {get;set;}
public override string ToString(){
return $"{Name} {Price}$";
public string FirstName {get;set;}
public string LastName {get;set;}
public decimal Commission {get;set;}
public decimal PaymentDue {get;set;}
public override string ToString(){
return $"{FirstName} {LastName}";
public string Name{get;set;}
public string City{get;set;}
public string ZipCode{get;set;}
public string Country{get;set;}
public string Address1{get;set;}
public string Address2{get;set;}
public List<Item> Items{get;private set;}
public List<Vendor> Vendors{get;private set;}
Items = new List<Item>();
Vendors = new List<Vendor>();
public void AddItem(Item item){
public void AddVendor(Vendor vendor){
public class ConsignmentShop
private List<KeyValuePair<Item, int>> ItemsInShoppingCart {get; set;}
private Store _Store{get; set;}
ItemsInShoppingCart = new List<KeyValuePair<Item, int>>();
private void SetupStore(){
this._Store = new Store{Name = "Cool Store"};
this._Store.AddVendor(new Vendor{FirstName = "Vladimir", LastName = "Gerasimenok", Commission = 0.2m, PaymentDue = 0});
this._Store.AddVendor(new Vendor{FirstName = "Raja", LastName = "Mani", Commission = 0.3m, PaymentDue = 0});
this._Store.AddItem(new Item{Name = "C# in a Nutshell", Description = "A book from O'Reiley", Price = 50.0m, IsSold = false, IsPaymentDone = false, Vendor = this._Store.Vendors[0], Stock = 10});
this._Store.AddItem(new Item{Name = "Apple AirPods", Description = "Headphones from Apple", Price = 250.0m, IsSold = false, IsPaymentDone = false, Vendor = this._Store.Vendors[1], Stock = 5});
this._Store.AddItem(new Item{Name = "Samsung Galyx S20+", Description = "Samsung phone", Price = 1200.0m, IsSold = false, IsPaymentDone = false, Vendor = this._Store.Vendors[0], Stock = 3});
this._Store.AddItem(new Item{Name = "iMac 2011", Description = "A computer from Apple", Price = 575.0m, IsSold = false, IsPaymentDone = false, Vendor = this._Store.Vendors[1], Stock = 2});
this._Store.AddItem(new Item{Name = "AOC AG352UCG", Description = "AOC Ultrawide monitor", Price = 790.0m, IsSold = false, IsPaymentDone = false, Vendor = this._Store.Vendors[0], Stock = 5});
Console.WriteLine($"Store name {_Store.Name}");
for(var i = 0; i < _Store.Items.Count; i++)
Console.WriteLine($"{i + 1} - {_Store.Items[i].Name}");
Console.WriteLine("A - Add item to shoppping cart");
Console.WriteLine("L - List items in shoppping cart");
Console.WriteLine("O - Order items in shopping cart");
Console.WriteLine("X - Exit");
Console.WriteLine("Enter your choice");
var selectedItem = Console.ReadLine();
Console.WriteLine("Enter item number and quantity");
var input = Console.ReadLine();
var itemNumber = Convert.ToInt32(input.Split(',')[0]);
var quantity = Convert.ToInt32(input.Split(',')[1]);
var item = _Store.Items[itemNumber - 1];
if(quantity > item.Stock)
Console.WriteLine("Sorry Item is not available at this moment");
ItemsInShoppingCart.Add(new KeyValuePair<Item, int>(item, quantity));
foreach(var itemsInShoppingCart in ItemsInShoppingCart){
Console.WriteLine($"{itemsInShoppingCart.Key} - {itemsInShoppingCart.Key.Price * itemsInShoppingCart.Value}");
foreach(var itemsInShoppingCart in ItemsInShoppingCart){
totalOrder = itemsInShoppingCart.Key.Price * itemsInShoppingCart.Value;
itemsInShoppingCart.Key.Vendor.PaymentDue = itemsInShoppingCart.Key.Price * itemsInShoppingCart.Value * itemsInShoppingCart.Key.Vendor.Commission;
storeProfit = itemsInShoppingCart.Key.Price * itemsInShoppingCart.Value - vendorProfit;
Console.WriteLine($"Total Order {totalOrder}");
foreach(var vendor in _Store.Vendors)
Console.WriteLine($"{vendor} - {vendor.PaymentDue}");
Console.WriteLine($"Store Profit {storeProfit}");