Untitled
unknown
plain_text
5 months ago
6.9 kB
3
Indexable
import { Request, Response } from 'express'; import QuestionPackage from '../models/questionPackageModel'; // Soru paketi ekleme (create) export const createQuestionPackage = async (req: Request, res: Response) => { try { const newPackage = new QuestionPackage(req.body); await newPackage.save(); res.status(201).json(newPackage); } catch (error) { console.error('Error in createQuestionPackage:', error); // Hata mesajını terminalde görebilmek için res.status(500).json({ message: (error as Error).message }); } }; // Soru paketi listeleme (read) export const getQuestionPackages = async (req: Request, res: Response) => { try { const packages = await QuestionPackage.find(); res.status(200).json(packages); } catch (error) { res.status(500).json({ message: (error as Error).message }); } }; export const getQuestionsInPackage = async (req: Request, res: Response) => { const { packageId } = req.params; try { const questionPackage = await QuestionPackage.findById(packageId); if (!questionPackage) { return res.status(404).json({ message: 'Soru paketi bulunamadı' }); } res.status(200).json(questionPackage.questions); } catch (error) { console.error('Error in getQuestionsInPackage:', error); res.status(500).json({ message: (error as Error).message }); } }; // Soru paketi güncelleme (update) export const updateQuestionPackage = async (req: Request, res: Response) => { const { id } = req.params; try { const updatedPackage = await QuestionPackage.findByIdAndUpdate(id, req.body, { new: true }); if (!updatedPackage) { return res.status(404).json({ message: 'Paket bulunamadı' }); } res.status(200).json(updatedPackage); } catch (error) { res.status(500).json({ message: (error as Error).message }); } }; // Soru paketi silme (delete) export const deleteQuestionPackage = async (req: Request, res: Response) => { const { id } = req.params; try { const deletedPackage = await QuestionPackage.findByIdAndDelete(id); if (!deletedPackage) { return res.status(404).json({ message: 'Paket bulunamadı' }); } res.status(200).json({ message: 'Paket silindi' }); } catch (error) { res.status(500).json({ message: (error as Error).message }); } }; // Soru ekleme export const addQuestionToPackage = async (req: Request, res: Response) => { const { packageId } = req.params; const { questionText, options = [], answer = "", time } = req.body; // Varsayılan süreyi burada kaldırıyoruz try { const questionPackage = await QuestionPackage.findById(packageId); if (!questionPackage) { return res.status(404).json({ message: 'Paket bulunamadı' }); } const newQuestion = { questionText, options, answer, time: time || 2, // Eğer kullanıcı belirtmezse süre 2 dakika olsun order: questionPackage.questions.length + 1 }; questionPackage.questions.push(newQuestion); questionPackage.questionCount = questionPackage.questions.length; await questionPackage.save(); res.status(200).json(newQuestion); } catch (error) { console.error('Error in addQuestionToPackage:', error); res.status(500).json({ message: (error as Error).message }); } }; // Soru güncelleme export const updateQuestionInPackage = async (req: Request, res: Response) => { const { packageId, questionId } = req.params; if (!packageId || !questionId) { return res.status(400).json({ message: 'Package ID veya Question ID eksik.' }); } const { questionText, options, answer, time, order } = req.body; try { const questionPackage = await QuestionPackage.findById(packageId); if (!questionPackage) { return res.status(404).json({ message: 'Paket bulunamadı.' }); } const question = questionPackage.questions.find((q) => q._id && q._id.toString() === questionId); if (!question) { return res.status(404).json({ message: 'Soru bulunamadı.' }); } question.questionText = questionText || question.questionText; question.options = options || question.options; question.answer = answer || question.answer; question.time = time || question.time; question.order = order || question.order; await questionPackage.save(); res.status(200).json(questionPackage); } catch (error) { console.error('Error in updateQuestionInPackage:', error); res.status(500).json({ message: 'Güncelleme sırasında hata oluştu.' }); } }; // Soru silme export const deleteQuestionFromPackage = async (req: Request, res: Response) => { const { packageId, questionId } = req.params; try { const questionPackage = await QuestionPackage.findById(packageId); if (!questionPackage) { return res.status(404).json({ message: 'Paket bulunamadı' }); } const questionIndex = questionPackage.questions.findIndex((q) => q._id && q._id.toString() === questionId); if (questionIndex === -1) { return res.status(404).json({ message: 'Soru bulunamadı' }); } questionPackage.questions.splice(questionIndex, 1); // Soruyu diziden kaldır questionPackage.questionCount = questionPackage.questions.length; await questionPackage.save(); res.status(200).json(questionPackage); } catch (error) { res.status(500).json({ message: (error as Error).message }); } }; // Soruları yeniden sıralama export const reorderQuestionsInPackage = async (req: Request, res: Response) => { const { packageId } = req.params; const { questions } = req.body; // Yeni sırayla gelen soru bilgileri try { const questionPackage = await QuestionPackage.findById(packageId); if (!questionPackage) { return res.status(404).json({ message: 'Paket bulunamadı' }); } // Gelen sırayla `order` alanını güncelle questions.forEach((q: { _id: string; order: number }) => { const question = questionPackage.questions.find((item) => item._id && item._id.toString() === q._id); if (question) question.order = q.order; }); await questionPackage.save(); res.status(200).json(questionPackage); } catch (error) { res.status(500).json({ message: (error as Error).message }); } };
Editor is loading...
Leave a Comment