Skip to content

Commit

Permalink
EmployeeWebClient - CreateFacilityMultiStepForm - add summary step
Browse files Browse the repository at this point in the history
  • Loading branch information
bartstc committed Dec 5, 2022
1 parent bea06a7 commit d7754f8
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,25 @@ export const CreateFacilityMapper = {
})),
};
},
formToModel(form: CreateFacilityFormDto): IFacility {
return {
...omit(form, ['facilityName', 'facilityDescription', 'mainBusinessCategory', 'subordinateBusinessCategories', 'availability']),
name: form.facilityName,
description: form.facilityDescription ?? null,
businessCategories: [
{
type: form.mainBusinessCategory,
degree: BusinessCategoryDegreeType.Main,
},
...(form.subordinateBusinessCategories ?? []).map(type => ({
type,
degree: BusinessCategoryDegreeType.Subordinate,
})),
],
workingDays: form.availability.map(availability => ({
dayName: availability.dayName,
hours: [availability.hours],
})),
} as unknown as IFacility;
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import React from 'react';
import { ComponentMeta, ComponentStory } from '@storybook/react';

import { FacilityFixture } from 'utils';

import { SummaryStep as SummaryStepComponent } from './index';
import { useFacilityFormStore } from '../createFacilityFormStore';
import { CreateFacilityMapper } from '../../../application';

export default {
title: 'modules/facility/AddFacilityForm/SummaryStep',
component: SummaryStepComponent,
decorators: [
Story => {
useFacilityFormStore.setState({ data: CreateFacilityMapper.modelToForm(FacilityFixture.toStructure()) });

return <Story />;
},
],
} as ComponentMeta<typeof SummaryStepComponent>;

const Template: ComponentStory<typeof SummaryStepComponent> = () => {
return <SummaryStepComponent />;
};

export const SummaryStep = Template.bind({});
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import React from 'react';
import { useIntl } from 'react-intl';

import { ListItem } from 'shared/DescriptionListV2';

import { useFacilityFormStore } from '../createFacilityFormStore';
import { CreateFacilityFormDto } from '../../../application/types';
import { CreateFacilityMapper } from '../../../application';
import { FacilityBody } from '../../FacilityBody';
import { FormStepHeader } from '../FormStepHeader';

const SummaryStep = () => {
const { formatMessage } = useIntl();
const data = useFacilityFormStore(store => store.data);

return (
<FacilityBody facility={CreateFacilityMapper.formToModel(data as CreateFacilityFormDto)}>
<ListItem>
<FormStepHeader>
{formatMessage({
id: 'summary-facility-step-three',
defaultMessage: 'Step 4: Summary',
})}
</FormStepHeader>
</ListItem>
</FacilityBody>
);
};

export { SummaryStep };
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { Fragment } from 'react';
import React, { Fragment, ReactNode } from 'react';
import { useIntl } from 'react-intl';

import { Divider, Header, Heading, SubHeading } from 'shared/DescriptionListV2';
Expand All @@ -11,9 +11,10 @@ import { weekDayMessages } from '../../application/messages';

interface IProps {
facility: IFacility;
children?: ReactNode;
}

const FacilityBody = ({ facility }: IProps) => {
const FacilityBody = ({ facility, children }: IProps) => {
const { formatMessage } = useIntl();

const mainBusinessCategory = facility.businessCategories.find(category => category.degree === BusinessCategoryDegreeType.Main)?.type;
Expand All @@ -24,6 +25,7 @@ const FacilityBody = ({ facility }: IProps) => {

return (
<List spacingY={4}>
{children}
<IndentLabel>
<Header>
<Heading>
Expand Down
7 changes: 5 additions & 2 deletions employee-web-client/src/utils/fixtures/FacilityFixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const FacilityFixture = createFixture<IFacility>({
slug: 'hardcut-barber',
currency: Currency.Eu,
name: 'Hardcut Barber',
description: null,
description: "Lorem ipsum dolor",
address: {
city: 'Gdynia',
postCode: '80-800',
Expand All @@ -20,7 +20,10 @@ export const FacilityFixture = createFixture<IFacility>({
hours: [{ until: '9.00', to: '17.00' }],
},
],
businessCategories: [{ degree: BusinessCategoryDegreeType.Main, type: BusinessCategoryType.Barber }],
businessCategories: [
{ degree: BusinessCategoryDegreeType.Main, type: BusinessCategoryType.Barber },
{ degree: BusinessCategoryDegreeType.Subordinate, type: BusinessCategoryType.Hairdresser },
],
contacts: [
{
type: ContactType.Email,
Expand Down

0 comments on commit d7754f8

Please sign in to comment.