public static AdVM ApprovedToAdsVm(Seller_Approved_book book)
        {
            AdVM adVM = new AdVM();

            adVM.BookID      = book.Book_Id;
            adVM.UserID      = book.Seller_Id;
            adVM.Description = book.Book.Discription;
            adVM.SubCatName  = book.Book.SubCategory.Name;

            var b =
                (from bk in db.Books
                 where bk.Id == book.Book_Id
                 select bk).FirstOrDefault();

            var images =
                (from i in db.Images
                 where i.Book_Id == book.Book_Id
                 select i).FirstOrDefault();

            if (book.Approved == "no" || book.Approved == "No")
            {
                adVM.Requests = -2;
            }
            else
            {
                Request request = (from r in db.Requests
                                   where r.Book_Id == book.Book_Id && r.Acctepted == "Yes"
                                   select r).FirstOrDefault();

                if (request == null)
                {
                    adVM.Requests = (from r in db.Requests
                                     where r.Book_Id == book.Book_Id && (r.Acctepted == "Yes" || r.Acctepted == "No")
                                     select r).Count();
                }
                else
                {
                    adVM.Requests = -1;
                }
            }

            adVM.Img_Url       = images.Img_URL;
            adVM.Name          = b.Name;
            adVM.Points        = b.Points;
            adVM.Date_Uploaded = b.Date_Uploaded;
            adVM.CityName      = b.City.Name;

            return(adVM);
        }
        public IHttpActionResult postbook(AddbooVM addbook)
        {
            bool   govexsist  = false;
            bool   cityexsist = false;
            int    govid;
            int    citid;
            string GoverStr = addbook.Governate;
            string cityStr  = addbook.Governate;

            if (addbook != null)
            {
                if (addbook.Governate.Contains(" Governorate"))
                {
                    addbook.Governate = addbook.Governate.Replace(" Governorate", "");
                }
                if (addbook.City.Contains(" Governorate"))
                {
                    addbook.City = addbook.City.Replace(" Governorate", "");
                }
                if (addbook.City.Contains("Qesm"))
                {
                    addbook.City = addbook.City.Split(' ').Last();
                    if (addbook.City == "Asyut")
                    {
                        addbook.City = "Assuit";
                    }
                }
                var govnames = (from i in db.Governates
                                select i.Name).ToList();
                foreach (var item in govnames)
                {
                    if (GoverStr == addbook.Governate)
                    {
                        govexsist = true;
                    }
                }

                if (govexsist)
                {
                    govid = (from i in db.Governates
                             where i.Name == addbook.Governate
                             select i.Id).First();
                }
                else
                {
                    Governate Gov = new Governate();
                    Gov.Name = addbook.Governate;
                    db.Governates.Add(Gov);
                    db.SaveChanges();

                    govid = (from i in db.Governates
                             where i.Name == addbook.Governate
                             select i.Id).First();
                }

                var citynames = (from i in db.Cities
                                 select i.Name).ToList();
                foreach (var item in citynames)
                {
                    if (item == addbook.City)
                    {
                        cityexsist = true;
                    }
                }

                if (cityexsist)
                {
                    citid = (from i in db.Cities
                             where i.Name == addbook.City
                             select i.Id).First();
                }
                else
                {
                    City cit = new City();
                    cit.Name         = addbook.City;
                    cit.Governate_Id = govid;
                    db.Cities.Add(cit);
                    db.SaveChanges();

                    citid = (from i in db.Cities
                             where i.Name == addbook.City
                             select i.Id).First();
                }
                var subid = (from i in db.SubCategories
                             where i.Name == addbook.SubCatogry
                             select i.Id).First();

                Book book = new Book();
                book.Name           = addbook.BookName;
                book.Points         = addbook.Points;
                book.Discription    = addbook.Discription;
                book.Date_Uploaded  = DateTime.Now;
                book.City_Id        = citid;
                book.Subcategory_Id = subid;

                db.Books.Add(book);
                db.SaveChanges();

                var bookid = (from i in db.Books
                              where i.Name == addbook.BookName && i.Points == addbook.Points && i.Discription == addbook.Discription && i.City_Id == citid
                              select i.Id).First();
                Seller_Approved_book sab = new Seller_Approved_book();
                sab.Book_Id   = bookid;
                sab.Seller_Id = addbook.UserId;
                sab.Approved  = "no";
                db.Seller_Approved_book.Add(sab);
                db.SaveChanges();

                foreach (var item in addbook.Img)
                {
                    if (item != null)
                    {
                        Image im = new Image();
                        im.Book_Id = bookid;
                        im.Img_URL = item;
                        db.Images.Add(im);
                        db.SaveChanges();
                    }
                }
            }

            return(Ok(addbook));
        }