medol-be/app/module/articles/mapper/articles.mapper.go

88 lines
3.4 KiB
Go
Raw Normal View History

2024-03-05 19:15:53 +00:00
package mapper
import (
2024-05-07 11:08:38 +00:00
"github.com/rs/zerolog"
2024-03-05 19:15:53 +00:00
"go-humas-be/app/database/entity"
2025-01-20 09:30:39 +00:00
articleCategoriesMapper "go-humas-be/app/module/article_categories/mapper"
2024-11-04 01:12:22 +00:00
articleCategoriesRepository "go-humas-be/app/module/article_categories/repository"
2025-01-20 09:30:39 +00:00
articleCategoriesResponse "go-humas-be/app/module/article_categories/response"
articleCategoryDetailsRepository "go-humas-be/app/module/article_category_details/repository"
2024-05-07 07:48:46 +00:00
articleFilesMapper "go-humas-be/app/module/article_files/mapper"
articleFilesRepository "go-humas-be/app/module/article_files/repository"
articleFilesResponse "go-humas-be/app/module/article_files/response"
2024-03-05 19:15:53 +00:00
res "go-humas-be/app/module/articles/response"
2024-05-07 07:48:46 +00:00
usersRepository "go-humas-be/app/module/users/repository"
2024-03-05 19:15:53 +00:00
)
2024-05-07 07:48:46 +00:00
func ArticlesResponseMapper(
2024-05-07 11:08:38 +00:00
log zerolog.Logger,
host string,
2024-05-07 07:48:46 +00:00
articlesReq *entity.Articles,
2024-11-04 01:12:22 +00:00
articleCategoriesRepo articleCategoriesRepository.ArticleCategoriesRepository,
2025-01-20 09:30:39 +00:00
articleCategoryDetailsRepo articleCategoryDetailsRepository.ArticleCategoryDetailsRepository,
2024-05-07 07:48:46 +00:00
articleFilesRepo articleFilesRepository.ArticleFilesRepository,
usersRepo usersRepository.UsersRepository,
) (articlesRes *res.ArticlesResponse) {
createdByName := ""
2024-05-07 11:08:38 +00:00
if articlesReq.CreatedById != nil {
findUser, _ := usersRepo.FindOne(*articlesReq.CreatedById)
if findUser != nil {
createdByName = findUser.Fullname
}
2024-05-07 07:48:46 +00:00
}
2024-11-04 01:12:22 +00:00
categoryName := ""
2025-01-20 09:30:39 +00:00
articleCategories, _ := articleCategoryDetailsRepo.FindByArticleId(articlesReq.ID)
var articleCategoriesArr []*articleCategoriesResponse.ArticleCategoriesResponse
if articleCategories != nil && len(articleCategories) > 0 {
for _, result := range articleCategories {
articleCategoriesArr = append(articleCategoriesArr, articleCategoriesMapper.ArticleCategoriesResponseMapper(result.Category, host))
2024-11-04 01:12:22 +00:00
}
2025-01-20 09:30:39 +00:00
log.Info().Interface("articleCategoriesArr", articleCategoriesArr).Msg("")
2024-11-04 01:12:22 +00:00
}
2024-05-07 07:48:46 +00:00
articleFiles, _ := articleFilesRepo.FindByArticle(articlesReq.ID)
var articleFilesArr []*articleFilesResponse.ArticleFilesResponse
2024-05-07 11:08:38 +00:00
if articleFiles != nil && len(articleFiles) > 0 {
2024-05-07 07:48:46 +00:00
for _, result := range articleFiles {
articleFilesArr = append(articleFilesArr, articleFilesMapper.ArticleFilesResponseMapper(result, host))
2024-05-07 07:48:46 +00:00
}
}
2024-03-05 19:15:53 +00:00
if articlesReq != nil {
articlesRes = &res.ArticlesResponse{
2025-01-20 09:30:39 +00:00
ID: articlesReq.ID,
Title: articlesReq.Title,
Slug: articlesReq.Slug,
Description: articlesReq.Description,
HtmlDescription: articlesReq.HtmlDescription,
TypeId: articlesReq.TypeId,
Tags: articlesReq.Tags,
CategoryId: articlesReq.CategoryId,
AiArticleId: articlesReq.AiArticleId,
2025-01-20 09:30:39 +00:00
CategoryName: categoryName,
PageUrl: articlesReq.PageUrl,
CreatedById: articlesReq.CreatedById,
CreatedByName: &createdByName,
ShareCount: articlesReq.ShareCount,
ViewCount: articlesReq.ViewCount,
2025-02-15 01:56:13 +00:00
CommentCount: articlesReq.CommentCount,
2025-01-20 09:30:39 +00:00
StatusId: articlesReq.StatusId,
IsPublish: articlesReq.IsPublish,
PublishedAt: articlesReq.PublishedAt,
IsActive: articlesReq.IsActive,
CreatedAt: articlesReq.CreatedAt,
UpdatedAt: articlesReq.UpdatedAt,
ArticleFiles: articleFilesArr,
ArticleCategories: articleCategoriesArr,
2024-03-05 19:15:53 +00:00
}
if articlesReq.ThumbnailName != nil {
articlesRes.ThumbnailUrl = host + "/articles/thumbnail/viewer/" + *articlesReq.ThumbnailName
}
2024-03-05 19:15:53 +00:00
}
2024-05-07 11:08:38 +00:00
2024-03-05 19:15:53 +00:00
return articlesRes
}