import { Plan, Subject } from "../db/index.js";
import * as ConvertDate from "./schedule.controller.js";

// const addPlan = async (req, res) => {
//   console.log('server/addPlan req.body', req.body)
//   try {
//     let end = null;
//     let tf = false;
//     const { info } = req.body
//     const { studyplanTitle, endDate, endTime, deadline, memo, selected } = info
//     console.log('제목확인', studyplanTitle)
//     if (deadline === "on") {
//       end = new Date(endDate + " " + endTime)
//       tf = true
//     } else {
//       end = new Date(endDate)
//     }
//     const result = await Plan.create({
//       subjectId: selected,
//       title: studyplanTitle,
//       deadline: end,
//       memo: memo,
//       timeChecked: tf,
//       checked: false
//     })
//     return res.json(result)
//   } catch (error) {
//     console.log(error)
//     return res.status(500).send(error.message || "계획저장 에러발생")
//   }
// }

// const editPlan = async (req, res) => {
//   const { info, id } = req.body
//   console.log('editPlan info', info, '|', id)
//   try {
//     let result = null
//     if (info.deadline === "on") {
//       result = await Plan.update({
//         subjectId: info.selected,
//         title: info.studyplanTitle,
//         deadline: new Date(info.endDate + " " + info.endTime),
//         memo: info.memo,
//         timeChecked: true,
//         checked: false
//       }, { where: { id: id } })
//       res.send(200)
//     } else {
//       result = await Plan.update({
//         subjectId: info.selected,
//         title: info.studyplanTitle,
//         deadline: new Date(info.endDate),
//         memo: info.memo,
//         timeChecked: false,
//         checked: false
//       }, {
//         where: { id: id }
//       })
//     }
//     if (!result) {
//       throw new Error("과목정보 수정 에러발생")
//     } else {
//       return res.send(200)
//     }
//   } catch (error) {
//     console.log(error)
//     return res.status(500).send(error.message || "계획수정 에러발생")
//   }
// }

// const getInfo = async (req, res) => {
//   console.log('server/getInfo req.params', req.params)
//   try {
//     let deadlineStr = null
//     let endTimeStr = null

//     const { planId } = req.params;
//     const findInfo = await Plan.findOne({ where: { id: planId } })
//     const Info = findInfo.dataValues;

//     const getSubTitle = await Subject.findAll({
//       attributes: ['name'],
//       where: { id: Info.subjectId }
//     })

//     deadlineStr = ConvertDate.dateToString(Info.deadline, "full")
//     endTimeStr = ConvertDate.dateToString(Info.deadline, "time")

//     if (Info.timeChecked) {
//       res.json({
//         subjectId: Info.subjectId,
//         subjectName: getSubTitle[0].dataValues.name,
//         title: Info.title,
//         endDate: deadlineStr,
//         endTime: endTimeStr,
//         deadline: "on",
//         memo: Info.memo
//       })
//     } else {
//       res.json({
//         subjectId: Info.subjectId,
//         subjectName: getSubTitle[0].dataValues.name,
//         title: Info.title,
//         endDate: deadlineStr,
//         deadline: "",
//         memo: Info.memo
//       })
//     }
//   } catch (error) {
//     console.log(error)
//     return res.status(500).send(error.message || "계획 가져오기 에러발생")
//   }
// }

const getOne = async (req, res) => {
  try {
    let findPlan = null
    const { planId } = req.query
    console.log("get One", planId)
    if (planId) findPlan = await Plan.findOne({ where: { id: planId } })
    if (!findPlan) throw new Error("학업 계획 정보를 찾지 못했습니다.")
    return res.json(find)
  } catch (error) {
    return res.status(500).send(error.message || "학업계획 조회 중 에러 발생")
  }
}

const create = async (req, res) => {
  try {
    let date = null
    let check_v = false
    const { studyplanTitle, endDate, endTime, memo, deadline, selected } = req.body
    if (deadline === "on") {
      date = new Date(endDate + " " + endTime)
      check_v = true
    } else date = new Date(endDate)
    const newPlan = await Plan.create({ title: studyplanTitle, deadline: date, memo: memo, timeChecked: check_v, subjectId: selected })
    return res.json(newPlan)
  } catch (error) {
    return res.status(500).send(error.message || "학업계획 생성 중 에러 발생")
  }
}

const edit = async (req, res) => {
  try {
    const planId = req.planId
    let date = null
    let check_v = false
    const { studyplanTitle, endDate, endTime, memo, deadline, selected } = req.body
    if (deadline === "on") {
      date = new Date(endDate + " " + endTime)
      check_v = true
    } else date = new Date(endDate)
    const updated = await Plan.updated({ title: studyplanTitle, deadline: date, memo: memo, timeChecked: check_v, subjectId: selected }, { where: { id: planId } })
    if (!updated) throw new Error("해당 학업계획의 일부 정보를 수정하는데 실패하였습니다.")
    else return res.send(200)
  } catch (error) {
    return res.status(500).send(error.message || "학업계획 수정 중 에러 발생")
  }
}

const remove = async (req, res) => {
  try {
    const planId = req.planId
    const deleted = await Plan.destroy({ where: { id: planId } })
    if (!deleted) throw new Error("해당 과목을 삭제하는데 실패하였습니다.")
    else return res.send(200)
  } catch (error) {
    return res.status(500).send(error.message || "학업계획 삭제 중 에러 발생")
  }
}

const getParams = async (req, res, next) => {
  try {
    const { planId } = req.params
    req.planId = planId
    next()
  } catch (error) {
    return res.status(500).send(error.message || "일정 가져오는 중 에러 발생")
  }
}

export default {
  getOne,
  create,
  edit,
  remove,
  getParams
  // addPlan,
  // editPlan,
  // getInfo
}