C# assignment Note: Create Properties/Getters and Setters as needed andprovide proper feedback and messages to the user
Question:
C# assignment
Note: Create Properties/Getters and Setters as needed andprovide proper feedback and messages to the user after eachoperation
1. Create a Product class, that maintains the followinginformation:
- Code, string
- Name, string
- Price, double
- QtyInStock, integer
2. Create an Inventory class, that uses a Dictionary toimplement the following operations (use product Code as the key,Product object as the value):
- Add a new product to inventory
- Search a product using product code.
- Update qtyInStock and price of the product
- Display all the products in inventory
3. Create an InvoiceItem class. For each InvoiceItem in theinvoice, it has the following:
- Product, Product
- Qty, integer
- GetSubtotal() returns double(it is the multiplication ofquantity sold and unit price)
4. Create an Invoice class that uses a HashSet that holdsInvoiceItems. Implement the following operations for the Invoice orBill of Sale:
- Add an Invoiceitem to the invoice, should be unique i.e. sameproduct cannot appear more than once along with quantity sold. Onlythe product in the inventory can be added to the invoice. All theinformation about the product is used from inventory. This meansthe user is only providing the item and quantity data.
- Display all the products sold along with the total of theinvoice. The invoice total is the total of all the subtotal.
5. Do the following in the main method:
a) Create an Inventory object
b) Add 5 instances of Product objects to the Inventoryobject.
c) Print all products in the Inventory
d) Create an Invoice
e) Create 3 instances of InvoiceItem using 3 instances ofProduct from the inventory retrieved by the Product Code.
f) Add the above 3 InvoiceItem to the Invoice. Test if youcan add the same product twice as a part of two separateInvoiceItem. The application should not allow this.
g) Print the invoice, showing the subtotal and grandtotal.