Update Mitra
This commit is contained in:
@@ -54,12 +54,25 @@ func (b *PartnerRepository) UpdateWithTx(ctx context.Context, tx *gorm.DB, Partn
|
||||
}
|
||||
|
||||
func (b *PartnerRepository) GetByID(ctx context.Context, id int64) (*entity.PartnerDB, error) {
|
||||
Partner := new(entity.PartnerDB)
|
||||
if err := b.db.First(Partner, id).Error; err != nil {
|
||||
Partner := new(entity.PartnerDBSearch)
|
||||
|
||||
query := b.db.Table("partners p").
|
||||
Select("p.*, w.balance as wallet_balance, u.name as admin_name, u.email as admin_email, u.phone_number as admin_phone_number").
|
||||
Joins("LEFT JOIN wallets w ON w.partner_id = p.id").
|
||||
Joins("LEFT JOIN users u ON p.admin_user_id = u.id").
|
||||
Where("p.id = ? AND p.deleted_at IS NULL", id)
|
||||
|
||||
if err := query.First(&Partner).Error; err != nil {
|
||||
logger.ContextLogger(ctx).Error("error when get by id Partner", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
return Partner, nil
|
||||
|
||||
Partner.Partner.Balance = Partner.WalletBalance
|
||||
Partner.Partner.AdminName = Partner.AdminName
|
||||
Partner.Partner.AdminPhoneNumber = Partner.AdminPhoneNumber
|
||||
Partner.Partner.AdminEmail = Partner.AdminEmail
|
||||
|
||||
return &entity.PartnerDB{Partner.Partner}, nil
|
||||
}
|
||||
|
||||
func (b *PartnerRepository) GetAll(ctx context.Context, req entity.PartnerSearch) (entity.PartnerList, int, error) {
|
||||
|
||||
@@ -103,6 +103,7 @@ type User interface {
|
||||
GetUserByID(ctx context.Context, id 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)
|
||||
}
|
||||
|
||||
type Branch interface {
|
||||
|
||||
@@ -122,7 +122,7 @@ func (b *UserRepository) GetUserByID(ctx context.Context, id int64) (*entity.Use
|
||||
var user *entity.UserDB
|
||||
|
||||
query := b.db.Table("users").
|
||||
Select("users.id, users.email, users.name, users.status, users.created_at, users.updated_at, ur.role_id, r.role_name, ur.partner_id, b.name as partner_name").
|
||||
Select("users.id, users.email, 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").
|
||||
@@ -184,6 +184,22 @@ func (r *UserRepository) UpdateUser(ctx context.Context, user *entity.UserDB) (*
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (r *UserRepository) UpdateUserWithTx(ctx context.Context, tx *gorm.DB, user *entity.UserDB) (*entity.UserDB, error) {
|
||||
if err := tx.Select("name", "email", "nik", "phone_number", "password", "status", "deleted_at", "updated_by").Save(user).Error; err != nil {
|
||||
logError(ctx, "update user", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
userRole := user.ToUserRoleDB()
|
||||
if err := tx.Model(userRole).Where("user_id = ?", user.ID).Updates(userRole).Error; err != nil {
|
||||
tx.Rollback()
|
||||
logError(ctx, "update user role", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func logError(ctx context.Context, action string, err error) {
|
||||
logger.ContextLogger(ctx).Error("error when "+action, zap.Error(err))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user