From 1b4ac397c4cc593a324644c052350417f3e285c8 Mon Sep 17 00:00:00 2001 From: toino Date: Tue, 7 Mar 2023 15:31:09 +0000 Subject: [PATCH] Use parameters for offer limit/sorting in profile --- src/api/routes/company.js | 7 +------ src/services/offer.js | 27 ++++++++++++++++++++------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/api/routes/company.js b/src/api/routes/company.js index 3f1b85fc..9fb0cd08 100644 --- a/src/api/routes/company.js +++ b/src/api/routes/company.js @@ -10,7 +10,6 @@ import CompanyService from "../../services/company.js"; import { ErrorTypes } from "../middleware/errorHandler.js"; import ValidationReasons from "../middleware/validators/validationReasons.js"; import { concurrentOffersNotExceeded } from "../middleware/validators/validatorUtils.js"; -import CompanyConstants from "../../models/constants/Company.js"; import { or } from "../middleware/utils.js"; @@ -87,11 +86,7 @@ export default (app) => { const offers = await new OfferService().getOffersByCompanyId( req.params.companyId, req.targetOwner, - req.hasAdminPrivileges, - { - sort: { publishDate: "desc" }, - limit: CompanyConstants.offers.max_profile_visible, - } + req.hasAdminPrivileges ); return res.json({ company, offers }); } diff --git a/src/services/offer.js b/src/services/offer.js index ba7a82f1..36e5c4d6 100644 --- a/src/services/offer.js +++ b/src/services/offer.js @@ -5,6 +5,7 @@ import Account from "../models/Account.js"; import EmailService from "../lib/emailService.js"; import { OFFER_DISABLED_NOTIFICATION } from "../email-templates/companyOfferDisabled.js"; import OfferConstants from "../models/constants/Offer.js"; +import CompanyConstants from "../models/constants/Company.js"; import base64url from "base64url"; const { ObjectId } = mongoose.Types; @@ -413,7 +414,7 @@ class OfferService { /** * Checks whether a given offer is visible to a specific userCompanyId. - * Unpublished/Unactive offers may still be visible + * Unpublished/inactive offers may still be visible * @param {*} offer * @param {*} hasAdminPrivileges * @param {*} userCompanyId @@ -437,17 +438,29 @@ class OfferService { /** * Gets all the offers from a specific company that are visible to a specific user - * Note: This function will show even unpublished/unactive offers + * Note: This function will show even unpublished/inactive offers * @param {*} companyId * @param {*} userCompanyId * @param {*} hasAdminPrivileges + * @param {*} limit + * @param {*} sortByPublishDate * @returns Visible offers */ - async getOffersByCompanyId(companyId, userCompanyId, hasAdminPrivileges, filters = {}) { - return (await Offer.find({ owner: companyId }, null, filters)) - .filter((offer) => - this.isVisibleOffer(offer, hasAdminPrivileges, userCompanyId) - ); + async getOffersByCompanyId( + companyId, + userCompanyId, + hasAdminPrivileges, + limit = CompanyConstants.offers.max_profile_visible, + sortByPublishDate = true + ) { + return ( + await Offer.find({ owner: companyId }, null, { + limit, + sort: (sortByPublishDate && { publishDate: "desc" }) || undefined, + }) + ).filter((offer) => + this.isVisibleOffer(offer, hasAdminPrivileges, userCompanyId) + ); } async sendOfferDisabledNotification(offerId) {