package util

import (
	"ZhenTuLocalPassiveAdapter/dto"
	"sort"
	"time"
)

func FilterAndSortFiles(fileList []dto.File, beginDt, endDt time.Time) []dto.File {
	var filteredFiles []dto.File

	for _, file := range fileList {
		fileStartTime := file.StartTime
		nextFileStartTime := file.EndTime

		file.DiffMs = beginDt.Sub(fileStartTime).Milliseconds()
		// 如果当前文件还没有开始
		if beginDt.After(fileStartTime) {
			// 没有下一个文件的情况下,就是最后一个文件
			if nextFileStartTime.IsZero() {
				continue
			}
			// 但是下一个文件已经开始
			if beginDt.Before(nextFileStartTime) {
				filteredFiles = append(filteredFiles, file)
			}
			// 已经开始,但是也已经结束了
		} else if fileStartTime.After(endDt) {
			continue
			// 已经开始,但未结束
		} else {
			filteredFiles = append(filteredFiles, file)
		}
	}

	// 按照 DiffMs 的值降序排序
	sort.Slice(filteredFiles, func(i, j int) bool {
		return filteredFiles[i].DiffMs > filteredFiles[j].DiffMs
	})

	return filteredFiles
}