/** * * Copyright * 2009-2015 Jayway Products AB * 2016-2017 Föreningen Sambruk * * Licensed under AGPL, Version 3.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.gnu.org/licenses/agpl.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package se.streamsource.streamflow.web.context.surface.accesspoints.endusers.formdrafts; import static se.streamsource.dci.api.RoleMap.role; import org.qi4j.api.entity.EntityReference; import org.qi4j.api.injection.scope.Service; import org.qi4j.api.injection.scope.Structure; import org.qi4j.api.structure.Module; import org.qi4j.api.value.ValueBuilder; import se.streamsource.dci.api.IndexContext; import se.streamsource.dci.api.RoleMap; import se.streamsource.dci.value.StringValue; import se.streamsource.streamflow.api.surface.AccessPointSettingsDTO; import se.streamsource.streamflow.api.workspace.cases.form.AttachmentFieldDTO; import se.streamsource.streamflow.api.workspace.cases.general.FieldSubmissionDTO; import se.streamsource.streamflow.api.workspace.cases.general.FieldValueDTO; import se.streamsource.streamflow.api.workspace.cases.general.FormDraftDTO; import se.streamsource.streamflow.api.workspace.cases.general.FormSignatureDTO; import se.streamsource.streamflow.api.workspace.cases.general.SecondSigneeInfoValue; import se.streamsource.streamflow.web.application.defaults.SystemDefaultsService; import se.streamsource.streamflow.web.domain.structure.caze.Case; import se.streamsource.streamflow.web.domain.structure.form.EndUserCases; import se.streamsource.streamflow.web.domain.structure.form.FormDraft; import se.streamsource.streamflow.web.domain.structure.form.FormDrafts; /** * JAVADOC */ public class SurfaceFormDraftContext implements IndexContext<FormDraftDTO> { @Structure Module module; @Service SystemDefaultsService systemDefaults; public FormDraftDTO index() { return RoleMap.role( FormDraftDTO.class ); } public void updatefield( FieldValueDTO field ) { FormDraft formDraft = RoleMap.role( FormDraft.class ); formDraft.changeFieldValue( field.field().get(), field.value().get() ); } public void updateattachmentfield( AttachmentFieldDTO fieldAttachment ) { FormDraft formDraft = role( FormDraft.class); formDraft.changeFieldAttachmentValue( fieldAttachment ); } public FieldValueDTO fieldvalue( StringValue fieldId ) { FormDraft formDraft = RoleMap.role( FormDraft.class ); EntityReference entityReference = EntityReference.parseEntityReference(fieldId.string().get()); FieldSubmissionDTO DTO = formDraft.getFieldValue( entityReference ); ValueBuilder<FieldValueDTO> builder = module.valueBuilderFactory().newValueBuilder(FieldValueDTO.class); builder.prototype().value().set( DTO.value().get() == null ? "" : DTO.value().get() ); builder.prototype().field().set( entityReference ); return builder.newInstance(); } public void addsignature( FormSignatureDTO signature ) { FormDraft formDraft = role( FormDraft.class ); formDraft.addFormSignatureValue( signature ); } public SecondSigneeInfoValue secondsigneeinfo() { FormDraft formDraft = RoleMap.role( FormDraft.class ); // If it doesn't exist we create a empty one if (formDraft.getFormDraftValue().secondsignee().get() == null) { ValueBuilder<SecondSigneeInfoValue> secondSigneeBuilder = getSecondSigneeInfoValueBuilder( formDraft ); formDraft.addSecondSigneeInfo( secondSigneeBuilder.newInstance() ); } return formDraft.getFormDraftValue().secondsignee().get(); } public void updatesinglesignature( StringValue singleSignature ) { FormDraft formDraft = RoleMap.role( FormDraft.class ); ValueBuilder<SecondSigneeInfoValue> secondSigneeBuilder = getSecondSigneeInfoValueBuilder( formDraft ); secondSigneeBuilder.prototype().singlesignature().set( new Boolean( "".equals( singleSignature.string().get() ) ? "false" : singleSignature.string().get() ) ); formDraft.addSecondSigneeInfo( secondSigneeBuilder.newInstance() ); } public void updatename( StringValue name ) { FormDraft formDraft = RoleMap.role( FormDraft.class ); ValueBuilder<SecondSigneeInfoValue> secondSigneeBuilder = getSecondSigneeInfoValueBuilder( formDraft ); secondSigneeBuilder.prototype().name().set( name.string().get() ); formDraft.addSecondSigneeInfo( secondSigneeBuilder.newInstance() ); } public void updatesocialsecuritynumber( StringValue socialSecurityNumber ) { FormDraft formDraft = RoleMap.role( FormDraft.class ); ValueBuilder<SecondSigneeInfoValue> secondSigneeBuilder = getSecondSigneeInfoValueBuilder( formDraft ); secondSigneeBuilder.prototype().socialsecuritynumber().set( socialSecurityNumber.string().get() ); formDraft.addSecondSigneeInfo( secondSigneeBuilder.newInstance() ); } public void updatephonenumber( StringValue phoneNumber ) { FormDraft formDraft = RoleMap.role( FormDraft.class ); ValueBuilder<SecondSigneeInfoValue> secondSigneeBuilder = getSecondSigneeInfoValueBuilder( formDraft ); secondSigneeBuilder.prototype().phonenumber().set( phoneNumber.string().get() ); formDraft.addSecondSigneeInfo( secondSigneeBuilder.newInstance() ); } public void updateemail( StringValue email ) { FormDraft formDraft = RoleMap.role( FormDraft.class ); ValueBuilder<SecondSigneeInfoValue> secondSigneeBuilder = getSecondSigneeInfoValueBuilder( formDraft ); secondSigneeBuilder.prototype().email().set( email.string().get() ); formDraft.addSecondSigneeInfo( secondSigneeBuilder.newInstance() ); } private ValueBuilder<SecondSigneeInfoValue> getSecondSigneeInfoValueBuilder( FormDraft formDraft ) { ValueBuilder<SecondSigneeInfoValue> secondSigneeBuilder; SecondSigneeInfoValue secondSignee = formDraft.getFormDraftValue().secondsignee().get(); if( secondSignee == null ) { secondSigneeBuilder = module.valueBuilderFactory().newValueBuilder( SecondSigneeInfoValue.class ); } else { secondSigneeBuilder = secondSignee.buildWith(); } return secondSigneeBuilder; } public void removeSignatures() { FormDraft formDraft = role( FormDraft.class ); formDraft.removeFormSignatures(); } /** * discard form and remove case */ public void discard() { FormDraft formSubmission = RoleMap.role( FormDraft.class ); FormDrafts data = RoleMap.role( FormDrafts.class ); data.discardFormDraft( formSubmission ); EndUserCases cases = RoleMap.role( EndUserCases.class ); cases.discardCase( RoleMap.role( Case.class ) ); } public AccessPointSettingsDTO settings() { ValueBuilder<AccessPointSettingsDTO> builder = module.valueBuilderFactory().newValueBuilder( AccessPointSettingsDTO.class ); builder.prototype().location().set( systemDefaults.config().configuration().mapDefaultStartLocation().get() ); builder.prototype().zoomLevel().set( systemDefaults.config().configuration().mapDefaultZoomLevel().get() ); return builder.newInstance(); } }