Example #1
0
        public async Task CreatePostAsync(PostRequest input)
        {
            var post    = ObjectMapper.Map <Post>(input);
            var company = await WorkScope.GetAsync <Company>(input.CompanyId);

            int numberPostSameTitle = await WorkScope.GetAll <Post>()
                                      .Where(x => x.Title == input.Title && x.CompanyId == input.CompanyId)
                                      .CountAsync() + 1;

            post.PostUrl = $"{input.Title.RemoveSign4VietnameseString().ToIdentifier()}-{company.CompanyUrl}-{numberPostSameTitle}";
            Guid id = await WorkScope.InsertAndGetIdAsync(post);

            foreach (var item in input.HashtagIds)
            {
                await WorkScope.InsertAsync(new CompanyPostHashtag
                {
                    HashtagId = item,
                    PostId    = id
                });
            }

            var request = new PostSitemap
            {
                Id         = id,
                AgencyName = company.Name,
                IsCreate   = true,
                PostUrl    = post.PostUrl,
                Title      = post.Title
            };

            await SaveSiteMap(request);
        }
Example #2
0
        private async Task SaveSiteMap(PostSitemap input)
        {
            using var httpClient   = new HttpClient();
            httpClient.BaseAddress = new Uri(ConstantVariable.WebUserUrl);
            httpClient.DefaultRequestHeaders.Accept.Clear();
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(MimeTypeNames.ApplicationJson));
            var response = await httpClient.PostAsJsonAsync("api/SiteMap", input);

            if (!response.IsSuccessStatusCode)
            {
                throw new UserFriendlyException("Update sitemap fail, check web user");
            }
        }
Example #3
0
        public async Task EditPostAsync(PostRequest input)
        {
            var post = await WorkScope.GetAll <Post>().FirstOrDefaultAsync(x => x.Id == input.Id);

            if (post == default)
            {
                throw new UserFriendlyException("Không tồn tại bài viết");
            }

            ObjectMapper.Map(input, post);
            var company = await WorkScope.GetAsync <Company>(input.CompanyId);

            int numberPostSameTitle = await WorkScope.GetAll <Post>()
                                      .Where(x => x.Title == input.Title && x.CompanyId == input.CompanyId && x.Id != input.Id)
                                      .CountAsync();

            post.PostUrl = numberPostSameTitle > 0
                ? $"{input.Title.RemoveSign4VietnameseString().ToIdentifier()}-{company.CompanyUrl}-{numberPostSameTitle + 1}"
                : $"{input.Title.RemoveSign4VietnameseString().ToIdentifier()}-{company.CompanyUrl}";
            await WorkScope.UpdateAsync(post);

            foreach (var item in input.HashtagIds)
            {
                await WorkScope.InsertAsync(new CompanyPostHashtag
                {
                    HashtagId = item,
                    PostId    = post.Id
                });
            }

            foreach (var item in input.HashtagIdDeletes)
            {
                await WorkScope.DeleteAsync <CompanyPostHashtag>(item);
            }

            var request = new PostSitemap
            {
                Id         = post.Id,
                AgencyName = company.Name,
                IsCreate   = false,
                PostUrl    = post.PostUrl,
                Title      = post.Title
            };

            await SaveSiteMap(request);
        }