import { Request, Response } from "express";
import { isValidObjectId } from "mongoose";
import Occasion from "../../models/occasion";
import { uploadImage } from "../../service/s3Bucket";

const updateOccasion = async (req: Request, res: Response) => {
  const { id } = req.params;
  const { title, autoNote, sortOrder, isActive } = req.body;

  if (!isValidObjectId(id)) {
    return res.status(400).json({ message: "Occasion ID is not valid" });
  }

  try {
    const occasion = await Occasion.findById(id);
    if (!occasion) {
      return res.status(404).json({ message: "Occasion not found" });
    }

    if (title !== undefined) occasion.title = title.trim();
    if (autoNote !== undefined) occasion.autoNote = autoNote.trim();
    if (sortOrder !== undefined) occasion.sortOrder = Number(sortOrder);
    if (isActive !== undefined) occasion.isActive = isActive === "true" || isActive === true;

    if (req.file) {
      occasion.icon = await uploadImage(
        req.file,
        process.env.AWS_S3_BUCKET_NAME!,
        process.env.AWS_S3_OCCASIONS_FOLDER,
      );
    }

    await occasion.save();
    res.status(200).json(occasion);
  } catch (err) {
    res.status(500).json({ message: "Something went wrong", error: err });
  }
};

export { updateOccasion };
