From a2d9c48396f7baad2a806971008f0d1bdaf98bde Mon Sep 17 00:00:00 2001 From: Josepablo C Date: Mon, 22 Jul 2024 19:46:52 -0600 Subject: [PATCH] fix(Calendar): Adding global and date filter patch --- README.md | 1 + src/apps/private/loads/services.js | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 262e54f..f57df7d 100644 --- a/README.md +++ b/README.md @@ -378,6 +378,7 @@ This endpoint is part of /loads endpoint - date[gte] : Date grater than. - date[lte] : Date less than. - load_status : string enumerator ['Published', 'Loading', 'Transit', 'Downloading', 'Delivered']. + - global : 1 To return calendar of all company, or 0/undefined for personal calendar only. - $sort[ field ] : -1/1 ; Sort result by field name - `POST /new` : Creates a new element. - `PATCH /:id` : Updates data from specific element. diff --git a/src/apps/private/loads/services.js b/src/apps/private/loads/services.js index 356c99f..5732118 100644 --- a/src/apps/private/loads/services.js +++ b/src/apps/private/loads/services.js @@ -105,29 +105,38 @@ async function findCalendarLoads( userId, companyId, query ){ "transit_date", "delivered_date", "createdAt", - "shipment_code" + "shipment_code", + "est_loading_date", + "est_unloading_date" ]; const { date, load_status , $sort } = query; + const { global } = query; + if( ! date ){ throw "Date field is required"; } const { page, elements } = getPagination( query ); + const orFilterList = [ + {"company" : companyId}, + {"carrier" : companyId} + ] + + if( !global ){ + orFilterList.push( {"bidder" : userId} ); + orFilterList.push( {"posted_by" : userId} ); + } + const andFilterList = [ { - "load_status_updated" : { + "est_loading_date" : { $gte : new Date( date["gte"] ), $lte : new Date( date["lte"] ) } }, { - $or : [ - {"bidder" : userId}, - {"posted_by" : userId}, - {"company" : companyId}, - {"carrier" : companyId} - ] + $or : orFilterList } ]