예제 #1
0
 public async Task <bool> AddEntityAsync(SiteTag t)
 {
     return(await Task.Run(() =>
     {
         return _repository.Add(t);
     }));
 }
예제 #2
0
        public async Task <ActionResult> AddSiteTagAsync(SiteTag prama)
        {
            int Code;

            prama.SitetagCreateTime = DateTime.Now;
            prama.IsShow            = 0;
            prama.SitetagLikes      = 0;
            prama.SitetagTitle      = System.Web.HttpUtility.HtmlEncode(prama.SitetagTitle);
            Code = await siteTagService.AddEntityAsync(prama) ? 200 : 500;

            return(Ok(new { code = Code }));
        }
예제 #3
0
    /// <summary>
    /// Constructor
    /// </summary>
    /// <param name="userNode"></param>
    public SiteTagsSet(XmlNode tagsNode, string xmlNamespace)
    {
        if (tagsNode.Name.ToLower() != "tags")
        {
            throw new Exception("Unexpected content - not tags");
        }

        //Build a set of tags
        var tags = new List <SiteTag>();
        //Get the project tags
        var tagsSet = tagsNode.SelectNodes("tag", xmlNamespace);

        foreach (var tagNode in tagsSet)
        {
            var newTag = new SiteTag((XmlNode)tagNode);
            tags.Add(newTag);
        }
        this.tags = tags.AsReadOnly();
    }
예제 #4
0
    /// <summary>
    /// Constructor
    /// </summary>
    /// <param name="userNode"></param>
    public SiteTagsSet(XmlNode tagsNode)
    {
        if (tagsNode.Name.ToLower() != "tags")
        {
            AppDiagnostics.Assert(false, "Not tags");
            throw new Exception("Unexpected content - not tags");
        }

        //Namespace for XPath queries
        var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline");

        //Build a set of tags
        var tags = new List<SiteTag>();
        //Get the project tags
        var tagsSet = tagsNode.SelectNodes("iwsOnline:tag", nsManager);
        foreach(var tagNode in tagsSet)
        {
            var newTag = new SiteTag((XmlNode) tagNode);
            tags.Add(newTag);

        }
        _tags = tags.AsReadOnly();
    }
예제 #5
0
    /// <summary>
    /// Constructor
    /// </summary>
    /// <param name="userNode"></param>
    public SiteTagsSet(XmlNode tagsNode)
    {
        if (tagsNode.Name.ToLower() != "tags")
        {
            AppDiagnostics.Assert(false, "Not tags");
            throw new Exception("Unexpected content - not tags");
        }

        //Namespace for XPath queries
        var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline");

        //Build a set of tags
        var tags = new List <SiteTag>();
        //Get the project tags
        var tagsSet = tagsNode.SelectNodes("iwsOnline:tag", nsManager);

        foreach (var tagNode in tagsSet)
        {
            var newTag = new SiteTag((XmlNode)tagNode);
            tags.Add(newTag);
        }
        _tags = tags.AsReadOnly();
    }
        public async Task <OperationResult> Update(SiteUpdateModel updateModel)
        {
            try
            {
                var core = await _coreHelper.GetCore();

                await using var dbContext = core.DbContextHelper.GetDbContext();
                var site = await dbContext.Sites
                           .Include(x => x.SiteTags)
                           .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                           .Where(x => x.Id == updateModel.Id)
                           .FirstOrDefaultAsync();

                if (site == null)
                {
                    return(new OperationResult(
                               false,
                               _localizationService.GetStringWithFormat("SiteParamNotFound", updateModel.Id)));
                }

                var language = await dbContext.Languages.SingleAsync(x => x.Id ==
                                                                     (site.LanguageId == 0 ? 1 : site.LanguageId));

                await core.Advanced_SiteItemUpdate((int)site.MicrotingUid, updateModel.SiteName, language.LanguageCode);


                // Tags
                var siteTagIds = site.SiteTags
                                 .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                 .Where(x => x.TagId != null)
                                 .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                 .Select(x => (int)x.TagId)
                                 .ToList();

                var forRemove = siteTagIds
                                .Where(x => !updateModel.Tags.Contains(x))
                                .ToList();

                foreach (var tagIdForRemove in forRemove)
                {
                    var siteTag = await dbContext.SiteTags
                                  .Where(x => x.TagId == tagIdForRemove)
                                  .Where(x => x.SiteId == site.Id)
                                  .FirstOrDefaultAsync();

                    if (siteTag != null)
                    {
                        await siteTag.Delete(dbContext);
                    }
                }

                var forCreate = updateModel.Tags
                                .Where(x => !siteTagIds.Contains(x))
                                .ToList();

                foreach (var tagIdForCreate in forCreate)
                {
                    var siteTag = new SiteTag
                    {
                        TagId  = tagIdForCreate,
                        SiteId = site.Id,
                    };

                    await siteTag.Create(dbContext);
                }

                return(new OperationResult(true));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(new OperationResult(false,
                                           _localizationService.GetStringWithFormat("SiteParamCouldNotBeUpdated", updateModel.Id)));
            }
        }
예제 #7
0
 public Task <bool> AlterEntityAsync(SiteTag t)
 {
     throw new NotImplementedException();
 }