mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
feat: konfigurasi sistem toggle pemakaian pakan ovk negatif
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
service "gitlab.com/mbugroup/lti-api.git/internal/modules/system-settings/services"
|
||||
)
|
||||
|
||||
type SystemSettingController struct {
|
||||
Service service.SystemSettingService
|
||||
}
|
||||
|
||||
func NewSystemSettingController(svc service.SystemSettingService) *SystemSettingController {
|
||||
return &SystemSettingController{Service: svc}
|
||||
}
|
||||
|
||||
func (ctrl *SystemSettingController) GetAll(c *fiber.Ctx) error {
|
||||
settings, err := ctrl.Service.GetAll(c.Context())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.Status(fiber.StatusOK).JSON(fiber.Map{"data": settings})
|
||||
}
|
||||
|
||||
type setAllowNegativePakanOVKRequest struct {
|
||||
Value bool `json:"value"`
|
||||
}
|
||||
|
||||
func (ctrl *SystemSettingController) SetAllowNegativePakanOVK(c *fiber.Ctx) error {
|
||||
var req setAllowNegativePakanOVKRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, "Request body tidak valid")
|
||||
}
|
||||
if err := ctrl.Service.SetAllowNegativePakanOVK(c.Context(), req.Value); err != nil {
|
||||
return err
|
||||
}
|
||||
return c.Status(fiber.StatusOK).JSON(fiber.Map{
|
||||
"message": "Setting berhasil diperbarui",
|
||||
"value": req.Value,
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package systemsettings
|
||||
|
||||
import (
|
||||
"github.com/go-playground/validator/v10"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"gorm.io/gorm"
|
||||
|
||||
repository "gitlab.com/mbugroup/lti-api.git/internal/modules/system-settings/repositories"
|
||||
service "gitlab.com/mbugroup/lti-api.git/internal/modules/system-settings/services"
|
||||
)
|
||||
|
||||
type SystemSettingsModule struct{}
|
||||
|
||||
func (SystemSettingsModule) RegisterRoutes(router fiber.Router, db *gorm.DB, validate *validator.Validate) {
|
||||
repo := repository.NewSystemSettingRepository(db)
|
||||
svc := service.NewSystemSettingService(repo)
|
||||
SystemSettingRoutes(router, svc)
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type SystemSettingRepository interface {
|
||||
Get(ctx context.Context, key string) (*entity.SystemSetting, error)
|
||||
Set(ctx context.Context, key, value string) error
|
||||
List(ctx context.Context) ([]entity.SystemSetting, error)
|
||||
GetAllowNegativePakanOVK(ctx context.Context) (bool, error)
|
||||
}
|
||||
|
||||
type systemSettingRepositoryImpl struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewSystemSettingRepository(db *gorm.DB) SystemSettingRepository {
|
||||
return &systemSettingRepositoryImpl{db: db}
|
||||
}
|
||||
|
||||
func (r *systemSettingRepositoryImpl) Get(ctx context.Context, key string) (*entity.SystemSetting, error) {
|
||||
var setting entity.SystemSetting
|
||||
if err := r.db.WithContext(ctx).Where("key = ?", key).First(&setting).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &setting, nil
|
||||
}
|
||||
|
||||
func (r *systemSettingRepositoryImpl) Set(ctx context.Context, key, value string) error {
|
||||
return r.db.WithContext(ctx).
|
||||
Model(&entity.SystemSetting{}).
|
||||
Where("key = ?", key).
|
||||
Updates(map[string]interface{}{
|
||||
"value": value,
|
||||
"updated_at": time.Now(),
|
||||
}).Error
|
||||
}
|
||||
|
||||
func (r *systemSettingRepositoryImpl) List(ctx context.Context) ([]entity.SystemSetting, error) {
|
||||
var settings []entity.SystemSetting
|
||||
if err := r.db.WithContext(ctx).Order("key ASC").Find(&settings).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
|
||||
func (r *systemSettingRepositoryImpl) GetAllowNegativePakanOVK(ctx context.Context) (bool, error) {
|
||||
setting, err := r.Get(ctx, entity.SystemSettingKeyAllowNegativePakanOVK)
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return false, nil
|
||||
}
|
||||
return false, err
|
||||
}
|
||||
return setting.Value == "true", nil
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package systemsettings
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
controller "gitlab.com/mbugroup/lti-api.git/internal/modules/system-settings/controllers"
|
||||
service "gitlab.com/mbugroup/lti-api.git/internal/modules/system-settings/services"
|
||||
m "gitlab.com/mbugroup/lti-api.git/internal/middleware"
|
||||
)
|
||||
|
||||
func SystemSettingRoutes(v1 fiber.Router, svc service.SystemSettingService) {
|
||||
ctrl := controller.NewSystemSettingController(svc)
|
||||
|
||||
route := v1.Group("/system-settings")
|
||||
route.Get("/", ctrl.GetAll)
|
||||
route.Patch("/allow-negative-pakan-ovk", m.RequirePermissions(m.P_SystemSettingUpdate), ctrl.SetAllowNegativePakanOVK)
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
|
||||
repository "gitlab.com/mbugroup/lti-api.git/internal/modules/system-settings/repositories"
|
||||
)
|
||||
|
||||
type SystemSettingService interface {
|
||||
GetAll(ctx context.Context) ([]entity.SystemSetting, error)
|
||||
GetAllowNegativePakanOVK(ctx context.Context) (bool, error)
|
||||
SetAllowNegativePakanOVK(ctx context.Context, allow bool) error
|
||||
}
|
||||
|
||||
type systemSettingService struct {
|
||||
Repository repository.SystemSettingRepository
|
||||
}
|
||||
|
||||
func NewSystemSettingService(repo repository.SystemSettingRepository) SystemSettingService {
|
||||
return &systemSettingService{Repository: repo}
|
||||
}
|
||||
|
||||
func (s *systemSettingService) GetAll(ctx context.Context) ([]entity.SystemSetting, error) {
|
||||
settings, err := s.Repository.List(ctx)
|
||||
if err != nil {
|
||||
return nil, fiber.NewError(fiber.StatusInternalServerError, "Gagal mengambil system settings")
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
|
||||
func (s *systemSettingService) GetAllowNegativePakanOVK(ctx context.Context) (bool, error) {
|
||||
return s.Repository.GetAllowNegativePakanOVK(ctx)
|
||||
}
|
||||
|
||||
func (s *systemSettingService) SetAllowNegativePakanOVK(ctx context.Context, allow bool) error {
|
||||
value := "false"
|
||||
if allow {
|
||||
value = "true"
|
||||
}
|
||||
if err := s.Repository.Set(ctx, entity.SystemSettingKeyAllowNegativePakanOVK, value); err != nil {
|
||||
return fiber.NewError(fiber.StatusInternalServerError, "Gagal mengubah setting allow_negative_pakan_ovk")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user