package feishubot

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/larksuite/oapi-sdk-go/core"
	v1 "github.com/larksuite/oapi-sdk-go/service/im/v1"

	"github.com/pingcap-inc/lark-bots/v2/pkg/lark"
)

func MuteGithubBinding(app *App, email string, messageId string) error {
	err := app.DB.Exec("update hr_employees set comfirm = 2 where email = ?", email).Error
	respContent := "{\"text\":\"好的\"}"
	if err != nil {
		respContent = "{\"text\":\"抱歉，出错了！\"}"
	}

	reply := v1.MessageReplyReqBody{}
	reply.Content = respContent
	reply.MsgType = "text"
	req := app.Lark.LarkMessageService.Messages.Reply(core.WrapContext(context.Background()),
		&reply)
	req.SetMessageId(messageId)
	_, err = req.Do()

	return err
}

func SendGithubBindingMessage(lark *lark.Lark, email string, openId string) error {
	sender := lark.LarkMessageService.Messages.Create(core.WrapContext(context.Background()),
		&v1.MessageCreateReqBody{ReceiveId: openId,
			Content: fmt.Sprintf(GithubCardContent,
				fmt.Sprintf("%s-%d", email, time.Now().Unix())),
			MsgType: "interactive",
		})
	sender.SetReceiveIdType("open_id")
	message, err := sender.Do()
	if err != nil {
		log.Println("[error] Send Card err ", err, email)
	} else {
		log.Println("Send Card Message ", message)
	}

	return err
}

const GithubCardContent = `
{
  "config": {
    "wide_screen_mode": true
  },
  "header": {
    "template": "blue",
    "title": {
      "content": "小助手：请确认工作使用的 GitHub  账号信息是否准确",
      "tag": "plain_text"
    }
  },
  "elements": [
    {
      "tag": "div",
      "text": {
        "content": "亲爱的 PingCAPer， \n\n 为了维护小伙伴们日常工作使用的 GitHub 账号信息，本助手将定期与你确认并保持更新。\n请点击下面按钮进行 GitHub 身份认证，核对相关信息是否准确。提交后 GitHub 信息将会绑定到公司 HR 系统和产研的 devops 平台，感谢支持！",
        "tag": "lark_md"
      }
    },
    {
      "tag": "hr"
    },
    {
      "tag": "action",
      "actions": [
        {
          "tag": "button",
          "text": {
            "tag": "plain_text",
            "content": "点击开始确认"
          },
          "type": "primary",
          "url": "https://github.com/login/oauth/authorize?client_id=0b0ad5685cef219d4d00&redirect_uri=http://106.75.104.17:8080/webhook/github&state=%s&scope=user:email"
        }
      ]
    },
    {
      "tag": "note",
      "elements": [
        {
          "tag": "plain_text",
          "content": "本卡片召唤命令: bind-github"
        }
      ]
    },
    {
      "tag": "note",
      "elements": [
        {
          "tag": "plain_text",
          "content": "📌 不再接收本消息: mute-github-binding"
        }
      ]
    }
  ]
}
`
