package db

import (
	"context"
	"fmt"
	"youngee_b_api/model/gorm_model"
)

// CreateSubAccount 新建子账号
func CreateSubAccount(ctx context.Context, account gorm_model.YounggeeSubAccount) error {
	db := GetWriteDB(ctx)
	err := db.Create(&account).Error
	if err != nil {
		return err
	}
	return nil
}

// UpdateSubAccount 更新子账号
func UpdateSubAccount(ctx context.Context, account gorm_model.YounggeeSubAccount) error {
	db := GetWriteDB(ctx)
	whereCondition := gorm_model.YounggeeSubAccount{SubAccountId: account.SubAccountId}
	err := db.Model(&gorm_model.YounggeeSubAccount{}).Where(whereCondition).Updates(account).Error
	if err != nil {
		return err
	}
	return nil
}

// DeleteSubAccount 删除子账号
func DeleteSubAccount(ctx context.Context, account gorm_model.YounggeeSubAccount) error {
	db := GetWriteDB(ctx)
	whereCondition := gorm_model.YounggeeSubAccount{SubAccountId: account.SubAccountId}
	err := db.Where(whereCondition).Delete(&gorm_model.YounggeeSubAccount{}).Error
	if err != nil {
		return err
	}
	return nil
}

// FindSubAccountByPhone 根据手机号码查询子账号
func FindSubAccountByPhone(ctx context.Context, phone string) (*gorm_model.YounggeeSubAccount, error) {
	db := GetReadDB(ctx)
	var total int64
	var subAccount *gorm_model.YounggeeSubAccount
	whereCondition := gorm_model.YounggeeSubAccount{PhoneNumber: phone, SubAccountType: 3}
	err := db.Model(gorm_model.YounggeeSubAccount{}).Where(whereCondition).Find(&subAccount).Count(&total).Error
	if err != nil {
		return nil, err
	}
	fmt.Println(total)
	if total == 0 {
		return nil, err
	}
	return subAccount, nil
}

// FindSubAccountById 根据Id查询子账号
func FindSubAccountById(ctx context.Context, subAccountId int) (*gorm_model.YounggeeSubAccount, error) {
	db := GetReadDB(ctx)
	var total int64
	var subAccount *gorm_model.YounggeeSubAccount
	whereCondition := gorm_model.YounggeeSubAccount{SubAccountId: subAccountId, SubAccountType: 1}
	err := db.Model(gorm_model.YounggeeSubAccount{}).Where(whereCondition).Find(&subAccount).Count(&total).Error
	if err != nil {
		return nil, err
	}
	fmt.Println(total)
	if total == 0 {
		return nil, err
	}
	return subAccount, nil
}
