All files / postcardotp-backend/src/services adminService.js

46.66% Statements 7/15
100% Branches 0/0
0% Functions 0/3
46.66% Lines 7/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 1231x 1x 1x 1x   1x                                                                                                                                                                                                                   1x           1x          
const { Sequelize, Op } = require("sequelize");
const { models, sequelize } = require("../config/sequelize");
const { ApiError } = require("../utils/errorHandler");
const logger = require("../utils/logger");
 
exports.getUsers = async (userId) => {
  const currentYear = new Date().getFullYear();
 
  const users = await models.User.findAll({
    attributes: [
      [
        Sequelize.fn(
          "EXTRACT",
          Sequelize.literal("MONTH FROM created_at::TIMESTAMP"),
        ),
        "month",
      ],
      [Sequelize.fn("COUNT", Sequelize.col("id")), "count"],
    ],
    where: Sequelize.where(
      Sequelize.fn(
        "EXTRACT",
        Sequelize.literal("YEAR FROM created_at::TIMESTAMP"),
      ),
      currentYear,
    ),
    group: [Sequelize.literal("month")],
    raw: true,
  });
  // const users = await models.User.findAll({
  //     arrtibutes: {
  //         exclude: ['password'],
  //         include: [
  //         [Sequelize.fn('EXTRACT', Sequelize.literal('MONTH FROM created_at')), 'month'], // Extract month
  //         [Sequelize.fn('COUNT', Sequelize.col('id')), 'count'], // Extract month
  //         ],
  //     },
  //     where: {
  //         deleted_at: null, // Filter for non-deleted records
  //         [Op.and]: [
  //           Sequelize.where(
  //             Sequelize.fn('EXTRACT', Sequelize.literal('YEAR FROM created_at')),
  //             currentYear
  //           ), // Filter for current year
  //         ],
  //       },
  //       order: [
  //         [Sequelize.fn('EXTRACT', Sequelize.literal('MONTH FROM created_at')), 'ASC'], // Order by month
  //         ['created_at', 'ASC'], // Then by created_at
  //       ],
  //       raw: true,
  // });
 
  const addressVerificationData = await models.AddressVerification.findAll({
    attributes: [
      [
        Sequelize.fn(
          "EXTRACT",
          Sequelize.literal("MONTH FROM sent_at::TIMESTAMP"),
        ),
        "month",
      ],
      [Sequelize.fn("COUNT", Sequelize.col("id")), "count"],
    ],
    where: {
      [Sequelize.Op.and]: [
        Sequelize.where(
          Sequelize.fn(
            "EXTRACT",
            Sequelize.literal("YEAR FROM sent_at::TIMESTAMP"),
          ),
          currentYear,
        ),
        {
          sent_at: {
            [Sequelize.Op.ne]: null,
          },
        },
      ],
    },
    group: [Sequelize.literal("month")],
    raw: true,
  });
 
  //     const addressVerificationData = await models.AddressVerification.findAll({
  //         arrtibutes: {
  //             include: [
  //               '*', // Select all columns
  //             [Sequelize.fn('EXTRACT', Sequelize.literal('MONTH FROM created_at')), 'month'], // Extract month
  //             ],
  //         },
  //     where: {
  //         deleted_at: null,
  //         sent_at: {
  //             [Sequelize.Op.ne]: null
  //           },
  //      [Op.and]:[Sequelize.where(
  //             Sequelize.fn('EXTRACT', Sequelize.literal('YEAR FROM created_at')),
  //             currentYear
  //           ), // Filter for current year
  //         ]},
  //       order: [
  //         [Sequelize.fn('EXTRACT', Sequelize.literal('MONTH FROM created_at')), 'ASC'], // Order by month
  //         ['created_at', 'ASC'], // Then by created_at
  //       ],
  //       raw: true,
  // });
 
  return { users, addressVerificationData };
};
 
exports.getCustomers = async () => {
  const users = await models.User.findAll();
 
  return { users };
};
 
exports.getVerifications = async () => {
  const verificationsData = await models.AddressVerification.findAll();
 
  return { verificationsData };
};