public JsonNetResult SortCategoryByDate(Guid categoryID, string sortType, ResourceFilters filter)
        {
            try
            {
                var model = new CategoryResourceItemsViewModel();
                var availableResources = new List <Guid>();
                model.CategoryItem = ExigoDAL.GetResourceCategoryItems(new GetResourceCategoryItemsRequest()
                {
                    CategoryID = categoryID
                }).FirstOrDefault();
                model.IsResourceManager = filter.isResourceManager;
                model.ResourceList      = ExigoDAL.GetResourceItemsByCategory(categoryID);
                model.Types             = ExigoDAL.GetResourceTypes(new GetResourceTypeRequest()
                {
                    TypeDescriptions = filter.MediaFilter
                });

                if (filter.MarketFilter != null && filter.MarketFilter != string.Empty)
                {
                    if (filter.LanguageFilter != null && filter.LanguageFilter != string.Empty)
                    {
                        var language = Convert.ToInt32(filter.LanguageFilter);
                        var cc       = filter.MarketFilter;
                        var getAvailableResources = ExigoDAL.GetResourceAvailabilities(new GetResourceAvailabilitiesRequest()
                        {
                            CountryCode = cc, LanguageID = language
                        });
                        availableResources = getAvailableResources.Select(ar => ar.ItemID).ToList();
                    }
                    else
                    {
                        var cc = filter.MarketFilter;
                        var getAvailableResources = ExigoDAL.GetResourceAvailabilities(new GetResourceAvailabilitiesRequest()
                        {
                            CountryCode = cc
                        });
                        availableResources = getAvailableResources.Select(ar => ar.ItemID).ToList();
                    }
                }

                model.ResourceList = model.ResourceList.Where(x => availableResources.Contains(x.ItemID));

                if (!model.IsResourceManager)
                {
                    model.ResourceList = model.ResourceList.Where(c => c.StatusID == ExigoDAL.ResourceStatuses.Active && (c.PostDate <= DateTime.Now.ToCST() || c.PostDate == null)).ToList();
                }

                switch (sortType)
                {
                case "asc":
                    model.ResourceList = model.ResourceList.OrderBy(c => c.CreatedDate);
                    break;

                case "desc":
                    model.ResourceList = model.ResourceList.OrderByDescending(c => c.CreatedDate);
                    break;

                default:
                    model.ResourceList = model.ResourceList.OrderBy(c => c.ItemOrder);
                    break;
                }

                if (filter.MediaFilter != null && filter.MediaFilter.Count() > 0)
                {
                    var typeIDs = model.Types.Select(v => v.TypeID);
                    model.ResourceList = model.ResourceList.Where(x => typeIDs.Contains(x.TypeID)).ToList();
                }

                if (filter.KeyWord != null && filter.KeyWord.Any())
                {
                    var keyword = filter.KeyWord;
                    var tag     = ExigoDAL.GetTagsForResources(new GetTagsForResourcesRequest()
                    {
                        Names = keyword
                    }).FirstOrDefault();
                    if (tag != null)
                    {
                        var resourceitemtagIDs = ExigoDAL.GetResourceItemTags(new GetResourceItemTagsRequest()
                        {
                            TagID = tag.TagID
                        }).AsEnumerable().Select(rt => rt.ItemID);

                        model.ResourceList = model.ResourceList.Where(rl => resourceitemtagIDs.Contains(rl.ItemID));
                    }
                }

                var html = this.RenderPartialViewToString("Partials/_CategoryResourceItems", model);

                return(new JsonNetResult(new
                {
                    success = true,
                    html = html
                }));
            }
            catch (Exception ex)
            {
                return(new JsonNetResult(new
                {
                    success = false,
                    message = ex.Message
                }));
            }
        }