Esempio n. 1
0
 /// <summary>
 /// Конструктор на базе доменного объекта
 /// </summary>
 /// <param name="page">Доменный объект</param>
 public StaticPageJsonModel(StaticPage page)
 {
     Id = page.Id;
     Title = page.Title;
     Route = page.Route;
     Content = page.Content;
     Views = page.Views;
     DateCreated = page.DateCreated;
     DateModified = page.DateModified;
 }
Esempio n. 2
0
        public JsonResult Save([ModelBinder(typeof(JsonModelBinder))] StaticPageJsonModel model)
        {
            try
            {
                // Репозиторий
                var repository = Locator.GetService<IStaticPagesRepository>();

                if (model.Id <= 0)
                {
                    // Создаем новую страничку
                    var page = new StaticPage()
                    {
                        DateCreated = DateTime.Now,
                        Content = model.Content,
                        Route = model.Route,
                        Title = model.Title,
                        Views = 0
                    };
                    repository.Add(page);

                    // Сохраняем изменения
                    repository.SubmitChanges();

                    // Добавляем запись в таблицу роутов
                    var route = RouteTable.Routes.MapRoute("StaticPage" + page.Id, page.Route,
                                               new { controller = "Main", action = "StaticPage", id = page.Id });
                    RouteTable.Routes.Remove(route);
                    RouteTable.Routes.Insert(0, route);

                }
                else
                {
                    // Обновляем существующую
                    var page = repository.Load(model.Id);
                    if (page == null)
                    {
                        throw new ObjectNotFoundException(String.Format("Страница с идентификатором {0} не найдена", model.Id));
                    }

                    // Если роут был изменен то нам требуется его исправить
                    var routeChanged = model.Route != page.Route;
                    var oldRoute = page.Route;

                    page.Content = model.Content;
                    page.Route = model.Route;
                    page.Title = model.Title;
                    page.DateModified = DateTime.Now;

                    // Сохраняем изменения
                    repository.SubmitChanges();

                    // Изменяем роут если надо
                    if (routeChanged)
                    {
                        Route rowItem = (Route)RouteTable.Routes.Cast<Route>().FirstOrDefault(r => r.Url == oldRoute);
                        if (rowItem != null) rowItem.Url = page.Route;
                    }
                }

                return JsonSuccess();
            }
            catch (Exception e)
            {
                return JsonErrors(e);
            }
        }