package main

//
//
//import (
//	"database/sql"
//	"fmt"
//	"io/ioutil"
//	"log"
//	"net/http"
//	"os"
//	"strings"
//)
//
//func aes() (ret string) {
//	file, err := os.Open("aes.txt") //只是用来读的时候，用os.Open。相对路径，针对于同目录下
//	if err != nil {
//		fmt.Printf("打开文件失败,err:%v\n", err)
//		return
//	}
//	defer file.Close() //关闭文件,为了避免文件泄露和忘记写关闭文件
//	//读取文件内容
//	var qiepian = make([]byte, 16) //做一个大小为128字节的切片
//	n, err := file.Read(qiepian)   //file.Read里面是一个切片.如果读取成功,那么值声明变量n并同时赋值给n
//	//判断
//	if err != nil {
//		fmt.Printf("读取文件错误,错误值为:%v\n", err)
//		return
//	}
//	fmt.Printf("读取文件成功,文件字节大小为:%d\n", n)
//	fmt.Println(string(qiepian))
//	ret = string(qiepian)
//	return ret
//
//}
//func UpdatePageOncall(tData *PageData) {
//	weekRow, err := getDB().Query("select fn_week_id(now())")
//	if err != nil {
//		panic(err)
//	}
//	defer weekRow.Close()
//	var currWeek float32
//	for weekRow.Next() {
//		err = weekRow.Scan(&currWeek)
//		if err != nil {
//			log.Fatal(err)
//		}
//	}
//	weekBool, err := getDB().Query("SELECT DISTINCT week_id FROM page_oncall")
//	if err != nil {
//		panic(err)
//	}
//	defer weekBool.Close()
//	var currWeekBool float32
//	for weekBool.Next() {
//		err = weekBool.Scan(&currWeekBool)
//		if err != nil {
//			log.Fatal(err)
//		}
//	} //用currWeekBool来判断是否需要修改
//	if currWeek == currWeekBool {
//		print("No update required")
//	} else {
//		rows0, err := getDB().Query("UPDATE page_oncall set is_change=0")
//		if err != nil {
//			panic(err)
//		} //清除修改
//		defer rows0.Close()
//		rows2, err := getDB().Query("SELECT id_chose,category_id FROM page_oncall WHERE id_chose<=3 and id_chose>=0")
//		if err != nil {
//			panic(err)
//		}
//		defer rows2.Close()
//		var numbers map[int]int
//		numbers = make(map[int]int)
//		for rows2.Next() {
//			var id_chose int
//			var category_id int
//			err := rows2.Scan(&id_chose, &category_id)
//			if err != nil {
//				panic(err)
//			}
//			numbers[id_chose] = category_id
//
//		} //找出需要做选择的部分
//
//		rows3, err := getDB().Query("UPDATE page_oncall set id_chose=(id_chose+1)%4 where id_chose<=3 and id_chose>=0")
//		if err != nil {
//			panic(err)
//		} //循环修改
//		defer rows3.Close()
//		for key, value := range numbers {
//			rows4, err := getDB().Query("UPDATE page_oncall set category_id=? WHERE id_chose=?", value, key)
//			if err != nil {
//				panic(err)
//			}
//			defer rows4.Close()
//		} //调整对应关系
//
//		rows, err := getDB().Query("select  c2.category_id,c1.category_id,engineers.engineer_id,engineer_name, engineer_en_name  from categories as c1 left join categories as c2 on c1.parent_category_id = c2.category_id, shift, engineers, t_week_id where c1.category_id = shift.category_id and shift.engineer_id = engineers.engineer_id and shift.week_id = fn_week_id(now()) and t_week_id.id = shift.week_id and c1.enable = 1")
//		if err != nil {
//			panic(err)
//		}
//		defer rows.Close()
//		for rows.Next() {
//			var category_id_pa int
//			var category_id int
//			var engineer_id int
//			var engineer_name string
//			var engineer_en_name sql.NullString
//			err := rows.Scan(&category_id_pa, &category_id, &engineer_id, &engineer_name, &engineer_en_name)
//			if err != nil {
//				log.Fatal(err)
//			}
//			rows1b, err := getDB().Query("UPDATE page_oncall set engineer_name=? , week_id=?,engineer_id=?,is_change=1 where category_id=? and is_change=0 and uni_id=(select * from (select min(uni_id) from page_oncall where category_id=? and is_change=0)t )  ", engineer_en_name, currWeek, engineer_id, category_id, category_id)
//			if err != nil {
//				panic(err)
//			}
//			defer rows1b.Close() //将engineer信息更新进来
//
//			//rowsuni, erruni := getDB().Query("select  uni_id from page_oncall where category_id=?", category_id) //db为sql.DB
//			//if erruni != nil {
//			//	panic(err)
//			//}
//			//defer rowsuni.Close()
//			//for rowsuni.Next() {
//			//	var uni_category int
//			//	err := rowsuni.Scan(&uni_category)
//			//	if err != nil {
//			//		log.Fatal(err)
//			//	}
//			//	rows1b, err := getDB().Query("UPDATE page_oncall set engineer_name=? , week_id=? where category_id=? and is_change=0 and uni_id in (select min(uni_id) from page_oncall where category_id=?)  ", engineer_en_name, currWeek, category_id,category_id )
//			//	if err != nil {
//			//		panic(err)
//			//	}
//			//	defer rows1b.Close() //将engineer信息更新进来
//			//}
//			//if uni_category >= 2 {
//			//	rows1a, err := getDB().Query("UPDATE page_oncall set engineer_name=?,,week_id=? where category_id=? and uni_id in (select max(uni_id) from t_user group by  user_name )  ", engineer_en_name, engineer_id, currWeek, category_id)
//			//	if err != nil {
//			//		panic(err)
//			//	}
//			//	defer rows1a.Close() //将engineer信息更新进来
//			//} else {
//			//	rows1b, err := getDB().Query("UPDATE page_oncall set engineer_name=?,,week_id=? where category_id=?  ", engineer_en_name, engineer_id, currWeek, category_id)
//			//	if err != nil {
//			//		panic(err)
//			//	}
//			//	defer rows1b.Close() //将engineer信息更新进来
//			//}
//
//		}
//		var aesStr string
//		aesStr = aes() //取aes加密
//		rows5, err := getDB().Query("SELECT page_id,engineer_id,engineer_name,page_con_id,page_sms_id FROM page_oncall")
//		if err != nil {
//			panic(err)
//		}
//		defer rows5.Close()
//		for rows5.Next() {
//			var page_id string
//			var engineer_id int
//			var engineer_name string
//			var page_con_id string
//			var page_sms_id string
//			//var phone_number string
//			err := rows5.Scan(&page_id, &engineer_id, &engineer_name, &page_con_id, &page_sms_id)
//			if err != nil {
//				log.Fatal(err)
//			}
//			rows6, err := getDB().Query("select cast(aes_decrypt(cast(phone_number  as char charset binary),'pingcap',?) as char) from engineers where engineer_id = ?;", aesStr, engineer_id)
//			if err != nil {
//				panic(err)
//			}
//			defer rows6.Close()
//			for rows6.Next() {
//				var phone_number string
//				err := rows6.Scan(&phone_number)
//				if err != nil {
//					log.Fatal(err)
//				}
//
//				//url := "https://api.pagerduty.com/users/" + "PIPA8A2" + "/contact_methods/" + "PSZP72W"
//
//				url := "https://api.pagerduty.com/users/" + page_id + "/contact_methods/" + page_con_id
//				payload := strings.NewReader("{\n  \"contact_method\": {\n        \"address\":" + "\"" + phone_number + "\"" + "\n     }\n}")
//				req, _ := http.NewRequest("PUT", url, payload)
//				req.Header.Add("Content-Type", "application/json")
//				req.Header.Add("Accept", "application/vnd.pagerduty+json;version=2")
//				req.Header.Add("Authorization", "Token token=u+jVLmVAHTykCgkw2PYQ")
//				res, _ := http.DefaultClient.Do(req)
//				defer res.Body.Close()
//				body, _ := ioutil.ReadAll(res.Body)
//				fmt.Println(res)
//				fmt.Println(string(body)) //修改contact
//
//				url_sms := "https://api.pagerduty.com/users/" + page_id + "/contact_methods/" + page_sms_id
//				payload_sms := strings.NewReader("{\n  \"contact_method\": {\n        \"address\":" + "\"" + phone_number + "\"" + "\n     }\n}")
//				req_sms, _ := http.NewRequest("PUT", url_sms, payload_sms)
//				req_sms.Header.Add("Content-Type", "application/json")
//				req_sms.Header.Add("Accept", "application/vnd.pagerduty+json;version=2")
//				req_sms.Header.Add("Authorization", "Token token=u+jVLmVAHTykCgkw2PYQ")
//				res_sms, _ := http.DefaultClient.Do(req_sms)
//				defer res_sms.Body.Close() //修改sms
//			}
//
//			url := "https://api.pagerduty.com/users/" + string(page_id)
//			//url := "https://api.pagerduty.com/users/" + string("PIPA8A2")
//			var val = engineer_name
//			payload := strings.NewReader("{\n  \"user\": {\n    \"type\": \"user\",\n    \"name\":" + "\"" + val + "\"" + "\n      }\n}")
//
//			req, _ := http.NewRequest("PUT", url, payload)
//
//			req.Header.Add("Content-Type", "application/json")
//			req.Header.Add("Accept", "application/vnd.pagerduty+json;version=2")
//			req.Header.Add("Authorization", "Token token=u+jVLmVAHTykCgkw2PYQ")
//
//			res, _ := http.DefaultClient.Do(req)
//
//			defer res.Body.Close() //修改信息
//		}
//	}
//	//}
//}
//
//func main() {
//	//var userId = [10]string{"s", "s", "s"}
//	//for value := range userId {
//	//	fmt.Println(value)
//	//}
//	//t, _ := template.ParseFiles("templates/index.html")
//	tData := &PageData{}
//	tData.ShiftOverview = make(map[int][]string)
//	tData.ShiftList = make(map[string][]*EWPair)
//	UpdatePageOncall(tData)
//
//}
