From 7bc7eaf1bec752e6216311459580d853db5a7910 Mon Sep 17 00:00:00 2001 From: IrfanUddinAhmad Date: Mon, 11 Dec 2023 21:43:22 +0500 Subject: [PATCH] feat: ENT-8091 hide course search in subsidy summary --- .../dashboard/sidebar/SubsidiesSummary.jsx | 36 +++++++++++++++++-- .../enterprise-user-subsidy/UserSubsidy.jsx | 6 ++++ .../enterprise-offers/data/hooks.js | 14 +++++--- 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/src/components/dashboard/sidebar/SubsidiesSummary.jsx b/src/components/dashboard/sidebar/SubsidiesSummary.jsx index 0831e8b220..c6d5b1784a 100644 --- a/src/components/dashboard/sidebar/SubsidiesSummary.jsx +++ b/src/components/dashboard/sidebar/SubsidiesSummary.jsx @@ -1,4 +1,9 @@ -import React, { useContext, useMemo } from 'react'; +import React, { + useContext, + useEffect, + useMemo, + useState, +} from 'react'; import { Link } from 'react-router-dom'; import { AppContext } from '@edx/frontend-platform/react'; @@ -15,6 +20,8 @@ import SidebarCard from './SidebarCard'; import { CourseEnrollmentsContext } from '../main-content/course-enrollments/CourseEnrollmentsContextProvider'; import { SubsidyRequestsContext, SUBSIDY_TYPE } from '../../enterprise-subsidy-requests'; import { getOfferExpiringFirst, getPolicyExpiringFirst } from './utils'; +import getActiveAssignments from '../data/utils'; +import { POLICY_TYPES } from '../../enterprise-user-subsidy/enterprise-offers/data/constants'; function getLearnerCreditSummaryCardData({ enterpriseOffers, redeemableLearnerCreditPolicies }) { const learnerCreditPolicyExpiringFirst = getPolicyExpiringFirst(redeemableLearnerCreditPolicies); @@ -55,6 +62,7 @@ const SubsidiesSummary = ({ couponCodes: { couponCodesCount }, enterpriseOffers, canEnrollWithEnterpriseOffers, + hasCurrentEnterpriseOffers, redeemableLearnerCreditPolicies, } = useContext(UserSubsidyContext); @@ -85,6 +93,30 @@ const SubsidiesSummary = ({ const hasAvailableSubsidyOrRequests = ( hasActiveLicenseOrLicenseRequest || hasAssignedCodesOrCodeRequests || learnerCreditSummaryCardData ); + const hasAutoAppliedLearnerCreditPolicies = ( + redeemableLearnerCreditPolicies?.filter(policy => policy.policyType !== POLICY_TYPES).length > 0 + ); + + const [assignmentOnlyLearner, setAssignmentOnlyLearner] = useState(false); + useEffect(() => { + const assignmentsData = redeemableLearnerCreditPolicies?.flatMap(item => item?.learnerContentAssignments || []); + const { hasActiveAssignments } = getActiveAssignments(assignmentsData); + if ( + !hasActiveLicenseOrLicenseRequest + && !hasAssignedCodesOrCodeRequests + && !hasCurrentEnterpriseOffers + && !hasAutoAppliedLearnerCreditPolicies + && hasActiveAssignments + ) { + setAssignmentOnlyLearner(true); + } + }, [ + redeemableLearnerCreditPolicies, + hasCurrentEnterpriseOffers, + hasAssignedCodesOrCodeRequests, + hasActiveLicenseOrLicenseRequest, + hasAutoAppliedLearnerCreditPolicies, + ]); if (!hasAvailableSubsidyOrRequests) { return null; @@ -136,7 +168,7 @@ const SubsidiesSummary = ({ /> )} - {searchCoursesCta && ( + {(searchCoursesCta && !assignmentOnlyLearner) && ( diff --git a/src/components/enterprise-user-subsidy/UserSubsidy.jsx b/src/components/enterprise-user-subsidy/UserSubsidy.jsx index 4dcf58144b..fa3cb24434 100644 --- a/src/components/enterprise-user-subsidy/UserSubsidy.jsx +++ b/src/components/enterprise-user-subsidy/UserSubsidy.jsx @@ -42,6 +42,8 @@ const UserSubsidy = ({ children }) => { // Enterprise Offers const { enterpriseOffers, + currentEnterpriseOffers, + hasCurrentEnterpriseOffers, canEnrollWithEnterpriseOffers, hasLowEnterpriseOffersBalance, hasNoEnterpriseOffersBalance, @@ -75,6 +77,8 @@ const UserSubsidy = ({ children }) => { subscriptionPlan, couponCodes, enterpriseOffers, + currentEnterpriseOffers, + hasCurrentEnterpriseOffers, canEnrollWithEnterpriseOffers, hasLowEnterpriseOffersBalance, hasNoEnterpriseOffersBalance, @@ -90,6 +94,8 @@ const UserSubsidy = ({ children }) => { subscriptionPlan, couponCodes, enterpriseOffers, + currentEnterpriseOffers, + hasCurrentEnterpriseOffers, canEnrollWithEnterpriseOffers, hasLowEnterpriseOffersBalance, hasNoEnterpriseOffersBalance, diff --git a/src/components/enterprise-user-subsidy/enterprise-offers/data/hooks.js b/src/components/enterprise-user-subsidy/enterprise-offers/data/hooks.js index 09d9ea86b9..c56204f144 100644 --- a/src/components/enterprise-user-subsidy/enterprise-offers/data/hooks.js +++ b/src/components/enterprise-user-subsidy/enterprise-offers/data/hooks.js @@ -13,8 +13,10 @@ export const useEnterpriseOffers = ({ enableLearnerPortalOffers, }) => { const [enterpriseOffers, setEnterpriseOffers] = useState([]); + const [currentEnterpriseOffers, setCurrentEnterpriseOffers] = useState([]); const [isLoadingOffers, setIsLoadingOffers] = useState(true); const [canEnrollWithEnterpriseOffers, setCanEnrollWithEnterpriseOffers] = useState(false); + const [hasCurrentEnterpriseOffers, setHasCurrentEnterpriseOffers] = useState(false); const [hasLowEnterpriseOffersBalance, setHasLowEnterpriseOffersBalance] = useState(false); const [hasNoEnterpriseOffersBalance, setHasNoEnterpriseOffersBalance] = useState(false); @@ -50,10 +52,12 @@ export const useEnterpriseOffers = ({ setCanEnrollWithEnterpriseOffers(true); } - const currentEnterpriseOffers = enterpriseOffers.filter(offer => offer.isCurrent); - if (currentEnterpriseOffers.length > 0) { - const hasLowBalance = currentEnterpriseOffers.some(offer => offer.isLowOnBalance); - const hasNoBalance = currentEnterpriseOffers.every(offer => offer.isOutOfBalance); + const currentEntOffers = enterpriseOffers.filter(offer => offer.isCurrent); + if (currentEntOffers.length > 0) { + setCurrentEnterpriseOffers(currentEntOffers); + setHasCurrentEnterpriseOffers(true); + const hasLowBalance = currentEntOffers.some(offer => offer.isLowOnBalance); + const hasNoBalance = currentEntOffers.every(offer => offer.isOutOfBalance); setHasLowEnterpriseOffersBalance(hasLowBalance); setHasNoEnterpriseOffersBalance(hasNoBalance); } @@ -65,6 +69,8 @@ export const useEnterpriseOffers = ({ return { enterpriseOffers, + currentEnterpriseOffers, + hasCurrentEnterpriseOffers, canEnrollWithEnterpriseOffers, hasLowEnterpriseOffersBalance, hasNoEnterpriseOffersBalance,