imaginar/controllers/dashboardController.js
2024-10-19 20:24:54 +09:00

40 lines
1.4 KiB
JavaScript

const { Isotope, ChatMessage } = require('../models');
// 日時フォーマット関数
function formatTimestamp(dateString) {
const date = new Date(dateString);
const now = new Date();
// 当日の場合は時刻のみ表示
if (date.toDateString() === now.toDateString()) {
return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
} else {
return date.toLocaleDateString() + ' ' + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
}
}
// ダッシュボードを表示
exports.showDashboard = async (req, res) => {
try {
const isotope = await Isotope.findOne({ where: { user_id: req.user.userId } });
const token = req.token;
// 同位体が存在しない場合は同位体作成ページにリダイレクト
if (!isotope) {
return res.redirect('/isotope');
}
// 同位体が存在する場合はチャットメッセージを取得
const messages = await ChatMessage.findAll({
where: { user_id: req.user.userId, isotope_id: isotope.id },
order: [['created_at', 'ASC']]
});
// ダッシュボードにチャットを表示
res.render('dashboard', { isotope, messages, token, formatTimestamp, hideSidebar: false });
} catch (error) {
console.error('ダッシュボードの表示中にエラーが発生しました:', error);
res.status(500).json({ error: 'ダッシュボードの表示に失敗しました' });
}
};