using System.Collections.Generic;
public override string ToString()
return $"{Name},{Price}" ;
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 $"{FirstName},{LastName}";
public string FirstName {get;set;}
public string LastName {get;set;}
public decimal Commission {get;set;}
public decimal PaymentDue {get;set;}
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;}
Vendors=new List<Vendor>();
public void AddVendor(Vendor vendor)
public void AddItem(Item item)
public class ConsignmentShop
private Store store{get;set;}
private List<KeyValuePair<Item,int>> ItemsInShoppingCart{get;set;}
ItemsInShoppingCart= new List<KeyValuePair<Item,int>>();
private void SetupStore()
store= new Store { Name = "AK Ahmed Store" };
this.store.AddVendor(new Vendor{FirstName = "Arjun", LastName = "Gandhi", 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);
for(int 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("Please Enter your Option");
var choice= Console.ReadLine();
Console.Write("Enter item number, quantity: ");
var itemoption= Console.ReadLine();
var itemnumber= Convert.ToInt32(itemoption.Split(new []{','})[0])-1;
var quantity= Convert.ToInt32(itemoption.Split(new []{','})[1]);
if(store.Items[itemnumber].Stock>=quantity)
ItemsInShoppingCart.Add(new KeyValuePair<Item,int>(store.Items[itemnumber],quantity));
store.Items[itemnumber].Stock-= quantity;
Console.WriteLine($"Sorry! The item {this.store.Items[itemnumber].Name} is out of stock. {this.store.Items[itemnumber].Stock} items remain.");
Console.WriteLine("Items in ShoppingCart");
foreach(var item in ItemsInShoppingCart)
Console.WriteLine($"{item.Key.ToString()} x {item.Value} = {item.Key.Price*item.Value}");
foreach(var item in ItemsInShoppingCart)
TotalAmount+= item.Key.Price*item.Value;
StoreProfit+= (item.Key.Price*item.Value)*(1-item.Key.Vendor.Commission);
item.Key.Vendor.PaymentDue+= item.Key.Price*item.Value*item.Key.Vendor.Commission;
foreach(var vendor in store.Vendors)
Console.WriteLine($"{vendor} gets {vendor.PaymentDue}");
Console.WriteLine($"StoreProfit: {StoreProfit}");
Console.WriteLine($"TotalAmount: {TotalAmount}");
public static void Main()
var shop= new ConsignmentShop();