All files / postcardotp-backend/src/controllers campaignController.js

21.42% Statements 9/42
0% Branches 0/2
0% Functions 0/5
21.42% Lines 9/42

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 1141x 1x 1x 1x           1x                                           1x                                   1x                                                           1x                                           1x                        
const campaignService = require("../services/campaignService");
const logger = require("../utils/logger");
const successResponse = require("../utils/successResponse");
const { createCampaingSchema } = require("../utils/validationSchema");
 
/**
 * Function to fetch all campaigns record
 * Method: GET
 */
exports.listCampaigns = async (req, res, next) => {
  try {
    const userID = req?.userId;
    const { limit = 10, offset = 0 } = req.query;
    // logger.info(`${userID}: `);
    const campaigns = await campaignService?.getCampaigns(
      userID,
      offset,
      limit,
    );
 
    // Return success response
    successResponse(res, campaigns, "Campaigns fetched successfully", 200);
  } catch (error) {
    next(error);
  }
};
 
/**
 * Function to fetch single campaign record
 * Method: GET
 */
exports.listOneCampaign = async (req, res, next) => {
  try {
    const userID = req?.userId;
    const campaignID = req?.params?.id;
 
    const campaign = await campaignService?.getOneCampaign(userID, campaignID);
 
    // Return success response
    successResponse(res, campaign, "Campaign fetched successfully", 200);
  } catch (error) {
    next(error);
  }
};
 
/**
 * Function to create a campaign
 * Method: POST
 */
exports.createCampaign = async (req, res, next) => {
  try {
    const userID = req?.userId;
 
    let { name, status, brand_color, addresses } = req.body;
 
    const postcard_front_img_path = req?.files?.postcard_front_img[0]?.path;
    const company_logo_path = req?.files?.company_logo[0]?.path;
 
    const campaign = await campaignService?.createCampaign(
      userID,
      name,
      status,
      brand_color,
      postcard_front_img_path,
      company_logo_path,
      addresses,
    );
 
    // Return success response
    successResponse(res, campaign, "Campaign created successfully", 201);
  } catch (error) {
    next(error);
  }
};
 
/**
 * Function to update a campaign
 * Method: PUT
 */
exports.updateCampaign = async (req, res, next) => {
  try {
    const userID = req?.userId;
    const campaignID = req?.params?.id;
    const { name, status, brand_color } = req.body;
    const campaign = await campaignService?.updateCampaign(campaignID, userID, {
      name,
      status,
      brand_color,
    });
 
    // Return success response
    successResponse(res, campaign, "Campaign updated successfully", 200);
  } catch (error) {
    next(error);
  }
};
 
/**
 * Function to delete a campaign
 * Method: DELETE
 */
exports.deleteCampaign = async (req, res, next) => {
  try {
    const userID = req?.userId;
    const campaignID = req?.params?.id;
    const campaign = await campaignService?.deleteCampaign(campaignID, userID);
 
    // Return success response
    successResponse(res, campaign, "Campaign deleted successfully", 204);
  } catch (error) {
    next(error);
  }
};