// На вход поступает модель с заполненными данными из представления
        // Если все свйоства модели валидны, до добавить модель в БД и редирект на начальную страницу
        // Иначе вернуть снова представление - форму
        public async Task <ActionResult> AddSubCatalog(SubCatalogModel subCatalogModel)
        {
            if (ModelState.IsValid)
            {
                await catalog.AddSubCatalog(subCatalogModel);

                return(RedirectToAction("Index", "Home"));
            }
            return(View(subCatalogModel));
        }
        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();
                }
            }
        }
        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();
                }
            }
        }