casa-reoc-0.1.0.0: src/ReOC/Fill.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# OPTIONS_GHC -Wall #-}
{- | Filling in each form type: checking an unfilled form, and either giving the valid form or every reason that
it is not valid, each at the path of its field (@fillT@ from the whole form, @fillTAt@ from a path); and
@unfillT@, the unfilled form of a valid form, which @fillT@ gives back.
-}
module ReOC.Fill (
fillPerson,
fillPersonAt,
unfillPerson,
fillAddress,
fillAddressAt,
unfillAddress,
fillOperationalHeadquarters,
fillOperationalHeadquartersAt,
unfillOperationalHeadquarters,
fillCompany,
fillCompanyAt,
unfillCompany,
fillFlightTermination,
fillFlightTerminationAt,
unfillFlightTermination,
fillEmergencyAction,
fillEmergencyActionAt,
unfillEmergencyAction,
fillRPAType,
fillRPATypeAt,
unfillRPAType,
fillEquipment,
fillEquipmentAt,
unfillEquipment,
fillAircraft,
fillAircraftAt,
unfillAircraft,
fillOperatedType,
fillOperatedTypeAt,
unfillOperatedType,
fillRePLOrigin,
fillRePLOriginAt,
unfillRePLOrigin,
fillOtherReOCRoles,
fillOtherReOCRolesAt,
unfillOtherReOCRoles,
fillNominee,
fillNomineeAt,
unfillNominee,
fillChiefExecutive,
fillChiefExecutiveAt,
unfillChiefExecutive,
fillCRPNominee,
fillCRPNomineeAt,
unfillCRPNominee,
fillChiefPilot,
fillChiefPilotAt,
unfillChiefPilot,
fillMCNominee,
fillMCNomineeAt,
unfillMCNominee,
fillKeyPersonnel,
fillKeyPersonnelAt,
unfillKeyPersonnel,
fillOperator,
fillOperatorAt,
unfillOperator,
fillContactPerson,
fillContactPersonAt,
unfillContactPerson,
fillPrimaryContact,
fillPrimaryContactAt,
unfillPrimaryContact,
fillHistoryAnswer,
fillHistoryAnswerAt,
unfillHistoryAnswer,
fillPersonnelHistory,
fillPersonnelHistoryAt,
unfillPersonnelHistory,
fillRegulatoryAction,
fillRegulatoryActionAt,
unfillRegulatoryAction,
fillRegulatoryHistory,
fillRegulatoryHistoryAt,
unfillRegulatoryHistory,
fillDeclarant,
fillDeclarantAt,
unfillDeclarant,
fillDeclaration,
fillDeclarationAt,
unfillDeclaration,
fillWrittenSignature,
fillWrittenSignatureAt,
unfillWrittenSignature,
fillApplicationForm,
fillApplicationFormAt,
unfillApplicationForm,
fillVersion,
fillVersionAt,
unfillVersion,
fillFirstIssue,
fillFirstIssueAt,
unfillFirstIssue,
fillRevision,
fillRevisionAt,
unfillRevision,
fillPolicies,
fillPoliciesAt,
unfillPolicies,
fillRiskAssessment,
fillRiskAssessmentAt,
unfillRiskAssessment,
fillRisk,
fillRiskAt,
unfillRisk,
fillOperationsManual,
fillOperationsManualAt,
unfillOperationsManual,
fillCRINominee,
fillCRINomineeAt,
unfillCRINominee,
fillRePLHolding,
fillRePLHoldingAt,
unfillRePLHolding,
fillTeachingQualification,
fillTeachingQualificationAt,
unfillTeachingQualification,
fillOperationalExperience,
fillOperationalExperienceAt,
unfillOperationalExperience,
fillTrainingCourse,
fillTrainingCourseAt,
unfillTrainingCourse,
fillTrainingArrangements,
fillTrainingArrangementsAt,
unfillTrainingArrangements,
fillTrainingMaterial,
fillTrainingMaterialAt,
unfillTrainingMaterial,
fillReOC,
fillReOCAt,
unfillReOC,
) where
import Control.Lens (preview, review)
import Data.Foldable (toList)
import Data.List.NonEmpty (NonEmpty)
import Data.Validation (Validation, toEither)
import ReOC.Input
import ReOC.Model
-- | Fills in @Person'@ from the whole form.
fillPerson :: (AsReOCError e) => UnfilledPerson -> Either (NonEmpty e) Person
fillPerson =
toEither . fillPersonAt []
-- | Fills in @Person'@ at a path.
fillPersonAt :: (AsReOCError e) => [Step] -> UnfilledPerson -> Validation (NonEmpty e) Person
fillPersonAt p (Person' x1 x2 x3 x4) =
Person'
<$> required (checked (preview _FormText) InvalidFormText) (at p PersonFullName) x1
<*> required (checked (preview _ARN) InvalidARN) (at p PersonArn) x2
<*> required (checked parsePhoneNumber InvalidPhoneNumber) (at p PersonPhoneNumber) x3
<*> required (checked (preview _EmailAddress) InvalidEmailAddress) (at p PersonEmailAddress) x4
-- | The unfilled form of a valid @Person'@.
unfillPerson :: Person -> UnfilledPerson
unfillPerson (Person' x1 x2 x3 x4) =
Person'
(Just (review _FormText x1))
(Just (review _ARN x2))
(Just (review _PhoneNumber x3))
(Just (review _EmailAddress x4))
-- | Fills in @Address'@ from the whole form.
fillAddress :: (AsReOCError e) => UnfilledAddress -> Either (NonEmpty e) Address
fillAddress =
toEither . fillAddressAt []
-- | Fills in @Address'@ at a path.
fillAddressAt :: (AsReOCError e) => [Step] -> UnfilledAddress -> Validation (NonEmpty e) Address
fillAddressAt p (Address' x1 x2 x3 x4) =
Address'
<$> nonEmptyElements (checked (preview _Text1) InvalidText1) (at p AddressStreetAddress) x1
<*> required (checked (preview _Text1) InvalidText1) (at p AddressSuburb) x2
<*> required accepted (at p AddressStateOrTerritory) x3
<*> required (checked (preview _Postcode) InvalidPostcode) (at p AddressPostcode) x4
-- | The unfilled form of a valid @Address'@.
unfillAddress :: Address -> UnfilledAddress
unfillAddress (Address' x1 x2 x3 x4) =
Address'
(map (review _Text1) (toList x1))
(Just (review _Text1 x2))
(Just x3)
(Just (review _Postcode x4))
-- | Fills in @OperationalHeadquarters'@ from the whole form.
fillOperationalHeadquarters :: (AsReOCError e) => UnfilledOperationalHeadquarters -> Either (NonEmpty e) OperationalHeadquarters
fillOperationalHeadquarters =
toEither . fillOperationalHeadquartersAt []
-- | Fills in @OperationalHeadquarters'@ at a path.
fillOperationalHeadquartersAt :: (AsReOCError e) => [Step] -> UnfilledOperationalHeadquarters -> Validation (NonEmpty e) OperationalHeadquarters
fillOperationalHeadquartersAt p = \case
AtRegisteredOffice -> pure AtRegisteredOffice
OperationalHeadquartersAddress x -> OperationalHeadquartersAddress <$> fillAddressAt (at p OperationalHeadquartersOperationalHeadquartersAddress) x
-- | The unfilled form of a valid @OperationalHeadquarters'@.
unfillOperationalHeadquarters :: OperationalHeadquarters -> UnfilledOperationalHeadquarters
unfillOperationalHeadquarters = \case
AtRegisteredOffice -> AtRegisteredOffice
OperationalHeadquartersAddress x -> OperationalHeadquartersAddress (unfillAddress x)
-- | Fills in @Company'@ from the whole form.
fillCompany :: (AsReOCError e) => UnfilledCompany -> Either (NonEmpty e) Company
fillCompany =
toEither . fillCompanyAt []
-- | Fills in @Company'@ at a path.
fillCompanyAt :: (AsReOCError e) => [Step] -> UnfilledCompany -> Validation (NonEmpty e) Company
fillCompanyAt p (Company' x1 x2 x3 x4 x5 x6 x7 x8) =
Company'
<$> required (checked (preview _FormText) InvalidFormText) (at p CompanyCompanyName) x1
<*> required (checked parseABN InvalidABN) (at p CompanyAbn) x2
<*> required (checked (preview _ARN) InvalidARN) (at p CompanyArn) x3
<*> fillAddressAt (at p CompanyRegisteredOffice) x4
<*> required fillOperationalHeadquartersAt (at p CompanyOperationalHeadquarters) x5
<*> required (checked parsePhoneNumber InvalidPhoneNumber) (at p CompanyPhoneNumber) x6
<*> required (checked (preview _EmailAddress) InvalidEmailAddress) (at p CompanyEmailAddress) x7
<*> optional (checked (preview _FormText) InvalidFormText) (at p CompanyBusinessName) x8
-- | The unfilled form of a valid @Company'@.
unfillCompany :: Company -> UnfilledCompany
unfillCompany (Company' x1 x2 x3 x4 x5 x6 x7 x8) =
Company'
(Just (review _FormText x1))
(Just (review _ABN x2))
(Just (review _ARN x3))
(unfillAddress x4)
(Just (unfillOperationalHeadquarters x5))
(Just (review _PhoneNumber x6))
(Just (review _EmailAddress x7))
(fmap (review _FormText) x8)
-- | Fills in @FlightTermination'@ from the whole form.
fillFlightTermination :: (AsReOCError e) => UnfilledFlightTermination -> Either (NonEmpty e) FlightTermination
fillFlightTermination =
toEither . fillFlightTerminationAt []
-- | Fills in @FlightTermination'@ at a path.
fillFlightTerminationAt :: (AsReOCError e) => [Step] -> UnfilledFlightTermination -> Validation (NonEmpty e) FlightTermination
fillFlightTerminationAt p = \case
NoFlightTerminationSystem -> pure NoFlightTerminationSystem
FlightTerminationSystem x -> FlightTerminationSystem <$> required (checked (preview _Text1) InvalidText1) (at p FlightTerminationFlightTerminationSystem) x
-- | The unfilled form of a valid @FlightTermination'@.
unfillFlightTermination :: FlightTermination -> UnfilledFlightTermination
unfillFlightTermination = \case
NoFlightTerminationSystem -> NoFlightTerminationSystem
FlightTerminationSystem x -> FlightTerminationSystem (Just (review _Text1 x))
-- | Fills in @EmergencyAction'@ from the whole form.
fillEmergencyAction :: (AsReOCError e) => UnfilledEmergencyAction -> Either (NonEmpty e) EmergencyAction
fillEmergencyAction =
toEither . fillEmergencyActionAt []
-- | Fills in @EmergencyAction'@ at a path.
fillEmergencyActionAt :: (AsReOCError e) => [Step] -> UnfilledEmergencyAction -> Validation (NonEmpty e) EmergencyAction
fillEmergencyActionAt p (EmergencyAction' x1 x2 x3) =
EmergencyAction'
<$> required (checked (preview _Text1) InvalidText1) (at p EmergencyActionSituation) x1
<*> required (checked (preview _Text1) InvalidText1) (at p EmergencyActionResponse) x2
<*> elements (checked (preview _Text1) InvalidText1) (at p EmergencyActionActionSteps) x3
-- | The unfilled form of a valid @EmergencyAction'@.
unfillEmergencyAction :: EmergencyAction -> UnfilledEmergencyAction
unfillEmergencyAction (EmergencyAction' x1 x2 x3) =
EmergencyAction'
(Just (review _Text1 x1))
(Just (review _Text1 x2))
(fmap (review _Text1) x3)
-- | Fills in @RPAType'@ from the whole form.
fillRPAType :: (AsReOCError e) => UnfilledRPAType -> Either (NonEmpty e) RPAType
fillRPAType =
toEither . fillRPATypeAt []
-- | Fills in @RPAType'@ at a path.
fillRPATypeAt :: (AsReOCError e) => [Step] -> UnfilledRPAType -> Validation (NonEmpty e) RPAType
fillRPATypeAt p (RPAType' x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) =
RPAType'
<$> required (checked (preview _Text1) InvalidText1) (at p RPATypeRpaMake) x1
<*> required (checked (preview _Text1) InvalidText1) (at p RPATypeRpaModel) x2
<*> required (checked (preview _FormText) InvalidFormText) (at p RPATypeShortName) x3
<*> required accepted (at p RPATypeCategory) x4
<*> required (checked (preview _GrossWeight) InvalidGrossWeight) (at p RPATypeMaximumGrossWeight) x5
<*> required (checked (preview _Text1) InvalidText1) (at p RPATypeUserManual) x6
<*> required accepted (at p RPATypeTransponderCarriage) x7
<*> required fillFlightTerminationAt (at p RPATypeFlightTermination) x8
<*> nonEmptyElements (checked (preview _Text1) InvalidText1) (at p RPATypeInspectionItems) x9
<*> elements (checked (preview _Text1) InvalidText1) (at p RPATypeBeforeFlight) x10
<*> optional (checked (preview _Text1) InvalidText1) (at p RPATypeBatteryWarnings) x11
<*> elements fillEmergencyActionAt (at p RPATypeEmergencyActions) x12
-- | The unfilled form of a valid @RPAType'@.
unfillRPAType :: RPAType -> UnfilledRPAType
unfillRPAType (RPAType' x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) =
RPAType'
(Just (review _Text1 x1))
(Just (review _Text1 x2))
(Just (review _FormText x3))
(Just x4)
(Just (review _GrossWeight x5))
(Just (review _Text1 x6))
(Just x7)
(Just (unfillFlightTermination x8))
(map (review _Text1) (toList x9))
(fmap (review _Text1) x10)
(fmap (review _Text1) x11)
(fmap unfillEmergencyAction x12)
-- | Fills in @Equipment'@ from the whole form.
fillEquipment :: (AsReOCError e) => UnfilledEquipment -> Either (NonEmpty e) Equipment
fillEquipment =
toEither . fillEquipmentAt []
-- | Fills in @Equipment'@ at a path.
fillEquipmentAt :: (AsReOCError e) => [Step] -> UnfilledEquipment -> Validation (NonEmpty e) Equipment
fillEquipmentAt p (Equipment' x1 x2) =
Equipment'
<$> required (checked (preview _Text1) InvalidText1) (at p EquipmentEquipmentDescription) x1
<*> required (checked (preview _Text1) InvalidText1) (at p EquipmentSerialNumber) x2
-- | The unfilled form of a valid @Equipment'@.
unfillEquipment :: Equipment -> UnfilledEquipment
unfillEquipment (Equipment' x1 x2) =
Equipment'
(Just (review _Text1 x1))
(Just (review _Text1 x2))
-- | Fills in @Aircraft'@ from the whole form.
fillAircraft :: (AsReOCError e) => UnfilledAircraft -> Either (NonEmpty e) Aircraft
fillAircraft =
toEither . fillAircraftAt []
-- | Fills in @Aircraft'@ at a path.
fillAircraftAt :: (AsReOCError e) => [Step] -> UnfilledAircraft -> Validation (NonEmpty e) Aircraft
fillAircraftAt p (Aircraft' x1 x2) =
Aircraft'
<$> required (checked (preview _Text1) InvalidText1) (at p AircraftSerialNumber) x1
<*> elements fillEquipmentAt (at p AircraftAssociatedEquipment) x2
-- | The unfilled form of a valid @Aircraft'@.
unfillAircraft :: Aircraft -> UnfilledAircraft
unfillAircraft (Aircraft' x1 x2) =
Aircraft'
(Just (review _Text1 x1))
(fmap unfillEquipment x2)
-- | Fills in @OperatedType'@ from the whole form.
fillOperatedType :: (AsReOCError e) => UnfilledOperatedType -> Either (NonEmpty e) OperatedType
fillOperatedType =
toEither . fillOperatedTypeAt []
-- | Fills in @OperatedType'@ at a path.
fillOperatedTypeAt :: (AsReOCError e) => [Step] -> UnfilledOperatedType -> Validation (NonEmpty e) OperatedType
fillOperatedTypeAt p (OperatedType' x1 x2) =
OperatedType'
<$> fillRPATypeAt (at p OperatedTypeRpaType) x1
<*> nonEmptyElements fillAircraftAt (at p OperatedTypeAirframes) x2
-- | The unfilled form of a valid @OperatedType'@.
unfillOperatedType :: OperatedType -> UnfilledOperatedType
unfillOperatedType (OperatedType' x1 x2) =
OperatedType'
(unfillRPAType x1)
(map unfillAircraft (toList x2))
-- | Fills in @RePLOrigin'@ from the whole form.
fillRePLOrigin :: (AsReOCError e) => UnfilledRePLOrigin -> Either (NonEmpty e) RePLOrigin
fillRePLOrigin =
toEither . fillRePLOriginAt []
-- | Fills in @RePLOrigin'@ at a path.
fillRePLOriginAt :: (AsReOCError e) => [Step] -> UnfilledRePLOrigin -> Validation (NonEmpty e) RePLOrigin
fillRePLOriginAt p = \case
PPLTheory -> pure PPLTheory
RePLTraining x -> RePLTraining <$> required (checked (preview _FormText) InvalidFormText) (at p RePLOriginRePLTrainingOrganisation) x
-- | The unfilled form of a valid @RePLOrigin'@.
unfillRePLOrigin :: RePLOrigin -> UnfilledRePLOrigin
unfillRePLOrigin = \case
PPLTheory -> PPLTheory
RePLTraining x -> RePLTraining (Just (review _FormText x))
-- | Fills in @OtherReOCRoles'@ from the whole form.
fillOtherReOCRoles :: (AsReOCError e) => UnfilledOtherReOCRoles -> Either (NonEmpty e) OtherReOCRoles
fillOtherReOCRoles =
toEither . fillOtherReOCRolesAt []
-- | Fills in @OtherReOCRoles'@ at a path.
fillOtherReOCRolesAt :: (AsReOCError e) => [Step] -> UnfilledOtherReOCRoles -> Validation (NonEmpty e) OtherReOCRoles
fillOtherReOCRolesAt p = \case
NoOtherReOCRoles -> pure NoOtherReOCRoles
OtherReOCRolesHeld x -> OtherReOCRolesHeld <$> required (checked (preview _FormText) InvalidFormText) (at p OtherReOCRolesOtherReOCRolesHeld) x
-- | The unfilled form of a valid @OtherReOCRoles'@.
unfillOtherReOCRoles :: OtherReOCRoles -> UnfilledOtherReOCRoles
unfillOtherReOCRoles = \case
NoOtherReOCRoles -> NoOtherReOCRoles
OtherReOCRolesHeld x -> OtherReOCRolesHeld (Just (review _FormText x))
-- | Fills in @Nominee'@ from the whole form.
fillNominee :: (AsReOCError e) => UnfilledNominee -> Either (NonEmpty e) Nominee
fillNominee =
toEither . fillNomineeAt []
-- | Fills in @Nominee'@ at a path.
fillNomineeAt :: (AsReOCError e) => [Step] -> UnfilledNominee -> Validation (NonEmpty e) Nominee
fillNomineeAt p (Nominee' x1 x2 x3) =
Nominee'
<$> fillPersonAt (at p NomineePerson) x1
<*> elements (checked (preview _Text1) InvalidText1) (at p NomineeOtherQualifications) x2
<*> required (checked (preview _Text1) InvalidText1) (at p NomineeAviationExperience) x3
-- | The unfilled form of a valid @Nominee'@.
unfillNominee :: Nominee -> UnfilledNominee
unfillNominee (Nominee' x1 x2 x3) =
Nominee'
(unfillPerson x1)
(fmap (review _Text1) x2)
(Just (review _Text1 x3))
-- | Fills in @ChiefExecutive'@ from the whole form.
fillChiefExecutive :: (AsReOCError e) => UnfilledChiefExecutive -> Either (NonEmpty e) ChiefExecutive
fillChiefExecutive =
toEither . fillChiefExecutiveAt []
-- | Fills in @ChiefExecutive'@ at a path.
fillChiefExecutiveAt :: (AsReOCError e) => [Step] -> UnfilledChiefExecutive -> Validation (NonEmpty e) ChiefExecutive
fillChiefExecutiveAt p (ChiefExecutive' x1 x2 x3) =
ChiefExecutive'
<$> fillNomineeAt (at p ChiefExecutiveNominee) x1
<*> required accepted (at p ChiefExecutiveDirectorStatus) x2
<*> optional (checked (preview _FormText) InvalidFormText) (at p ChiefExecutiveManagementExperience) x3
-- | The unfilled form of a valid @ChiefExecutive'@.
unfillChiefExecutive :: ChiefExecutive -> UnfilledChiefExecutive
unfillChiefExecutive (ChiefExecutive' x1 x2 x3) =
ChiefExecutive'
(unfillNominee x1)
(Just x2)
(fmap (review _FormText) x3)
-- | Fills in @CRPNominee'@ from the whole form.
fillCRPNominee :: (AsReOCError e) => UnfilledCRPNominee -> Either (NonEmpty e) CRPNominee
fillCRPNominee =
toEither . fillCRPNomineeAt []
-- | Fills in @CRPNominee'@ at a path.
fillCRPNomineeAt :: (AsReOCError e) => [Step] -> UnfilledCRPNominee -> Validation (NonEmpty e) CRPNominee
fillCRPNomineeAt p = \case
CRPIsCEO -> pure CRPIsCEO
CRPNominated x -> CRPNominated <$> fillNomineeAt (at p CRPNomineeCrpNominated) x
-- | The unfilled form of a valid @CRPNominee'@.
unfillCRPNominee :: CRPNominee -> UnfilledCRPNominee
unfillCRPNominee = \case
CRPIsCEO -> CRPIsCEO
CRPNominated x -> CRPNominated (unfillNominee x)
-- | Fills in @ChiefPilot'@ from the whole form.
fillChiefPilot :: (AsReOCError e) => UnfilledChiefPilot -> Either (NonEmpty e) ChiefPilot
fillChiefPilot =
toEither . fillChiefPilotAt []
-- | Fills in @ChiefPilot'@ at a path.
fillChiefPilotAt :: (AsReOCError e) => [Step] -> UnfilledChiefPilot -> Validation (NonEmpty e) ChiefPilot
fillChiefPilotAt p (ChiefPilot' x1 x2 x3 x4 x5) =
ChiefPilot'
<$> required fillCRPNomineeAt (at p ChiefPilotCrpNominee) x1
<*> required fillRePLOriginAt (at p ChiefPilotRePLOrigin) x2
<*> required (checked (preview _FormText) InvalidFormText) (at p ChiefPilotRpaHistory) x3
<*> required fillOtherReOCRolesAt (at p ChiefPilotOtherReOCRoles) x4
<*> required accepted (at p ChiefPilotRadio) x5
-- | The unfilled form of a valid @ChiefPilot'@.
unfillChiefPilot :: ChiefPilot -> UnfilledChiefPilot
unfillChiefPilot (ChiefPilot' x1 x2 x3 x4 x5) =
ChiefPilot'
(Just (unfillCRPNominee x1))
(Just (unfillRePLOrigin x2))
(Just (review _FormText x3))
(Just (unfillOtherReOCRoles x4))
(Just x5)
-- | Fills in @MCNominee'@ from the whole form.
fillMCNominee :: (AsReOCError e) => UnfilledMCNominee -> Either (NonEmpty e) MCNominee
fillMCNominee =
toEither . fillMCNomineeAt []
-- | Fills in @MCNominee'@ at a path.
fillMCNomineeAt :: (AsReOCError e) => [Step] -> UnfilledMCNominee -> Validation (NonEmpty e) MCNominee
fillMCNomineeAt p = \case
MCIsCEO -> pure MCIsCEO
MCIsCRP -> pure MCIsCRP
MCNominated x -> MCNominated <$> fillNomineeAt (at p MCNomineeMcNominated) x
-- | The unfilled form of a valid @MCNominee'@.
unfillMCNominee :: MCNominee -> UnfilledMCNominee
unfillMCNominee = \case
MCIsCEO -> MCIsCEO
MCIsCRP -> MCIsCRP
MCNominated x -> MCNominated (unfillNominee x)
-- | Fills in @KeyPersonnel'@ from the whole form.
fillKeyPersonnel :: (AsReOCError e) => UnfilledKeyPersonnel -> Either (NonEmpty e) KeyPersonnel
fillKeyPersonnel =
toEither . fillKeyPersonnelAt []
-- | Fills in @KeyPersonnel'@ at a path.
fillKeyPersonnelAt :: (AsReOCError e) => [Step] -> UnfilledKeyPersonnel -> Validation (NonEmpty e) KeyPersonnel
fillKeyPersonnelAt p (KeyPersonnel' x1 x2 x3) =
KeyPersonnel'
<$> fillChiefExecutiveAt (at p KeyPersonnelChiefExecutive) x1
<*> fillChiefPilotAt (at p KeyPersonnelChiefPilot) x2
<*> required fillMCNomineeAt (at p KeyPersonnelMcNominee) x3
-- | The unfilled form of a valid @KeyPersonnel'@.
unfillKeyPersonnel :: KeyPersonnel -> UnfilledKeyPersonnel
unfillKeyPersonnel (KeyPersonnel' x1 x2 x3) =
KeyPersonnel'
(unfillChiefExecutive x1)
(unfillChiefPilot x2)
(Just (unfillMCNominee x3))
-- | Fills in @Operator'@ from the whole form.
fillOperator :: (AsReOCError e) => UnfilledOperator -> Either (NonEmpty e) Operator
fillOperator =
toEither . fillOperatorAt []
-- | Fills in @Operator'@ at a path.
fillOperatorAt :: (AsReOCError e) => [Step] -> UnfilledOperator -> Validation (NonEmpty e) Operator
fillOperatorAt p (Operator' x1 x2 x3) =
Operator'
<$> fillCompanyAt (at p OperatorCompany) x1
<*> fillKeyPersonnelAt (at p OperatorKeyPersonnel) x2
<*> someElements fillOperatedTypeAt (at p OperatorFleet) x3
-- | The unfilled form of a valid @Operator'@.
unfillOperator :: Operator -> UnfilledOperator
unfillOperator (Operator' x1 x2 x3) =
Operator'
(unfillCompany x1)
(unfillKeyPersonnel x2)
(map unfillOperatedType (toList (someNonEmpty x3)))
-- | Fills in @ContactPerson'@ from the whole form.
fillContactPerson :: (AsReOCError e) => UnfilledContactPerson -> Either (NonEmpty e) ContactPerson
fillContactPerson =
toEither . fillContactPersonAt []
-- | Fills in @ContactPerson'@ at a path.
fillContactPersonAt :: (AsReOCError e) => [Step] -> UnfilledContactPerson -> Validation (NonEmpty e) ContactPerson
fillContactPersonAt p (ContactPerson' x1 x2 x3 x4) =
ContactPerson'
<$> required (checked (preview _FormText) InvalidFormText) (at p ContactPersonFullName) x1
<*> required (checked (preview _FormText) InvalidFormText) (at p ContactPersonPosition) x2
<*> required (checked parsePhoneNumber InvalidPhoneNumber) (at p ContactPersonPhoneNumber) x3
<*> required (checked (preview _EmailAddress) InvalidEmailAddress) (at p ContactPersonEmailAddress) x4
-- | The unfilled form of a valid @ContactPerson'@.
unfillContactPerson :: ContactPerson -> UnfilledContactPerson
unfillContactPerson (ContactPerson' x1 x2 x3 x4) =
ContactPerson'
(Just (review _FormText x1))
(Just (review _FormText x2))
(Just (review _PhoneNumber x3))
(Just (review _EmailAddress x4))
-- | Fills in @PrimaryContact'@ from the whole form.
fillPrimaryContact :: (AsReOCError e) => UnfilledPrimaryContact -> Either (NonEmpty e) PrimaryContact
fillPrimaryContact =
toEither . fillPrimaryContactAt []
-- | Fills in @PrimaryContact'@ at a path.
fillPrimaryContactAt :: (AsReOCError e) => [Step] -> UnfilledPrimaryContact -> Validation (NonEmpty e) PrimaryContact
fillPrimaryContactAt p = \case
ApplicantIsPrimaryContact -> pure ApplicantIsPrimaryContact
PrimaryContactPerson x -> PrimaryContactPerson <$> fillContactPersonAt (at p PrimaryContactPrimaryContactPerson) x
-- | The unfilled form of a valid @PrimaryContact'@.
unfillPrimaryContact :: PrimaryContact -> UnfilledPrimaryContact
unfillPrimaryContact = \case
ApplicantIsPrimaryContact -> ApplicantIsPrimaryContact
PrimaryContactPerson x -> PrimaryContactPerson (unfillContactPerson x)
-- | Fills in @HistoryAnswer'@ from the whole form.
fillHistoryAnswer :: (AsReOCError e) => UnfilledHistoryAnswer -> Either (NonEmpty e) HistoryAnswer
fillHistoryAnswer =
toEither . fillHistoryAnswerAt []
-- | Fills in @HistoryAnswer'@ at a path.
fillHistoryAnswerAt :: (AsReOCError e) => [Step] -> UnfilledHistoryAnswer -> Validation (NonEmpty e) HistoryAnswer
fillHistoryAnswerAt p = \case
NoHistory -> pure NoHistory
HistoryDisclosed x -> HistoryDisclosed <$> required (checked (preview _FormText) InvalidFormText) (at p HistoryAnswerHistoryDisclosed) x
-- | The unfilled form of a valid @HistoryAnswer'@.
unfillHistoryAnswer :: HistoryAnswer -> UnfilledHistoryAnswer
unfillHistoryAnswer = \case
NoHistory -> NoHistory
HistoryDisclosed x -> HistoryDisclosed (Just (review _FormText x))
-- | Fills in @PersonnelHistory'@ from the whole form.
fillPersonnelHistory :: (AsReOCError e) => UnfilledPersonnelHistory -> Either (NonEmpty e) PersonnelHistory
fillPersonnelHistory =
toEither . fillPersonnelHistoryAt []
-- | Fills in @PersonnelHistory'@ at a path.
fillPersonnelHistoryAt :: (AsReOCError e) => [Step] -> UnfilledPersonnelHistory -> Validation (NonEmpty e) PersonnelHistory
fillPersonnelHistoryAt p (PersonnelHistory' x1 x2 x3 x4) =
PersonnelHistory'
<$> required fillHistoryAnswerAt (at p PersonnelHistoryActionTaken) x1
<*> required fillHistoryAnswerAt (at p PersonnelHistoryTransportLicenceRefused) x2
<*> required fillHistoryAnswerAt (at p PersonnelHistoryCriminalConviction) x3
<*> required fillHistoryAnswerAt (at p PersonnelHistorySuspensionPending) x4
-- | The unfilled form of a valid @PersonnelHistory'@.
unfillPersonnelHistory :: PersonnelHistory -> UnfilledPersonnelHistory
unfillPersonnelHistory (PersonnelHistory' x1 x2 x3 x4) =
PersonnelHistory'
(Just (unfillHistoryAnswer x1))
(Just (unfillHistoryAnswer x2))
(Just (unfillHistoryAnswer x3))
(Just (unfillHistoryAnswer x4))
-- | Fills in @RegulatoryAction'@ from the whole form.
fillRegulatoryAction :: (AsReOCError e) => UnfilledRegulatoryAction -> Either (NonEmpty e) RegulatoryAction
fillRegulatoryAction =
toEither . fillRegulatoryActionAt []
-- | Fills in @RegulatoryAction'@ at a path.
fillRegulatoryActionAt :: (AsReOCError e) => [Step] -> UnfilledRegulatoryAction -> Validation (NonEmpty e) RegulatoryAction
fillRegulatoryActionAt p (RegulatoryAction' x1 x2 x3 x4 x5) =
RegulatoryAction'
<$> required accepted (at p RegulatoryActionReocSuspendedOrCancelled) x1
<*> required (checked (preview _FormText) InvalidFormText) (at p RegulatoryActionTypeOfAction) x2
<*> required (checked (preview _FormText) InvalidFormText) (at p RegulatoryActionAuthorisationAction) x3
<*> required accepted (at p RegulatoryActionActionDate) x4
<*> required (checked (preview _FormText) InvalidFormText) (at p RegulatoryActionActionDetails) x5
-- | The unfilled form of a valid @RegulatoryAction'@.
unfillRegulatoryAction :: RegulatoryAction -> UnfilledRegulatoryAction
unfillRegulatoryAction (RegulatoryAction' x1 x2 x3 x4 x5) =
RegulatoryAction'
(Just x1)
(Just (review _FormText x2))
(Just (review _FormText x3))
(Just x4)
(Just (review _FormText x5))
-- | Fills in @RegulatoryHistory'@ from the whole form.
fillRegulatoryHistory :: (AsReOCError e) => UnfilledRegulatoryHistory -> Either (NonEmpty e) RegulatoryHistory
fillRegulatoryHistory =
toEither . fillRegulatoryHistoryAt []
-- | Fills in @RegulatoryHistory'@ at a path.
fillRegulatoryHistoryAt :: (AsReOCError e) => [Step] -> UnfilledRegulatoryHistory -> Validation (NonEmpty e) RegulatoryHistory
fillRegulatoryHistoryAt p = \case
NoRegulatoryAction -> pure NoRegulatoryAction
RegulatoryActionTaken x -> RegulatoryActionTaken <$> fillRegulatoryActionAt (at p RegulatoryHistoryRegulatoryActionTaken) x
-- | The unfilled form of a valid @RegulatoryHistory'@.
unfillRegulatoryHistory :: RegulatoryHistory -> UnfilledRegulatoryHistory
unfillRegulatoryHistory = \case
NoRegulatoryAction -> NoRegulatoryAction
RegulatoryActionTaken x -> RegulatoryActionTaken (unfillRegulatoryAction x)
-- | Fills in @Declarant'@ from the whole form.
fillDeclarant :: (AsReOCError e) => UnfilledDeclarant -> Either (NonEmpty e) Declarant
fillDeclarant =
toEither . fillDeclarantAt []
-- | Fills in @Declarant'@ at a path.
fillDeclarantAt :: (AsReOCError e) => [Step] -> UnfilledDeclarant -> Validation (NonEmpty e) Declarant
fillDeclarantAt p (Declarant' x1 x2) =
Declarant'
<$> required (checked (preview _FormText) InvalidFormText) (at p DeclarantFullName) x1
<*> required (checked (preview _FormText) InvalidFormText) (at p DeclarantRole) x2
-- | The unfilled form of a valid @Declarant'@.
unfillDeclarant :: Declarant -> UnfilledDeclarant
unfillDeclarant (Declarant' x1 x2) =
Declarant'
(Just (review _FormText x1))
(Just (review _FormText x2))
-- | Fills in @Declaration'@ from the whole form.
fillDeclaration :: (AsReOCError e) => UnfilledDeclaration -> Either (NonEmpty e) Declaration
fillDeclaration =
toEither . fillDeclarationAt []
-- | Fills in @Declaration'@ at a path.
fillDeclarationAt :: (AsReOCError e) => [Step] -> UnfilledDeclaration -> Validation (NonEmpty e) Declaration
fillDeclarationAt p = \case
DeclaredByCEO -> pure DeclaredByCEO
DeclaredByResponsibleManager x -> DeclaredByResponsibleManager <$> required (checked (preview _FormText) InvalidFormText) (at p DeclarationDeclaredByResponsibleManager) x
DeclaredByAgent x -> DeclaredByAgent <$> required (checked (preview _FormText) InvalidFormText) (at p DeclarationDeclaredByAgent) x
DeclaredByOther x -> DeclaredByOther <$> fillDeclarantAt (at p DeclarationDeclaredByOther) x
-- | The unfilled form of a valid @Declaration'@.
unfillDeclaration :: Declaration -> UnfilledDeclaration
unfillDeclaration = \case
DeclaredByCEO -> DeclaredByCEO
DeclaredByResponsibleManager x -> DeclaredByResponsibleManager (Just (review _FormText x))
DeclaredByAgent x -> DeclaredByAgent (Just (review _FormText x))
DeclaredByOther x -> DeclaredByOther (unfillDeclarant x)
-- | Fills in @WrittenSignature'@ from the whole form.
fillWrittenSignature :: (AsReOCError e) => UnfilledWrittenSignature -> Either (NonEmpty e) WrittenSignature
fillWrittenSignature =
toEither . fillWrittenSignatureAt []
-- | Fills in @WrittenSignature'@ at a path.
fillWrittenSignatureAt :: (AsReOCError e) => [Step] -> UnfilledWrittenSignature -> Validation (NonEmpty e) WrittenSignature
fillWrittenSignatureAt p = \case
WrittenSignatureImage x -> WrittenSignatureImage <$> required accepted (at p WrittenSignatureWrittenSignatureImage) x
WrittenSignatureFile x -> WrittenSignatureFile <$> required accepted (at p WrittenSignatureWrittenSignatureFile) x
-- | The unfilled form of a valid @WrittenSignature'@.
unfillWrittenSignature :: WrittenSignature -> UnfilledWrittenSignature
unfillWrittenSignature = \case
WrittenSignatureImage x -> WrittenSignatureImage (Just x)
WrittenSignatureFile x -> WrittenSignatureFile (Just x)
-- | Fills in @ApplicationForm'@ from the whole form.
fillApplicationForm :: (AsReOCError e) => UnfilledApplicationForm -> Either (NonEmpty e) ApplicationForm
fillApplicationForm =
toEither . fillApplicationFormAt []
-- | Fills in @ApplicationForm'@ at a path.
fillApplicationFormAt :: (AsReOCError e) => [Step] -> UnfilledApplicationForm -> Validation (NonEmpty e) ApplicationForm
fillApplicationFormAt p (ApplicationForm' x1 x2 x3 x4 x5 x6 x7) =
ApplicationForm'
<$> required fillPrimaryContactAt (at p ApplicationFormPrimaryContact) x1
<*> fillPersonnelHistoryAt (at p ApplicationFormPersonnelHistory) x2
<*> required fillRegulatoryHistoryAt (at p ApplicationFormRegulatoryHistory) x3
<*> required accepted (at p ApplicationFormProceduresLibrary) x4
<*> atMostElements (checked (preview _FormText) InvalidFormText) (at p ApplicationFormOtherDocuments) x5
<*> required fillDeclarationAt (at p ApplicationFormDeclaration) x6
<*> optional fillWrittenSignatureAt (at p ApplicationFormSignature) x7
-- | The unfilled form of a valid @ApplicationForm'@.
unfillApplicationForm :: ApplicationForm -> UnfilledApplicationForm
unfillApplicationForm (ApplicationForm' x1 x2 x3 x4 x5 x6 x7) =
ApplicationForm'
(Just (unfillPrimaryContact x1))
(unfillPersonnelHistory x2)
(Just (unfillRegulatoryHistory x3))
(Just x4)
(map (review _FormText) (atMostList x5))
(Just (unfillDeclaration x6))
(fmap unfillWrittenSignature x7)
-- | Fills in @Version'@ from the whole form.
fillVersion :: (AsReOCError e) => UnfilledVersion -> Either (NonEmpty e) Version
fillVersion =
toEither . fillVersionAt []
-- | Fills in @Version'@ at a path.
fillVersionAt :: (AsReOCError e) => [Step] -> UnfilledVersion -> Validation (NonEmpty e) Version
fillVersionAt p (Version' x1 x2) =
Version'
<$> required accepted (at p VersionMajorVersion) x1
<*> required accepted (at p VersionMinorVersion) x2
-- | The unfilled form of a valid @Version'@.
unfillVersion :: Version -> UnfilledVersion
unfillVersion (Version' x1 x2) =
Version'
(Just x1)
(Just x2)
-- | Fills in @FirstIssue'@ from the whole form.
fillFirstIssue :: (AsReOCError e) => UnfilledFirstIssue -> Either (NonEmpty e) FirstIssue
fillFirstIssue =
toEither . fillFirstIssueAt []
-- | Fills in @FirstIssue'@ at a path.
fillFirstIssueAt :: (AsReOCError e) => [Step] -> UnfilledFirstIssue -> Validation (NonEmpty e) FirstIssue
fillFirstIssueAt p (FirstIssue' x1 x2 x3 x4 x5) =
FirstIssue'
<$> fillVersionAt (at p FirstIssueVersion) x1
<*> required accepted (at p FirstIssueIssueDate) x2
<*> required (checked (preview _Text1) InvalidText1) (at p FirstIssueEffective) x3
<*> required (checked (preview _Text1) InvalidText1) (at p FirstIssueParts) x4
<*> required (checked (preview _Text1) InvalidText1) (at p FirstIssueDetails) x5
-- | The unfilled form of a valid @FirstIssue'@.
unfillFirstIssue :: FirstIssue -> UnfilledFirstIssue
unfillFirstIssue (FirstIssue' x1 x2 x3 x4 x5) =
FirstIssue'
(unfillVersion x1)
(Just x2)
(Just (review _Text1 x3))
(Just (review _Text1 x4))
(Just (review _Text1 x5))
-- | Fills in @Revision'@ from the whole form.
fillRevision :: (AsReOCError e) => UnfilledRevision -> Either (NonEmpty e) Revision
fillRevision =
toEither . fillRevisionAt []
-- | Fills in @Revision'@ at a path.
fillRevisionAt :: (AsReOCError e) => [Step] -> UnfilledRevision -> Validation (NonEmpty e) Revision
fillRevisionAt p (Revision' x1 x2 x3 x4 x5) =
Revision'
<$> required accepted (at p RevisionVersionIncrement) x1
<*> required accepted (at p RevisionMonthsAfter) x2
<*> required (checked (preview _Text1) InvalidText1) (at p RevisionEffective) x3
<*> required (checked (preview _Text1) InvalidText1) (at p RevisionParts) x4
<*> required (checked (preview _Text1) InvalidText1) (at p RevisionDetails) x5
-- | The unfilled form of a valid @Revision'@.
unfillRevision :: Revision -> UnfilledRevision
unfillRevision (Revision' x1 x2 x3 x4 x5) =
Revision'
(Just x1)
(Just x2)
(Just (review _Text1 x3))
(Just (review _Text1 x4))
(Just (review _Text1 x5))
-- | Fills in @Policies'@ from the whole form.
fillPolicies :: (AsReOCError e) => UnfilledPolicies -> Either (NonEmpty e) Policies
fillPolicies =
toEither . fillPoliciesAt []
-- | Fills in @Policies'@ at a path.
fillPoliciesAt :: (AsReOCError e) => [Step] -> UnfilledPolicies -> Validation (NonEmpty e) Policies
fillPoliciesAt p (Policies' x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) =
Policies'
<$> required (checked (preview _Positive) InvalidPositive) (at p PoliciesRecencyFlights) x1
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesRecencyDays) x2
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesRefresherMonths) x3
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesAlcoholHours) x4
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesRestHours) x5
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesDutyHours) x6
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesInspectionMonths) x7
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesInspectionHours) x8
<*> required (checked (preview _Percentage) InvalidPercentage) (at p PoliciesBatteryReserve) x9
<*> required accepted (at p PoliciesBackupFrequency) x10
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesIndependentReviewYears) x11
<*> required (checked (preview _Positive) InvalidPositive) (at p PoliciesCheckingMonths) x12
-- | The unfilled form of a valid @Policies'@.
unfillPolicies :: Policies -> UnfilledPolicies
unfillPolicies (Policies' x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) =
Policies'
(Just (review _Positive x1))
(Just (review _Positive x2))
(Just (review _Positive x3))
(Just (review _Positive x4))
(Just (review _Positive x5))
(Just (review _Positive x6))
(Just (review _Positive x7))
(Just (review _Positive x8))
(Just (review _Percentage x9))
(Just x10)
(Just (review _Positive x11))
(Just (review _Positive x12))
-- | Fills in @RiskAssessment'@ from the whole form.
fillRiskAssessment :: (AsReOCError e) => UnfilledRiskAssessment -> Either (NonEmpty e) RiskAssessment
fillRiskAssessment =
toEither . fillRiskAssessmentAt []
-- | Fills in @RiskAssessment'@ at a path.
fillRiskAssessmentAt :: (AsReOCError e) => [Step] -> UnfilledRiskAssessment -> Validation (NonEmpty e) RiskAssessment
fillRiskAssessmentAt p (RiskAssessment' x1 x2) =
RiskAssessment'
<$> required accepted (at p RiskAssessmentRiskLikelihood) x1
<*> required accepted (at p RiskAssessmentRiskConsequence) x2
-- | The unfilled form of a valid @RiskAssessment'@.
unfillRiskAssessment :: RiskAssessment -> UnfilledRiskAssessment
unfillRiskAssessment (RiskAssessment' x1 x2) =
RiskAssessment'
(Just x1)
(Just x2)
-- | Fills in @Risk'@ from the whole form.
fillRisk :: (AsReOCError e) => UnfilledRisk -> Either (NonEmpty e) Risk
fillRisk =
toEither . fillRiskAt []
-- | Fills in @Risk'@ at a path.
fillRiskAt :: (AsReOCError e) => [Step] -> UnfilledRisk -> Validation (NonEmpty e) Risk
fillRiskAt p (Risk' x1 x2 x3 x4 x5 x6 x7 x8 x9) =
Risk'
<$> required (checked (preview _Text1) InvalidText1) (at p RiskHazard) x1
<*> required (checked (preview _Text1) InvalidText1) (at p RiskRiskDescription) x2
<*> required (checked (preview _Text1) InvalidText1) (at p RiskExistingControls) x3
<*> fillRiskAssessmentAt (at p RiskInitialRisk) x4
<*> required (checked (preview _Text1) InvalidText1) (at p RiskAdditionalControls) x5
<*> fillRiskAssessmentAt (at p RiskResidualRisk) x6
<*> required accepted (at p RiskRiskOwner) x7
<*> required accepted (at p RiskDateEntered) x8
<*> required (checked (preview _ReviewMonths) InvalidReviewMonths) (at p RiskReviewMonths) x9
-- | The unfilled form of a valid @Risk'@.
unfillRisk :: Risk -> UnfilledRisk
unfillRisk (Risk' x1 x2 x3 x4 x5 x6 x7 x8 x9) =
Risk'
(Just (review _Text1 x1))
(Just (review _Text1 x2))
(Just (review _Text1 x3))
(unfillRiskAssessment x4)
(Just (review _Text1 x5))
(unfillRiskAssessment x6)
(Just x7)
(Just x8)
(Just (review _ReviewMonths x9))
-- | Fills in @OperationsManual'@ from the whole form.
fillOperationsManual :: (AsReOCError e) => UnfilledOperationsManual -> Either (NonEmpty e) OperationsManual
fillOperationsManual =
toEither . fillOperationsManualAt []
-- | Fills in @OperationsManual'@ at a path.
fillOperationsManualAt :: (AsReOCError e) => [Step] -> UnfilledOperationsManual -> Validation (NonEmpty e) OperationsManual
fillOperationsManualAt p (OperationsManual' x1 x2 x3 x4 x5 x6 x7) =
OperationsManual'
<$> fillFirstIssueAt (at p OperationsManualFirstIssue) x1
<*> elements fillRevisionAt (at p OperationsManualRevisions) x2
<*> nonEmptyElements (checked (preview _Text1) InvalidText1) (at p OperationsManualServices) x3
<*> fillPoliciesAt (at p OperationsManualPolicies) x4
<*> nonEmptyElements fillRiskAt (at p OperationsManualRiskRegister) x5
<*> required accepted (at p OperationsManualCrew) x6
<*> required accepted (at p OperationsManualPilots) x7
-- | The unfilled form of a valid @OperationsManual'@.
unfillOperationsManual :: OperationsManual -> UnfilledOperationsManual
unfillOperationsManual (OperationsManual' x1 x2 x3 x4 x5 x6 x7) =
OperationsManual'
(unfillFirstIssue x1)
(fmap unfillRevision x2)
(map (review _Text1) (toList x3))
(unfillPolicies x4)
(map unfillRisk (toList x5))
(Just x6)
(Just x7)
-- | Fills in @CRINominee'@ from the whole form.
fillCRINominee :: (AsReOCError e) => UnfilledCRINominee -> Either (NonEmpty e) CRINominee
fillCRINominee =
toEither . fillCRINomineeAt []
-- | Fills in @CRINominee'@ at a path.
fillCRINomineeAt :: (AsReOCError e) => [Step] -> UnfilledCRINominee -> Validation (NonEmpty e) CRINominee
fillCRINomineeAt p = \case
CRIIsCEO -> pure CRIIsCEO
CRIIsCRP -> pure CRIIsCRP
CRIIsMC -> pure CRIIsMC
CRINominated x -> CRINominated <$> fillNomineeAt (at p CRINomineeCriNominated) x
-- | The unfilled form of a valid @CRINominee'@.
unfillCRINominee :: CRINominee -> UnfilledCRINominee
unfillCRINominee = \case
CRIIsCEO -> CRIIsCEO
CRIIsCRP -> CRIIsCRP
CRIIsMC -> CRIIsMC
CRINominated x -> CRINominated (unfillNominee x)
-- | Fills in @RePLHolding'@ from the whole form.
fillRePLHolding :: (AsReOCError e) => UnfilledRePLHolding -> Either (NonEmpty e) RePLHolding
fillRePLHolding =
toEither . fillRePLHoldingAt []
-- | Fills in @RePLHolding'@ at a path.
fillRePLHoldingAt :: (AsReOCError e) => [Step] -> UnfilledRePLHolding -> Validation (NonEmpty e) RePLHolding
fillRePLHoldingAt p = \case
HoldsRePLForEachType -> pure HoldsRePLForEachType
RePLHoldingIntent x -> RePLHoldingIntent <$> required (checked (preview _FormText) InvalidFormText) (at p RePLHoldingRePLHoldingIntent) x
-- | The unfilled form of a valid @RePLHolding'@.
unfillRePLHolding :: RePLHolding -> UnfilledRePLHolding
unfillRePLHolding = \case
HoldsRePLForEachType -> HoldsRePLForEachType
RePLHoldingIntent x -> RePLHoldingIntent (Just (review _FormText x))
-- | Fills in @TeachingQualification'@ from the whole form.
fillTeachingQualification :: (AsReOCError e) => UnfilledTeachingQualification -> Either (NonEmpty e) TeachingQualification
fillTeachingQualification =
toEither . fillTeachingQualificationAt []
-- | Fills in @TeachingQualification'@ at a path.
fillTeachingQualificationAt :: (AsReOCError e) => [Step] -> UnfilledTeachingQualification -> Validation (NonEmpty e) TeachingQualification
fillTeachingQualificationAt p = \case
TeachingQualificationHeld x -> TeachingQualificationHeld <$> required (checked (preview _FormText) InvalidFormText) (at p TeachingQualificationTeachingQualificationHeld) x
TeachingQualificationIntent x -> TeachingQualificationIntent <$> required (checked (preview _FormText) InvalidFormText) (at p TeachingQualificationTeachingQualificationIntent) x
-- | The unfilled form of a valid @TeachingQualification'@.
unfillTeachingQualification :: TeachingQualification -> UnfilledTeachingQualification
unfillTeachingQualification = \case
TeachingQualificationHeld x -> TeachingQualificationHeld (Just (review _FormText x))
TeachingQualificationIntent x -> TeachingQualificationIntent (Just (review _FormText x))
-- | Fills in @OperationalExperience'@ from the whole form.
fillOperationalExperience :: (AsReOCError e) => UnfilledOperationalExperience -> Either (NonEmpty e) OperationalExperience
fillOperationalExperience =
toEither . fillOperationalExperienceAt []
-- | Fills in @OperationalExperience'@ at a path.
fillOperationalExperienceAt :: (AsReOCError e) => [Step] -> UnfilledOperationalExperience -> Validation (NonEmpty e) OperationalExperience
fillOperationalExperienceAt p = \case
HasOperationalExperience -> pure HasOperationalExperience
OperationalExperienceIntent x -> OperationalExperienceIntent <$> required (checked (preview _FormText) InvalidFormText) (at p OperationalExperienceOperationalExperienceIntent) x
OperationalExperienceNotApplicable -> pure OperationalExperienceNotApplicable
-- | The unfilled form of a valid @OperationalExperience'@.
unfillOperationalExperience :: OperationalExperience -> UnfilledOperationalExperience
unfillOperationalExperience = \case
HasOperationalExperience -> HasOperationalExperience
OperationalExperienceIntent x -> OperationalExperienceIntent (Just (review _FormText x))
OperationalExperienceNotApplicable -> OperationalExperienceNotApplicable
-- | Fills in @TrainingCourse'@ from the whole form.
fillTrainingCourse :: (AsReOCError e) => UnfilledTrainingCourse -> Either (NonEmpty e) TrainingCourse
fillTrainingCourse =
toEither . fillTrainingCourseAt []
-- | Fills in @TrainingCourse'@ at a path.
fillTrainingCourseAt :: (AsReOCError e) => [Step] -> UnfilledTrainingCourse -> Validation (NonEmpty e) TrainingCourse
fillTrainingCourseAt p (TrainingCourse' x1 x2 x3) =
TrainingCourse'
<$> required accepted (at p TrainingCourseCourseKind) x1
<*> fillOperatedTypeAt (at p TrainingCourseTrainingRPA) x2
<*> nonEmptyElements accepted (at p TrainingCourseComplexities) x3
-- | The unfilled form of a valid @TrainingCourse'@.
unfillTrainingCourse :: TrainingCourse -> UnfilledTrainingCourse
unfillTrainingCourse (TrainingCourse' x1 x2 x3) =
TrainingCourse'
(Just x1)
(unfillOperatedType x2)
(toList x3)
-- | Fills in @TrainingArrangements'@ from the whole form.
fillTrainingArrangements :: (AsReOCError e) => UnfilledTrainingArrangements -> Either (NonEmpty e) TrainingArrangements
fillTrainingArrangements =
toEither . fillTrainingArrangementsAt []
-- | Fills in @TrainingArrangements'@ at a path.
fillTrainingArrangementsAt :: (AsReOCError e) => [Step] -> UnfilledTrainingArrangements -> Validation (NonEmpty e) TrainingArrangements
fillTrainingArrangementsAt p (TrainingArrangements' x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) =
TrainingArrangements'
<$> nonEmptyElements (checked (preview _Text1) InvalidText1) (at p TrainingArrangementsTheoryVenues) x1
<*> nonEmptyElements (checked (preview _Text1) InvalidText1) (at p TrainingArrangementsPracticalAreas) x2
<*> required (checked (preview _Positive) InvalidPositive) (at p TrainingArrangementsMaxStudentsPerCourse) x3
<*> required (checked (preview _Positive) InvalidPositive) (at p TrainingArrangementsMaxStudentsPerInstructor) x4
<*> required accepted (at p TrainingArrangementsTakeover) x5
<*> required accepted (at p TrainingArrangementsTheory) x6
<*> required accepted (at p TrainingArrangementsExam) x7
<*> required (checked (preview _PassMark) InvalidPassMark) (at p TrainingArrangementsExamPassMark) x8
<*> required accepted (at p TrainingArrangementsExaminer) x9
<*> optional (checked (preview _Text1) InvalidText1) (at p TrainingArrangementsSimulator) x10
-- | The unfilled form of a valid @TrainingArrangements'@.
unfillTrainingArrangements :: TrainingArrangements -> UnfilledTrainingArrangements
unfillTrainingArrangements (TrainingArrangements' x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) =
TrainingArrangements'
(map (review _Text1) (toList x1))
(map (review _Text1) (toList x2))
(Just (review _Positive x3))
(Just (review _Positive x4))
(Just x5)
(Just x6)
(Just x7)
(Just (review _PassMark x8))
(Just x9)
(fmap (review _Text1) x10)
-- | Fills in @TrainingMaterial'@ from the whole form.
fillTrainingMaterial :: (AsReOCError e) => UnfilledTrainingMaterial -> Either (NonEmpty e) TrainingMaterial
fillTrainingMaterial =
toEither . fillTrainingMaterialAt []
-- | Fills in @TrainingMaterial'@ at a path.
fillTrainingMaterialAt :: (AsReOCError e) => [Step] -> UnfilledTrainingMaterial -> Validation (NonEmpty e) TrainingMaterial
fillTrainingMaterialAt p (TrainingMaterial' x1 x2 x3 x4 x5 x6 x7) =
TrainingMaterial'
<$> required fillCRINomineeAt (at p TrainingMaterialCriNominee) x1
<*> required fillRePLHoldingAt (at p TrainingMaterialRePLHolding) x2
<*> required fillTeachingQualificationAt (at p TrainingMaterialTeachingQualification) x3
<*> required fillOperationalExperienceAt (at p TrainingMaterialOperationalExperience) x4
<*> required fillOtherReOCRolesAt (at p TrainingMaterialCriOtherReOCRoles) x5
<*> someElements fillTrainingCourseAt (at p TrainingMaterialTrainingCourses) x6
<*> fillTrainingArrangementsAt (at p TrainingMaterialTrainingArrangements) x7
-- | The unfilled form of a valid @TrainingMaterial'@.
unfillTrainingMaterial :: TrainingMaterial -> UnfilledTrainingMaterial
unfillTrainingMaterial (TrainingMaterial' x1 x2 x3 x4 x5 x6 x7) =
TrainingMaterial'
(Just (unfillCRINominee x1))
(Just (unfillRePLHolding x2))
(Just (unfillTeachingQualification x3))
(Just (unfillOperationalExperience x4))
(Just (unfillOtherReOCRoles x5))
(map unfillTrainingCourse (toList (someNonEmpty x6)))
(unfillTrainingArrangements x7)
-- | Fills in @ReOC'@ from the whole form.
fillReOC :: (AsReOCError e) => UnfilledReOC -> Either (NonEmpty e) ReOC
fillReOC =
toEither . fillReOCAt []
-- | Fills in @ReOC'@ at a path.
fillReOCAt :: (AsReOCError e) => [Step] -> UnfilledReOC -> Validation (NonEmpty e) ReOC
fillReOCAt p (ReOC' x1 x2 x3 x4) =
ReOC'
<$> fillOperatorAt (at p ReOCOperator) x1
<*> fillApplicationFormAt (at p ReOCApplicationForm) x2
<*> fillOperationsManualAt (at p ReOCOperationsManual) x3
<*> optional fillTrainingMaterialAt (at p ReOCMaybeTrainingMaterial) x4
-- | The unfilled form of a valid @ReOC'@.
unfillReOC :: ReOC -> UnfilledReOC
unfillReOC (ReOC' x1 x2 x3 x4) =
ReOC'
(unfillOperator x1)
(unfillApplicationForm x2)
(unfillOperationsManual x3)
(fmap unfillTrainingMaterial x4)