Example #1
0
        public bool UpdateContent(ContentEntity content)
        {
            AmazonDynamoDBConfig clientConfig = new AmazonDynamoDBConfig();

            clientConfig.RegionEndpoint = RegionEndpoint.USEast1;

            AmazonDynamoDBClient client = new AmazonDynamoDBClient(clientConfig);

            Dictionary <string, AttributeValue> item = new Dictionary <string, AttributeValue>();

            item["ContentKey"] = new AttributeValue()
            {
                S = content.ContentKey
            };
            item["Content"] = new AttributeValue()
            {
                S = "<p>" + content.ContentHtml + "</p>"
            };

            PutItemRequest request = new PutItemRequest()
            {
                TableName = TABLE_NAME,
                Item      = item
            };

            try
            {
                var response = client.PutItemAsync(request);
                return(response.Result.HttpStatusCode == HttpStatusCode.OK);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Example #2
0
        //äæ®ę”¹å„½ ęœŖ굋čƕ
        /// <summary>
        /// ęŸ„čÆ¢tb内容čæ”回集合
        /// </summary>
        /// <param name="rows"></param>
        /// <param name="startIndex"></param>
        /// <returns></returns>
        public List <ContentEntity> SelectLocalContentList(string rows = "50", string startIndex = "0")
        {
            List <ContentEntity> listContentEntity = new List <ContentEntity>();

            //ISQLConnection iSQLConnection = new SQLiteConn();
            //string sql = @"SELECT id,title,url,uname,uid,replies,createcode,createtime,updatetime FROM tbtitlelist ORDER BY id AND visiable=1 LIMIT " + rows + " OFFSET " + startIndex + "";
            string        sql  = @"SELECT id,content,titlecreatetime,replytime,floor,replynum,pagenum,createcode,createtime,updatetime FROM tbcontext WHERE visiable=1  LIMIT" + rows + " OFFSET " + startIndex + "";
            var           conn = SQLiteConn.GetSQLiteConn();//iSQLConnection.GetSQLiteConn();
            SQLiteCommand cmd  = new SQLiteCommand(sql, conn);

            conn.Open();
            Monitor.Enter(obj);
            SQLiteDataReader dataReader = cmd.ExecuteReader();

            while (dataReader.Read())
            {
                ContentEntity contentEntity = new ContentEntity();
                contentEntity.Id              = (int)dataReader["id"];
                contentEntity.Content         = dataReader["content"].ToString();
                contentEntity.TitleCreateTime = dataReader["titlecreatetime"].ToString();
                contentEntity.ReplyTime       = dataReader["replytime"].ToString();
                contentEntity.Floor           = dataReader["floor"].ToString();
                contentEntity.ReplyNum        = dataReader["replynum"].ToString();
                contentEntity.PageNum         = dataReader["pagenum"].ToString();
                contentEntity.CreateCode      = (int)dataReader["createcode"];
                contentEntity.CreateTime      = dataReader["createtime"].ToString();
                contentEntity.UpdateTime      = dataReader["updatetime"].ToString();
                listContentEntity.Add(contentEntity);
            }
            Monitor.Exit(obj);
            dataReader.Close();
            conn.Close();
            conn.Dispose();
            return(listContentEntity);
        }
Example #3
0
        /// <summary>
        /// Creates or updates a publish content entity.
        /// </summary>
        /// <param name="content">The publish content entity to save.</param>
        /// <param name="message">The commit message.</param>
        /// <param name="cancellationToken">The optional token to monitor for cancellation requests.</param>
        /// <returns>The change method.</returns>
        public Task <ChangeMethods> SaveAsync(ContentEntity content, string message, CancellationToken cancellationToken = default)
        {
            var rev = content?.CreateRevision(message);

            _ = SaveAsync(contentRevisions, rev, cancellationToken);
            return(SaveAsync(contents, content, cancellationToken));
        }
Example #4
0
        public int DownVoteContent(ContentEntity content, UserEntity user)
        {
            var temp = contentRepository.DownVote(content.ToDalContent(), user.ToDalUser());

            uow.Commit();
            return(temp);
        }
        private async Task Execute <T>(Func <Task <T> > build, string contentType) where T : IEquatable <T>
        {
            _ContentDb ??= _ContentDbProvider();

            await using var tx = _ContentDb.BeginTransaction();
            var candidate = await build();

            if (await ShouldLeaveCurrentManifestAsync(candidate, contentType))
            {
                _Logger.WriteUpdateNotRequired();
                return;
            }

            _Logger.WriteStart();

            var snapshot      = _DateTimeProvider.Snapshot;
            var contentEntity = new ContentEntity
            {
                Created = snapshot,
                Release = snapshot,
                Type    = contentType
            };

            await _Formatter().FillAsync(contentEntity, candidate);

            _ContentDb.Add(contentEntity);

            _ContentDb.SaveAndCommit();

            _Logger.WriteFinished();
        }
Example #6
0
        /// <summary>
        /// Read one content entity
        /// </summary>
        /// <returns></returns>
        public List <ContentEntity> ReadAllContentEntity()
        {
            List <ContentEntity> listContentEntity = new List <ContentEntity>();
            string strSql = "SELECT *  FROM tb_ListContent ORDER BY fld_CreateDate";

            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = GetConnectString();
                conn.Open();
                try
                {
                    SqlCommand cmd = new SqlCommand(strSql);
                    cmd.Connection = conn;
                    SqlDataReader dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        ContentEntity entity = new ContentEntity();
                        entity.fld_ID         = dr["fld_ID"].ToString();
                        entity.fld_Content    = dr["fld_Content"].ToString();
                        entity.fld_status     = bool.Parse(dr["fld_status"].ToString());
                        entity.fld_CreateDate = DateTime.Parse(dr["fld_CreateDate"].ToString());
                        listContentEntity.Add(entity);
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            return(listContentEntity);
        }
Example #7
0
        private ContentEntity ConvertDocumentToContentEntity(Document doc)
        {
            ContentEntity content = new ContentEntity();

            foreach (var attribute in doc.GetAttributeNames())
            {
                switch (attribute)
                {
                case "ContentKey":
                    content.ContentKey = doc[attribute].AsString();
                    break;

                case "Content":
                    content.ContentHtml = doc[attribute].AsString();
                    break;

                case "Filename":
                    content.Filename = doc[attribute].AsString();
                    break;

                default:
                    break;
                }
            }
            return(content);
        }
Example #8
0
        public ContentEntity GetByID(int _contentEntityId)
        {
            ContentEntityDAC _contentEntityComponent = new ContentEntityDAC();
            IDataReader      reader         = _contentEntityComponent.GetByIDContentEntity(_contentEntityId);
            ContentEntity    _contentEntity = null;

            while (reader.Read())
            {
                _contentEntity = new ContentEntity();
                if (reader["ContentEntityId"] != DBNull.Value)
                {
                    _contentEntity.ContentEntityId = Convert.ToInt32(reader["ContentEntityId"]);
                }
                if (reader["ContentEntityType"] != DBNull.Value)
                {
                    _contentEntity.ContentEntityType = Convert.ToString(reader["ContentEntityType"]);
                }
                if (reader["RowGuid"] != DBNull.Value)
                {
                    _contentEntity.RowGuid = new Guid(reader["RowGuid"].ToString());
                }
                if (reader["ModifiedDate"] != DBNull.Value)
                {
                    _contentEntity.ModifiedDate = Convert.ToDateTime(reader["ModifiedDate"]);
                }
                _contentEntity.NewRecord = false;
            }
            reader.Close();
            return(_contentEntity);
        }
Example #9
0
        public async Task Should_call_script_engine_with_data()
        {
            var ctx = new Context(Mocks.ApiUser(), Mocks.App(appId));

            var oldData = new NamedContentData();

            var content = new ContentEntity {
                SchemaId = schemaWithScriptId, Data = oldData
            };

            A.CallTo(() => scriptEngine.TransformAsync(A <ScriptVars> ._, "my-query"))
            .Returns(new NamedContentData());

            await sut.EnrichAsync(ctx, new[] { content }, schemaProvider);

            Assert.NotSame(oldData, content.Data);

            A.CallTo(() => scriptEngine.TransformAsync(
                         A <ScriptVars> .That.Matches(x =>
                                                      ReferenceEquals(x.User, ctx.User) &&
                                                      ReferenceEquals(x.Data, oldData) &&
                                                      x.ContentId == content.Id),
                         "my-query"))
            .MustHaveHappened();
        }
Example #10
0
        public async Task Should_call_script_engine_with_data()
        {
            var ctx = new Context(Mocks.ApiUser(), Mocks.App(appId));

            var oldData = new ContentData();

            var(provider, schemaId) = CreateSchema(
                query: "my-query");

            var content = new ContentEntity {
                Data = oldData, SchemaId = schemaId
            };

            A.CallTo(() => scriptEngine.TransformAsync(A <ScriptVars> ._, "my-query", ScriptOptions(), A <CancellationToken> ._))
            .Returns(new ContentData());

            await sut.EnrichAsync(ctx, new[] { content }, provider, default);

            Assert.NotSame(oldData, content.Data);

            A.CallTo(() => scriptEngine.TransformAsync(
                         A <ScriptVars> .That.Matches(x =>
                                                      Equals(x["user"], ctx.User) &&
                                                      Equals(x["data"], oldData) &&
                                                      Equals(x["contentId"], content.Id)),
                         "my-query",
                         ScriptOptions(), A <CancellationToken> ._))
            .MustHaveHappened();
        }
Example #11
0
        public async Task Should_make_test_with_pre_query_script()
        {
            var ctx = new Context(Mocks.ApiUser(), Mocks.App(appId));

            var(provider, id) = CreateSchema(
                query: @"
                    ctx.data.test = { iv: ctx.custom };
                    replace()",
                queryPre: "ctx.custom = 123;");

            var content = new ContentEntity {
                Data = new ContentData(), SchemaId = id
            };

            var realScriptEngine =
                new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())),
                                     Options.Create(new JintScriptOptions
            {
                TimeoutScript    = TimeSpan.FromSeconds(20),
                TimeoutExecution = TimeSpan.FromSeconds(100)
            }));

            var sut2 = new ScriptContent(realScriptEngine);

            await sut2.EnrichAsync(ctx, new[] { content }, provider, default);

            Assert.Equal(JsonValue.Create(123), content.Data["test"] !["iv"]);
Example #12
0
        public async Task Execute()
        {
            if (_ContentDb != null)
            {
                throw new InvalidOperationException("Command already used.");
            }

            _ContentDb         = _ContentDbProvider();
            await using var tx = _ContentDb.BeginTransaction();
            var candidate = await _Builder.Execute();

            if (!await WriteCandidate(candidate))
            {
                _Logger.LogInformation("Manifest does NOT require updating.");
                return;
            }

            _Logger.LogInformation("Manifest updating.");

            var snapshot = _DateTimeProvider.Snapshot;
            var e        = new ContentEntity
            {
                Created = snapshot,
                Release = snapshot,
                Type    = ContentTypes.Manifest
            };
            await _Formatter.Fill(e, candidate);

            _Result.Updated = true;

            _ContentDb.Add(e);
            _ContentDb.SaveAndCommit();

            _Logger.LogInformation("Manifest updated.");
        }
Example #13
0
        private void BatchInsertContent(Guid accountId, Guid contentId, string newFullData, TableBatchOperation batch)
        {
            var standaloneContent = new ContentEntity(accountId.ToString(), contentId.ToString());

            standaloneContent.Data = newFullData;
            batch.InsertOrReplace(standaloneContent);
        }
Example #14
0
        public async Task Should_enrich_multiple_contents_and_cache_color()
        {
            var source1 = new ContentEntity {
                Status = Status.Published, SchemaId = schemaId
            };
            var source2 = new ContentEntity {
                Status = Status.Published, SchemaId = schemaId
            };

            var source = new IContentEntity[]
            {
                source1,
                source2
            };

            A.CallTo(() => contentWorkflow.GetInfoAsync(source1))
            .Returns(new StatusInfo(Status.Published, StatusColors.Published));

            var result = await sut.EnrichAsync(source, requestContext);

            Assert.Equal(StatusColors.Published, result[0].StatusColor);
            Assert.Equal(StatusColors.Published, result[1].StatusColor);

            A.CallTo(() => contentWorkflow.GetInfoAsync(A <IContentEntity> .Ignored))
            .MustHaveHappenedOnceExactly();
        }
Example #15
0
        public void ResignManifest()
        {
            var lf             = new LoggerFactory();
            var resignerLogger = new ResignerLoggingExtensions(lf.CreateLogger <ResignerLoggingExtensions>());

            var d = DateTime.Now;

            using var testContentStream = ResourcesHook.GetManifestResourceStream("Resources.ResignTestManifest.zip");

            using var m = new MemoryStream();
            testContentStream.CopyTo(m);
            var zipContent = m.ToArray();

            var m1 = new ContentEntity {
                Content = zipContent, PublishingId = "1", ContentTypeName = "Meh", Type = ContentTypes.Manifest, Created = d, Release = d
            };

            var dbc = _contentDbProvider.CreateNew();

            dbc.Content.AddRange(new[] {
                m1,
                new ContentEntity {
                    Content = new byte[0], PublishingId = "2", ContentTypeName = "Meh", Type = ContentTypes.AppConfig, Created = d, Release = d
                },
                new ContentEntity {
                    Content = new byte[0], PublishingId = "3", ContentTypeName = "Meh", Type = ContentTypes.AppConfigV2, Created = d, Release = d
                },
                new ContentEntity {
                    Content = new byte[0], PublishingId = "4", ContentTypeName = "Meh", Type = ContentTypes.ExposureKeySet, Created = d, Release = d
                },
                new ContentEntity {
                    Content = new byte[0], PublishingId = "5", ContentTypeName = "Meh", Type = ContentTypes.ExposureKeySetV2, Created = d, Release = d
                },
            });

            dbc.SaveChanges();

            var resigner = new NlContentResignCommand(_contentDbProvider.CreateNew, TestSignerHelpers.CreateCmsSignerEnhanced(lf), resignerLogger);

            resigner.ExecuteAsync(ContentTypes.Manifest, ContentTypes.ManifestV2, ZippedContentEntryNames.Content).GetAwaiter().GetResult();

            //check the numbers
            Assert.Equal(6, dbc.Content.Count());

            var m2 = dbc.Content.Single(x => x.PublishingId == "1" && x.Type == ContentTypes.ManifestV2);

            Assert.Equal(m1.Created, m2.Created);
            Assert.Equal(m1.Release, m2.Release);

            var ms1 = new MemoryStream(zipContent);

            using var zip1 = new ZipArchive(ms1);

            var ms2 = new MemoryStream(m2.Content);

            using var zip2 = new ZipArchive(ms2);

            Assert.True(Enumerable.SequenceEqual(zip1.ReadEntry(ZippedContentEntryNames.Content), zip2.ReadEntry(ZippedContentEntryNames.Content)));
            Assert.NotEqual(zip1.GetEntry(ZippedContentEntryNames.NlSignature), zip2.GetEntry(ZippedContentEntryNames.NlSignature));
        }
Example #16
0
        public ContentEntity GetContentByReq(RequestModel requestModel)
        {
            ContentEntity contentEntity = service.IQueryable(m => m.WebSiteId == requestModel.webSite.Id &&
                                                             (m.UrlAddress == requestModel.UrlRaw || m.UrlAddress == requestModel.UrlRaw.Replace(@"/", @"\"))).FirstOrDefault();

            return(contentEntity);
        }
Example #17
0
        protected static IEnrichedContentEntity CreateRefContent(NamedId <Guid> schemaId, Guid id, string field, string value)
        {
            var now = SystemClock.Instance.GetCurrentInstant();

            var data =
                new NamedContentData()
                .AddField(field,
                          new ContentFieldData()
                          .AddValue("iv", value));

            var content = new ContentEntity
            {
                Id             = id,
                Version        = 1,
                Created        = now,
                CreatedBy      = new RefToken(RefTokenType.Subject, "user1"),
                LastModified   = now,
                LastModifiedBy = new RefToken(RefTokenType.Subject, "user2"),
                Data           = data,
                SchemaId       = schemaId,
                Status         = Status.Draft,
                StatusColor    = "red"
            };

            return(content);
        }
Example #18
0
    static string ReplaceEmbeddedImages(string htmlBody, AttachmentCollection attachments)
    {
        var srcPattern =
            "(?<=<img.+?src=[\"'])" +
            "(.+?)" +
            "(?=[\"'].*?>)";

        // Iterate through "src" attributes from HTML images in reverse order.
        foreach (var match in Regex.Matches(htmlBody, srcPattern, RegexOptions.IgnoreCase).Cast <Match>().Reverse())
        {
            var        imageId    = match.Value.Replace("cid:", "");
            Attachment attachment = attachments.FirstOrDefault(a => a.ContentId == imageId);

            if (attachment != null)
            {
                // Create inlined image data. E.g. "data:image/png;base64,AABBCC..."
                ContentEntity entity        = attachment.MimeEntity;
                var           embeddedImage = entity.Charset.GetString(entity.Content);
                var           embeddedSrc   = $"data:{entity.ContentType};{entity.TransferEncoding},{embeddedImage}";

                // Replace "src" attribute with inlined image.
                htmlBody = $"{htmlBody.Substring(0, match.Index)}{embeddedSrc}{htmlBody.Substring(match.Index + match.Length)}";
            }
        }

        return(htmlBody);
    }
Example #19
0
        protected static IContentEntity CreateContent(Guid id, Guid refId, Guid assetId, NamedContentData data = null, NamedContentData dataDraft = null)
        {
            var now = SystemClock.Instance.GetCurrentInstant();

            data = data ??
                   new NamedContentData()
                   .AddField("my-string",
                             new ContentFieldData()
                             .AddValue("de", "value"))
                   .AddField("my-assets",
                             new ContentFieldData()
                             .AddValue("iv", JsonValue.Array(assetId.ToString())))
                   .AddField("my-number",
                             new ContentFieldData()
                             .AddValue("iv", 1.0))
                   .AddField("my-boolean",
                             new ContentFieldData()
                             .AddValue("iv", true))
                   .AddField("my-datetime",
                             new ContentFieldData()
                             .AddValue("iv", now))
                   .AddField("my-tags",
                             new ContentFieldData()
                             .AddValue("iv", JsonValue.Array("tag1", "tag2")))
                   .AddField("my-references",
                             new ContentFieldData()
                             .AddValue("iv", JsonValue.Array(refId.ToString())))
                   .AddField("my-geolocation",
                             new ContentFieldData()
                             .AddValue("iv", JsonValue.Object().Add("latitude", 10).Add("longitude", 20)))
                   .AddField("my-json",
                             new ContentFieldData()
                             .AddValue("iv", JsonValue.Object().Add("value", 1)))
                   .AddField("my-localized",
                             new ContentFieldData()
                             .AddValue("de-DE", "de-DE"))
                   .AddField("my-array",
                             new ContentFieldData()
                             .AddValue("iv", JsonValue.Array(
                                           JsonValue.Object()
                                           .Add("nested-boolean", true)
                                           .Add("nested-number", 1),
                                           JsonValue.Object()
                                           .Add("nested-boolean", false)
                                           .Add("nested-number", 2))));

            var content = new ContentEntity
            {
                Id             = id,
                Version        = 1,
                Created        = now,
                CreatedBy      = new RefToken(RefTokenType.Subject, "user1"),
                LastModified   = now,
                LastModifiedBy = new RefToken(RefTokenType.Subject, "user2"),
                Data           = data,
                DataDraft      = dataDraft
            };

            return(content);
        }
Example #20
0
        /// <summary>
        /// Read one content entity
        /// </summary>
        /// <param name="fld_ID"></param>
        /// <returns></returns>
        public ContentEntity ReadEntity(string fld_ID)
        {
            ContentEntity entity = null;
            string        strSql = "SELECT Top 1 *  FROM tb_ListContent WHERE fld_ID=@fld_ID ";

            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = GetConnectString();
                conn.Open();
                try
                {
                    SqlCommand   cmd       = new SqlCommand(strSql);
                    SqlParameter parameter = new SqlParameter();
                    cmd.Connection = conn;
                    cmd.Parameters.Add(new SqlParameter("@fld_ID", Convert.ToInt32(fld_ID)));
                    SqlDataReader dr = cmd.ExecuteReader();
                    if (dr.Read())
                    {
                        entity                = new ContentEntity();
                        entity.fld_ID         = dr["fld_ID"].ToString();
                        entity.fld_Content    = dr["fld_Content"].ToString();
                        entity.fld_CreateDate = DateTime.Parse(dr["fld_CreateDate"].ToString());
                        entity.fld_status     = bool.Parse(dr["fld_status"].ToString());
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            return(entity);
        }
Example #21
0
        public List <ContentEntity> GetAll()
        {
            ContentEntityDAC     _contentEntityComponent = new ContentEntityDAC();
            IDataReader          reader             = _contentEntityComponent.GetAllContentEntity().CreateDataReader();
            List <ContentEntity> _contentEntityList = new List <ContentEntity>();

            while (reader.Read())
            {
                if (_contentEntityList == null)
                {
                    _contentEntityList = new List <ContentEntity>();
                }
                ContentEntity _contentEntity = new ContentEntity();
                if (reader["ContentEntityId"] != DBNull.Value)
                {
                    _contentEntity.ContentEntityId = Convert.ToInt32(reader["ContentEntityId"]);
                }
                if (reader["ContentEntityType"] != DBNull.Value)
                {
                    _contentEntity.ContentEntityType = Convert.ToString(reader["ContentEntityType"]);
                }
                if (reader["RowGuid"] != DBNull.Value)
                {
                    _contentEntity.RowGuid = new Guid(reader["RowGuid"].ToString());
                }
                if (reader["ModifiedDate"] != DBNull.Value)
                {
                    _contentEntity.ModifiedDate = Convert.ToDateTime(reader["ModifiedDate"]);
                }
                _contentEntity.NewRecord = false;
                _contentEntityList.Add(_contentEntity);
            }
            reader.Close();
            return(_contentEntityList);
        }
Example #22
0
        public bool Post(ContentModel model)
        {
            var entity = new ContentEntity
            {
                Content = model.Content,

                Title = model.Title,

                Adduser = model.Adduser,

                Addtime = model.Addtime,

                Upduser = model.Upduser,

                Updtime = model.Updtime,

                Status = model.Status,

                Praise = model.Praise,

                Unpraise = model.Unpraise,

                Viewcount = model.Viewcount,

//				Tags = model.Tags,

//				Channels = model.Channels,
            };

            if (_ContentService.Create(entity).Id > 0)
            {
                return(true);
            }
            return(false);
        }
Example #23
0
        public static IEnrichedContentEntity CreateRef(NamedId <DomainId> schemaId, DomainId id, string field, string value)
        {
            var now = SystemClock.Instance.GetCurrentInstant();

            var data =
                new ContentData()
                .AddField(field,
                          new ContentFieldData()
                          .AddInvariant(value));

            var content = new ContentEntity
            {
                Id             = id,
                Version        = 1,
                Created        = now,
                CreatedBy      = RefToken.User("user1"),
                LastModified   = now,
                LastModifiedBy = RefToken.User("user2"),
                Data           = data,
                SchemaId       = schemaId,
                Status         = Status.Draft,
                StatusColor    = "red"
            };

            return(content);
        }
Example #24
0
 //[ValidateAntiForgeryToken]
 public ActionResult SubmitForm(ContentEntity moduleEntity, string keyValue)
 {
     try
     {
         List <UpFileDTO> upFileentitys   = new List <UpFileDTO>();
         List <string>    lstRemoveImgIds = new List <string>();
         if (HttpContext.Request["upFileentitys"] != null)
         {
             string strupFiles = HttpContext.Request["upFileentitys"].ToString();
             upFileentitys = JsonConvert.DeserializeObject <List <UpFileDTO> >(strupFiles);
         }
         if (HttpContext.Request["removeImageIds"] != null && !string.IsNullOrEmpty(keyValue))
         {
             string strRemoveImageIds = HttpContext.Request["removeImageIds"].ToString();
             lstRemoveImgIds = JsonConvert.DeserializeObject <List <string> >(strRemoveImageIds);
         }
         moduleEntity.WebSiteId = Base_WebSiteId;
         c_contentApp.SubmitForm(moduleEntity, keyValue, upFileentitys, lstRemoveImgIds);
         return(Success("ę“ä½œęˆåŠŸć€‚"));
     }
     catch (Exception ex)
     {
         return(Error("ę“ä½œå¤±č“„ć€‚" + ex.Message));
     }
 }
Example #25
0
        private async Task ExecuteForVxxx <T>(Func <Task <T> > build, string type) where T : IEquatable <T>
        {
            _ContentDb ??= _ContentDbProvider();

            await using var tx = _ContentDb.BeginTransaction();
            var candidate = await build();

            if (!await ShouldWriteCandidateAsync(candidate, type))
            {
                _Logger.WriteUpdateNotRequired();
                return;
            }

            _Logger.WriteStart();

            var snapshot = _DateTimeProvider.Snapshot;
            var e        = new ContentEntity
            {
                Created = snapshot,
                Release = snapshot,
                Type    = type
            };

            await _FormatterForV3().FillAsync(e, candidate);

            _Result.Updated = true;

            _ContentDb.Add(e);
            _ContentDb.SaveAndCommit();

            _Logger.WriteFinished();
        }
Example #26
0
        protected static IContentEntity CreateContent(Guid id, Guid refId, Guid assetId, NamedContentData data = null)
        {
            var now = DateTime.UtcNow.ToInstant();

            data = data ??
                   new NamedContentData()
                   .AddField("my-string",
                             new ContentFieldData()
                             .AddValue("de", "value"))
                   .AddField("my-assets",
                             new ContentFieldData()
                             .AddValue("iv", JToken.FromObject(new[] { assetId })))
                   .AddField("my-number",
                             new ContentFieldData()
                             .AddValue("iv", 1))
                   .AddField("my-boolean",
                             new ContentFieldData()
                             .AddValue("iv", true))
                   .AddField("my-datetime",
                             new ContentFieldData()
                             .AddValue("iv", now.ToDateTimeUtc()))
                   .AddField("my-tags",
                             new ContentFieldData()
                             .AddValue("iv", JToken.FromObject(new[] { "tag1", "tag2" })))
                   .AddField("my-references",
                             new ContentFieldData()
                             .AddValue("iv", JToken.FromObject(new[] { refId })))
                   .AddField("my-geolocation",
                             new ContentFieldData()
                             .AddValue("iv", JToken.FromObject(new { latitude = 10, longitude = 20 })))
                   .AddField("my-json",
                             new ContentFieldData()
                             .AddValue("iv", JToken.FromObject(new { value = 1 })))
                   .AddField("my-localized",
                             new ContentFieldData()
                             .AddValue("de-DE", "de-DE"))
                   .AddField("my-array",
                             new ContentFieldData()
                             .AddValue("iv", new JArray(
                                           new JObject(
                                               new JProperty("nested-boolean", true),
                                               new JProperty("nested-number", 1)),
                                           new JObject(
                                               new JProperty("nested-boolean", false),
                                               new JProperty("nested-number", 2)))));

            var content = new ContentEntity
            {
                Id             = id,
                Version        = 1,
                Created        = now,
                CreatedBy      = new RefToken(RefTokenType.Subject, "user1"),
                LastModified   = now,
                LastModifiedBy = new RefToken(RefTokenType.Subject, "user2"),
                Data           = data
            };

            return(content);
        }
Example #27
0
        public async Task <IActionResult> SubmitForm(ContentEntity model)
        {
            var userClaim = await workContext.GetCurrentUserClaim();

            Messages messages = contentService.Save(model, userClaim);

            return(Json(messages));
        }
Example #28
0
 private bool UserVoted(UserEntity user, ContentEntity content)
 {
     if (user.VotedPublicationsId == null || !user.VotedPublicationsId.Any())
     {
         return(false);
     }
     return(user.VotedPublicationsId.Contains(content.Id));
 }
 public ContentAggregate()
 {
     _ContentEntityLIst = new List <ContentEntity>();
     _ContentEntity     = new ContentEntity();
     _GenreEntity       = new List <GenreEntity>();
     _PersonEntity      = new List <PersonEntity>();
     _WatchList         = new List <ContentEntity>();
 }
Example #30
0
 public static ContentEntity CreateContentEntity() {
     ContentEntity entity = new ContentEntity();
     entity.Initialize(new ContentEntitySerializationFormat() {
         Data = new List<ContentEntity.DataInstance>(),
         PrettyName = "",
         UniqueId = _idGenerator.Next()
     });
     return entity;
 }
Example #31
0
        public GameSnapshot() {
            EntityIdGenerator = new UniqueIntGenerator();

            GlobalEntity = new ContentEntity(EntityIdGenerator.Next(), "Global Entity");
            ActiveEntities = new List<IEntity>();
            AddedEntities = new List<IEntity>();
            RemovedEntities = new List<IEntity>();
            _systems = new SystemSerializationContainer();
        }
        public void CreateText()
        {
            SetupTutorial();
            SetupSteps();

            var modelMiddleware = TutorialManagerModelMiddleware.GetInstance();
            string expectedStep1TextId = ConstructID(t1Step1LookupID, ContentType.text.ToString());
            string expectedStep2TextId = ConstructID(t1Step2LookupID, ContentType.text.ToString());

            var t1s1 = modelMiddleware.TMData.stepTable[t1Step1LookupID];
            var t1s2 = modelMiddleware.TMData.stepTable[t1Step2LookupID];


            // Add content to s1
            string contentId = modelMiddleware.CreateContentEntity(t1Step1LookupID, ContentType.text, t1step1Text);
            Assert.That(expectedStep1TextId, Is.EqualTo(contentId), string.Format("text content 1 should have id {0}", expectedStep1TextId));


            Assert.AreEqual(1, t1s1.messaging.content.Count, "step 1 should have one content item");
            Assert.IsEmpty(t1s2.messaging.content, "step 2 should still have no steps");
            Assert.AreEqual(1, modelMiddleware.TMData.contentTable.Count, "model should have 1 content item");

            ContentEntity t1S1textFromList = modelMiddleware.TMData.content[0];
            ContentEntity t1S1textFromTable = modelMiddleware.TMData.contentTable[contentId];
            Assert.IsNotNull(t1S1textFromList, "new content item should be in list");
            Assert.IsNotNull(t1S1textFromTable, "new content item should be in table");
            Assert.AreSame(t1S1textFromList, t1S1textFromTable, "the two entities should represent the same content item");

            // Check the content of the object
            Assert.That("text", Is.EqualTo(t1S1textFromTable.type), "text content type should be 'text'");
            Assert.That(t1step1Text, Is.EqualTo(t1S1textFromTable.text), string.Format("text content value should be {0}", t1step1Text));
            Assert.That(expectedStep1TextId, Is.EqualTo(t1S1textFromTable.id), string.Format("text id should be {0}", expectedStep1TextId));

            Assert.That(contentId, Is.EqualTo(t1S1textFromTable.id), string.Format("content id should be {0}", contentId));
            Assert.That(contentId, Is.EqualTo(t1s1.messaging.content[0]), string.Format("content id in step 1 should be {0}", contentId));

            // Add content to s2
            string contentId2 = modelMiddleware.CreateContentEntity(t1Step2LookupID, ContentType.text, t1step2Text);
            Assert.That(expectedStep2TextId, Is.EqualTo(contentId2), string.Format("text content 2 should have id {0}", expectedStep1TextId));

            Assert.AreEqual(1, t1s2.messaging.content.Count, "step 2 should have one content item");
            Assert.AreEqual(1, t1s1.messaging.content.Count, "step 1 should still have 1 step");
            Assert.AreEqual(2, modelMiddleware.TMData.contentTable.Count, "model should have 2 content items");

            ContentEntity t1S2textFromList = modelMiddleware.TMData.content[1];
            ContentEntity t1S2textFromTable = modelMiddleware.TMData.contentTable[contentId2];
            Assert.IsNotNull(t1S2textFromList, "new content item should be in list");
            Assert.IsNotNull(t1S2textFromTable, "new content item should be in table");
            Assert.AreSame(t1S2textFromList, t1S2textFromTable, "the two entities should represent the same content item");

            Assert.That(contentId2, Is.EqualTo(t1S2textFromTable.id), string.Format("content id should be {0}", contentId2));
            Assert.That(contentId2, Is.EqualTo(t1s2.messaging.content[0]), string.Format("content id in step 2 should be {0}", contentId2));

            EnsureUnaffectedSteps();

            PostTestCleanup();
        }
Example #33
0
 public ContentEntity Create(ContentEntity content)
 {
     if (content.UrlToContent.Contains("youtube.com"))
     {
         content.UrlToContent = GetYouTubeID(content.UrlToContent);
     }
     var temp = contentRepository.Create(content.ToDalContent());
     uow.Commit();
     Lucene.LuceneSearch.AddUpdateLuceneIndex(content);
     return temp.ToBllContent();
 }
        /// <summary>
        /// Returns an entity instance for the given entity UniqueId. If an instance for the given
        /// id already exists, then it is returned. Otherwise, either a RuntimeEntity or
        /// ContentEntity is created.
        /// </summary>
        /// <param name="entityId">The id of the entity to get an instance for.</param>
        /// <param name="context">The GameEngineContext, used to determine if we should create a
        /// ContentTemplate or RuntimeTemplate instance.</param>
        public IEntity GetEntityInstance(int entityId, GameEngineContext context) {
            if (CreatedEntities.ContainsKey(entityId)) {
                return CreatedEntities[entityId];
            }

            IEntity entity;
            if (context.GameEngine.IsEmpty) {
                entity = new ContentEntity();
            }
            else {
                entity = new RuntimeEntity();
            }

            CreatedEntities[entityId] = entity;
            return entity;
        }
Example #35
0
        private static void _addToLuceneIndex(ContentEntity content, IndexWriter writer)
        {
            // remove older index entry
            var searchQuery = new TermQuery(new Term("Id", content.Id.ToString()));
            writer.DeleteDocuments(searchQuery);

            // add new index entry
            var doc = new Document();
            bool commentsAreEmpty = content.Comments == null || !content.Comments.Any();
            // add lucene fields mapped to db fields
            doc.Add(new Field("Id", content.Id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field("Name", content.Name, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("Description", content.Description, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("Text", commentsAreEmpty ? string.Empty : content.Comments.Select(x => x.Text).Aggregate((x, y) => (x + y)), Field.Store.YES, Field.Index.ANALYZED));

            // add entry to index
            writer.AddDocument(doc);
        }
Example #36
0
 public void Update(ContentEntity content)
 {
     contentRepository.Update(content.ToDalContent());
     uow.Commit();
     Lucene.LuceneSearch.AddUpdateLuceneIndex(content);
 }
Example #37
0
 public IEntity CreateEntity(string prettyName = "") {
     ContentEntity added = new ContentEntity(EntityIdGenerator.Next(), prettyName);
     AddedEntities.Add(added);
     return added;
 }
Example #38
0
        /// <summary>
        /// Helper for tests to create snapshots with entities within more collections than just
        /// AddedEntities.
        /// </summary>
        internal IEntity CreateEntity(EntityAddTarget target, string prettyName = "") {
            ContentEntity added = new ContentEntity(EntityIdGenerator.Next(), prettyName);

            if (target == EntityAddTarget.Added) {
                AddedEntities.Add(added);
            }
            else if (target == EntityAddTarget.Active) {
                ActiveEntities.Add(added);
            }
            else {
                RemovedEntities.Add(added);
            }

            return added;
        }
Example #39
0
 public static void AddUpdateLuceneIndex(ContentEntity content)
 {
     AddUpdateLuceneIndex(new List<ContentEntity> { content });
 }
Example #40
0
 public void Delete(ContentEntity content)
 {
     contentRepository.Delete(content.ToDalContent());
     uow.Commit();
     Lucene.LuceneSearch.ClearLuceneIndexRecord(content.Id);
 }
Example #41
0
 public bool UserVoted(string username, ContentEntity content)
 {
     var user = userRepository.GetByName(username).ToBllUser();
     return UserVoted(user, content);
 }
Example #42
0
 public int DownVoteContent(ContentEntity content, UserEntity user)
 {
     var temp = contentRepository.DownVote(content.ToDalContent(), user.ToDalUser());
     uow.Commit();
     return temp;
 }
Example #43
0
 private bool UserVoted(UserEntity user, ContentEntity content)
 {
     if (user.VotedPublicationsId == null || !user.VotedPublicationsId.Any())
         return false;
     return user.VotedPublicationsId.Contains(content.Id);
 }