narasiahli-be/app/module/chat/mapper/chat_schedule_file.mapper.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
}