The goal of this assignment is to give you some experience creating web applications that utilize dynamic data displays and dynamic data binding. You will gain experience using GridView controls for dynamic data display.Requirements:1. Create a table named “Drinks” in your database with these fields:FieldData TypeItemIDvarchar(20)TitlevarcharDescriptionvarcharCategory (coffee/tea)varchar BasePrice floatTotalSalesfloatTotalQuantitySoldint2. Create a table name “RewardAccounts” in your database with these fields:FieldData TypeRewardAccountIDvarchar(20)CustomerNamevarcharPhoneNumbervarcharGrossSalesfloatTotalOrdersint3. Design the user interface (input form)a.Add textboxes for the user to enter their information name, phone number, and rewards account number.i. If the user enters a valid rewards account number, they get a 10% discount on the entire order.b. Add a control for selecting either in-store pickup, curb-side delivery, or delivery.c.Create a GridView control on your form that will be used to select “coffee” drinks and seperate GridView control to select “tea” drinks for the order the user will build. These input GridViews will be dynamic with columns. Each row in the GridView will correspond to a Drink stored in the database.i. First column contains a checkbox to select a Drink for purchase.ii. Second column displays the Title value coming from the database.iii. Third column displays the Description coming from the database.iv. Fourth column displays the BasePrice (price for a small) coming from the database.v. Fifth column displays a drop-down list with the choice of size options like Small, Tall, Grande, Venti, and Trenta. These sizes will be used to determine the price of the drink where smaller drinks cost less than larger drinks. vi. Sixth column displays a control for selecting either hot or iced.vii. The last column displays a textbox for the quantity to order.4. Use input validationa.The name and phone number textboxes cannot be blank.b. The user must make a selection for in-store pickup, curb-side delivery, or delivery.c.The user must select at least one Drink before completing the order. This means they need to add a checkmark to at least one row in the GridView for a Drink.d. The user must enter a quantity, a selection for drink size, and a selection for hot/iced for every Drink that is selected in the GridView.5. Server-side processinga.Processing an order requires you to build an order, which is simply a list of items that were selected from the Coffee Drinks GridView and the Tea Drinks GridView. Then, the application will process the order simply by updating quantities and sale totals (in dollars) for each selected drink as well as updating the customer’s reward account totals. Customer’s that order without a rewards account do not require any database updates for the RewardAccounts table. b. Create a separate ClassLibrary project that contains the necessary classes to implement Component-Based Design. Name the library project CoffeeShopLibraryc.The first class should contain class properties that will be displayed in the output GridView (in Part 6). The properties pertain to a single drink that is ordered. Hint: in the CodeBehind of the order page, create an Arraylist of Drinks ordered where each Arraylist element is a Drink object that was ordered. The drinks ordered will be coming from the two GridViews used to separately display Coffee drinks and Tea drinks.i. Title, Description, Size, Type (hot/cold), Quantity, Price, and TotalCost. ii. The price of each drink is based on the BasePrice and the size. You will need to come up with some formula to scale the prices so that smaller drinks cost less than larger drinks.d. Additional classes are used to model other entities needed in this software solution and they should contain a set of methods used in processing the order:6. Display order outputa.Display the name, phone number, and choice for receiving their order (pickup/delivery/etc...). This data is displayed separate from the ouput GridView.b. Display a dynamic 7-column GridView as Illustrated below. It needs to display the drinks that were ordered. The Arraylist of ordered drinks from part 4 should be bound to this GridView, and used to display the order.c.Column 7 - “Total Cost”, is calculated as Quantity x Price. d. The last row of the GridView should display the totals for the Quantity column, and the Total Cost column. You need to implement this as a footer of the GridView. Also, the Grand Total should reflect any discounts that were applied for customers with a reward account.TitleDescriptionSizeType (hot/cold)PriceQuantityTotal Cost..........................................Grand Total...$ ...Output GridView7. Management reporta.Create a management report that will display the TotalSales and TotalQuantitySold for each Drink in the database. The data should be displayed in descending order.b. Create another display that shows the list of customers with reward accounts listed from highest to lowest in GrossSales.8. Visibility controla.Control the visibility of both the input GridViews and the output GridView displays. You want to show the input GridViews when making an order and hide the output Gridview. Then, you want to show the output GridView and hide the input GridView after the order was processed.