"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); }, }) );