package api

import (
	"fmt"

	"github.com/gin-gonic/gin"
)

// RegRouters 注册路由
func RegRouters(svc *Service) {
	root := svc.NewGinRouter("/")
	root.group.Use(Logger())

	// 用户登录
	root.POST("/user/login/password", UserLoginPassword)
	// 用户管理
	root.POSTJWT("/admin/user/create", CreateUser)
	root.POSTJWT("/admin/user/delete/:id", DeleteUser)
	root.GETJWT("/admin/user/list", UserList)
	root.GETJWT("/admin/user/detail/:id", UserDetail)
	root.POSTJWT("/admin/user/update", UpdateUser)

	// 获取自己的详情信息
	root.GETJWT("/user/profile", UserProfile)

	// 分类管理
	root.POSTJWT("/category/create", CreateCategory)
	root.POSTJWT("/category/delete/:id", DeleteCategory)
	root.GET("/category/list", CategoryList)
	root.POSTJWT("/category/update", UpdateCategory)

	// 学习记录
	root.POSTJWT("/learnLog/create/:scope", CreateLearnLog)
	root.POSTJWT("/learnLog/sync/time/:id/:scope", SyncLearnTime)

	// 考核试题管理
	root.POSTJWT("/admin/test/create/:scope", CreateTest)
	root.POSTJWT("/admin/test/delete/:id/:scope", DeleteTest)
	root.GETJWT("/admin/test/list/:scope", TestList)
	root.GETJWT("/admin/test/detail/:id/:scope", TestDetail)
	root.POSTJWT("/admin/test/update/:scope", UpdateTest)

	// 生成考核试题
	root.POSTJWT("/exeam/generate/:scope", GenerateExeam)

	// 提交考核记录
	root.POSTJWT("/exeamLog/submit/:scope", SubmitExeamLog)
	// 考核记录列表
	root.GETJWT("/exeamLog/list/:scope", ExeamLogList)

	// todo

	// 学习记录统计 / 考核记录统计
	// 管理员:选择学员查看,理论和实操分开
	// 学习记录统计: x月份 y时长
	// 考核记录统计: 历史考核记录[v] | 考核列表

	// 考虑创建一张统计表,学习完成把当前学习时长写入统计表

}

func Logger() gin.HandlerFunc {

	return func(c *gin.Context) {
		// 开始时间
		// start := time.Now()
		// 处理请求
		c.Next()
		// 结束时间
		// end := time.Now()
		//执行时间
		// latency := end.Sub(start)

		path := c.Request.URL.Path

		clientIP := c.ClientIP()
		// method := c.Request.Method
		// statusCode := c.Writer.Status()

		out := fmt.Sprintf(" =>%15s=> %s", clientIP, path)
		fmt.Println(out)
	}
}
