Update Partner
This commit is contained in:
parent
5396128818
commit
1126410375
@ -107,6 +107,7 @@ type User interface {
|
|||||||
GetAllUsers(ctx context.Context, req entity.UserSearch) (entity.UserList, int, error)
|
GetAllUsers(ctx context.Context, req entity.UserSearch) (entity.UserList, int, error)
|
||||||
GetAllCustomer(ctx context.Context, req entity.CustomerSearch) (entity.CustomerList, int, error)
|
GetAllCustomer(ctx context.Context, req entity.CustomerSearch) (entity.CustomerList, int, error)
|
||||||
GetUserByID(ctx context.Context, id int64) (*entity.UserDB, 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)
|
GetUserByEmail(ctx context.Context, email string) (*entity.UserDB, error)
|
||||||
UpdateUser(ctx context.Context, user *entity.UserDB) (*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)
|
UpdateUserWithTx(ctx context.Context, tx *gorm.DB, user *entity.UserDB) (*entity.UserDB, error)
|
||||||
|
|||||||
@ -190,6 +190,27 @@ func (b *UserRepository) GetUserByID(ctx context.Context, id int64) (*entity.Use
|
|||||||
return user, nil
|
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) {
|
func (b *UserRepository) GetUserByEmail(ctx context.Context, email string) (*entity.UserDB, error) {
|
||||||
var user *entity.UserDB
|
var user *entity.UserDB
|
||||||
|
|
||||||
|
|||||||
@ -15,16 +15,20 @@ type PartnerService struct {
|
|||||||
trx repository.TransactionManager
|
trx repository.TransactionManager
|
||||||
userSvc *users.UserService
|
userSvc *users.UserService
|
||||||
walletRepo repository.WalletRepository
|
walletRepo repository.WalletRepository
|
||||||
|
userRepo repository.User
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPartnerService(repo repository.PartnerRepository,
|
func NewPartnerService(repo repository.PartnerRepository,
|
||||||
userSvc *users.UserService, repoManager repository.TransactionManager,
|
userSvc *users.UserService, repoManager repository.TransactionManager,
|
||||||
walletRepo repository.WalletRepository) *PartnerService {
|
walletRepo repository.WalletRepository,
|
||||||
|
userRepo repository.User,
|
||||||
|
) *PartnerService {
|
||||||
return &PartnerService{
|
return &PartnerService{
|
||||||
repo: repo,
|
repo: repo,
|
||||||
userSvc: userSvc,
|
userSvc: userSvc,
|
||||||
trx: repoManager,
|
trx: repoManager,
|
||||||
walletRepo: walletRepo,
|
walletRepo: walletRepo,
|
||||||
|
userRepo: userRepo,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,7 +110,14 @@ func (s *PartnerService) Update(ctx mycontext.Context, req *entity.PartnerUpdate
|
|||||||
return nil, err
|
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)
|
adminUser := req.ToUserAdmin(&req.ID)
|
||||||
if adminUser, err = s.userSvc.UpdateWithTx(ctx, tx, adminUser); err != nil {
|
if adminUser, err = s.userSvc.UpdateWithTx(ctx, tx, adminUser); err != nil {
|
||||||
logger.ContextLogger(ctx).Error("error when creating admin user", zap.Error(err))
|
logger.ContextLogger(ctx).Error("error when creating admin user", zap.Error(err))
|
||||||
|
|||||||
@ -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),
|
OrderSvc: order.NewOrderService(repo.Order, repo.Product, repo.Crypto, repo.Midtrans, repo.Payment, repo.Trx, repo.Wallet, &cfg.Order),
|
||||||
OSSSvc: oss.NewOSSService(repo.OSS),
|
OSSSvc: oss.NewOSSService(repo.OSS),
|
||||||
PartnerSvc: partner.NewPartnerService(
|
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),
|
SiteSvc: site.NewSiteService(repo.Site),
|
||||||
LicenseSvc: service.NewLicenseService(repo.License),
|
LicenseSvc: service.NewLicenseService(repo.License),
|
||||||
Transaction: transaction.New(repo.Transaction, repo.Wallet, repo.Trx),
|
Transaction: transaction.New(repo.Transaction, repo.Wallet, repo.Trx),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user