public IActionResult Create(Page pageRecord, [FromServices] MongoDbBaseRepository <UrlRecord> urlRecordRepository)
        {
            //需要判断一下url
            if (!string.IsNullOrEmpty(pageRecord.Url))
            {
                pageRecord.Url = pageRecord.Url.ToLower();
            }


            var filters = Builders <UrlRecord> .Filter.Where(x => x.Type == UrlRecordType.Page && x.Slug == pageRecord.Url);

            var urlRecord = urlRecordRepository.SigleOrDefault(filters).Result;

            if (urlRecord != null)
            {
                throw new Exception($"URL:{pageRecord.Url} already exists");
            }
            //新的UrlRecord不存在,插入新的UrlRecord
            urlRecordRepository.Insert(new UrlRecord()
            {
                Slug     = pageRecord.Url,
                Type     = UrlRecordType.Page,
                RefValue = pageRecord.Id.ToString()
            });
            _pageRepository.Insert(pageRecord);

            return(Ok(new WebResponseModel()));
        }
        public IActionResult Edit(Page page, [FromServices] MongoDbBaseRepository <UrlRecord> urlRecordRepository)
        {
            if (page.Url != null)
            {
                page.Url = page.Url.ToLower();
            }

            var oldPage = _pageRepository.GetByIdAsync(page.Id).Result;
            var filters = Builders <UrlRecord> .Filter.Where(x => x.Type == UrlRecordType.Page && x.RefValue == oldPage.Id.ToString());

            var existsUrlRecord = urlRecordRepository.SigleOrDefault(filters).Result;

            if (existsUrlRecord == null)
            {
                //之前不存在,补充进去
                //for fix some page not set urlrecords issue
                var newUrlRecord = new UrlRecord()
                {
                    Slug     = page.Url,
                    Type     = UrlRecordType.Page,
                    RefValue = page.Id.ToString()
                };
                urlRecordRepository.Insert(newUrlRecord);
            }
            else if (page.Url != existsUrlRecord.Slug)
            {
                //旧页面的Url已存在,但是URL不相同,意味着在新页面编辑的时候更新了URL

                //旧的URL做301处理
                //keep old url, set old url redirect path
                existsUrlRecord.Type     = UrlRecordType.RedirectPermanent;
                existsUrlRecord.RefValue = page.Url;
                urlRecordRepository.Update(existsUrlRecord);

                //并创建新的页面
                //create new url for the new page
                var newUrlRecord = new UrlRecord()
                {
                    Slug     = page.Url,
                    Type     = UrlRecordType.Page,
                    RefValue = page.Id.ToString()
                };
                urlRecordRepository.Insert(newUrlRecord);
            }
            else
            {
                //other no change for url record
            }

            page.ModificationTime = DateTime.UtcNow;
            page.Title            = oldPage.Title;
            _pageRepository.Update(page);
            return(Ok(new WebResponseModel()));
        }
 public UrlRecordServcie(IMemoryCache memoryCache,
                         MongoDbBaseRepository <UrlRecord> urlRecordRepository,
                         MongoDbBaseRepository <Page> pageRepository,
                         MongoDbBaseRepository <Template> templateRepository,
                         MongoDbBaseRepository <Settings> settingsRepository)
 {
     _memoryCache         = memoryCache;
     _urlRecordRepository = urlRecordRepository;
     _pageRepository      = pageRepository;
     _templateRepository  = templateRepository;
     _settingsRepository  = settingsRepository;
 }
 public DynamicContentController(IMemoryCache memoryCache,
                                 MongoDbBaseRepository <UrlRecord> urlRecordRepository,
                                 MongoDbBaseRepository <Page> pageRepository,
                                 MongoDbBaseRepository <Template> templateRepository,
                                 MongoDbBaseRepository <Settings> settingsRepository,
                                 UrlRecordServcie urlRecordServcie)
 {
     _memoryCache         = memoryCache;
     _urlRecordRepository = urlRecordRepository;
     _pageRepository      = pageRepository;
     _templateRepository  = templateRepository;
     _settingsRepository  = settingsRepository;
     _urlRecordServcie    = urlRecordServcie;
 }
예제 #5
0
        public async Task <IActionResult> Index([FromServices] MongoDbBaseRepository <User, Guid> server)
        {
            //var user = new User()
            //{
            //    Id = Guid.NewGuid(),
            //    Name = "simple",
            //    Password = "******",
            //    Address = "重庆江北"
            //};

            //await server.InsertAsync(user);

            var user = await server.GetByIdAsync(new Guid("d06fe44f-d603-4e7b-a4cb-080fd181ab3a"));

            var userList = await server.SearchAsync(Builders <User> .Filter.Empty);

            return(View());
        }
예제 #6
0
        public async Task <IActionResult> Index([FromServices] MongoDbBaseRepository <User, Guid> server)
        {
            //var user = new User()
            //{
            //    Id = Guid.NewGuid(),
            //    Name = "alangur",
            //    Password = "******",
            //    Address = "重庆渝中"
            //};

            //await server.InsertAsync(user);

            var user = await server.GetByIdAsync(new Guid("b787fabf-337d-4bcd-92ec-8571905c87d1"));

            var userList = await server.SearchAsync(Builders <User> .Filter.Empty);

            return(View());
        }
 public CommonController(MongoDbBaseRepository <Page> pageRepository, MongoDbBaseRepository <Template> templateRepository)
 {
     this._pageRepository     = pageRepository;
     this._templateRepository = templateRepository;
 }
 public SettingsController(MongoDbBaseRepository <Settings> settingsRepository)
 {
     this._settingsRepository = settingsRepository;
 }
예제 #9
0
 public WidgetsController(MongoDbBaseRepository <Widget> templateRepository)
 {
     this._widgetRepository = templateRepository;
 }
 public UrlRoutesController(MongoDbBaseRepository <UrlRecord> urlRecordRepository)
 {
     this._urlRecordRepository = urlRecordRepository;
 }
예제 #11
0
 public ResourcesController(MongoDbBaseRepository <Resource> resourceRepository)
 {
     this._resourceRepository = resourceRepository;
 }
예제 #12
0
 public TemplatesController(MongoDbBaseRepository <Template> templateRepository)
 {
     this._templateRepository = templateRepository;
 }
 public ResourceDirectoryController(MongoDbBaseRepository <ResourceDirectory> resourceDirectoryRepository)
 {
     _resourceDirectoryRepository = resourceDirectoryRepository;
 }