const getSourcesData = asyncHandler(async (req, res) => {
const { dealership } = req.user;
const month = parseInt(req.params.month);
const customerData = await Customer.aggregate()
.match({ dealership })
.facet({
fbCount: [
{
$match: {
sourceOfEnquiry: "Facebook",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "fbCount" },
],
googleCount: [
{
$match: {
sourceOfEnquiry: "Google",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "googleCount" },
],
cardekhoCount: [
{
$match: {
sourceOfEnquiry: "Cardekho",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "cardekhoCount" },
],
carwaleCount: [
{
$match: {
sourceOfEnquiry: "Carwale",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "carwaleCount" },
],
instagramCount: [
{
$match: {
sourceOfEnquiry: "Instagram",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "instagramCount" },
],
newspaperAdsCount: [
{
$match: {
sourceOfEnquiry: "Newspaper Ads",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "newspaperAdsCount" },
],
websiteCount: [
{
$match: {
sourceOfEnquiry: "Website",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "websiteCount" },
],
hoardingsCount: [
{
$match: {
sourceOfEnquiry: "Hoardings",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "hoardingsCount" },
],
telephonicCount: [
{
$match: {
sourceOfEnquiry: "Telephonic",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "telephonicCount" },
],
referralCount: [
{
$match: {
sourceOfEnquiry: "Referral",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "referralCount" },
],
workshopCount: [
{
$match: {
sourceOfEnquiry: "Workshop",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "workshopCount" },
],
bushfireCount: [
{
$match: {
sourceOfEnquiry: "Bushfire",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "bushfireCount" },
],
managementCount: [
{
$match: {
sourceOfEnquiry: "Management",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "managementCount" },
],
walkInCount: [
{
$match: {
sourceOfEnquiry: "Walk-in",
$expr: { $eq: [{ $month: "$createdAt" }, month] },
},
},
{ $count: "walkInCount" },
],
});
return res.status(200).json({
success: true,
tableData: customerData,
});
});