|
|
|
@@ -35,7 +35,27 @@ func Run(db *gorm.DB) error {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
kandangs, err := seedKandangs(tx, adminID, locations, users)
|
|
|
|
|
productCategories, err := seedProductCategories(tx, adminID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
flocks, err := seedFlocks(tx, adminID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fcrs, err := seedFcr(tx, adminID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
projectFlocks, err := seedProjectFlocks(tx, adminID, flocks, areas, productCategories, fcrs, locations)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
kandangs, err := seedKandangs(tx, adminID, locations, users, projectFlocks)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
@@ -44,11 +64,6 @@ func Run(db *gorm.DB) error {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
productCategories, err := seedProductCategories(tx, adminID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
suppliers, err := seedSuppliers(tx, adminID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
@@ -58,10 +73,6 @@ func Run(db *gorm.DB) error {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := seedFcr(tx, adminID); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := seedProducts(tx, adminID, uoms, productCategories, suppliers); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
@@ -194,16 +205,138 @@ func seedLocations(tx *gorm.DB, createdBy uint, areas map[string]uint) (map[stri
|
|
|
|
|
return result, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func seedKandangs(tx *gorm.DB, createdBy uint, locations map[string]uint, users map[string]uint) (map[string]uint, error) {
|
|
|
|
|
func seedFlocks(tx *gorm.DB, createdBy uint) (map[string]uint, error) {
|
|
|
|
|
names := []string{"Flock Priangan", "Flock Banten"}
|
|
|
|
|
result := make(map[string]uint, len(names))
|
|
|
|
|
|
|
|
|
|
for _, name := range names {
|
|
|
|
|
var flock entity.Flock
|
|
|
|
|
err := tx.Where("name = ?", name).First(&flock).Error
|
|
|
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
|
|
flock = entity.Flock{
|
|
|
|
|
Name: name,
|
|
|
|
|
CreatedBy: createdBy,
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Create(&flock).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
} else if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
} else {
|
|
|
|
|
if err := tx.Model(&entity.Flock{}).Where("id = ?", flock.Id).Updates(map[string]any{
|
|
|
|
|
"created_by": createdBy,
|
|
|
|
|
}).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
result[name] = flock.Id
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func seedProjectFlocks(tx *gorm.DB, createdBy uint, flocks, areas, productCategories, fcrs, locations map[string]uint) (map[string]uint, error) {
|
|
|
|
|
seeds := []struct {
|
|
|
|
|
Name string
|
|
|
|
|
Location string
|
|
|
|
|
PicKey string
|
|
|
|
|
Key string
|
|
|
|
|
Flock string
|
|
|
|
|
Area string
|
|
|
|
|
ProductCategory string
|
|
|
|
|
Fcr string
|
|
|
|
|
Location string
|
|
|
|
|
Period int
|
|
|
|
|
}{
|
|
|
|
|
{"Singaparna 1", "Singaparna", "admin"},
|
|
|
|
|
{"Singaparna 2", "Singaparna", "admin"},
|
|
|
|
|
{"Cikaum 1", "Cikaum", "admin"},
|
|
|
|
|
{"Cikaum 2", "Cikaum", "admin"},
|
|
|
|
|
{
|
|
|
|
|
Key: "Singaparna Period 1",
|
|
|
|
|
Flock: "Flock Priangan",
|
|
|
|
|
Area: "Priangan",
|
|
|
|
|
ProductCategory: "Day Old Chick",
|
|
|
|
|
Fcr: "FCR Layer",
|
|
|
|
|
Location: "Singaparna",
|
|
|
|
|
Period: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
Key: "Cikaum Period 1",
|
|
|
|
|
Flock: "Flock Banten",
|
|
|
|
|
Area: "Banten",
|
|
|
|
|
ProductCategory: "Day Old Chick",
|
|
|
|
|
Fcr: "FCR Layer",
|
|
|
|
|
Location: "Cikaum",
|
|
|
|
|
Period: 1,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result := make(map[string]uint, len(seeds))
|
|
|
|
|
|
|
|
|
|
for _, seed := range seeds {
|
|
|
|
|
flockID, ok := flocks[seed.Flock]
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil, fmt.Errorf("floc %s not seeded", seed.Flock)
|
|
|
|
|
}
|
|
|
|
|
areaID, ok := areas[seed.Area]
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil, fmt.Errorf("area %s not seeded", seed.Area)
|
|
|
|
|
}
|
|
|
|
|
categoryID, ok := productCategories[seed.ProductCategory]
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil, fmt.Errorf("product category %s not seeded", seed.ProductCategory)
|
|
|
|
|
}
|
|
|
|
|
fcrID, ok := fcrs[seed.Fcr]
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil, fmt.Errorf("fcr %s not seeded", seed.Fcr)
|
|
|
|
|
}
|
|
|
|
|
locationID, ok := locations[seed.Location]
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil, fmt.Errorf("location %s not seeded", seed.Location)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var projectFlock entity.ProjectFlock
|
|
|
|
|
err := tx.Where("flock_id = ? AND area_id = ? AND product_category_id = ? AND fcr_id = ? AND location_id = ? AND period = ?",
|
|
|
|
|
flockID, areaID, categoryID, fcrID, locationID, seed.Period).First(&projectFlock).Error
|
|
|
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
|
|
projectFlock = entity.ProjectFlock{
|
|
|
|
|
FlockId: flockID,
|
|
|
|
|
AreaId: areaID,
|
|
|
|
|
ProductCategoryId: categoryID,
|
|
|
|
|
FcrId: fcrID,
|
|
|
|
|
LocationId: locationID,
|
|
|
|
|
Period: seed.Period,
|
|
|
|
|
CreatedBy: createdBy,
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Create(&projectFlock).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
} else if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
} else {
|
|
|
|
|
if err := tx.Model(&entity.ProjectFlock{}).Where("id = ?", projectFlock.Id).Updates(map[string]any{
|
|
|
|
|
"flock_id": flockID,
|
|
|
|
|
"area_id": areaID,
|
|
|
|
|
"product_category_id": categoryID,
|
|
|
|
|
"fcr_id": fcrID,
|
|
|
|
|
"location_id": locationID,
|
|
|
|
|
"period": seed.Period,
|
|
|
|
|
}).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
result[seed.Key] = projectFlock.Id
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func seedKandangs(tx *gorm.DB, createdBy uint, locations map[string]uint, users map[string]uint, projectFlocks map[string]uint) (map[string]uint, error) {
|
|
|
|
|
seeds := []struct {
|
|
|
|
|
Name string
|
|
|
|
|
Status utils.KandangStatus
|
|
|
|
|
Location string
|
|
|
|
|
PicKey string
|
|
|
|
|
ProjectFlockKey *string
|
|
|
|
|
}{
|
|
|
|
|
{Name: "Singaparna 1", Status: utils.KandangStatusActive, Location: "Singaparna", PicKey: "admin", ProjectFlockKey: strPtr("Singaparna Period 1")},
|
|
|
|
|
{Name: "Singaparna 2", Status: utils.KandangStatusNonActive, Location: "Singaparna", PicKey: "admin", ProjectFlockKey: strPtr("Singaparna Period 1")},
|
|
|
|
|
{Name: "Cikaum 1", Status: utils.KandangStatusActive, Location: "Cikaum", PicKey: "admin", ProjectFlockKey: strPtr("Cikaum Period 1")},
|
|
|
|
|
{Name: "Cikaum 2", Status: utils.KandangStatusPengajuan, Location: "Cikaum", PicKey: "admin"},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result := make(map[string]uint, len(seeds))
|
|
|
|
@@ -218,20 +351,45 @@ func seedKandangs(tx *gorm.DB, createdBy uint, locations map[string]uint, users
|
|
|
|
|
return nil, fmt.Errorf("user %s not seeded", seed.PicKey)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var projectFlockID *uint
|
|
|
|
|
if seed.ProjectFlockKey != nil {
|
|
|
|
|
pfID, ok := projectFlocks[*seed.ProjectFlockKey]
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil, fmt.Errorf("project flock %s not seeded", *seed.ProjectFlockKey)
|
|
|
|
|
}
|
|
|
|
|
projectFlockID = uintPtr(pfID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var kandang entity.Kandang
|
|
|
|
|
err := tx.Where("name = ?", seed.Name).First(&kandang).Error
|
|
|
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
|
|
kandang = entity.Kandang{
|
|
|
|
|
Name: seed.Name,
|
|
|
|
|
LocationId: locID,
|
|
|
|
|
PicId: picID,
|
|
|
|
|
CreatedBy: createdBy,
|
|
|
|
|
Name: seed.Name,
|
|
|
|
|
Status: string(seed.Status),
|
|
|
|
|
LocationId: locID,
|
|
|
|
|
PicId: picID,
|
|
|
|
|
ProjectFlockId: projectFlockID,
|
|
|
|
|
CreatedBy: createdBy,
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Create(&kandang).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
} else if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
} else {
|
|
|
|
|
updates := map[string]any{
|
|
|
|
|
"location_id": locID,
|
|
|
|
|
"pic_id": picID,
|
|
|
|
|
"status": string(seed.Status),
|
|
|
|
|
}
|
|
|
|
|
if projectFlockID != nil {
|
|
|
|
|
updates["project_flock_id"] = *projectFlockID
|
|
|
|
|
} else {
|
|
|
|
|
updates["project_flock_id"] = nil
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Model(&entity.Kandang{}).Where("id = ?", kandang.Id).Updates(updates).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
result[seed.Name] = kandang.Id
|
|
|
|
|
}
|
|
|
|
@@ -430,7 +588,7 @@ func seedCustomers(tx *gorm.DB, createdBy uint, users map[string]uint) error {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func seedFcr(tx *gorm.DB, createdBy uint) error {
|
|
|
|
|
func seedFcr(tx *gorm.DB, createdBy uint) (map[string]uint, error) {
|
|
|
|
|
seeds := []struct {
|
|
|
|
|
Name string
|
|
|
|
|
Standards []struct {
|
|
|
|
@@ -452,17 +610,20 @@ func seedFcr(tx *gorm.DB, createdBy uint) error {
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result := make(map[string]uint, len(seeds))
|
|
|
|
|
|
|
|
|
|
for _, seed := range seeds {
|
|
|
|
|
var fcr entity.Fcr
|
|
|
|
|
err := tx.Where("name = ?", seed.Name).First(&fcr).Error
|
|
|
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
|
|
fcr = entity.Fcr{Name: seed.Name, CreatedBy: createdBy}
|
|
|
|
|
if err := tx.Create(&fcr).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
} else if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
result[seed.Name] = fcr.Id
|
|
|
|
|
|
|
|
|
|
for _, std := range seed.Standards {
|
|
|
|
|
var standard entity.FcrStandard
|
|
|
|
@@ -475,22 +636,22 @@ func seedFcr(tx *gorm.DB, createdBy uint) error {
|
|
|
|
|
Mortality: std.Mortality,
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Create(&standard).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
} else if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
return nil, err
|
|
|
|
|
} else {
|
|
|
|
|
if err := tx.Model(&entity.FcrStandard{}).Where("id = ?", standard.Id).Updates(map[string]any{
|
|
|
|
|
"fcr_number": std.FcrNumber,
|
|
|
|
|
"mortality": std.Mortality,
|
|
|
|
|
}).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
return result, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func seedProducts(tx *gorm.DB, createdBy uint, uoms map[string]uint, categories map[string]uint, suppliers map[string]uint) error {
|
|
|
|
|