package model

import (
	"fmt"
)

//类型迁移
func migration() {
	//自动迁移模式
	addTable(&ApprovalTypeGroup{})
	addTable(&BundlePayPrice{})
	addTable(&ApprovalCopy{})
	addTable(&ExhibitionReward{})
	addTable(&ApprovalReward{})

	addTable(&FinancialFormSetting{}) // 财务报表审批 设置信息
	addTable(&FinancialForm{})        // 财务报表审批

	addTable(&ApprovalOA{}) // OA

	//增加字段
	addColumn(&ApprovalType{}, "is_normal")
	addColumn(&ApprovalType{}, "key_json")
	addColumn(&ApprovalType{}, "group_id")

	addColumn(&Exhibition{}, "apply_id")
	addColumn(&ApprovalExhibition{}, "package_id")
	addColumn(&ApprovalExhibition{}, "show_date")

	addColumn(&ApprovalWork{}, "artist_uid")
	addColumn(&ApprovalWork{}, "show_seq")

	addColumn(&Work{}, "artist_uid")

	addColumn(&Approval{}, "value_json")
	addColumn(&BundlePayPrice{}, "status")
	addColumn(&BundlePayPrice{}, "artist_name")

	addColumn(&ApprovalExhibition{}, "art_exhibition_detail")
	addColumn(&ApprovalExhibition{}, "artworks")

	addColumn(&ApprovalReward{}, "total_price")

	var num int64
	var list []*Approval
	DB.Model(&ApprovalCopy{}).Count(&num)
	if num > 0 {
		return
	}

	//同步更新数据
	DB.Model(&Approval{}).Find(&list)

	if len(list) == 0 {
		return
	}

	for _, t := range list {
		for _, tt := range t.CopyUsers {
			status := 1
			if tt.IsViewed == true {
				status = 2
			}

			temp := &ApprovalCopy{
				ApprovalID: t.ID,
				UserId:     tt.ID,
				Name:       tt.Name,
				Status:     uint64(status),
			}
			var n int64
			DB.Model(&ApprovalCopy{}).Where(temp).Count(&n)
			if n > 0 {
				continue
			}

			DB.Model(&ApprovalCopy{}).Create(&temp)

		}
	}

}

//数据迁移
func addColumn(dst interface{}, column string) {
	exist := DB.Migrator().HasColumn(dst, column)
	if !exist {
		err := DB.Migrator().AddColumn(dst, column)
		if err != nil {
			fmt.Println(err.Error())
		}
	}

	return
}

func addTable(dst interface{}) {

	if DB.Migrator().HasTable(dst) == false {
		_ = DB.Migrator().CreateTable(dst)
	}

	return
}