Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Søknadvedlegginfo instead of Vedlegg in Søknad #72

Merged
merged 11 commits into from
May 31, 2018
3 changes: 0 additions & 3 deletions src/app/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ function sendSøknad(søknad: Søknad) {
})
);

const { vedlegg } = søknad;
formData.append('vedlegg', vedlegg[0]);

const url = `${Environment.REST_API_URL}/soknad`;
return axios.post(url, formData, {
withCredentials: true,
Expand Down
13 changes: 13 additions & 0 deletions src/app/components/søknadsvedlegg/Søknadsvedlegg.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as React from 'react';
import AttachmentUploader from 'storage/attachment/connected-components/attachment-uploader/AttachmentUploader';
import { SøknadsvedleggType } from '../../types/søknad/Søknad';

export interface Props {
type: SøknadsvedleggType;
}

const Søknadsvedlegg: React.StatelessComponent<Props> = ({ type }) => (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Er dette bare for typingens skyld? Foreslår å heller legge inn typen (evt. generic om det lar seg gjøre) i common enn å lage en wrapperkomponent i hvert prosjekt for dette behovet.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ja, det er i utgangspunktet kun for typing, og jeg tror det gir større verdi enn det koster å lage en egen for hvert prosjekt. Men skal se mer på generic

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Det blir vel omfattende å få inn typing på gruppen i hele attachments, så velger å holde det so det er enn så lenge

<AttachmentUploader group={type} />
);

export default Søknadsvedlegg;
24 changes: 22 additions & 2 deletions src/app/connected-components/Eksempelsøknad.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ import { getSøkerrollerForBruker } from '../util/søkerrollerUtils';
import { Periode } from 'uttaksplan/types';
import Uttaksplan from 'uttaksplan/components/uttaksplan/Uttaksplan';
import { Språkkode } from 'common/intl/types';
import { AppState } from '../redux/reducers';
import { mapAttachmentTilSøknadsvedlegginfo } from '../util/vedleggUtil';
import { Attachment } from 'storage/attachment/types/Attachment';

interface StateProps {
annenForelder: AnnenForelderPartial;
Expand All @@ -42,12 +45,27 @@ interface StateProps {
perioder: Periode[];
roller?: SøkerRolle[];
søknad: Søknad;
attachments: Attachment[];
språkkode: Språkkode;
}

type Props = StateProps & InjectedIntlProps & DispatchProps;

class Eksempelsøknad extends React.Component<Props> {
constructor(props: Props) {
super(props);
}
sendInnSøknad() {
const vedlegg = this.props.attachments.map((a) =>
mapAttachmentTilSøknadsvedlegginfo(a)
);

const søknadsdata: Søknad = {
...this.props.søknad,
vedlegg
};
this.props.dispatch(apiActions.sendSøknad(søknadsdata));
}
render() {
const {
dispatch,
Expand Down Expand Up @@ -291,15 +309,16 @@ class Eksempelsøknad extends React.Component<Props> {
)}

<Hovedknapp
onClick={() => dispatch(apiActions.sendSøknad(søknad))}>
htmlType="button"
onClick={() => this.sendInnSøknad()}>
Send søknad
</Hovedknapp>
</Applikasjonsside>
);
}
}

export default connect<StateProps>((state: any) => {
export default connect<StateProps>((state: AppState) => {
const { situasjon } = state.søknad;

const kjønn = state.api.person ? state.api.person.kjønn : undefined;
Expand All @@ -316,6 +335,7 @@ export default connect<StateProps>((state: any) => {
perioder: state.søknad.uttaksplan,
språkkode: state.common.språkkode,
situasjon,
attachments: state.attachments,
roller
};
})(injectIntl(Eksempelsøknad));
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { injectIntl, InjectedIntlProps } from 'react-intl';
import BekreftCheckboksPanel from 'nav-frontend-skjema/lib/bekreft-checkboks-panel';
import { HistoryProps } from '../../../types/common';
import { DispatchProps } from 'common/redux/types';
import Spørsmål from 'common/components/sp\u00F8rsm\u00E5l/Sp\u00F8rsm\u00E5l';
import Spørsmål from 'common/components/spørsmål/Spørsmål';
import FortsettKnapp from 'common/components/fortsett-knapp/FortsettKnapp';

export interface StateProps {
Expand Down
45 changes: 4 additions & 41 deletions src/app/connected-components/sider/vedlegg/VedleggSide.tsx
Original file line number Diff line number Diff line change
@@ -1,61 +1,24 @@
import * as React from 'react';
import Applikasjonsside from '../Applikasjonsside';
import DocumentTitle from 'react-document-title';
import { connect } from 'react-redux';
import { AppState } from '../../../redux/reducers';
import { DispatchProps } from 'common/redux/types';
import Søknadsvedlegg from '../../../types/søknad/Søknadsvedlegg';
import søknadActions from './../../../redux/actions/søknad/søknadActionCreators';
import AttachmentUploader from 'storage/attachment/connected-components/attachment-uploader/AttachmentUploader';

export interface StateProps {
vedlegg: Søknadsvedlegg;
}

export type Props = StateProps & DispatchProps;

class VedleggSide extends React.Component<Props, {}> {
class VedleggSide extends React.Component<{}, {}> {
render() {
const { vedlegg } = this.props;
return (
<Applikasjonsside visSpråkvelger={true}>
<DocumentTitle title="Vedlegg" />
<div className="blokk-m">
<h2>Adopsjonsvedtak</h2>
<AttachmentUploader
group="adopsjonsvedtak"
attachments={vedlegg.adopsjonsvedtak}
onChange={(files) => {
this.props.dispatch(
søknadActions.updateVedlegg({
adopsjonsvedtak: files
})
);
}}
/>
<AttachmentUploader group="adopsjonsvedtak" />
</div>
<div className="blokk-m">
<h2>Fødselsattest</h2>
<AttachmentUploader
group="fødselsattest"
attachments={vedlegg.fødselsattest}
onChange={(files) => {
this.props.dispatch(
søknadActions.updateVedlegg({
fødselsattest: files
})
);
}}
/>
<AttachmentUploader group="fødselsattest" />
</div>
</Applikasjonsside>
);
}
}
const mapStateToProps = (state: AppState): StateProps => {
return {
vedlegg: state.søknad.vedlegg
};
};

export default connect(mapStateToProps)(VedleggSide);
export default VedleggSide;
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,15 @@ import DatoInput from 'common/components/dato-input/DatoInput';
import FødselsdatoerSpørsmål from '../../../spørsmål/FødselsdatoerSpørsmål';

import utils from '../../../util/fødselsdato';
import Søknadsvedlegg from '../../../types/søknad/Søknadsvedlegg';
import {
removeFileFromArray,
concatNewFiles
} from 'common/components/vedlegg/util';

import VedleggOversikt from 'common/components/vedlegg/VedleggOversikt';
import { AppState } from '../../../redux/reducers';
import Steg from '../../../components/layout/Steg';
import Bolk from '../../../components/layout/Bolk';
import Søknadsvedlegg from '../../../components/søknadsvedlegg/Søknadsvedlegg';
import { getSøknadsvedlegg } from '../../../util/vedleggUtil';

interface StateProps {
barn: FødtBarn;
vedlegg: Søknadsvedlegg;
visSpørsmålOmAntallBarn: boolean;
}

type Props = StateProps & InjectedIntlProps & DispatchProps;
Expand All @@ -52,7 +47,7 @@ class RelasjonTilBarnAdopsjonSteg extends React.Component<Props> {
}

render() {
const { vedlegg, barn, dispatch, intl } = this.props;
const { visSpørsmålOmAntallBarn, barn, dispatch, intl } = this.props;

return (
<Steg id={StegID.RELASJON_TIL_BARN_ADOPSJON}>
Expand All @@ -78,36 +73,11 @@ class RelasjonTilBarnAdopsjonSteg extends React.Component<Props> {
intl,
'vedlegg.tittel.omsorgsovertakelse'
)}
render={() => (
<VedleggOversikt
inputId="omsorgsovertakelse"
vedlegg={vedlegg.omsorgsovertakelse}
onFilesSelect={(attachment) => {
dispatch(
søknadActions.updateVedlegg({
omsorgsovertakelse: concatNewFiles(
attachment,
vedlegg.omsorgsovertakelse
)
})
);
}}
onFileDelete={(attachment) =>
dispatch(
søknadActions.updateVedlegg({
omsorgsovertakelse: removeFileFromArray(
attachment,
vedlegg.omsorgsovertakelse
)
})
)
}
/>
)}
render={() => <Søknadsvedlegg type="omsorgsovertakelse" />}
/>

<Spørsmål
synlig={vedlegg.omsorgsovertakelse.length > 0}
synlig={visSpørsmålOmAntallBarn}
render={() => (
<AntallBarnSpørsmål
spørsmål={getMessage(
Expand Down Expand Up @@ -161,7 +131,8 @@ class RelasjonTilBarnAdopsjonSteg extends React.Component<Props> {

const mapStateToProps = (state: AppState): StateProps => ({
barn: state.søknad.barn as FødtBarn,
vedlegg: state.søknad.vedlegg
visSpørsmålOmAntallBarn:
getSøknadsvedlegg('omsorgsovertakelse', state).length > 0
});

export default connect<StateProps, {}, {}>(mapStateToProps)(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,11 @@ import { ForeldreansvarBarnPartial } from '../../../types/søknad/Barn';
import Veilederinfo from 'common/components/veileder-info/Veilederinfo';
import { Fødselsdato } from '../../../types/common';
import { getAlderFraDato } from '../../../util/dates';
import VedleggOversikt from 'common/components/vedlegg/VedleggOversikt';
import {
concatNewFiles,
removeFileFromArray
} from 'common/components/vedlegg/util';
import SøknadsvedleggType from '../../../types/søknad/Søknadsvedlegg';
import Søknadsvedlegg from '../../../components/søknadsvedlegg/Søknadsvedlegg';

export interface StateProps {
barn: ForeldreansvarBarnPartial;
visOver15årMelding: boolean;
vedlegg: SøknadsvedleggType;
}

export type Props = DispatchProps & StateProps & InjectedIntlProps;
Expand All @@ -53,13 +47,7 @@ class RelasjonTilBarnForeldreansvar extends React.Component<Props, {}> {
}

render() {
const {
barn,
visOver15årMelding,
vedlegg,
intl,
dispatch
} = this.props;
const { barn, visOver15årMelding, intl, dispatch } = this.props;
return (
<Steg id={StegID.RELASJON_TIL_BARN_FORELDREANSVAR}>
<Spørsmål
Expand All @@ -83,32 +71,7 @@ class RelasjonTilBarnForeldreansvar extends React.Component<Props, {}> {
<Spørsmål
animert={true}
synlig={barn.foreldreansvarsdato !== undefined}
render={() => (
<VedleggOversikt
inputId="adopsjonsvedtak"
vedlegg={vedlegg.adopsjonsvedtak}
onFilesSelect={(files) => {
dispatch(
søknadActions.updateVedlegg({
adopsjonsvedtak: concatNewFiles(
files,
vedlegg.adopsjonsvedtak
)
})
);
}}
onFileDelete={(file) =>
dispatch(
søknadActions.updateVedlegg({
adopsjonsvedtak: removeFileFromArray(
file,
vedlegg.adopsjonsvedtak
)
})
)
}
/>
)}
render={() => <Søknadsvedlegg type="adopsjonsvedtak" />}
/>
<Spørsmål
animert={false}
Expand Down Expand Up @@ -165,7 +128,6 @@ const mapStateToProps = (state: AppState): StateProps => {
const barn = state.søknad.barn as ForeldreansvarBarnPartial;
return {
barn,
vedlegg: state.søknad.vedlegg,
visOver15årMelding: erAlderOver15År(barn.fødselsdatoer || [])
};
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,28 @@ import Søknad, { SøkerRolle } from '../../../types/søknad/Søknad';
import { AppState } from '../../../redux/reducers';
import Person from '../../../types/Person';
import { HistoryProps, Kjønn } from '../../../types/common';
import Søknadsvedlegg from '../../../types/søknad/Søknadsvedlegg';
import { getSøknadsvedlegg } from '../../../util/vedleggUtil';

interface StateProps {
barn: BarnPartial;
søknad: Søknad;
vedlegg: Søknadsvedlegg;
fødselsattestLastetOpp: boolean;
terminbekreftelseErLastetOpp: boolean;
person?: Person;
}

type Props = StateProps & InjectedIntlProps & DispatchProps & HistoryProps;
class RelasjonTilBarnFødsel extends React.Component<Props, StateProps> {
render() {
const { barn, dispatch, person, søknad, vedlegg, history } = this.props;
const {
barn,
dispatch,
person,
søknad,
fødselsattestLastetOpp,
terminbekreftelseErLastetOpp,
history
} = this.props;

if (person) {
const { søkerRolle } = søknad;
Expand Down Expand Up @@ -56,14 +65,16 @@ class RelasjonTilBarnFødsel extends React.Component<Props, StateProps> {
<partials.FødtBarnPartial
dispatch={dispatch}
barn={barn as FødtBarn}
vedlegg={vedlegg}
fødselsattestErLastetOpp={fødselsattestLastetOpp}
history={history}
/>
) : (
<partials.UfødtBarnPartial
dispatch={dispatch}
barn={barn as UfødtBarn}
vedlegg={vedlegg}
terminbekreftelseErLastetOpp={
terminbekreftelseErLastetOpp
}
søknad={søknad}
erFarEllerMedmor={erFarEllerMedmor}
history={history}
Expand All @@ -80,7 +91,10 @@ class RelasjonTilBarnFødsel extends React.Component<Props, StateProps> {
const mapStateToProps = (state: AppState): StateProps => ({
søknad: state.søknad,
barn: state.søknad.barn,
vedlegg: state.søknad.vedlegg,
fødselsattestLastetOpp:
getSøknadsvedlegg('fødselsattest', state).length > 0,
terminbekreftelseErLastetOpp:
getSøknadsvedlegg('terminbekreftelse', state).length > 0,
person: state.api.person
});

Expand Down
Loading