fix : update logo clients

This commit is contained in:
hanif salafi 2025-10-12 17:36:38 +07:00
parent 840acca7fe
commit 88db076da6
2 changed files with 19 additions and 10 deletions

View File

@ -30,7 +30,7 @@ func NewClientLogoUploadService(minioStorage *config.MinioStorage, log zerolog.L
} }
// UploadLogo uploads client logo to MinIO and returns the image path // UploadLogo uploads client logo to MinIO and returns the image path
func (s *ClientLogoUploadService) UploadLogo(c *fiber.Ctx, clientId, clientName string) (string, error) { func (s *ClientLogoUploadService) UploadLogo(c *fiber.Ctx, clientId, clientName string) (string, string, error) {
s.Log.Info(). s.Log.Info().
Str("UploadLogo", clientId). Str("UploadLogo", clientId).
@ -39,7 +39,7 @@ func (s *ClientLogoUploadService) UploadLogo(c *fiber.Ctx, clientId, clientName
// Get the uploaded file // Get the uploaded file
file, err := c.FormFile("logo") file, err := c.FormFile("logo")
if err != nil { if err != nil {
return "", fmt.Errorf("failed to get uploaded file: %w", err) return "", "", fmt.Errorf("failed to get uploaded file: %w", err)
} }
s.Log.Info(). s.Log.Info().
@ -47,7 +47,7 @@ func (s *ClientLogoUploadService) UploadLogo(c *fiber.Ctx, clientId, clientName
// Validate file type // Validate file type
if !s.isValidImageType(file.Filename) { if !s.isValidImageType(file.Filename) {
return "", fmt.Errorf("invalid file type. Only jpg, jpeg, png, gif, webp are allowed") return "", "", fmt.Errorf("invalid file type. Only jpg, jpeg, png, gif, webp are allowed")
} }
s.Log.Info(). s.Log.Info().
@ -56,13 +56,13 @@ func (s *ClientLogoUploadService) UploadLogo(c *fiber.Ctx, clientId, clientName
// Validate file size (max 5MB) // Validate file size (max 5MB)
const maxSize = 5 * 1024 * 1024 // 5MB const maxSize = 5 * 1024 * 1024 // 5MB
if file.Size > maxSize { if file.Size > maxSize {
return "", fmt.Errorf("file size too large. Maximum size is 5MB") return "", "", fmt.Errorf("file size too large. Maximum size is 5MB")
} }
// Create MinIO connection // Create MinIO connection
minioClient, err := s.MinioStorage.ConnectMinio() minioClient, err := s.MinioStorage.ConnectMinio()
if err != nil { if err != nil {
return "", fmt.Errorf("failed to connect to MinIO: %w", err) return "", "", fmt.Errorf("failed to connect to MinIO: %w", err)
} }
bucketName := s.MinioStorage.Cfg.ObjectStorage.MinioStorage.BucketName bucketName := s.MinioStorage.Cfg.ObjectStorage.MinioStorage.BucketName
@ -77,7 +77,7 @@ func (s *ClientLogoUploadService) UploadLogo(c *fiber.Ctx, clientId, clientName
// Open file // Open file
src, err := file.Open() src, err := file.Open()
if err != nil { if err != nil {
return "", fmt.Errorf("failed to open uploaded file: %w", err) return "", "", fmt.Errorf("failed to open uploaded file: %w", err)
} }
defer src.Close() defer src.Close()
@ -93,7 +93,7 @@ func (s *ClientLogoUploadService) UploadLogo(c *fiber.Ctx, clientId, clientName
}, },
) )
if err != nil { if err != nil {
return "", fmt.Errorf("failed to upload file to MinIO: %w", err) return "", "", fmt.Errorf("failed to upload file to MinIO: %w", err)
} }
s.Log.Info(). s.Log.Info().
@ -103,7 +103,7 @@ func (s *ClientLogoUploadService) UploadLogo(c *fiber.Ctx, clientId, clientName
Int64("fileSize", file.Size). Int64("fileSize", file.Size).
Msg("Client logo uploaded successfully") Msg("Client logo uploaded successfully")
return objectName, nil return objectName, filename, nil
} }
// DeleteLogo deletes client logo from MinIO // DeleteLogo deletes client logo from MinIO

View File

@ -19,12 +19,14 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
"github.com/rs/zerolog" "github.com/rs/zerolog"
config "netidhub-saas-be/config/config"
utilSvc "netidhub-saas-be/utils/service" utilSvc "netidhub-saas-be/utils/service"
) )
// ClientsService // ClientsService
type clientsService struct { type clientsService struct {
Repo repository.ClientsRepository Repo repository.ClientsRepository
Cfg *config.Config
UsersRepo usersRepository.UsersRepository UsersRepo usersRepository.UsersRepository
UsersSvc usersService.UsersService UsersSvc usersService.UsersService
ClientLogoUploadSvc *ClientLogoUploadService ClientLogoUploadSvc *ClientLogoUploadService
@ -60,10 +62,11 @@ type ClientsService interface {
} }
// NewClientsService init ClientsService // NewClientsService init ClientsService
func NewClientsService(repo repository.ClientsRepository, log zerolog.Logger, usersRepo usersRepository.UsersRepository, usersSvc usersService.UsersService, clientLogoUploadSvc *ClientLogoUploadService) ClientsService { func NewClientsService(repo repository.ClientsRepository, cfg *config.Config, log zerolog.Logger, usersRepo usersRepository.UsersRepository, usersSvc usersService.UsersService, clientLogoUploadSvc *ClientLogoUploadService) ClientsService {
return &clientsService{ return &clientsService{
Repo: repo, Repo: repo,
Cfg: cfg,
Log: log, Log: log,
UsersRepo: usersRepo, UsersRepo: usersRepo,
UsersSvc: usersSvc, UsersSvc: usersSvc,
@ -550,7 +553,7 @@ func (_i *clientsService) UploadLogo(authToken string, c *fiber.Ctx) (string, er
} }
// Upload logo using the upload service // Upload logo using the upload service
imagePath, err := _i.ClientLogoUploadSvc.UploadLogo(c, clientId.String(), client.Name) imagePath, newFilename, err := _i.ClientLogoUploadSvc.UploadLogo(c, clientId.String(), client.Name)
if err != nil { if err != nil {
_i.Log.Error().Err(err).Str("clientId", clientId.String()).Msg("Failed to upload client logo") _i.Log.Error().Err(err).Str("clientId", clientId.String()).Msg("Failed to upload client logo")
return "", err return "", err
@ -559,11 +562,17 @@ func (_i *clientsService) UploadLogo(authToken string, c *fiber.Ctx) (string, er
_i.Log.Info(). _i.Log.Info().
Str("Upload imagePath", imagePath).Msg("Client upload logo files") Str("Upload imagePath", imagePath).Msg("Client upload logo files")
logoUrl := fmt.Sprintf("%s/%s/%s", _i.Cfg.App.Domain, "clients/logo", newFilename)
// Update client with new logo image path // Update client with new logo image path
updateReq := request.ClientsUpdateRequest{ updateReq := request.ClientsUpdateRequest{
LogoImagePath: &imagePath, LogoImagePath: &imagePath,
LogoUrl: &logoUrl,
} }
_i.Log.Info().
Str("Upload Update Request", imagePath).Interface("updateReq ", updateReq).Msg("Client upload logo files")
err = _i.Repo.Update(clientId, updateReq.ToEntity()) err = _i.Repo.Update(clientId, updateReq.ToEntity())
if err != nil { if err != nil {
_i.Log.Error().Err(err).Str("clientId", clientId.String()).Str("imagePath", imagePath).Msg("Failed to update client with logo path") _i.Log.Error().Err(err).Str("clientId", clientId.String()).Str("imagePath", imagePath).Msg("Failed to update client with logo path")