import { Request, Response } from "express";
import User from "../../models/user";
import { parseOptionalDate } from "../../utils/helperFunctions";
import { uploadImages } from "../../service/s3Bucket";
const updateUser = async (req: Request, res: Response) => {
  const { id } = req.params;
  const { name, phoneNumber, countryCode, address, signature } = req.body;
  const birthday = parseOptionalDate(req.body.birthday);
  const anniversary = parseOptionalDate(req.body.anniversary);

  if (!birthday.valid) {
    return res.status(400).json({ message: "Invalid birthday provided." });
  }

  if (!anniversary.valid) {
    return res.status(400).json({ message: "Invalid anniversary provided." });
  }

  const user = await User.findById(id);

  console.log(id);
  if (!user) {
    return res.status(404).json({ message: "User not found" });
  }
  user.name = name;
  user.phoneNumber = phoneNumber;
  user.countryCode = countryCode;
  user.streetAddress = address;
  user.signature = signature;
  if (birthday.date !== undefined) user.birthday = birthday.date;
  if (anniversary.date !== undefined) user.anniversary = anniversary.date;

  try {
    if (req.file) {
      const [imageKey] = await uploadImages(
        [req.file],
        process.env.AWS_S3_BUCKET_NAME!,
        process.env.AWS_S3_PROFILE_IMAGES_FOLDER,
      );
      user.profileImage = imageKey;
    }

    await user
      .save()
      .then((user: any) =>
        res.json({
          message: "User updated successfully",
          user,
        })
      )
      .catch((err: any) => res.status(500).json({ message: err }));
  } catch (err) {
    res.status(500).json({ message: err });
  }
};

module.exports = updateUser;
