// წაშლილი კატეგორიის ბაზიდან ამოშლის ფუნქცია
        public void DeleteUnselectedCategories(ArticlesCustomClass model, IEnumerable <int> PrevSelectedCategories)
        {
            var result = _db.articles.FirstOrDefault(e => e.Id == model.Id);
            var UnSelectedCategories = PrevSelectedCategories.Where(f => !model.CategoriesList.Contains(f)).ToList();
            var categoryResult       = _db.articleCategories.Where(e => e.articlesId == result.Id);

            foreach (var category in UnSelectedCategories)
            {
                foreach (var item in categoryResult)
                {
                    if (category == item.categoriesId)
                    {
                        var UnSelectedCategoriesResult = _db.articleCategories.Where(e => e.categoriesId == category);
                        _db.articleCategories.RemoveRange(UnSelectedCategoriesResult);
                    }
                }
            }
            _db.SaveChanges();
        }
        // data for products list model
        public ArticlesCustomClass GetArticleModelData(int id)
        {
            //var model = new ArticlesCustomClass
            //{
            var result = GetArticlesById(id);
            var model  = new ArticlesCustomClass()
            {
                Id         = result.Id,
                Title      = result.title,
                Content    = result.content,
                Date       = result.date,
                User       = result.users,
                IsBlocked  = result.isBlocked,
                Ratings    = GetRatingsByArticlesId(result.Id),
                ImagesList = GetImagesByArticleId(result.Id),
                Categories = GetCategoriesByArticleId(result.Id).ToList(),
                MainImage  = GetMainImageByArticleId(result.Id),
                Requests   = GetRequestsByArticleId(result.Id)
            };

            //};
            return(model);
        }
        // წაშლილი მოთხოვნის ბაზიდან ამოშლის ფუნქცია
        public void DeleteUnselectedRequest(ArticlesCustomClass model, IEnumerable <int> PrevSelectedRequests)
        {
            var result        = _db.articles.FirstOrDefault(e => e.Id == model.Id);
            var requestResult = _db.requestsArticles.Where(e => e.articlesId == result.Id);

            if (model.RequestsList != null)
            {
                var UnSelectedRequests = PrevSelectedRequests.Where(f => !model.RequestsList.Contains(f)).ToList();
                foreach (var request in UnSelectedRequests)
                {
                    foreach (var item in requestResult)
                    {
                        if (request == item.requestsId)
                        {
                            var UnSelectedRequestsResult = _db.requestsArticles.Where(e => e.requestsId == request);
                            _db.requestsArticles.RemoveRange(UnSelectedRequestsResult);
                        }
                    }
                }
                _db.SaveChanges();
            }
            else // თუ არც ერთ მოთხოვნა აღარაა მულტისელექტში, ყველა მოთხოვნა იშლება  ბაზიდან
            {
                foreach (var request in PrevSelectedRequests)
                {
                    foreach (var item in requestResult)
                    {
                        if (request == item.requestsId)
                        {
                            var UnSelectedRequestsResult = _db.requestsArticles.Where(e => e.requestsId == request);
                            _db.requestsArticles.RemoveRange(UnSelectedRequestsResult);
                        }
                    }
                }
                _db.SaveChanges();
            }
        }
        //Create
        public void CreateArticles(ArticlesCustomClass article)
        {
            var newarticle = new articles();

            newarticle.title     = article.Title;
            newarticle.content   = article.Content;
            newarticle.date      = DateTime.Now;
            newarticle.isBlocked = true;

            if (LoginHelper.IsLoggedIn())
            {
                newarticle.usersId = LoginHelper.CurrentUser().Id;
            }
            else
            {
                newarticle.usersId = 16; // რომ წავა დასასრულისკენ პროექტი, ეს იფ-ელსი წაიშლება და მარტო current user დარჩება
            }


            if (!ExistCustomArticle(article))
            {
                _db.articles.Add(newarticle);

                //_db.SaveChanges();
                foreach (var categoryId in article.CategoriesList)
                {
                    _db.articleCategories.Add(
                        new articleCategories()
                    {
                        categoriesId = categoryId,
                        articlesId   = newarticle.Id
                    });
                    _db.SaveChanges();
                }

                if (article.RequestsList != null)
                {
                    foreach (var requestID in article.RequestsList)
                    {
                        _db.requestsArticles.Add(
                            new requestsArticles()
                        {
                            requestsId = requestID,
                            articlesId = newarticle.Id
                        });
                        _db.SaveChanges();
                    }
                }


                var mapPath = HostingEnvironment.MapPath("~/images/");
                foreach (var file in article.Images)
                {
                    if (file != null)
                    {
                        file.SaveAs(mapPath + file.FileName);
                        _db.images.Add(new images()
                        {
                            name       = file.FileName,
                            url        = "~/images/" + file.FileName,
                            articlesId = newarticle.Id,
                            usersId    = null,
                            isMain     = false
                        });
                        _db.SaveChanges();
                    }
                    else
                    {
                        continue;
                    }
                }
            }
        }
 public bool ExistCustomArticle(ArticlesCustomClass article)
 {
     return(_db.articles.FirstOrDefault(e => e.title == article.Title) == null ? false : true);
 }
        //Edit
        public void EditArticles(ArticlesCustomClass article)
        {
            var result         = _db.articles.FirstOrDefault(e => e.Id == article.Id);
            var categoryResult = _db.articleCategories.Where(e => e.articlesId == article.Id);
            var requestResult  = _db.requestsArticles.Where(e => e.articlesId == article.Id);

            if (!ExistCustomArticle(article) || result.title == article.Title)
            {
                result.title   = article.Title;
                result.content = article.Content;
                //result.usersId = article.UsersId;
            }
            _db.SaveChanges();


            //კატეგორიის ცვლილებას აკეთებს
            if (article.CategoriesList != null)
            {
                var notTheseCategoryIds = categoryResult.Select(e => e.categoriesId);
                var CategorySelects     = article.CategoriesList.Where(f => !notTheseCategoryIds.Contains(f)).ToList();


                foreach (var categoryId in CategorySelects)
                {
                    _db.articleCategories.Add(
                        new articleCategories()
                    {
                        categoriesId = categoryId,
                        articlesId   = result.Id
                    });
                    _db.SaveChanges();
                }
            }

            //რექუესტის ცვლილების აკეტებს
            if (article.RequestsList != null)
            {
                var notTheseRequestsIds = requestResult.Select(e => e.requestsId);
                var RequestsSelects     = article.RequestsList.Where(f => !notTheseRequestsIds.Contains(f)).ToList();
                foreach (var requestID in RequestsSelects)
                {
                    _db.requestsArticles.Add(
                        new requestsArticles()
                    {
                        requestsId = requestID,
                        articlesId = result.Id
                    });
                }
                _db.SaveChanges();
            }


            if (article.Images != null)
            {
                var mapPath = HostingEnvironment.MapPath("~/images/");
                foreach (var file in article.Images)
                {
                    if (file != null)
                    {
                        file.SaveAs(mapPath + file.FileName);
                        _db.images.Add(new images()
                        {
                            name       = file.FileName, url = "~/images/" + file.FileName,
                            articlesId = result.Id, usersId = null, isMain = false
                        });
                        _db.SaveChanges();
                    }
                    else
                    {
                        continue;
                    }
                }
            }
        }