package services

import (
	"fmt"
	"github.com/tealeg/xlsx"
	"hongze/hongze_task/models"
	"hongze/hongze_task/utils"
	"os"
	"time"
)

//报告历史访问次数
func ReportViewTimes() (err error) {
	defer func() {
		if err != nil {
			fmt.Println("crete ReportViewTimes err:", err.Error())
			utils.FileLog.Info("crete ReportViewTimes err: %s", err.Error())
		}
	}()

	//创建excel
	file := xlsx.NewFile()
	sheet, err := file.AddSheet("用户访问次数")
	if err != nil {
		return err
	}
	//标头
	rowTitle := sheet.AddRow()
	cellA := rowTitle.AddCell()
	cellA.Value = "用户名称"
	cellB := rowTitle.AddCell()
	cellB.Value = "公司名称"
	cellC := rowTitle.AddCell()
	cellC.Value = "历史访问次数"
	cellD := rowTitle.AddCell()
	cellD.Value = "最近一次访问日期"

	rddpItems,err:=models.GetRddpHistoryViewTimes()

	items, err := models.GetHistoryViewTimes()

	if err != nil {
		return err
	}
	for _, item := range items {

		row := sheet.AddRow()
		cellA := row.AddCell()
		cellA.Value = item.RealName
		cellB := row.AddCell()
		cellB.Value = item.CompanyName
		cellC := row.AddCell()
		cellC.SetInt(item.ViewCount)
		cellD := row.AddCell()
		cellD.Value = item.CreateTime
	}

	for _, item := range rddpItems {
		row := sheet.AddRow()
		cellA := row.AddCell()
		cellA.Value = item.RealName
		cellB := row.AddCell()
		cellB.Value = item.CompanyName
		cellC := row.AddCell()
		cellC.SetInt(item.ViewCount)
		cellD := row.AddCell()
		cellD.Value = item.CreateTime
	}

	title := "用户访问次数"
	savePath := "report_view_times" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
	err = file.Save("./" + savePath)
	if err != nil {
		return
	}
	//发送邮件
	content := "你好，上周用户访问次数见附件。"
	fmt.Println("start send email")
	sendResult := utils.SendEmailByHongze(title, content, utils.EmailSendToHzUsers, savePath,title+".xlsx")
	//sendResult:=utils.SendEmailByHongze(title,content,utils.EmailSendToMe,savePath)
	if sendResult {
		os.Remove(savePath)
	}
	fmt.Println("send result:", sendResult)
	fmt.Println("end send email")
	return nil
}

//报告访问详情
func ReportViewDetail() (err error) {
	defer func() {
		if err != nil {
			fmt.Println("crete ReportViewDetail err:", err.Error())
			utils.FileLog.Info("crete ReportViewDetail err: %s", err.Error())
		}
	}()
	typeList := make([]*models.ReportType, 0)
	day := new(models.ReportType)
	day.TypeName = "晨报"
	day.TypeValue = "day"
	typeList = append(typeList, day)

	week := new(models.ReportType)
	week.TypeName = "周报"
	week.TypeValue = "week"
	typeList = append(typeList, week)

	two_week := new(models.ReportType)
	two_week.TypeName = "双周报"
	two_week.TypeValue = "two_week"
	typeList = append(typeList, two_week)

	month := new(models.ReportType)
	month.TypeName = "月报"
	month.TypeValue = "month"
	typeList = append(typeList, month)

	other := new(models.ReportType)
	other.TypeName = "数据点评"
	other.TypeValue = "other"
	typeList = append(typeList, other)

	rddp := new(models.ReportType)
	rddp.TypeName = "日度点评"
	rddp.TypeValue = "rddp"
	typeList = append(typeList, rddp)

	startTime := time.Now().AddDate(0, 0, -7).Format(utils.FormatDateTime)
	endTime := time.Now().Format(utils.FormatDateTime)
	//创建excel
	file := xlsx.NewFile()
	for _, v := range typeList {
		fmt.Println(v.TypeName, v.TypeValue)
		if v.TypeValue == "rddp" {
			sheet, err := file.AddSheet(v.TypeName + "阅读统计")
			if err != nil {
				return err
			}
			//标头
			rowTitle := sheet.AddRow()
			cellA := rowTitle.AddCell()
			cellA.Value = "用户名称"
			cellB := rowTitle.AddCell()
			cellB.Value = "公司名称"
			cellC := rowTitle.AddCell()
			cellC.Value = "访问时间"
			cellD := rowTitle.AddCell()
			cellD.Value = "访问标题"
			cellF := rowTitle.AddCell()
			cellF.Value = "报告类型"

			items, err := models.GetRddpReportViewersDetail(startTime, endTime)
			if err != nil {
				return err
			}
			for _, item := range items {
				row := sheet.AddRow()
				cellA := row.AddCell()
				cellA.Value = item.RealName
				cellB := row.AddCell()
				cellB.Value = item.CompanyName
				cellC := row.AddCell()
				cellC.Value = item.CreatedTime
				cellD := row.AddCell()
				cellD.Value = item.ResearchReportName + "(" + item.ReportCreateDate + ")"
				cellE := row.AddCell()
				cellE.Value = v.TypeName
			}
		} else {
			sheet, err := file.AddSheet(v.TypeName + "研报阅读统计")
			if err != nil {
				return err
			}
			//标头
			rowTitle := sheet.AddRow()
			cellA := rowTitle.AddCell()
			cellA.Value = "用户名称"
			cellB := rowTitle.AddCell()
			cellB.Value = "公司名称"
			cellC := rowTitle.AddCell()
			cellC.Value = "访问时间"
			cellD := rowTitle.AddCell()
			cellD.Value = "访问标题"
			cellE := rowTitle.AddCell()
			cellE.Value = "访问页面"
			cellF := rowTitle.AddCell()
			cellF.Value = "报告类型"

			items, err := models.GetResearchReportViewersDetail(startTime, endTime, v.TypeValue)
			if err != nil {
				return err
			}
			for _, item := range items {
				row := sheet.AddRow()
				cellA := row.AddCell()
				cellA.Value = item.RealName
				cellB := row.AddCell()
				cellB.Value = item.CompanyName
				cellC := row.AddCell()
				cellC.Value = item.CreatedTime
				cellD := row.AddCell()
				cellD.Value = item.ResearchReportName
				cellE := row.AddCell()
				cellE.Value = item.ReportVariety
				cellF := row.AddCell()
				cellF.Value = v.TypeName
			}
		}
	}
	title := "研报阅读统计报表"
	savePath := "report_view_detail"+ time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
	err = file.Save("./" + savePath)
	if err != nil {
		return
	}
	//发送邮件
	fmt.Println("start send email")
	sendResult := utils.SendEmailByHongze(title, "你好，上周研报阅读统计见附件。", utils.EmailSendToHzUsers, savePath,title+".xlsx")
	//sendResult:=utils.SendEmailByHongze(title,"你好，上周研报阅读统计见附件。",utils.EmailSendToMe,savePath)
	if sendResult {
		os.Remove(savePath)
	}
	fmt.Println("send result:", sendResult)
	fmt.Println("end send email")
	return nil
}
