package msp

import (
	"context"

	"github.com/tidbcloud/account/admin/forms"
	"github.com/tidbcloud/account/internel/dao/entity"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"
)

func (s *MspSvc) CreateResalePartnerOrg(ctx context.Context, req forms.ResellerOrgReq) (resellerOrg *entity.Tenant, err error) {
	tilog.Info(ctx, "MspSvc CreateMCPOOrg ", zap.Any("req", req))
	if err := validateCreateResalePartnerOrg(ctx, s, req); err != nil {
		return nil, err
	}
	//var newOrg entity.Tenant
	org := entity.Tenant{
		Name:    req.Name,
		Alias:   req.Name,
		Email:   req.Email,
		Country: req.Country,

		Status: entity.TenantStatusActive,

		Kind:                "external",
		AcceptService:       true,
		OrgType:             entity.OrgTypePersonal,
		ThirdPartyFreeTrial: false,
		OrgTag:              string(entity.OrgTagResalePartner),
	}

	return s.hub.Org.CreateOrg(ctx, s.db, org)

}

func validateCreateResalePartnerOrg(ctx context.Context, s *MspSvc, mspOrg forms.ResellerOrgReq) (err error) {
	return validatePartnerDuplicated(ctx, s, mspOrg.Name, mspOrg.Email)
}
