meti-backend/internal/transformer/vote_event_transformer.go
Aditya Siregar 826c5d26ad Add init
2025-08-15 21:17:19 +07:00

76 lines
1.8 KiB
Go

package transformer
import (
"eslogad-be/internal/contract"
"eslogad-be/internal/entities"
)
func VoteEventToContract(voteEvent *entities.VoteEvent) *contract.VoteEventResponse {
if voteEvent == nil {
return nil
}
response := &contract.VoteEventResponse{
ID: voteEvent.ID,
Title: voteEvent.Title,
Description: voteEvent.Description,
StartDate: voteEvent.StartDate,
EndDate: voteEvent.EndDate,
IsActive: voteEvent.IsActive,
ResultsOpen: voteEvent.ResultsOpen,
IsVotingOpen: voteEvent.IsVotingOpen(),
CreatedAt: voteEvent.CreatedAt,
UpdatedAt: voteEvent.UpdatedAt,
}
if voteEvent.Candidates != nil && len(voteEvent.Candidates) > 0 {
response.Candidates = CandidatesToContract(voteEvent.Candidates)
}
return response
}
func CandidateToContract(candidate *entities.Candidate) *contract.CandidateResponse {
if candidate == nil {
return nil
}
return &contract.CandidateResponse{
ID: candidate.ID,
VoteEventID: candidate.VoteEventID,
Name: candidate.Name,
ImageURL: candidate.ImageURL,
Description: candidate.Description,
CreatedAt: candidate.CreatedAt,
UpdatedAt: candidate.UpdatedAt,
}
}
func CandidatesToContract(candidates []entities.Candidate) []contract.CandidateResponse {
if candidates == nil {
return nil
}
responses := make([]contract.CandidateResponse, len(candidates))
for i, c := range candidates {
resp := CandidateToContract(&c)
if resp != nil {
responses[i] = *resp
}
}
return responses
}
func VoteToContract(vote *entities.Vote) *contract.VoteResponse {
if vote == nil {
return nil
}
return &contract.VoteResponse{
ID: vote.ID,
VoteEventID: vote.VoteEventID,
CandidateID: vote.CandidateID,
UserID: vote.UserID,
CreatedAt: vote.CreatedAt,
}
}