53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package request
|
|
|
|
import (
|
|
"enaklo-pos-be/internal/entity"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type License struct {
|
|
Name string `json:"name" validate:"required"`
|
|
StartDate string `json:"start_date" validate:"required"`
|
|
EndDate string `json:"end_date" validate:"required"`
|
|
RenewalDate string `json:"renewal_date"`
|
|
SerialNumber string `json:"serial_number" validate:"required"`
|
|
PartnerID int64 `json:"partner_id" validate:"required"`
|
|
}
|
|
|
|
type LicenseParam struct {
|
|
Limit int `form:"limit,default=10"`
|
|
Offset int `form:"offset,default=0"`
|
|
Status string `form:"status,default="`
|
|
}
|
|
|
|
func (r *License) ToEntity() (*entity.License, error) {
|
|
startDate, err := time.Parse("2006-01-02", r.StartDate)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
endDate, err := time.Parse("2006-01-02", r.EndDate)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var renewalDate *time.Time
|
|
if r.RenewalDate != "" {
|
|
parsedRenewalDate, err := time.Parse("2006-01-02", r.RenewalDate)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
renewalDate = &parsedRenewalDate
|
|
}
|
|
|
|
return &entity.License{
|
|
ID: uuid.New(),
|
|
Name: r.Name,
|
|
StartDate: startDate,
|
|
EndDate: endDate,
|
|
RenewalDate: renewalDate,
|
|
SerialNumber: r.SerialNumber,
|
|
PartnerID: r.PartnerID,
|
|
}, nil
|
|
}
|