All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
87 lines
1.8 KiB
Go
87 lines
1.8 KiB
Go
package province
|
|
|
|
import (
|
|
"cargo-erp-backend/internal/domain"
|
|
"cargo-erp-backend/pkg/importer"
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type ProvinceImportHandler struct {
|
|
UserData domain.User
|
|
}
|
|
|
|
func NewProvinceImportHandler(user_data domain.User) importer.ImportHandler {
|
|
return &ProvinceImportHandler{
|
|
UserData: user_data,
|
|
}
|
|
}
|
|
|
|
func (h *ProvinceImportHandler) ValidateRow(row []string, rowNumber int) (importer.RowData, []error) {
|
|
var errors []error
|
|
|
|
if len(row) < 1 {
|
|
errors = append(errors, fmt.Errorf("row is empty"))
|
|
return nil, errors
|
|
}
|
|
|
|
name := strings.TrimSpace(row[0])
|
|
if name == "" {
|
|
errors = append(errors, fmt.Errorf("name is required"))
|
|
return nil, errors
|
|
}
|
|
|
|
if len(name) < 2 {
|
|
errors = append(errors, fmt.Errorf("name must be at least 2 characters"))
|
|
return nil, errors
|
|
}
|
|
|
|
if len(name) > 255 {
|
|
errors = append(errors, fmt.Errorf("name must be at most 255 characters"))
|
|
return nil, errors
|
|
}
|
|
|
|
now := time.Now()
|
|
province := &domain.Province{
|
|
MerchantID: h.UserData.MerchantID,
|
|
CreatedBy: &h.UserData.ID,
|
|
UpdatedBy: &h.UserData.ID,
|
|
Name: &name,
|
|
CreatedOn: &now,
|
|
UpdatedOn: &now,
|
|
}
|
|
|
|
return province, nil
|
|
}
|
|
|
|
func (h *ProvinceImportHandler) GetDataString(data importer.RowData) string {
|
|
province := data.(*domain.Province)
|
|
if province.Name != nil {
|
|
return *province.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (h *ProvinceImportHandler) IsDuplicate(db *gorm.DB, data importer.RowData) bool {
|
|
province := data.(*domain.Province)
|
|
var count int64
|
|
db.Model(&domain.Province{}).Where("UPPER(name) = ?", strings.ToUpper(*province.Name)).Count(&count)
|
|
return count > 0
|
|
}
|
|
|
|
func (h *ProvinceImportHandler) GetTemplateHeaders() []string {
|
|
return []string{"name"}
|
|
}
|
|
|
|
func (h *ProvinceImportHandler) GetTemplateRows() [][]string {
|
|
return [][]string{
|
|
{"DKI Jakarta"},
|
|
{"Jawa Barat"},
|
|
{"Jawa Tengah"},
|
|
{"Jawa Timur"},
|
|
}
|
|
}
|