narasiahli-be/app/module/ebooks/mapper/ebooks.mapper.go

141 lines
3.8 KiB
Go

package mapper
import (
"narasi-ahli-be/app/database/entity"
ebooksResponse "narasi-ahli-be/app/module/ebooks/response"
)
func ToEbooksResponse(ebook *entity.Ebooks) *ebooksResponse.EbooksResponse {
if ebook == nil {
return nil
}
var authorName, authorEmail *string
if ebook.Author != nil {
authorName = &ebook.Author.Fullname
authorEmail = &ebook.Author.Email
}
return &ebooksResponse.EbooksResponse{
ID: ebook.ID,
Title: ebook.Title,
Slug: ebook.Slug,
Description: ebook.Description,
Price: ebook.Price,
PdfFilePath: ebook.PdfFilePath,
PdfFileName: ebook.PdfFileName,
PdfFileSize: ebook.PdfFileSize,
ThumbnailPath: ebook.ThumbnailPath,
ThumbnailName: ebook.ThumbnailName,
AuthorId: ebook.AuthorId,
AuthorName: authorName,
AuthorEmail: authorEmail,
Category: ebook.Category,
Tags: ebook.Tags,
PageCount: ebook.PageCount,
Language: ebook.Language,
Isbn: ebook.Isbn,
Publisher: ebook.Publisher,
PublishedYear: ebook.PublishedYear,
DownloadCount: ebook.DownloadCount,
PurchaseCount: ebook.PurchaseCount,
WishlistCount: ebook.WishlistCount,
Rating: ebook.Rating,
ReviewCount: ebook.ReviewCount,
StatusId: ebook.StatusId,
IsActive: ebook.IsActive,
IsPublished: ebook.IsPublished,
PublishedAt: ebook.PublishedAt,
CreatedById: ebook.CreatedById,
CreatedAt: ebook.CreatedAt,
UpdatedAt: ebook.UpdatedAt,
}
}
func ToEbooksResponseList(ebooks []*entity.Ebooks) []*ebooksResponse.EbooksResponse {
if ebooks == nil {
return nil
}
var responses []*ebooksResponse.EbooksResponse
for _, ebook := range ebooks {
responses = append(responses, ToEbooksResponse(ebook))
}
return responses
}
func ToEbookWishlistResponse(wishlist *entity.EbookWishlists) *ebooksResponse.EbookWishlistResponse {
if wishlist == nil {
return nil
}
return &ebooksResponse.EbookWishlistResponse{
ID: wishlist.ID,
UserId: wishlist.UserId,
EbookId: wishlist.EbookId,
Ebook: ToEbooksResponse(wishlist.Ebook),
CreatedAt: wishlist.CreatedAt,
UpdatedAt: wishlist.UpdatedAt,
}
}
func ToEbookWishlistResponseList(wishlists []*entity.EbookWishlists) []*ebooksResponse.EbookWishlistResponse {
if wishlists == nil {
return nil
}
var responses []*ebooksResponse.EbookWishlistResponse
for _, wishlist := range wishlists {
responses = append(responses, ToEbookWishlistResponse(wishlist))
}
return responses
}
func ToEbookPurchaseResponse(purchase *entity.EbookPurchases) *ebooksResponse.EbookPurchaseResponse {
if purchase == nil {
return nil
}
var buyerName, buyerEmail *string
if purchase.Buyer != nil {
buyerName = &purchase.Buyer.Fullname
buyerEmail = &purchase.Buyer.Email
}
return &ebooksResponse.EbookPurchaseResponse{
ID: purchase.ID,
BuyerId: purchase.BuyerId,
BuyerName: buyerName,
BuyerEmail: buyerEmail,
EbookId: purchase.EbookId,
Ebook: ToEbooksResponse(purchase.Ebook),
PurchasePrice: purchase.PurchasePrice,
PaymentMethod: purchase.PaymentMethod,
PaymentStatus: purchase.PaymentStatus,
TransactionId: purchase.TransactionId,
PaymentProof: purchase.PaymentProof,
PaymentDate: purchase.PaymentDate,
DownloadCount: purchase.DownloadCount,
LastDownloadAt: purchase.LastDownloadAt,
StatusId: purchase.StatusId,
IsActive: purchase.IsActive,
CreatedAt: purchase.CreatedAt,
UpdatedAt: purchase.UpdatedAt,
}
}
func ToEbookPurchaseResponseList(purchases []*entity.EbookPurchases) []*ebooksResponse.EbookPurchaseResponse {
if purchases == nil {
return nil
}
var responses []*ebooksResponse.EbookPurchaseResponse
for _, purchase := range purchases {
responses = append(responses, ToEbookPurchaseResponse(purchase))
}
return responses
}