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); }
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"); } }
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); }