license.controller.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /**
  2. * @file Provides the model and operation for licenses.
  3. * @author Inigo Valentin
  4. * @since 4.0.0
  5. */
  6. const logger = require('pino')()
  7. const db = require("../models");
  8. const License = db.licenses;
  9. const Op = db.Sequelize.Op;
  10. const LocaleService = require('../services/locale.service.js');
  11. const localeService = new LocaleService(db);
  12. /**
  13. * Create and save a new license.
  14. *
  15. * @param req The received request by the server.
  16. * @param res The request to be sent by the server.
  17. */
  18. exports.create = (req, res) => {
  19. // Check authentication
  20. if (authService.validateToken(req, res).success === false){
  21. res.status(validation.code).send(validation.message);
  22. return;
  23. }
  24. // Validate request
  25. let missing = [];
  26. if (!req.body.name) missing.push("name");
  27. if (!req.body.summary) missing.push("summary");
  28. if (!req.body.legal) missing.push("legal");
  29. if (missing.length > 0){
  30. let message = "Missing required fields: [";
  31. for (let i = 0; i < missing.length; i ++){
  32. message += missing[i];
  33. if (i < missing.length - 1) message += ", ";
  34. }
  35. message += "].";
  36. res.status(400).send(message);
  37. return;
  38. }
  39. const name = req.body.name;
  40. const nameDb = name.toUpperCase().replace(/[^A-Z0-9]+/g, "");
  41. const summary = localeService.generateLocalizedObject(req.body.summary, "LICENSE_" + nameDb + "_SUMMARY", "DB_PROJECT");
  42. if (summary.valid === false){
  43. res.status(400).send("Invalid summary values");
  44. return;
  45. }
  46. const legal = localeService.generateLocalizedObject(req.body.legal, "LICENSE_" + nameDb + "_LEGAL", "DB_PROJECT");
  47. if (legal.valid === false){
  48. res.status(400).send("Invalid legal values");
  49. return;
  50. }
  51. localeService.saveLocalizedObject(summary);
  52. localeService.saveLocalizedObject(legal);
  53. // Create a License
  54. const License = {name: name, summary: summary, legal: legal, icon: icon};
  55. License.create(License)
  56. .then(data => {res.send(data);})
  57. .catch(err => {
  58. logger.error("Error creating license: " + err);
  59. res.status(500).send({"Error creating license."});
  60. });
  61. };
  62. /**
  63. * Retrieve all licenses from the database.
  64. *
  65. * @param req The received request by the server.
  66. * @param res The request to be sent by the server.
  67. */
  68. exports.findAll = (req, res) => {
  69. License.findAll()
  70. .then(async data => {
  71. data = await localeService.localizeLicenses(data, req);
  72. res.send(data);
  73. })
  74. .catch(err => {
  75. logger.error("Error retrieving projects: " + err);
  76. res.status(500).send("Error retrieving projects.");
  77. });
  78. };
  79. /**
  80. * Find a single license by it's ID.
  81. *
  82. * @param req The received request by the server.
  83. * @param res The request to be sent by the server.
  84. */
  85. exports.findOne = (req, res) => {
  86. const id = req.params.id;
  87. License.findByPk(id)
  88. .then(async data => {
  89. if (data) {
  90. data = await localeService.localizeLicense(data, req);
  91. res.send(data);
  92. }
  93. else res.status(404).send(`No licenses with id ${id}.`});
  94. })
  95. .catch(err => {
  96. logger.error("Error retrieving license with id " + id + ": " + err);
  97. res.status(500).send("Error retrieving license with id " + id + ".");
  98. });
  99. };
  100. /**
  101. * Update a single license by it's ID.
  102. *
  103. * @param req The received request by the server.
  104. * @param res The request to be sent by the server.
  105. */
  106. exports.update = (req, res) => {
  107. const id = req.params.id;
  108. License.update(req.body, {where: {id: id}})
  109. .then(num => {
  110. if (num == 1) res.send({message: "License was updated successfully."});
  111. else res.send({message: `Cannot update License with id=${id}. Maybe License was not found or req.body is empty!`});
  112. })
  113. .catch(err => {res.status(500).send({message: "Error updating License with id=" + id});});
  114. };
  115. /**
  116. * Delete a single license by it's ID.
  117. *
  118. * @param req The received request by the server.
  119. * @param res The request to be sent by the server.
  120. */
  121. exports.delete = (req, res) => {
  122. const id = req.params.id;
  123. License.destroy({where: {id: id}})
  124. .then(num => {
  125. if (num == 1) res.send({message: "License was deleted successfully!"});
  126. else res.send({message: `Cannot delete License with id=${id}. Maybe License was not found!`});
  127. })
  128. .catch(err => {res.status(500).send({message: "Could not delete License with id=" + id});});
  129. };
  130. /**
  131. * Delete all licenses.
  132. *
  133. * @param req The received request by the server.
  134. * @param res The request to be sent by the server.
  135. */
  136. exports.deleteAll = (req, res) => {
  137. License.destroy({
  138. where: {},
  139. truncate: false
  140. })
  141. .then(nums => {res.send({ message: `${nums} Licenses were deleted successfully!` });})
  142. .catch(err => {res.status(500).send({message: err.message || "Some error occurred while removing all Licenses."});});
  143. };