private Amendment Convert(CheckingWindow checkingWindow, rscd_Amendment amendment)
        {
            CurrentBuilder = RetrieveBuilderForAmendment(amendment.rscd_Amendmenttype);

            var amendmentDomain = CurrentBuilder.CreateAmendment();

            amendmentDomain.Id             = amendment.Id.ToString();
            amendmentDomain.CheckingWindow = amendment.rscd_Checkingwindow.Value.ToDomainCheckingWindow();
            amendmentDomain.Reference      = amendment.rscd_Referencenumber;
            amendmentDomain.URN            = amendment.rscd_URN;
            amendmentDomain.Pupil          = new Pupil
            {
                Forename      = amendment.rscd_Firstname,
                Surname       = amendment.rscd_Lastname,
                Gender        = amendment.rscd_Gender.Value.ToDomainGenderType(),
                DOB           = amendment.rscd_Dateofbirth.Value,
                Age           = amendment.rscd_Age.HasValue ? amendment.rscd_Age.Value : 0,
                AdmissionDate = amendment.rscd_Dateofadmission.GetValueOrDefault(),
                YearGroup     = amendment.rscd_Yeargroup,
                UPN           = amendment.rscd_UPN,
                ULN           = amendment.rscd_ULN
            };
            amendmentDomain.EvidenceStatus = amendment.rscd_Evidencestatus.Value.ToDomainEvidenceStatus();
            amendmentDomain.CreatedDate    = amendment.CreatedOn.Value;
            amendmentDomain.Status         = GetStatus(checkingWindow, amendment);

            amendmentDomain.AmendmentDetail = GetAmendmentDetails(amendment);

            return(amendmentDomain);
        }
        public AmendmentOutcome AddAmendment(Amendment amendment)
        {
            CurrentBuilder = RetrieveBuilderForAmendment(amendment.AmendmentType);

            var outcome = CurrentBuilder.BuildAmendments(amendment);

            if (outcome.IsComplete && outcome.IsAmendmentCreated)
            {
                var amendmentEstablishment = GetOrCreateEstablishment(amendment.CheckingWindow, amendment.URN);
                RelateEstablishmentToAmendment(amendmentEstablishment, outcome.NewAmendmentId);

                if (amendment.EvidenceStatus == EvidenceStatus.Now)
                {
                    RelateEvidence(outcome.NewAmendmentId, amendment.EvidenceFolderName, false);
                }

                outcome.NewAmendmentReferenceNumber = GetAmendment(amendment.CheckingWindow, outcome.NewAmendmentId).Reference;
            }

            return(outcome);
        }