60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { DataTypes } = require('sequelize');
|
|
const defineCase = require('../../models/cases');
|
|
|
|
const requiredFields = ['title', 'state', 'priority', 'type', 'automationStatus', 'template'];
|
|
|
|
function isEmpty(value) {
|
|
if (value === null || value === undefined) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
module.exports = function (sequelize) {
|
|
const { verifySignedIn } = require('../../middleware/auth')(sequelize);
|
|
const { verifyProjectDeveloperFromFolderId } = require('../../middleware/verifyEditable')(sequelize);
|
|
const Case = defineCase(sequelize, DataTypes);
|
|
|
|
router.post('/', verifySignedIn, verifyProjectDeveloperFromFolderId, async (req, res) => {
|
|
const folderId = req.query.folderId;
|
|
|
|
try {
|
|
if (
|
|
requiredFields.some((field) => {
|
|
return isEmpty(req.body[field]);
|
|
})
|
|
) {
|
|
return res.status(400).json({
|
|
error: 'Title, state, priority, type, automationStatus, and template are required',
|
|
});
|
|
}
|
|
|
|
const { title, state, priority, type, automationStatus, description, template, preConditions, expectedResults } =
|
|
req.body;
|
|
|
|
const newCase = await Case.create({
|
|
title,
|
|
state,
|
|
priority,
|
|
type,
|
|
automationStatus,
|
|
description,
|
|
template,
|
|
preConditions,
|
|
expectedResults,
|
|
folderId,
|
|
});
|
|
|
|
res.json(newCase);
|
|
} catch (error) {
|
|
console.error('Error creating new case:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
return router;
|
|
};
|