101 lines
2.5 KiB
Go
101 lines
2.5 KiB
Go
package mapper
|
|
|
|
import (
|
|
"narasi-ahli-be/app/database/entity"
|
|
"narasi-ahli-be/app/module/chat/request"
|
|
"narasi-ahli-be/app/module/chat/response"
|
|
)
|
|
|
|
// ChatScheduleFileMapper - Mapper for chat schedule file
|
|
type ChatScheduleFileMapper struct{}
|
|
|
|
// NewChatScheduleFileMapper - Create new chat schedule file mapper
|
|
func NewChatScheduleFileMapper() *ChatScheduleFileMapper {
|
|
return &ChatScheduleFileMapper{}
|
|
}
|
|
|
|
// ToResponse - Convert entity to response
|
|
func (m *ChatScheduleFileMapper) ToResponse(file *entity.ChatScheduleFiles) *response.ChatScheduleFileResponse {
|
|
if file == nil {
|
|
return nil
|
|
}
|
|
|
|
return &response.ChatScheduleFileResponse{
|
|
ID: file.ID,
|
|
ChatScheduleID: file.ChatScheduleID,
|
|
FileName: file.FileName,
|
|
OriginalName: file.OriginalName,
|
|
FilePath: file.FilePath,
|
|
FileSize: file.FileSize,
|
|
MimeType: file.MimeType,
|
|
FileType: file.FileType,
|
|
Description: file.Description,
|
|
IsRequired: file.IsRequired,
|
|
CreatedAt: file.CreatedAt.Format("2006-01-02T15:04:05Z07:00"),
|
|
UpdatedAt: file.UpdatedAt.Format("2006-01-02T15:04:05Z07:00"),
|
|
}
|
|
}
|
|
|
|
// ToEntity - Convert upload request to entity
|
|
func (m *ChatScheduleFileMapper) ToEntity(req request.ChatScheduleFileUploadRequest) *entity.ChatScheduleFiles {
|
|
return &entity.ChatScheduleFiles{
|
|
ChatScheduleID: req.ChatScheduleID,
|
|
FileType: req.FileType,
|
|
Description: req.Description,
|
|
IsRequired: req.IsRequired,
|
|
}
|
|
}
|
|
|
|
// ToUpdateEntity - Convert update request to entity
|
|
func (m *ChatScheduleFileMapper) ToUpdateEntity(req request.ChatScheduleFileUpdateRequest) *entity.ChatScheduleFiles {
|
|
file := &entity.ChatScheduleFiles{}
|
|
|
|
if req.FileName != "" {
|
|
file.FileName = req.FileName
|
|
}
|
|
|
|
if req.OriginalName != "" {
|
|
file.OriginalName = req.OriginalName
|
|
}
|
|
|
|
if req.FilePath != "" {
|
|
file.FilePath = req.FilePath
|
|
}
|
|
|
|
if req.FileSize > 0 {
|
|
file.FileSize = req.FileSize
|
|
}
|
|
|
|
if req.MimeType != "" {
|
|
file.MimeType = req.MimeType
|
|
}
|
|
|
|
if req.FileType != "" {
|
|
file.FileType = req.FileType
|
|
}
|
|
|
|
if req.Description != "" {
|
|
file.Description = req.Description
|
|
}
|
|
|
|
if req.IsRequired != nil {
|
|
file.IsRequired = *req.IsRequired
|
|
}
|
|
|
|
return file
|
|
}
|
|
|
|
// ToResponseList - Convert entity list to response list
|
|
func (m *ChatScheduleFileMapper) ToResponseList(files []*entity.ChatScheduleFiles) []*response.ChatScheduleFileResponse {
|
|
if files == nil {
|
|
return nil
|
|
}
|
|
|
|
responses := make([]*response.ChatScheduleFileResponse, len(files))
|
|
for i, file := range files {
|
|
responses[i] = m.ToResponse(file)
|
|
}
|
|
|
|
return responses
|
|
}
|