public static EduProgramInfo WithDocuments (this EduProgramInfo eduProgram, ControllerBase controller)
        {
            eduProgram.Documents = controller.GetObjects<DocumentInfo> (
                "WHERE [ItemID] = @0", "EduProgramID=" + eduProgram.EduProgramID).ToList ();

            eduProgram.Documents.WithDocumentType (controller);

            return eduProgram;
        }
        public static EduProgramProfileInfo WithEduProgramProfileForms (
            this EduProgramProfileInfo eduProfile, ControllerBase controller)
        {
            eduProfile.EduProgramProfileForms = controller.GetObjects<EduProgramProfileFormInfo> (
                "WHERE [EduProgramProfileID] = @0", eduProfile.EduProgramProfileID)
                .WithEduForms (controller)
                .Cast<IEduProgramProfileForm> ()
                .ToList ();

            return eduProfile;
        }
        public static IEnumerable<EduProgramProfileInfo> WithEduPrograms (
            this IEnumerable<EduProgramProfileInfo> eduProgramProfiles, ControllerBase controller)
        {
            var eduPrograms = controller.GetObjects<EduProgramInfo> ();

            return eduProgramProfiles.Join (eduPrograms, epp => epp.EduProgramID, ep => ep.EduProgramID, 
                delegate (EduProgramProfileInfo epp, EduProgramInfo ep) {
                    epp.EduProgram = ep;
                    return epp;
                }
            );
        }
        public static IEduProgramProfile WithDocuments (
            this IEduProgramProfile eduProgramProfile, ControllerBase controller)
        {
            eduProgramProfile.Documents = controller.GetObjects<DocumentInfo> (
                "WHERE [ItemID] = @0", "EduProgramProfileID=" + eduProgramProfile.EduProgramProfileID)
                .Cast<IDocument> ()
                .ToList ();
            
            eduProgramProfile.Documents.WithDocumentType (controller);

            return eduProgramProfile;
        }