mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-23 14:55:42 +00:00
feat(BE): finance (payment, initial_balance, injection). fix(BE): kandang capacity
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
|
||||
approvalDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/approvals/dto"
|
||||
bankDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/banks/dto"
|
||||
userDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/users/dto"
|
||||
"gitlab.com/mbugroup/lti-api.git/internal/utils"
|
||||
)
|
||||
|
||||
// === DTO Structs ===
|
||||
|
||||
type InjectionRelationDTO struct {
|
||||
Id uint `json:"id"`
|
||||
TransactionType string `json:"transaction_type"`
|
||||
Bank bankDTO.BankRelationDTO `json:"bank,omitempty"`
|
||||
AdjustmentDate string `json:"adjustment_date"`
|
||||
Direction string `json:"direction"`
|
||||
Nominal float64 `json:"nominal"`
|
||||
Notes string `json:"notes"`
|
||||
}
|
||||
|
||||
type InjectionListDTO struct {
|
||||
InjectionRelationDTO
|
||||
CreatedBy uint `json:"created_by"`
|
||||
CreatedByUser userDTO.UserRelationDTO `json:"created_by_user,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
Approval approvalDTO.ApprovalRelationDTO `json:"approval"`
|
||||
}
|
||||
|
||||
type InjectionDetailDTO struct {
|
||||
InjectionListDTO
|
||||
}
|
||||
|
||||
// === Mapper Functions ===
|
||||
|
||||
func ToInjectionRelationDTO(e entity.Payment) InjectionRelationDTO {
|
||||
return InjectionRelationDTO{
|
||||
Id: e.Id,
|
||||
TransactionType: transactionTypeLabel(e.TransactionType),
|
||||
Bank: bankFromInjection(e),
|
||||
AdjustmentDate: utils.FormatDate(e.PaymentDate),
|
||||
Direction: e.Direction,
|
||||
Nominal: e.Nominal,
|
||||
Notes: e.Notes,
|
||||
}
|
||||
}
|
||||
|
||||
func ToInjectionListDTO(e entity.Payment) InjectionListDTO {
|
||||
approval := approvalDTO.ApprovalRelationDTO{}
|
||||
if e.LatestApproval != nil {
|
||||
approval = approvalDTO.ToApprovalDTO(*e.LatestApproval)
|
||||
}
|
||||
|
||||
return InjectionListDTO{
|
||||
InjectionRelationDTO: ToInjectionRelationDTO(e),
|
||||
CreatedBy: e.CreatedBy,
|
||||
CreatedByUser: userFromInjection(e),
|
||||
CreatedAt: e.CreatedAt,
|
||||
UpdatedAt: e.UpdatedAt,
|
||||
Approval: approval,
|
||||
}
|
||||
}
|
||||
|
||||
func ToInjectionListDTOs(e []entity.Payment) []InjectionListDTO {
|
||||
result := make([]InjectionListDTO, len(e))
|
||||
for i, r := range e {
|
||||
result[i] = ToInjectionListDTO(r)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func ToInjectionDetailDTO(e entity.Payment) InjectionDetailDTO {
|
||||
return InjectionDetailDTO{
|
||||
InjectionListDTO: ToInjectionListDTO(e),
|
||||
}
|
||||
}
|
||||
|
||||
func bankFromInjection(e entity.Payment) bankDTO.BankRelationDTO {
|
||||
if e.BankWarehouse.Id == 0 {
|
||||
return bankDTO.BankRelationDTO{}
|
||||
}
|
||||
return bankDTO.ToBankRelationDTO(e.BankWarehouse)
|
||||
}
|
||||
|
||||
func userFromInjection(e entity.Payment) userDTO.UserRelationDTO {
|
||||
if e.CreatedUser.Id == 0 {
|
||||
return userDTO.UserRelationDTO{}
|
||||
}
|
||||
return userDTO.ToUserRelationDTO(e.CreatedUser)
|
||||
}
|
||||
|
||||
func transactionTypeLabel(transactionType string) string {
|
||||
if strings.EqualFold(transactionType, string(utils.TransactionTypeInjection)) {
|
||||
return "Injection"
|
||||
}
|
||||
return transactionType
|
||||
}
|
||||
Reference in New Issue
Block a user