public AdsAndCats ReadAdvertisementsData()
        {
            AdsAndCats result = new AdsAndCats();

            result.Ads  = (from c in MTOContext.Advertisements orderby c.Id select c).Take(pageSize).ToList();
            result.Cats = (from c in MTOContext.Categories orderby c.Name where c.ParentId == null select c).ToList();


            Category backItem = new Category();

            backItem.Name = "همه آگهی ها";
            backItem.Id   = -1;
            result.Cats.Insert(0, backItem);

            return(result);
        }
        public AdsAndCats ReadBookByCategory(Dictionary <String, Object> data)
        {
            AdsAndCats result = new AdsAndCats();

            Category deserializedCategory = JsonConvert.DeserializeObject <Category>(data["category"].ToString());
            short    pageIndex;

            int?category = deserializedCategory.Id;

            if (category == 0)
            {
                category = null;
            }

            try
            {
                pageIndex = deserializedCategory.Status.Value;

                if (pageIndex > 0)
                {
                    if (category == null)
                    {
                        result.Ads = (from c in MTOContext.Advertisements orderby c.Id select c).Skip(pageIndex).Take(pageSize).ToList();
                        return(result);
                    }
                    Category selectedCat = (from c in MTOContext.Categories where c.Id == category.Value select c).FirstOrDefault();
                    var      catIds      = FindAllSubCats(selectedCat);
                    result.Ads = (from c in MTOContext.Advertisements orderby c.Id where catIds.Contains(c.CategoryId) select c).Skip(pageIndex).Take(pageSize).ToList();
                    return(result);
                }
            }
            catch
            {
                pageIndex = 0;
            }


            result.Cats = (from c in MTOContext.Categories orderby c.Id where c.ParentId == category select c).ToList();

            if (category != null && result.Cats.Count > 0)
            {
                Category backItem = new Category();
                backItem.Name = "بازگشت";
                backItem.Id   = deserializedCategory.ParentId != null ? deserializedCategory.ParentId.Value : 0;

                result.Cats.Insert(0, backItem);

                Category selectedCat = (from c in MTOContext.Categories where c.Id == category.Value select c).FirstOrDefault();
                var      catIds      = FindAllSubCats(selectedCat);
                result.Ads = (from c in MTOContext.Advertisements orderby c.Id where catIds.Contains(c.CategoryId) select c).Take(pageSize).ToList();
            }
            else
            {
                if (category == null)
                {
                    Category backItem = new Category();
                    backItem.Name = "همه آگهی ها";
                    backItem.Id   = -1;
                    result.Cats.Insert(0, backItem);
                    result.Ads = (from c in MTOContext.Advertisements orderby c.Id select c).Take(pageSize).ToList();
                }
                else
                {
                    result.Ads = (from c in MTOContext.Advertisements orderby c.Id where c.CategoryId == category select c).Take(pageSize).ToList();
                }
            }


            return(result);
        }