import { Types } from 'mongoose';
import { TaskDailySummary } from './dailySummary.model';
import { getObjectId } from '@/shared/utils/commonHelper';

/**
 * Increment multiple activity counts in TaskDailySummary per userId and date
 * Creates document if not exist, increments counts for all activity types in activities object
 *
 * @param userId - User ObjectId
 * @param activityDate - Date normalized to day (e.g. midnight)
 * @param activities - object mapping activityType to counts, e.g. { call: 5, email: 3 }
 */
export const upsertTaskDailySummary = async (
  userId: Types.ObjectId,
  activityDate: Date,
  activities: Record<string, number>,
) => {
  const filter = { userId: getObjectId(userId), activityDate };

  const incUpdate: Record<string, number> = {};
  for (const [key, value] of Object.entries(activities)) 
    incUpdate[`activities.${key}`] = value;
  

  const update = { $inc: incUpdate };

  const options = { upsert: true, new: true, setDefaultsOnInsert: true };

  const updatedDoc = await TaskDailySummary.findOneAndUpdate(
    filter,
    update,
    options,
  ).exec();

  return updatedDoc;
};
