141 lines
3.8 KiB
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
|
|
}
|