Update Mitra

This commit is contained in:
aditya.siregar
2024-07-30 14:18:18 +07:00
parent efac497db7
commit f3fbe9ba10
11 changed files with 260 additions and 66 deletions
+16 -3
View File
@@ -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) {
+1
View File
@@ -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 {
+17 -1
View File
@@ -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))
}