mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-22 22:35:43 +00:00
add restrict delete master data kandang group
This commit is contained in:
@@ -2,6 +2,7 @@ package repository
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
|
||||||
@@ -14,6 +15,7 @@ type KandangGroupRepository interface {
|
|||||||
LocationExists(ctx context.Context, locationId uint) (bool, error)
|
LocationExists(ctx context.Context, locationId uint) (bool, error)
|
||||||
PicExists(ctx context.Context, picId uint) (bool, error)
|
PicExists(ctx context.Context, picId uint) (bool, error)
|
||||||
NameExists(ctx context.Context, name string, excludeID *uint) (bool, error)
|
NameExists(ctx context.Context, name string, excludeID *uint) (bool, error)
|
||||||
|
HasDailyChecklistRelation(ctx context.Context, kandangGroupId uint) (bool, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type KandangGroupRepositoryImpl struct {
|
type KandangGroupRepositoryImpl struct {
|
||||||
@@ -39,3 +41,20 @@ func (r *KandangGroupRepositoryImpl) PicExists(ctx context.Context, picId uint)
|
|||||||
func (r *KandangGroupRepositoryImpl) NameExists(ctx context.Context, name string, excludeID *uint) (bool, error) {
|
func (r *KandangGroupRepositoryImpl) NameExists(ctx context.Context, name string, excludeID *uint) (bool, error) {
|
||||||
return repository.ExistsByName[entity.KandangGroup](ctx, r.db, name, excludeID)
|
return repository.ExistsByName[entity.KandangGroup](ctx, r.db, name, excludeID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *KandangGroupRepositoryImpl) HasDailyChecklistRelation(ctx context.Context, kandangGroupId uint) (bool, error) {
|
||||||
|
var marker int
|
||||||
|
err := r.db.WithContext(ctx).
|
||||||
|
Model(&entity.DailyChecklist{}).
|
||||||
|
Select("1").
|
||||||
|
Where("kandang_id = ?", kandangGroupId).
|
||||||
|
Limit(1).
|
||||||
|
Take(&marker).Error
|
||||||
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -226,6 +226,16 @@ func (s kandangGroupService) DeleteOne(c *fiber.Ctx, id uint) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hasDailyChecklistRelation, err := s.Repository.HasDailyChecklistRelation(c.Context(), id)
|
||||||
|
if err != nil {
|
||||||
|
s.Log.Errorf("Failed to check daily checklist relation for kandang group %d: %+v", id, err)
|
||||||
|
return fiber.NewError(fiber.StatusInternalServerError, "Failed to check kandang group relation")
|
||||||
|
}
|
||||||
|
if hasDailyChecklistRelation {
|
||||||
|
return fiber.NewError(fiber.StatusConflict, "Kandang group tidak boleh dihapus karena masih memiliki relasi daily checklist")
|
||||||
|
}
|
||||||
|
|
||||||
if len(kandangGroup.Kandangs) > 0 {
|
if len(kandangGroup.Kandangs) > 0 {
|
||||||
return fiber.NewError(fiber.StatusConflict, "Kandang group tidak boleh dihapus karena masih memiliki relasi kandang")
|
return fiber.NewError(fiber.StatusConflict, "Kandang group tidak boleh dihapus karena masih memiliki relasi kandang")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user