Commit 21da546d authored by Kim, Subin's avatar Kim, Subin
Browse files

TimeTable Model&Ctrl 수정

parent 843ffe8f
......@@ -5,38 +5,56 @@ const { Op } = sequelize
const submit = async (req, res) => {
try {
console.log("req.body==", req.body)
const { theater, runtime } = req.body
const result = theater.filter(async (theater) => {
const startDate = getDate(theater.start)
const endDate = getDate(theater.start, runtime)
// const isTimeTable = await TimeTable.findAll({
// where: {
// [Op.and]: [
// { theater: theater.theater },
// {
// [Op.and]: [
// { start_date: { [Op.lte]: endDate } },
// { end_date: { [Op.gte]: startDate } }
// ]
// }
// ]
// }
// })
// [Op.or]: [{ [Op.and]: [{ start_date: { [Op.gt]: startDate } }, { start_date: { [Op.gt]: endDate } }] },
// { [Op.and]: [{ end_date: { [Op.lt]: startDate } }, { end_date: { [Op.lt]: endDate } }] }]
console.log("isTimeTable==", isTimeTable)
return isTimeTable
const { movieId, title, theater, runtime, release_date, date } = req.body
const result = await Promise.all(
theater.map(async (theater) => {
const startTime = getTime(theater.start)
const endTime = getTime(theater.start, runtime)
const isTimeTable = await TimeTable.findAll({
where: {
[Op.and]: [
{ theater: theater.theater },
{
[Op.or]: [
{ [Op.and]: [{ start_time: { [Op.gt]: startTime } }, { end_time: { [Op.lte]: endTime } }] },
{ start_time: { [Op.between]: [startTime, endTime] } }
]
}
]
}
})
if (isTimeTable.length !== 0) return "unvalid"
else return "valid"
})
)
result.map((el, index)=> {
console.log("idx==",index)
if (el !== "valid") throw new Error("유효하지 않은 데이터입니다. 다시 등록해주시길 바랍니다.")
})
console.log("result==", result)
let curDate = new Date(release_date)
const endDate = new Date(date)
do {
let day = curDate.getDay()
await Promise.all(
theater.map(async (theater) => {
let partTime = ""
if ('06:00' <= theater.start < '10:00') partTime = "morning"
else if ('00:00' <= theater.start < '06:00') partTime = "night"
else partTime = "day"
await TimeTable.create({ theater: theater.theater, movieId, title, release_date, date: curDate, start_time: getTime(theater.start), end_time: getTime(theater.start, runtime), partTime: partTime, week: (day === 0 || day === 6) ? "weekend" : "weekdays" })
})
)
curDate.setDate(curDate.getDate()+1)
} while (curDate <= endDate)
res.send("success!")
} catch (error) {
return res.status(500).send(error.message || "상영시간표 저장 중 에러 발생")
}
}
const getDate = (string, runtime = 0) => {
const getTime = (string, runtime = 0) => {
const arr = string.split(':')
const date = new Date(0, 0, 0, Number(arr[0]), Number(arr[1]) + runtime)
// console.log("custom==", date.toString())
return date
}
......
......@@ -20,23 +20,26 @@ const TimeTableModel = (sequelize) => {
title: {
type: DataTypes.STRING,
},
runtime: {
type: DataTypes.INTEGER,
},
release_date: {
type: DataTypes.STRING
},
start_date: {
date: {
type: DataTypes.DATE,
},
start_time: {
type: DataTypes.DATE,
defaultValue: new Date(0)
},
end_date: {
end_time: {
type: DataTypes.DATE,
defaultValue: new Date(0)
},
time: {
type: DataTypes.TIME,
partTime: {
type: DataTypes.STRING,
},
week: {
type: DataTypes.STRING
}
},
{
// timestamps: true,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment