mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-24 15:25:43 +00:00
Merge branch 'development-before-sso' of https://gitlab.com/mbugroup/lti-api into dev/ragil-before-sso
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user