package repositories

import (
	"context"
	"primesys_email/src/db"

	"go.mongodb.org/mongo-driver/v2/bson"
	"go.mongodb.org/mongo-driver/v2/mongo"
)

const tripDataCollection = "trip_data"

func GetEndTimeTripDataByImeis(ctx context.Context, imeis []int64) (int64, error) {

	if len(imeis) == 0 {
		return 0, nil
	}

	pipeline := mongo.Pipeline{
		{{Key: "$match", Value: bson.M{
			"device_imei":     bson.M{"$in": imeis},
			"active_status":   true,
			"approved_status": true,
		}}},
		{{Key: "$sort", Value: bson.D{
			{Key: "end_time", Value: -1},
		}}},
		{{Key: "$limit", Value: 1}},
		{{Key: "$project", Value: bson.M{
			"_id":      0,
			"end_time": 1,
		}}},
	}

	cursor, err := db.Database().Collection(tripDataCollection).Aggregate(ctx, pipeline)
	if err != nil {
		return 0, err
	}

	defer cursor.Close(ctx)

	var result struct {
		EndTime int64 `bson:"end_time"`
	}

	if !cursor.Next(ctx) {
		if err := cursor.Err(); err != nil {
			return 0, err
		}

		return 0, nil
	}

	if err := cursor.Decode(&result); err != nil {
		return 0, err
	}

	return result.EndTime, nil
}
