package lts

import (
	"encoding/json"
	"fleetmanager/api/errors"
	ltsmodel "fleetmanager/api/model/lts"
	"fleetmanager/api/service/constants"
	"fleetmanager/client"
	"fleetmanager/db/dao"
	"fmt"
	"net/http"
)

// 更新主机组
func (s *LtsService) UpdateHostGroup(projectId string) *errors.CodedError {
	u, err := dao.GetUserResConfByOriProjectId(projectId)
	if err != nil {
		s.logger.Error("get user res conf error: %v", err)
		return errors.NewError(errors.DBError)
	}

	url := client.GetServiceEndpoint(client.ServiceNameAASS, u.Region) +
		fmt.Sprintf(constants.ScalingGroupLtsLogTransfer, projectId)
	req := client.NewRequest(client.ServiceNameAASS, url, http.MethodPut, nil)
	_, _, err = req.DoRequest()

	if err != nil {
		s.logger.Error("update err:%+v", err.Error())
		return errors.NewError(errors.LtsLogGroupError)
	}
	return nil
}

// 更新日志接入
func (s *LtsService) UpdateAccessConfig(projectId string,
	config ltsmodel.UpdateAccessConfigToDB) (code int, rsp []byte, e *errors.CodedError) {
	u, err := dao.GetUserResConfByOriProjectId(projectId)
	if err != nil {
		s.logger.Error("get user res conf error: %v", err)
		return 0, nil, errors.NewError(errors.DBError)
	}
	body, err := json.Marshal(config)
	if err != nil {
		return 0, nil, errors.NewError(errors.ServerInternalError)
	}
	url := client.GetServiceEndpoint(client.ServiceNameAASS, u.Region) +
		fmt.Sprintf(constants.ScalingGroupLtsAccessConfig, projectId)
	req := client.NewRequest(client.ServiceNameAASS, url, http.MethodPut, body)
	code, rsp, err = req.DoRequest()
	if code < http.StatusOK || code >= http.StatusBadRequest {
		return code, rsp, errors.NewErrorF(errors.LtsAccessConfigError, string(rsp))
	}
	return code, rsp, nil
}