SalesService.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const SalesRepository = require('../../repository/admin/SalesRepository.js');
  2. const HttpException = require('../../utils/HttpException.js');
  3. const { SearchFilter } = require('../../utils/SearchFilter.js');
  4. const timeLocal = require('../../utils/TimeLocal.js');
  5. const { createLog, updateLog, deleteLog } = require('../../utils/LogActivity.js');
  6. exports.getAllSalesService = async ({ page, limit, search, sortBy, orderBy }) => {
  7. const skip = (page - 1) * limit;
  8. const where = {
  9. ...SearchFilter(search, ['username', 'email', 'firstname', 'lastname']),
  10. deletedAt: null
  11. };
  12. const [sales, total] = await Promise.all([
  13. SalesRepository.UserRepository.findAll({ skip, take: limit, where, orderBy: { [sortBy]: orderBy } }),
  14. SalesRepository.UserRepository.countAll(where)
  15. ]);
  16. return { sales, total };
  17. };
  18. exports.showSalesService = async (id) => {
  19. const sales = await SalesRepository.UserRepository.findById(id);
  20. if (!sales) {
  21. throw new HttpException("Data sales not found", 404);
  22. }
  23. return sales;
  24. };
  25. exports.storeSalesService = async (userData, req) => {
  26. const userId = await SalesRepository.KeycloakRepository.createUser(userData);
  27. await SalesRepository.KeycloakRepository.assignSalesRole(userId);
  28. const data = await SalesRepository.UserRepository.createUser(userId, userData);
  29. if (userData.province_ids && userData.province_ids.length > 0) {
  30. await SalesRepository.UserAreaRepository.createMany(userId, userData.province_ids);
  31. }
  32. await createLog(req, data);
  33. };
  34. exports.updateSalesService = async (userData, id, req) => {
  35. const sales = await SalesRepository.UserRepository.findById(id);
  36. if (!sales) throw new HttpException('Sales not found', 404);
  37. await SalesRepository.KeycloakRepository.updateUser(id, userData);
  38. const data = await SalesRepository.UserRepository.updateUser(id, userData);
  39. if (userData.province_ids && userData.province_ids.length > 0) {
  40. await SalesRepository.UserAreaRepository.deleteByUserId(id);
  41. await SalesRepository.UserAreaRepository.createMany(id, userData.province_ids);
  42. }
  43. await updateLog(req, data);
  44. };
  45. exports.deleteSalesService = async (id, req) => {
  46. const sales = await SalesRepository.UserRepository.findById(id);
  47. if (!sales) {
  48. throw new HttpException('Sales not found', 404);
  49. }
  50. await SalesRepository.KeycloakRepository.deleteUser(id);
  51. const data = await SalesRepository.UserRepository.deleteUser(id, { deletedAt: timeLocal.now().toDate() });
  52. await deleteLog(req, data);
  53. };