Merge branch 'development-before-sso' of https://gitlab.com/mbugroup/lti-api into dev/ragil-before-sso

This commit is contained in:
ragilap
2025-10-31 18:31:07 +07:00
@@ -52,8 +52,8 @@ type projectflockService struct {
} }
type FlockPeriodSummary struct { type FlockPeriodSummary struct {
Flock entity.Flock Flock entity.Flock
NextPeriod int NextPeriod int
} }
func NewProjectflockService( func NewProjectflockService(
@@ -720,56 +720,56 @@ func (s projectflockService) GetAvailableDocQuantity(ctx *fiber.Ctx, kandangID u
} }
func (s projectflockService) GetFlockPeriodSummary(c *fiber.Ctx, projectFlockKandangID uint) (*FlockPeriodSummary, error) { func (s projectflockService) GetFlockPeriodSummary(c *fiber.Ctx, projectFlockKandangID uint) (*FlockPeriodSummary, error) {
if projectFlockKandangID == 0 { if projectFlockKandangID == 0 {
return nil, fiber.NewError(fiber.StatusBadRequest, "project_flock_kandang_id is required") return nil, fiber.NewError(fiber.StatusBadRequest, "project_flock_kandang_id is required")
} }
pivot, err := s.pivotRepo().GetByID(c.Context(), projectFlockKandangID) pivot, err := s.pivotRepo().GetByID(c.Context(), projectFlockKandangID)
if errors.Is(err, gorm.ErrRecordNotFound) { if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, fiber.NewError(fiber.StatusNotFound, "Project flock kandang not found") return nil, fiber.NewError(fiber.StatusNotFound, "Project flock kandang not found")
} }
if err != nil { if err != nil {
s.Log.Errorf("Failed to fetch project_flock_kandang %d: %+v", projectFlockKandangID, err) s.Log.Errorf("Failed to fetch project_flock_kandang %d: %+v", projectFlockKandangID, err)
return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch project flock kandang") return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch project flock kandang")
} }
var baseName string var baseName string
var referenceFlock *entity.Flock var referenceFlock *entity.Flock
if pivot.ProjectFlock.Id != 0 { if pivot.ProjectFlock.Id != 0 {
baseName = pfutils.DeriveBaseName(pivot.ProjectFlock.FlockName) baseName = pfutils.DeriveBaseName(pivot.ProjectFlock.FlockName)
} }
if strings.TrimSpace(baseName) != "" { if strings.TrimSpace(baseName) != "" {
referenceFlock, err = s.FlockRepo.GetByName(c.Context(), baseName) referenceFlock, err = s.FlockRepo.GetByName(c.Context(), baseName)
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
s.Log.Errorf("Failed to fetch flock %q: %+v", baseName, err) s.Log.Errorf("Failed to fetch flock %q: %+v", baseName, err)
return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch flock") return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch flock")
} }
} }
if referenceFlock == nil { if referenceFlock == nil {
referenceFlock = &entity.Flock{Name: pivot.ProjectFlock.FlockName} referenceFlock = &entity.Flock{Name: pivot.ProjectFlock.FlockName}
} }
maxPeriod := pivot.ProjectFlock.Period maxPeriod := pivot.ProjectFlock.Period
if strings.TrimSpace(baseName) != "" { if strings.TrimSpace(baseName) != "" {
if headerMax, err := s.Repository.GetMaxPeriodByBaseName(c.Context(), baseName); err != nil { if headerMax, err := s.Repository.GetMaxPeriodByBaseName(c.Context(), baseName); err != nil {
s.Log.Warnf("Unable to compute header period for base %q: %+v", baseName, err) s.Log.Warnf("Unable to compute header period for base %q: %+v", baseName, err)
} else if headerMax > maxPeriod { } else if headerMax > maxPeriod {
maxPeriod = headerMax maxPeriod = headerMax
} }
if pivotMax, err := s.pivotRepo().MaxPeriodByBaseName(c.Context(), baseName); err != nil { if pivotMax, err := s.pivotRepo().MaxPeriodByBaseName(c.Context(), baseName); err != nil {
s.Log.Warnf("Unable to compute pivot period for base %q: %+v", baseName, err) s.Log.Warnf("Unable to compute pivot period for base %q: %+v", baseName, err)
} else if pivotMax > maxPeriod { } else if pivotMax > maxPeriod {
maxPeriod = pivotMax maxPeriod = pivotMax
} }
} }
return &FlockPeriodSummary{ return &FlockPeriodSummary{
Flock: *referenceFlock, Flock: *referenceFlock,
NextPeriod: maxPeriod + 1, NextPeriod: maxPeriod + 1,
}, nil }, nil
} }
func uniqueUintSlice(values []uint) []uint { func uniqueUintSlice(values []uint) []uint {