channel-partner.js 2.08 KB
"use strict";

/**
 * channel-partner controller
 */

const { createCoreController } = require("@strapi/strapi").factories;

module.exports = createCoreController(
  "api::channel-partner.channel-partner",
  ({ strapi: Strapi }) => ({
    async create(ctx) {
      //   const currentChannelPartner = ctx.state.user;
          const reraNumber = ctx.request.body?.data?.reraNumber;
      if (!reraNumber) {
       return ctx.bad(`Please specify your rera number.`);
      }

      // 1. check if the channel  partner already  exist
      const existingChannelPartner = await strapi.entityService.findMany(
        "api::channel-partner.channel-partner",
        {
          filters: { reraNumber: reraNumber },
        }
      );
      if (existingChannelPartner && existingChannelPartner.length !== 0) {
       return ctx.badRequest(
          `Channel Partner Already Exist with the Given rera number ${reraNumber}`
        );
      }

      try {
        const spertoCPData = await strapi
          .service("api::channel-partner.channel-partner")
          .sendCPToSperto(ctx.request.body.data);
  
        ctx.request.body.data.httpRequestHeaders = JSON.stringify(
          spertoCPData.headers
        );
        ctx.request.body.data.httpRequestMethod = spertoCPData.config.method;
        ctx.request.body.data.httpRequestUrl = spertoCPData.config.url;
        ctx.request.body.data.httpsRequestBody = spertoCPData.config.data;
        ctx.request.body.data.httpResposneBody = JSON.stringify(
          spertoCPData.data
        );
        ctx.request.body.data.thirdPartyApiError=false;
      } catch (error) {
        ctx.request.body.data.httpRequestHeaders = JSON.stringify(
          error.config.headers
        );
        ctx.request.body.data.httpRequestMethod = error.config.method;
        ctx.request.body.data.httpRequestUrl = error.config.url;
        ctx.request.body.data.httpsRequestBody = error.config.data;
        ctx.request.body.data.httpResposneBody = JSON.stringify(error.message);
        ctx.request.body.data.thirdPartyApiError=true;
      }
      return await super.create(ctx);
    },
  })
);