Skip to content

Commit

Permalink
remove phone number banner
Browse files Browse the repository at this point in the history
  • Loading branch information
OraldoDoci authored Jan 23, 2025
1 parent 71c406e commit c0c128f
Show file tree
Hide file tree
Showing 4 changed files with 228 additions and 46 deletions.
7 changes: 2 additions & 5 deletions src/pages/dashboardOverview/DashboardOverview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ const DashboardOverview = ({ party, products }: Props) => {
const { getAllProductsWithPermission } = usePermissions();

const showInfoBanner = party.institutionType === 'PA';
/*
const isInstitutionTypeAllowedOnb =
party.institutionType && !['PT', 'SA', 'AS'].includes(party.institutionType);
*/

const canUploadLogo = getAllProductsWithPermission(Actions.UploadLogo).length > 0;

const canSeeActiveProductsList =
Expand Down Expand Up @@ -89,7 +86,7 @@ const DashboardOverview = ({ party, products }: Props) => {
setOpen={setOpen}
canUploadLogo={canUploadLogo}
/>
<WelcomeDashboard setOpen={setOpen} party={party} />
<WelcomeDashboard setOpen={setOpen} />

<Grid item xs={12} mb={2} mt={5}>
{canSeeActiveProductsList && <ActiveProductsSection products={products} party={party} />}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
import { filterProducts } from '../productFilters';
import { StatusEnum } from '../../../../../../api/generated/b4f-dashboard/ProductsResource';
import { Product, ProductInstitutionMap } from '../../../../../../model/Product';
import { OnboardedProductResource } from '../../../../../../api/generated/b4f-dashboard/OnboardedProductResource';

enum ProductOnBoardingStatusEnum {
ACTIVE = 'ACTIVE',
PENDING = 'PENDING',
}

enum Actions {
AccessProductBackoffice = 'AccessProductBackoffice',
ListActiveProducts = 'ListActiveProducts',
ViewBilling = 'ViewBilling',
}

describe('filterProducts', () => {
const allowedInstitutionTypes: ProductInstitutionMap = {
'prod-interop': {
PA: {},
GSP: {},
SA: {},
SCP: {},
AS: {},
PRV: {},
},
'prod-pn': {
PA: {
categories: 'L6,L4,L45,L35,L5,L17,L15,L7,L22',
},
},
'prod-idpay': { PA: {} },
'prod-io': {
PA: {},
GSP: {},
PT: {},
},
'prod-pagopa': {
PA: {},
GSP: {},
PSP: {},
PT: {},
PRV: {},
GPU: {},
},
'prod-io-sign': {
PA: {},
GSP: {},
},
default: {
PA: {
categories:
'C17,C16,L10,L19,L13,L2,C10,L20,L21,L22,L15,L1,C13,C5,L40,L11,L39,L46,L8,L34,L7,L35,L45,L47,L6,L12,L24,L28,L42,L36,L44,C8,C3,C7,C14,L16,C11,L33,C12,L43,C2,L38,C1,L5,L4,L31,L18,L17,S01,SA',
},
GSP: {
categories: 'L37,SAG',
},
SCP: {},
},
};

const onboardedProducts: Array<OnboardedProductResource> = [
{
productId: 'prod-pagopa',
authorized: true,
productOnBoardingStatus: ProductOnBoardingStatusEnum.PENDING,
userRole: 'ADMIN',
billing: {
vatNumber: '81001510528',
recipientCode: 'FLGKROWP',
publicServices: true,
},
userProductActions: [Actions.AccessProductBackoffice],
},
{
productId: 'prod-pn',
authorized: true,
productOnBoardingStatus: ProductOnBoardingStatusEnum.ACTIVE,
userRole: 'ADMIN',
billing: {
vatNumber: '66554328912',
recipientCode: 'cccc',
publicServices: true,
},
userProductActions: [
Actions.ListActiveProducts,
Actions.AccessProductBackoffice,
Actions.ViewBilling,
],
},
];

it('should filter products based on allowed institution types and onboarded products', () => {
const productsWithStatusActive: Array<Product> = [
{
id: 'prod-pagopa',
subProducts: [
{ id: 'sub1', status: StatusEnum.ACTIVE },
{ id: 'sub2', status: StatusEnum.INACTIVE },
],
description: '',
logo: '',
title: '',
urlBO: '',
status: StatusEnum.ACTIVE,
imageUrl: '',
delegable: false,
},
{
id: 'prod-pn',
subProducts: [],
status: StatusEnum.ACTIVE,
description: '',
logo: '',
title: '',
urlBO: '',
imageUrl: '',
delegable: false,
},
{
id: 'prod-idpay',
subProducts: [],
status: StatusEnum.ACTIVE,
description: '',
logo: '',
title: '',
urlBO: '',
imageUrl: '',
delegable: false,
},
];

const config = {
institutionType: 'PA',
categoryCode: 'L6',
allowedInstitutionTypes,
};

const result = filterProducts(productsWithStatusActive, config, onboardedProducts);

expect(result).toEqual([
{
id: 'prod-pagopa',
subProducts: [
{ id: 'sub1', status: StatusEnum.ACTIVE },
{
id: 'sub2',
status: StatusEnum.INACTIVE,
},
],
description: '',
logo: '',
title: '',
urlBO: '',
status: StatusEnum.ACTIVE,
imageUrl: '',
delegable: false,
},
{
id: 'prod-idpay',
subProducts: [],
status: StatusEnum.ACTIVE,
description: '',
logo: '',
title: '',
urlBO: '',
imageUrl: '',
delegable: false,
},
]);
});

it('should exclude products that are already onboarded', () => {
const productsWithStatusActive: Array<Product> = [
{
id: 'prod-pn',
subProducts: [],
status: StatusEnum.ACTIVE,
description: '',
logo: '',
title: '',
urlBO: '',
imageUrl: '',
delegable: false,
},
{
id: 'prod-io',
subProducts: [],
status: StatusEnum.ACTIVE,
description: '',
logo: '',
title: '',
urlBO: '',
imageUrl: '',
delegable: false,
},
];

const config = {
institutionType: 'PA',
allowedInstitutionTypes,
};

const result = filterProducts(productsWithStatusActive, config, onboardedProducts);

expect(result).toEqual([
{
id: 'prod-io',
subProducts: [],
status: StatusEnum.ACTIVE,
description: '',
logo: '',
title: '',
urlBO: '',
imageUrl: '',
delegable: false,
},
]);
});
});
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
import EditIcon from '@mui/icons-material/Edit';
import { Alert, Box, Button, Grid } from '@mui/material';
import { ButtonNaked } from '@pagopa/mui-italia';
import { Box, Button, Grid } from '@mui/material';
import TitleBox from '@pagopa/selfcare-common-frontend/lib/components/TitleBox';
import { resolvePathVariables } from '@pagopa/selfcare-common-frontend/lib/utils/routes-utils';
import { storageUserOps } from '@pagopa/selfcare-common-frontend/lib/utils/storage';
import { useTranslation } from 'react-i18next';
import { useHistory } from 'react-router-dom';
import { Party } from '../../../../model/Party';
import { ENV } from '../../../../utils/env';

type Props = {
setOpen: (open: boolean) => void;
party: Party;
};

export default function WelcomeDashboard({ setOpen, party }: Readonly<Props>) {
export default function WelcomeDashboard({ setOpen }: Readonly<Props>) {
const { t } = useTranslation();
const history = useHistory();
const title = t('overview.title');
const subTitle = t('overview.subTitle');

return (
<>

<Grid
container
spacing={2}
Expand Down Expand Up @@ -58,34 +50,6 @@ export default function WelcomeDashboard({ setOpen, party }: Readonly<Props>) {
</Box>
</Grid>
</Grid>
{party.userRole === 'ADMIN' && (
<Grid item xs={12}>
<Alert
sx={{ mt: 5 }}
severity="info"
variant="standard"
action={
<ButtonNaked
component={Button}
onClick={() =>
history.push(
resolvePathVariables(`${ENV.ROUTES.USERS}/:userId/edit`, {
partyId: party.partyId,
userId: storageUserOps.read()?.uid ?? '',
}) + '?activeField=mobilePhone'
)
}
color="primary"
sx={{ fontSize: 'fontSize', fontWeight: 'fontWeightBold' }}
>
{t('customAlert.button')}
</ButtonNaked>
}
>
{t('customAlert.message')}
</Alert>
</Grid>
)}
</>

);
}
3 changes: 2 additions & 1 deletion src/services/__mocks__/partyService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ export const mockedParties: Array<Party> = [
recipientCode: 'FLGKROWP',
publicServices: true,
},
userProductActions: [Actions.AccessProductBackoffice],
userProductActions: [Actions.AccessProductBackoffice, Actions.ListAvailableProducts,],
},
{
productId: 'prod-pn',
Expand Down Expand Up @@ -330,6 +330,7 @@ export const mockedParties: Array<Party> = [
Actions.ManageProductGroups,
Actions.ViewDelegations,
Actions.ViewBilling,
Actions.ListAvailableProducts,
],
},
{
Expand Down

0 comments on commit c0c128f

Please sign in to comment.