public IEnumerable <SubCatalog> SubCatalogListWithoutSubs(int catalogId)
        {
            IEnumerable <SubCatalog> result = null;

            using (ISession session = connection.CreateSession())
            {
                // Сделать так, чтобы при выборе подкаталогов для изменения не было дочерних подкаталогов и его самого
                List <int> parentCatalogsId = new List <int>()
                {
                    catalogId
                };
                result = SubCatalogList()
                         .Where(subCatalog =>
                {
                    SubCatalog parentCatalog = subCatalog.ParentCatalog;
                    //  Если родителский Id подкаталога есть в списке,
                    //  то этот подкаталог не подходит (запомнить его) или это он сам (то пропустить)
                    if ((parentCatalog != null && parentCatalogsId.Contains(parentCatalog.Id) == true) ||
                        subCatalog.Id == catalogId)
                    {
                        parentCatalogsId.Add(subCatalog.Id);
                        return(false);
                    }
                    else
                    {
                        return(true);
                    }
                });
            }
            return(result);
        }
        // По входному параметру (идентификатор подкаталога) настроить все необходимые параметры для формирования представления
        // редактирования подкаталога - модель подкаталога, SelectList для выбора нового родительского каталога
        // Вернуть представление с формой для изменения данных
        public ActionResult UpdateSubCatalog(int?idSubCatalog)
        {
            if (idSubCatalog == null)
            {
                return(RedirectToAction("Index", "Error", new { statusCode = 404, msg = "Вы не выбрали подкаталог" }));
            }

            List <SubCatalog> listItems  = catalog.SubCatalogListWithoutSubs((int)idSubCatalog).ToList();
            SubCatalog        subCatalog = catalog.GetOneSubCatalog((int)idSubCatalog);
            int parentId = subCatalog.ParentCatalog == null ? 0 : subCatalog.ParentCatalog.Id;

            listItems.Insert(0, new SubCatalog()
            {
                Name = "Корень"
            });

            SelectList selectList = new SelectList(listItems, "Id", "Name", parentId);

            TempData["items"] = selectList;

            return(View(new SubCatalogModel()
            {
                Id = (int)idSubCatalog, Name = subCatalog.Name, ParentId = parentId
            }));
        }
        public SubCatalog GetOneSubCatalog(int id)
        {
            SubCatalog result = null;

            using (ISession session = connection.CreateSession())
                result = session.Get <SubCatalog>(id);
            return(result);
        }
        public async Task <SubCatalog> GetOneSubCatalogAsync(int id)
        {
            SubCatalog result = null;

            using (ISession session = connection.CreateSession())
                result = await session.GetAsync <SubCatalog>(id);
            return(result);
        }
Пример #5
0
        public static bool DeleteSubCatalog(SubCatalog subCatalog)
        {
            RestRequest request = new RestRequest("admin/sub_catalog/{id}", Method.DELETE);

            request.AddUrlSegment("id", subCatalog.ID);

            request.AddHeader("Authorization", "Bearer " + Token);

            IRestResponse response = _client.Execute(request);

            return(response.StatusCode == System.Net.HttpStatusCode.OK);
        }
Пример #6
0
        public static bool AddSubCatalog(SubCatalog subCatalog)
        {
            RestRequest request = new RestRequest("admin/sub_catalog/", Method.POST);

            request.AddParameter("name", subCatalog.Name);
            request.AddParameter("catalog_id", subCatalog.CatalogID);

            request.AddHeader("Authorization", "Bearer " + Token);

            IRestResponse response = _client.Execute(request);

            return(response.StatusCode == System.Net.HttpStatusCode.Created);
        }
        public async Task DeleteSubCatalog(int catalogId)
        {
            using (ISession session = connection.CreateSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    SubCatalog subCatalog = await GetOneSubCatalogAsync(catalogId);

                    await session.DeleteAsync(subCatalog);

                    await transaction.CommitAsync();
                }
            }
        }
        public static void InitDataDB()
        {
            using (ISession session = new DataBaseConnection().CreateSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    Random random = new Random();
                    #region Главные каталоги
                    for (int i = 1; i < 6; i++)
                    {
                        SubCatalog newCatalog1 = new SubCatalog();
                        newCatalog1.ParentCatalog = null;
                        newCatalog1.Name          = "Каталог №" + i;
                        session.SaveOrUpdate(newCatalog1);
                    }
                    #endregion

                    #region Подкаталоги главных каталогов
                    for (int i = 1; i < 6; i++)
                    {
                        for (int j = 1; j < random.Next(1, 6); j++)
                        {
                            SubCatalog newSubCatalog = new SubCatalog();
                            newSubCatalog.Name          = "Подкаталог №" + i + "." + j;
                            newSubCatalog.ParentCatalog = session.Get <SubCatalog>(i);
                            session.SaveOrUpdate(newSubCatalog);
                        }
                    }
                    #endregion

                    #region Статьи
                    for (int i = 1; i < 40; i++)
                    {
                        Article newArticle = new Article();
                        newArticle.Name       = "Статья №" + i;
                        newArticle.Text       = "Текст статьи №" + i;
                        newArticle.SubCatalog = session.Get <SubCatalog>(random.Next(1, session.QueryOver <SubCatalog>().List().Count + 1));
                        session.SaveOrUpdate(newArticle);
                    }
                    #endregion

                    transaction.Commit();
                }
            }
        }
