// GET: Cart
        public ActionResult RetrieveModels()
        {
            try
            {
                string userId = User.Identity.GetUserId();
                if (String.IsNullOrEmpty(userId))
                    return RedirectToAction("Error404", "Home");

                var user = db.Users.Where(x => x.Id == userId).FirstOrDefault();

                if (User.IsInRole("Supplier") && user.ActivationCode == null)
                {
                    var getSupplier = (from s in db.Suppliers
                                       where s.Id == userId
                                       select s).FirstOrDefault();

                    var retrieveModels = (from m in db.Models
                                          join ms in db.ModelSpecs on m.ModelId equals ms.ModelId
                                          join s in db.Suppliers on ms.SupplierId equals s.SupplierId

                                          select m).Distinct();

                    var modelList = new List<SupplierRetrieveModelsViewModel>();

                    foreach (var obj in retrieveModels)
                    {
                        var model = new SupplierRetrieveModelsViewModel()
                        {
                            ModelId = obj.ModelId,
                            ModelNumber = obj.ModelNumber,
                            BrandName = (from b in db.Brands
                                         join m in db.Models on b.BrandId equals m.BrandId
                                         where b.BrandId == obj.BrandId
                                         select b.Name).FirstOrDefault(),
                            ImageUrl = (from ph in db.Photos
                                        join pm in db.PhotoModels on ph.PhotoId equals pm.PhotoId
                                        join m in db.Models on pm.ModelId equals m.ModelId
                                        where pm.ModelId == obj.ModelId
                                        select ph.ImageUrl).FirstOrDefault()
                        };

                        modelList.Add(model);
                    }

                    return View(modelList);
                }
                return RedirectToAction("Login", "Account");
            }
            catch (Exception ex)
            {
                return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.ToString());
            }
        }
        public ActionResult SupplierRetrieveModels(string searchString, ManageMessageId? message)
        {
            try
            {
                string userId = User.Identity.GetUserId();
                if (userId == null)
                {
                    return RedirectToAction("Login", "Account");
                }

                if (User.IsInRole("Supplier"))
                {
                    if (!String.IsNullOrEmpty(searchString))
                    {
                        var getSupplier = (from s in db.Suppliers
                                           where s.Id == userId
                                           select s).FirstOrDefault();

                        int supplierId = getSupplier.SupplierId;

                        var retrieveModels = (from m in db.Models
                                              join ms in db.ModelSpecs on m.ModelId equals ms.ModelId
                                              join s in db.Suppliers on ms.SupplierId equals s.SupplierId
                                              where ms.SupplierId == supplierId
                                              where m.ModelNumber.Contains(searchString)
                                              select m).Distinct();

                        var modelList = new List<SupplierRetrieveModelsViewModel>();

                        foreach (var obj in retrieveModels)
                        {
                            var model = new SupplierRetrieveModelsViewModel()
                            {
                                SupplierId = supplierId,
                                ModelId = obj.ModelId,
                                ModelNumber = obj.ModelNumber,
                                BrandName = (from b in db.Brands
                                             join m in db.Models on b.BrandId equals m.BrandId
                                             where b.BrandId == obj.BrandId
                                             select b.Name).FirstOrDefault(),
                                ImageUrl = (from ph in db.Photos
                                            join pm in db.PhotoModels on ph.PhotoId equals pm.PhotoId
                                            join m in db.Models on pm.ModelId equals m.ModelId
                                            where pm.ModelId == obj.ModelId
                                            select ph.ImageUrl).FirstOrDefault(),
                                Status = obj.Status
                            };

                            modelList.Add(model);
                        }

                        ViewBag.StatusMessage =
                            message == ManageMessageId.AddModelSuccess ? "You just added a model successfully."
                            : message == ManageMessageId.Error ? "An error has occurred."
                            : message == ManageMessageId.UpdateOrderStatus ? "You just updated the order status."
                             : "";

                        GetSupplierReturnNotification();
                        GetSupplierNotification();
                        return View(modelList.OrderBy(o => o.Status));
                    }
                    if (String.IsNullOrEmpty(searchString))
                    {
                        var getSupplier = (from s in db.Suppliers
                                           where s.Id == userId
                                           select s).FirstOrDefault();

                        int supplierId = getSupplier.SupplierId;

                        var retrieveModels = (from m in db.Models
                                              join ms in db.ModelSpecs on m.ModelId equals ms.ModelId
                                              join s in db.Suppliers on ms.SupplierId equals s.SupplierId
                                              where ms.SupplierId == supplierId
                                              select m).Distinct();

                        var modelList = new List<SupplierRetrieveModelsViewModel>();

                        foreach (var obj in retrieveModels)
                        {
                            var model = new SupplierRetrieveModelsViewModel()
                            {
                                SupplierId = supplierId,
                                ModelId = obj.ModelId,
                                ModelNumber = obj.ModelNumber,
                                BrandName = (from b in db.Brands
                                             join m in db.Models on b.BrandId equals m.BrandId
                                             where b.BrandId == obj.BrandId
                                             select b.Name).FirstOrDefault(),
                                ImageUrl = (from ph in db.Photos
                                            join pm in db.PhotoModels on ph.PhotoId equals pm.PhotoId
                                            join m in db.Models on pm.ModelId equals m.ModelId
                                            where pm.ModelId == obj.ModelId
                                            select ph.ImageUrl).FirstOrDefault(),
                                Status = obj.Status
                            };

                            modelList.Add(model);
                        }

                        GetSupplierReturnNotification();
                        GetSupplierNotification();
                        return View(modelList.OrderBy(m => m.Status));
                    }
                }
                return RedirectToAction("Login", "Account");
            }
            catch (Exception ex)
            {
                return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.ToString());
            }
        }