// GET: /OrderDetailOptions/Delete/<id>
        public ActionResult Delete(
            Int32?OrderOptionId
            )
        {
            if (
                OrderOptionId == null
                )
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            dtItemOption = OrderDetailOptions_ItemOptionData.SelectAll();

            OrderDetailOptions OrderDetailOptions = new OrderDetailOptions();

            OrderDetailOptions.OrderOptionId = System.Convert.ToInt32(OrderOptionId);
            OrderDetailOptions            = OrderDetailOptionsData.Select_Record(OrderDetailOptions);
            OrderDetailOptions.ItemOption = new ItemOption()
            {
                ItemOptionId = (Int32)OrderDetailOptions.ItemOptionId
            };

            if (OrderDetailOptions == null)
            {
                return(HttpNotFound());
            }
            return(View(OrderDetailOptions));
        }
        public ActionResult Edit([Bind(Include =
                                           " OrderOptionId"
                                           + ",OrderDetailId"
                                           + ",ItemOptionId"
                                           + ",Price"
                                       )] OrderDetailOptions OrderDetailOptions)
        {
            OrderDetailOptions oOrderDetailOptions = new OrderDetailOptions();

            oOrderDetailOptions.OrderOptionId = System.Convert.ToInt32(OrderDetailOptions.OrderOptionId);
            oOrderDetailOptions = OrderDetailOptionsData.Select_Record(OrderDetailOptions);

            if (ModelState.IsValid)
            {
                bool bSucess = false;
                bSucess = OrderDetailOptionsData.Update(oOrderDetailOptions, OrderDetailOptions);
                if (bSucess == true)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError("", "Can Not Update");
                }
            }
            // ComboBox
            ViewData["ItemOptionId"] = new SelectList(OrderDetailOptions_ItemOptionData.List(), "ItemOptionId", "ItemOptionId", OrderDetailOptions.ItemOptionId);

            return(View(OrderDetailOptions));
        }
        // GET: /OrderDetailOptions/Edit/<id>
        public ActionResult Edit(
            Int32?OrderOptionId
            )
        {
            if (
                OrderOptionId == null
                )
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            OrderDetailOptions OrderDetailOptions = new OrderDetailOptions();

            OrderDetailOptions.OrderOptionId = System.Convert.ToInt32(OrderOptionId);
            OrderDetailOptions = OrderDetailOptionsData.Select_Record(OrderDetailOptions);

            if (OrderDetailOptions == null)
            {
                return(HttpNotFound());
            }
            // ComboBox
            ViewData["ItemOptionId"] = new SelectList(OrderDetailOptions_ItemOptionData.List(), "ItemOptionId", "ItemOptionId", OrderDetailOptions.ItemOptionId);

            return(View(OrderDetailOptions));
        }
        // GET: /OrderDetailOptions/Create
        public ActionResult Create()
        {
            // ComboBox
            ViewData["ItemOptionId"] = new SelectList(OrderDetailOptions_ItemOptionData.List(), "ItemOptionId", "ItemOptionId");

            return(View());
        }
        public ActionResult Create([Bind(Include =
                                             "OrderDetailId"
                                             + "," + "ItemOptionId"
                                             + "," + "Price"
                                         )] OrderDetailOptions OrderDetailOptions)
        {
            if (ModelState.IsValid)
            {
                bool bSucess = false;
                bSucess = OrderDetailOptionsData.Add(OrderDetailOptions);
                if (bSucess == true)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError("", "Can Not Insert");
                }
            }
            // ComboBox
            ViewData["ItemOptionId"] = new SelectList(OrderDetailOptions_ItemOptionData.List(), "ItemOptionId", "ItemOptionId", OrderDetailOptions.ItemOptionId);

            return(View(OrderDetailOptions));
        }
        // GET: /OrderDetailOptions/
        public ActionResult Index(string sortOrder,
                                  String SearchField,
                                  String SearchCondition,
                                  String SearchText,
                                  String Export,
                                  int?PageSize,
                                  int?page,
                                  string command)
        {
            if (command == "Show All")
            {
                SearchField                = null;
                SearchCondition            = null;
                SearchText                 = null;
                Session["SearchField"]     = null;
                Session["SearchCondition"] = null;
                Session["SearchText"]      = null;
            }
            else if (command == "Add New Record")
            {
                return(RedirectToAction("Create"));
            }
            else if (command == "Export")
            {
                Session["Export"] = Export;
            }
            else if (command == "Search" | command == "Page Size")
            {
                if (!string.IsNullOrEmpty(SearchText))
                {
                    Session["SearchField"]     = SearchField;
                    Session["SearchCondition"] = SearchCondition;
                    Session["SearchText"]      = SearchText;
                }
            }
            if (command == "Page Size")
            {
                Session["PageSize"] = PageSize;
            }

            ViewData["SearchFields"]     = GetFields((Session["SearchField"] == null ? "Order Option Id" : Convert.ToString(Session["SearchField"])));
            ViewData["SearchConditions"] = Library.GetConditions((Session["SearchCondition"] == null ? "Contains" : Convert.ToString(Session["SearchCondition"])));
            ViewData["SearchText"]       = Session["SearchText"];
            ViewData["Exports"]          = Library.GetExports((Session["Export"] == null ? "Pdf" : Convert.ToString(Session["Export"])));
            ViewData["PageSizes"]        = Library.GetPageSizes();

            ViewData["CurrentSort"]           = sortOrder;
            ViewData["OrderOptionIdSortParm"] = sortOrder == "OrderOptionId_asc" ? "OrderOptionId_desc" : "OrderOptionId_asc";
            ViewData["OrderDetailIdSortParm"] = sortOrder == "OrderDetailId_asc" ? "OrderDetailId_desc" : "OrderDetailId_asc";
            ViewData["ItemOptionIdSortParm"]  = sortOrder == "ItemOptionId_asc" ? "ItemOptionId_desc" : "ItemOptionId_asc";
            ViewData["PriceSortParm"]         = sortOrder == "Price_asc" ? "Price_desc" : "Price_asc";

            dtOrderDetailOptions = OrderDetailOptionsData.SelectAll();
            dtItemOption         = OrderDetailOptions_ItemOptionData.SelectAll();

            try
            {
                if (!string.IsNullOrEmpty(Convert.ToString(Session["SearchField"])) & !string.IsNullOrEmpty(Convert.ToString(Session["SearchCondition"])) & !string.IsNullOrEmpty(Convert.ToString(Session["SearchText"])))
                {
                    dtOrderDetailOptions = OrderDetailOptionsData.Search(Convert.ToString(Session["SearchField"]), Convert.ToString(Session["SearchCondition"]), Convert.ToString(Session["SearchText"]));
                }
            }
            catch { }

            var Query = from rowOrderDetailOptions in dtOrderDetailOptions.AsEnumerable()
                        join rowItemOption in dtItemOption.AsEnumerable() on rowOrderDetailOptions.Field <Int32>("ItemOptionId") equals rowItemOption.Field <Int32>("ItemOptionId")
                        select new OrderDetailOptions()
            {
                OrderOptionId   = rowOrderDetailOptions.Field <Int32>("OrderOptionId")
                , OrderDetailId = rowOrderDetailOptions.Field <Int32>("OrderDetailId")
                ,
                ItemOption = new ItemOption()
                {
                    ItemOptionId = rowItemOption.Field <Int32>("ItemOptionId")
                }
                , Price = rowOrderDetailOptions.Field <Decimal>("Price")
            };

            switch (sortOrder)
            {
            case "OrderOptionId_desc":
                Query = Query.OrderByDescending(s => s.OrderOptionId);
                break;

            case "OrderOptionId_asc":
                Query = Query.OrderBy(s => s.OrderOptionId);
                break;

            case "OrderDetailId_desc":
                Query = Query.OrderByDescending(s => s.OrderDetailId);
                break;

            case "OrderDetailId_asc":
                Query = Query.OrderBy(s => s.OrderDetailId);
                break;

            case "ItemOptionId_desc":
                Query = Query.OrderByDescending(s => s.ItemOption.ItemOptionId);
                break;

            case "ItemOptionId_asc":
                Query = Query.OrderBy(s => s.ItemOption.ItemOptionId);
                break;

            case "Price_desc":
                Query = Query.OrderByDescending(s => s.Price);
                break;

            case "Price_asc":
                Query = Query.OrderBy(s => s.Price);
                break;

            default:      // Name ascending
                Query = Query.OrderBy(s => s.OrderOptionId);
                break;
            }

            if (command == "Export")
            {
                GridView  gv = new GridView();
                DataTable dt = new DataTable();
                dt.Columns.Add("Order Option Id", typeof(string));
                dt.Columns.Add("Order Detail Id", typeof(string));
                dt.Columns.Add("Item Option Id", typeof(string));
                dt.Columns.Add("Price", typeof(string));
                foreach (var item in Query)
                {
                    dt.Rows.Add(
                        item.OrderOptionId
                        , item.OrderDetailId
                        , item.ItemOption.ItemOptionId
                        , item.Price
                        );
                }
                gv.DataSource = dt;
                gv.DataBind();
                ExportData(Export, gv, dt);
            }

            int pageNumber = (page ?? 1);
            int?pageSZ     = (Convert.ToInt32(Session["PageSize"]) == 0 ? 5 : Convert.ToInt32(Session["PageSize"]));

            return(View(Query.ToPagedList(pageNumber, (pageSZ ?? 5))));
        }