Пример #9
0
        public ActionResult Create(SubCatalogAdmin subcatalogAdmin)
        {
            if (Session["userId"] != null)
            {
                try
                {
                    if (db.Users.Find(Session["userId"]).Status == Status.admin)
                    {
                        SubCatalog subcatalog  = new SubCatalog();
                        string     sliceOfPath = "/Content/Images/ImageCategory/";
                        if (subcatalogAdmin.File.ContentLength > 0)
                        {
                            string filename = Path.GetFileName(subcatalogAdmin.File.FileName);
                            string filepath = Path.Combine(Server.MapPath("~/Content/Images/ImageCategory"), filename);
                            subcatalogAdmin.File.SaveAs(filepath);
                        }
                        subcatalog.Name      = subcatalogAdmin.Name;
                        subcatalog.ImagePath = sliceOfPath + subcatalogAdmin.File.FileName;
                        subcatalog.CatalogId = subcatalogAdmin.CatalogId;

                        db.SubCatalogs.Add(subcatalog);
                        db.SaveChanges();

                        ViewBag.Products       = db.Products;
                        ViewBag.Catalogs       = db.Catalogs;
                        ViewBag.SubCatalogs    = db.SubCatalogs;
                        ViewBag.SubSubCatalogs = db.SubSubCatalogs;
                        return(View("~/Areas/Admin/Views/Home/Admin.cshtml"));
                    }
                    return(HttpNotFound());
                }
                catch (Exception)
                {
                    ViewBag.Products       = db.Products;
                    ViewBag.Catalogs       = db.Catalogs;
                    ViewBag.SubCatalogs    = db.SubCatalogs;
                    ViewBag.SubSubCatalogs = db.SubSubCatalogs;
                    return(View("~/Areas/Admin/Views/Home/Admin.cshtml"));
                }
            }
            return(HttpNotFound());
        }
        public async Task AddSubCatalog(SubCatalogModel catalogModel)
        {
            using (ISession session = connection.CreateSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    SubCatalog catalog = new SubCatalog()
                    {
                        Name = catalogModel.Name
                    };
                    if (catalogModel.ParentId != null)
                    {
                        catalog.ParentCatalog = await GetOneSubCatalogAsync((int)catalogModel.ParentId);
                    }
                    await session.SaveOrUpdateAsync(catalog);

                    await transaction.CommitAsync();
                }
            }
        }
Пример #11
0
        private void ExecuteCommand(Func <SubCatalog, bool> apiMethod, object obj)
        {
            if (obj != null)
            {
                SubCatalog subCatalog = obj as SubCatalog;
                bool       response   = apiMethod(subCatalog);

                SubCatalogs?.Clear();
                MarketAPI.GetSubCatalog(out List <SubCatalog> subCatalogs, out bool result);

                if (result && subCatalogs != null)
                {
                    subCatalogs.ForEach(x => SubCatalogs.Add(x));
                }

                MessageBox.Show
                (
                    response ?
                    MarketAPI.SuccessMessage : MarketAPI.FailMessage
                );
            }
        }
        public async Task UpdateSubCatalog(SubCatalogModel catalogModel)
        {
            using (ISession session = connection.CreateSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    SubCatalog subCatalog = await GetOneSubCatalogAsync(catalogModel.Id);

                    SubCatalog parentSubCatalog = null;
                    if (catalogModel.ParentId != null)
                    {
                        parentSubCatalog = await GetOneSubCatalogAsync((int)catalogModel.ParentId);
                    }
                    subCatalog.Name          = catalogModel.Name;
                    subCatalog.ParentCatalog = parentSubCatalog;

                    await session.SaveOrUpdateAsync(subCatalog);

                    await transaction.CommitAsync();
                }
            }
        }