Esempio n. 1
0
        public async Task CreateMetaData()
        {
            var m = new MetaData()
            {
                Key    = "keywords",
                SiteId = SITE_ID,
                Value  = "test keyword",
                ItemId = 1,
                Type   = MetaDataTypes.Page
            };

            var result = await _metasService.SaveAsync(m, TEST_USER);

            Assert.NotNull(result);

            Assert.True(result.Succeeded);
            Assert.True(result.NewId > 0);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="page"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task <Result> SaveAsync(Page page, string userName)
        {
            page.Audit(userName);
            bool isNew  = page.IsNew;
            var  result = _validator.Validate(page);

            if (result.IsValid)
            {
                try
                {
                    page.Id = result.NewId = await _pageDataAccess.SaveAsync(page, page.IsNew?DataAccessActions.Insert : DataAccessActions.Update);

                    if (page.Contents != null && page.Contents.Count > 0)
                    {
                        foreach (var c in page.Contents)
                        {
                            // save content
                            c.SiteId = page.SiteId;
                            var res = await _contentService.SaveAsync(c, userName);

                            if (!res.Succeeded)
                            {
                                throw new Exception(res.Errors[0].Message);
                            }

                            c.Id = res.NewId;

                            if (isNew)
                            {
                                var resMapping = await _contentService.MapToPage(c.Id, page.Id);

                                if (!resMapping.Succeeded)
                                {
                                    throw new Exception(resMapping.Errors[0].Message);
                                }
                            }
                        }
                    }


                    // save meta data
                    if (null != page.MetaData && page.MetaData.Count > 0)
                    {
                        foreach (var metaKey in page.MetaData.Keys)
                        {
                            var m = page.MetaData[metaKey];
                            if (m.IsNew)
                            {
                                m.Key       = metaKey;
                                m.ItemId    = page.Id;
                                m.Type      = MetaDataTypes.Page;
                                m.CreatedOn = DateTime.Now;
                                m.CreatedBy = userName;
                                m.SiteId    = page.SiteId;
                            }
                            await _metaService.SaveAsync(m, userName);
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError($"SaveAsync error: {ex.Message}, stack: {ex.StackTrace}");
                    result.Errors.Add(new ErrorItem(ex.Message));
                }
            }

            return(result);
        }