Esempio n. 1
0
        public ContentModel ContentCreate(ContentModel newArticle)
        {
            var table = _tableClient.GetTableReference("Content");
            table.CreateIfNotExists();

            var con = new Content(newArticle.Type);
            var tableOperation = TableOperation.Insert(con);
            table.Execute(tableOperation);

            foreach (var locale in newArticle.Locales)
            {
                var loc = new ContentLocale(locale.Locale)
                              {
                                  ContentId = con.RowKey,
                                  Name = locale.Name,
                                  Author = locale.Author,
                                  IsDraft = locale.IsDraft,
                                  Text = locale.Text
                              };
                if (locale.Tags.Any())
                    loc.Tags = locale.Tags.Aggregate((workingSentence, next) => workingSentence + ";" + next);
                ContentLocaleCreate(loc);
            }
            newArticle.Id = con.RowKey;
            newArticle.Date = DateTime.ParseExact(con.RowKey, "yyyyMMddHHmmssffff",
                                                              System.Globalization.CultureInfo.InvariantCulture);
            return newArticle;
        }
Esempio n. 2
0
        public bool ContentDelete(ContentModel deleteArticle)
        {
            var table = _tableClient.GetTableReference("Content");
            var query = new TableQuery<Content>().Where(TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, deleteArticle.Id));
            foreach (var element in table.ExecuteQuery(query))
            {
                var locTable = _tableClient.GetTableReference("ContentLocale");
                var locQuery =
                    new TableQuery<ContentLocale>().Where(TableQuery.GenerateFilterCondition("ContentId", QueryComparisons.Equal,
                                                                                             element.RowKey));

                foreach (var loc in locTable.ExecuteQuery(locQuery))
                {
                    var locOp = TableOperation.Delete(loc);
                    locTable.Execute(locOp);
                }

                var tableOperation = TableOperation.Delete(element);
                table.Execute(tableOperation);
            }

            return true;
        }
Esempio n. 3
0
        // Update PUT api/edit/
        public ContentModel Put(ContentModel content)
        {
            var c = _dataHelper.ContentGet(content.Id);

            return (c != null && _dataHelper.ContentUpdate(content)) ? content : null;
        }
Esempio n. 4
0
 // Create POST api/edit
 public ContentModel Post(ContentModel content)
 {
     return _dataHelper.ContentCreate(content);
 }
Esempio n. 5
0
        private List<ContentModel> FillContentModel(IEnumerable<Content> contents)
        {
            var contList = new List<ContentModel>();

            foreach (var c in contents)
            {
                var content = new ContentModel
                                  {
                                      Id = c.RowKey,
                                      Date =
                                          DateTime.ParseExact(c.RowKey, "yyyyMMddHHmmssffff",
                                                              System.Globalization.CultureInfo.InvariantCulture),
                                      Type = (ContentType) Enum.Parse(typeof (ContentType), c.PartitionKey)
                                  };
                content.Locales.AddRange(ContentLocaleGet(c.RowKey));
                contList.Add(content);
            }

            return contList;
        }
Esempio n. 6
0
        public bool ContentUpdate(ContentModel updateArticle)
        {
            var table = _tableClient.GetTableReference("Content");
            var query = new TableQuery<Content>().Where(TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, updateArticle.Id));
            var res = table.ExecuteQuery(query).First();
            var locTable = _tableClient.GetTableReference("ContentLocale");
            var locQuery =
                    new TableQuery<ContentLocale>().Where(TableQuery.GenerateFilterCondition("ContentId", QueryComparisons.Equal,
                                                                                             res.RowKey));
            var locRes = locTable.ExecuteQuery(locQuery).ToList();
            foreach (var loc in locRes.Where(l=>!updateArticle.Locales.Exists(ul=>Enum.GetName(typeof(Locale), ul.Locale).Equals(l.PartitionKey))))
            {
                var tableOperation = TableOperation.Delete(loc);
                table.Execute(tableOperation);
            }

            foreach (var locale in updateArticle.Locales)
            {
                var locStr = Enum.GetName(typeof (Locale), locale.Locale);
                var con = new ContentLocale(locale.Locale)
                              {
                                  PartitionKey = locStr,
                                  ContentId = res.RowKey,
                                  Name = locale.Name,
                                  Author = locale.Author,
                                  IsDraft = locale.IsDraft,
                                  Text = locale.Text,
                                  Tags = locale.Tags.Any()
                                             ? locale.Tags.Aggregate((workingSentence, next) => workingSentence + ";" + next)
                                             : null
                              };
                if (locRes.Any(l => l.PartitionKey.Equals(locStr)))
                    con.RowKey = locRes.Single(l => l.PartitionKey.Equals(locStr)).RowKey;

                var tableOperation = TableOperation.InsertOrReplace(con);
                locTable.Execute(tableOperation);
            }

            return true;
        }