update:add ci cd files ==> do not edit those file
This commit is contained in:
@@ -0,0 +1,247 @@
|
||||
const Project = require('../models/Project')
|
||||
const ProjectCategory = require('../models/ProjectCategory')
|
||||
const {body, validationResult} = require('express-validator')
|
||||
const {_sr} = require('../plugins/serverResponses')
|
||||
const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
|
||||
const mongoose = require('mongoose')
|
||||
|
||||
|
||||
module.exports.create = [
|
||||
[
|
||||
body('fa_name')
|
||||
.notEmpty().withMessage(_sr['fa'].required.title)
|
||||
.bail()
|
||||
.custom((value, {req}) => {
|
||||
return ProjectCategory.findOne({$or: [{'locale.fa.name': value}, {'locale.en.name': value}]})
|
||||
.then(product => {
|
||||
if (product) return Promise.reject(_sr['fa'].duplicated.title)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('en_name')
|
||||
.notEmpty().withMessage(_sr['fa'].required.title)
|
||||
.bail()
|
||||
.custom((value, {req}) => {
|
||||
return ProjectCategory.findOne({$or: [{'locale.fa.name': value}, {'locale.en.name': value}]})
|
||||
.then(product => {
|
||||
if (product) return Promise.reject(_sr['fa'].duplicated.title)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
],
|
||||
checkValidations(validationResult),
|
||||
(req, res) => {
|
||||
const {fa_name, en_name} = req.body
|
||||
const data = {
|
||||
locale: {
|
||||
fa: {
|
||||
name: fa_name
|
||||
},
|
||||
en: {
|
||||
name: en_name
|
||||
}
|
||||
}
|
||||
}
|
||||
const projectCategory = new ProjectCategory(data)
|
||||
projectCategory.save((err, data) => {
|
||||
if (err) return res500(res, err)
|
||||
else return res.json(data)
|
||||
})
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.getAll = [
|
||||
(req, res) => {
|
||||
ProjectCategory.find({}).exec((err, projects) => {
|
||||
if (err) return res500(res, err)
|
||||
else return res.json(projects)
|
||||
})
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.getOne = [
|
||||
(req, res) => {
|
||||
ProjectCategory.findById(req.params.id, (err, projectCategory) => {
|
||||
if (err || !projectCategory) return res404(res, err)
|
||||
else return res.json(projectCategory)
|
||||
})
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.update = [
|
||||
[
|
||||
body('fa_name')
|
||||
.notEmpty().withMessage(_sr['fa'].required.title)
|
||||
.bail()
|
||||
.custom((value, {req}) => {
|
||||
return ProjectCategory.findOne({$or: [{'locale.fa.name': value}, {'locale.en.name': value}]})
|
||||
.then(product => {
|
||||
if (product && product._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
|
||||
else return true
|
||||
})
|
||||
}),
|
||||
|
||||
body('en_name')
|
||||
.notEmpty().withMessage(_sr['fa'].required.title)
|
||||
.bail()
|
||||
.custom((value, {req}) => {
|
||||
return ProjectCategory.findOne({$or: [{'locale.fa.name': value}, {'locale.en.name': value}]})
|
||||
.then(product => {
|
||||
if (product && product._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
|
||||
else return true
|
||||
})
|
||||
})
|
||||
],
|
||||
checkValidations(validationResult),
|
||||
(req, res) => {
|
||||
const {
|
||||
fa_name,
|
||||
en_name
|
||||
} = req.body
|
||||
|
||||
const data = {
|
||||
locale: {
|
||||
fa: {
|
||||
name: fa_name
|
||||
},
|
||||
en: {
|
||||
name: en_name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ProjectCategory.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
|
||||
if (err || !oldData) return res404(res, err)
|
||||
return res.json({message: _sr['fa'].response.success_save})
|
||||
})
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.delete = [
|
||||
async (req, res) => {
|
||||
const projects = await Project.find({category: req.params.id})
|
||||
if (projects.length) return res.status(403).json({message: 'نمیتوان دسته بندی هایی که دارای پروژه هستند را حذف کرد.'})
|
||||
|
||||
ProjectCategory.findByIdAndRemove(req.params.id, (err, oldData) => {
|
||||
if (err || !oldData) return res404(res, err)
|
||||
return res.json({message: _sr['fa'].response.success_remove})
|
||||
})
|
||||
}
|
||||
]
|
||||
|
||||
////////////////////////////
|
||||
|
||||
module.exports.addTagToCategory = [
|
||||
[
|
||||
body('fa_tagName')
|
||||
.notEmpty().withMessage(_sr['fa'].required.title),
|
||||
|
||||
body('en_tagName')
|
||||
.notEmpty().withMessage(_sr['fa'].required.title)
|
||||
],
|
||||
checkValidations(validationResult),
|
||||
(req, res) => {
|
||||
const {fa_tagName, en_tagName} = req.body
|
||||
ProjectCategory.findById(req.params.categoryId, (err, data) => {
|
||||
if (err || !data) return res404(res, err)
|
||||
data.tags.push({
|
||||
locale: {
|
||||
fa: {
|
||||
name: fa_tagName
|
||||
},
|
||||
en: {
|
||||
name: en_tagName
|
||||
}
|
||||
}
|
||||
})
|
||||
data.save(err => {
|
||||
if (err) console.log(err)
|
||||
else return res.json({message: _sr['fa'].response.success_save})
|
||||
})
|
||||
})
|
||||
}
|
||||
]
|
||||
|
||||
module.exports.removeTagFromCategory = [
|
||||
async (req, res) => {
|
||||
const projects = await Project.find({tag: req.params.id})
|
||||
if (projects.length) return res.status(403).json({message: 'نمیتوان دسته بندی هایی که دارای پروژه هستند را حذف کرد.'})
|
||||
|
||||
ProjectCategory.findOne({'tags._id': req.params.tagId}, (err, project) => {
|
||||
if (err || !project) return res404(res, err)
|
||||
const tag = project.tags.id(req.params.tagId)
|
||||
tag.remove(err => {
|
||||
if (err) console.log(err)
|
||||
})
|
||||
project.save(err => {
|
||||
if (err) console.log(err)
|
||||
else return res.json({message: _sr['fa'].response.success_save})
|
||||
})
|
||||
})
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
// module.exports.getAll = [
|
||||
// (req, res) => {
|
||||
// return res.json([
|
||||
// {
|
||||
// id: 'drilling',
|
||||
// locale: {
|
||||
// fa: {
|
||||
// name: 'صنعت حفاری',
|
||||
// },
|
||||
// en: {
|
||||
// name: 'Drilling industry'
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// id: 'piping',
|
||||
// locale: {
|
||||
// fa: {
|
||||
// name: 'صنعت خطوط لوله و اتصالات',
|
||||
// },
|
||||
// en: {
|
||||
// name: 'Pipeline and fittings industry'
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// id: 'ward',
|
||||
// locale: {
|
||||
// fa: {
|
||||
// name: 'صنعت پتروشیمی',
|
||||
// },
|
||||
// en: {
|
||||
// name: 'Petrochemical industry'
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// // {
|
||||
// // id: 'srp',
|
||||
// // locale: {
|
||||
// // fa: {
|
||||
// // name: 'پمپ های درون چاهی SRP',
|
||||
// // },
|
||||
// // en: {
|
||||
// // name: 'Manufacturer of SRP well pumps'
|
||||
// // }
|
||||
// // }
|
||||
// // },
|
||||
// // {
|
||||
// // id: 'sm',
|
||||
// // locale: {
|
||||
// // fa: {
|
||||
// // name: 'طراحی و ساخت unit های فرآورش و نمک زدایی پیش ساخته Skid Mounted',
|
||||
// // },
|
||||
// // en: {
|
||||
// // name: 'Skid Mounted'
|
||||
// // }
|
||||
// // }
|
||||
// // },
|
||||
// ])
|
||||
// }
|
||||
// ]
|
||||
|
||||
Reference in New Issue
Block a user