Update Partner

This commit is contained in:
aditya.siregar 2024-08-21 23:34:54 +07:00
parent 5396128818
commit 1126410375
4 changed files with 36 additions and 3 deletions

View File

@ -107,6 +107,7 @@ type User interface {
GetAllUsers(ctx context.Context, req entity.UserSearch) (entity.UserList, int, error)
GetAllCustomer(ctx context.Context, req entity.CustomerSearch) (entity.CustomerList, int, error)
GetUserByID(ctx context.Context, id int64) (*entity.UserDB, error)
GetPartnerAdmin(ctx context.Context, partnerID int64) (*entity.UserDB, error)
GetUserByEmail(ctx context.Context, email string) (*entity.UserDB, error)
UpdateUser(ctx context.Context, user *entity.UserDB) (*entity.UserDB, error)
UpdateUserWithTx(ctx context.Context, tx *gorm.DB, user *entity.UserDB) (*entity.UserDB, error)

View File

@ -190,6 +190,27 @@ func (b *UserRepository) GetUserByID(ctx context.Context, id int64) (*entity.Use
return user, nil
}
func (b *UserRepository) GetPartnerAdmin(ctx context.Context, partnerID int64) (*entity.UserDB, error) {
var user *entity.UserDB
partnerAdmin := 3
query := b.db.Table("users").
Select("users.id, users.email,users.phone_number,users.nik, users.password , users.name, users.status, users.created_at, users.updated_at, ur.role_id, r.role_name, ur.partner_id, b.name as partner_name").
Joins("LEFT JOIN user_roles ur ON users.id = ur.user_id").
Joins("LEFT JOIN roles r ON ur.role_id = r.role_id").
Joins("LEFT JOIN partners b ON ur.partner_id = b.id").
Where("ur.partner_id = ?", partnerID).
Where("ur.role_id = ?", partnerAdmin)
if err := query.Scan(&user).Error; err != nil {
logger.ContextLogger(ctx).Error("error when get user", zap.Error(err))
return nil, err
}
return user, nil
}
func (b *UserRepository) GetUserByEmail(ctx context.Context, email string) (*entity.UserDB, error) {
var user *entity.UserDB

View File

@ -15,16 +15,20 @@ type PartnerService struct {
trx repository.TransactionManager
userSvc *users.UserService
walletRepo repository.WalletRepository
userRepo repository.User
}
func NewPartnerService(repo repository.PartnerRepository,
userSvc *users.UserService, repoManager repository.TransactionManager,
walletRepo repository.WalletRepository) *PartnerService {
walletRepo repository.WalletRepository,
userRepo repository.User,
) *PartnerService {
return &PartnerService{
repo: repo,
userSvc: userSvc,
trx: repoManager,
walletRepo: walletRepo,
userRepo: userRepo,
}
}
@ -106,7 +110,14 @@ func (s *PartnerService) Update(ctx mycontext.Context, req *entity.PartnerUpdate
return nil, err
}
if req.AdminUserID != 0 {
partnerAdmin, err := s.userRepo.GetPartnerAdmin(ctx, req.ID)
if err != nil {
logger.ContextLogger(ctx).Error("error when get Partner admin", zap.Error(err))
return nil, err
}
if partnerAdmin != nil {
req.AdminUserID = partnerAdmin.ID
adminUser := req.ToUserAdmin(&req.ID)
if adminUser, err = s.userSvc.UpdateWithTx(ctx, tx, adminUser); err != nil {
logger.ContextLogger(ctx).Error("error when creating admin user", zap.Error(err))

View File

@ -53,7 +53,7 @@ func NewServiceManagerImpl(cfg *config.Config, repo *repository.RepoManagerImpl)
OrderSvc: order.NewOrderService(repo.Order, repo.Product, repo.Crypto, repo.Midtrans, repo.Payment, repo.Trx, repo.Wallet, &cfg.Order),
OSSSvc: oss.NewOSSService(repo.OSS),
PartnerSvc: partner.NewPartnerService(
repo.Partner, users.NewUserService(repo.User, repo.Branch), repo.Trx, repo.Wallet),
repo.Partner, users.NewUserService(repo.User, repo.Branch), repo.Trx, repo.Wallet, repo.User),
SiteSvc: site.NewSiteService(repo.Site),
LicenseSvc: service.NewLicenseService(repo.License),
Transaction: transaction.New(repo.Transaction, repo.Wallet, repo.Trx),