package main

// import (
// 	"encoding/json"
// 	"fmt"
// 	"net/http"
// 	"strings"
// 	"time"

// 	"github.com/pingcap/log"
// 	jira "github.com/zhouqiang-cl/go-jira"
// 	"go.uber.org/zap"

// 	"github.com/pingcap-inc/clinic/pkg/api"
// 	"github.com/pingcap-inc/clinic/pkg/db"
// 	"github.com/pingcap-inc/clinic/pkg/jiradb/model"
// )

// func SyncBindRequest(ch <-chan time.Time) error {
// 	tp := jira.BasicAuthTransport{
// 		Username: jiraUser,
// 		Password: jiraPass,
// 	}
// 	client, err := jira.NewClient(tp.Client(), "https://internal.pingcap.net/jira/")
// 	if err != nil {
// 		return err
// 	}
// 	for range ch {
// 		requests, err := FetchRecentBindRequest()
// 		if err != nil {
// 			log.Error("fetch bind requests list failed", zap.Error(err))
// 			continue
// 		}
// 		for _, request := range requests {
// 			if err := commentIssueForRequest(client, request); err != nil {
// 				log.Error("comment jira issue failed", zap.Uint("issue-num", request.IssueNumber), zap.Error(err))
// 			}
// 		}
// 	}
// 	return nil
// }

// func commentIssueForRequest(client *jira.Client, request db.JiraIssueBindRequest) error {
// 	issue, err := model.GetIssueByKey(oncallProjectKey, request.IssueNumber)
// 	if err != nil {
// 		return err
// 	}
// 	comments, err := model.ListCommentByIssueId(issue.ID)
// 	if err != nil {
// 		return err
// 	}
// 	// Ignore issues that has already commented
// 	for _, comment := range comments {
// 		if strings.Contains(comment.ActionBody, request.FileUUID) {
// 			return nil
// 		}
// 	}
// 	jiraComment := &jira.Comment{
// 		Body: fmt.Sprintf("Related clinic file link: %s/diag/files?uuid=%s", endpoint, request.FileUUID),
// 	}
// 	if _, _, err := client.Issue.AddComment(fmt.Sprintf("%d", issue.ID), jiraComment); err != nil {
// 		fmt.Println("error", err)
// 		return err
// 	}
// 	return nil
// }

// func FetchRecentBindRequest() ([]db.JiraIssueBindRequest, error) {
// 	req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/api/system/associations/requests/file/jira-issues", endpoint), nil)
// 	if err != nil {
// 		return nil, err
// 	}
// 	resp, err := request(req)
// 	if err != nil {
// 		return nil, err
// 	}
// 	defer resp.Body.Close()
// 	var r api.BindRequestResponse
// 	if err := json.NewDecoder(resp.Body).Decode(&r); err != nil {
// 		return nil, err
// 	}
// 	return r.Requests, nil
// }
