/// <summary>
 /// Initializes a new instance of the <see cref="EdFiCourseLearningObjective" /> class.
 /// </summary>
 /// <param name="LearningObjectiveReference">LearningObjectiveReference (required).</param>
 public EdFiCourseLearningObjective(EdFiLearningObjectiveReference LearningObjectiveReference = default(EdFiLearningObjectiveReference))
 {
     // to ensure "LearningObjectiveReference" is required (not null)
     if (LearningObjectiveReference == null)
     {
         throw new InvalidDataException("LearningObjectiveReference is a required property for EdFiCourseLearningObjective and cannot be null");
     }
     else
     {
         this.LearningObjectiveReference = LearningObjectiveReference;
     }
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EdFiStudentLearningObjective" /> class.
 /// </summary>
 /// <param name="Id">Id (required).</param>
 /// <param name="GradingPeriodReference">GradingPeriodReference (required).</param>
 /// <param name="LearningObjectiveReference">LearningObjectiveReference (required).</param>
 /// <param name="StudentReference">StudentReference (required).</param>
 /// <param name="CompetencyLevelDescriptor">The CompetencyLevel assessed for the student for the referenced LearningObjective. (required).</param>
 /// <param name="DiagnosticStatement">A statement provided by the teacher that provides information in addition to the grade or assessment score..</param>
 /// <param name="GeneralStudentProgramAssociations">An unordered collection of studentLearningObjectiveGeneralStudentProgramAssociations. Relates the Student and Program associated with the LearningObjective..</param>
 /// <param name="StudentSectionAssociations">An unordered collection of studentLearningObjectiveStudentSectionAssociations. Relates the Student and Section associated with the LearningObjective..</param>
 /// <param name="Etag">A unique system-generated value that identifies the version of the resource..</param>
 public EdFiStudentLearningObjective(string Id = default(string), EdFiGradingPeriodReference GradingPeriodReference = default(EdFiGradingPeriodReference), EdFiLearningObjectiveReference LearningObjectiveReference = default(EdFiLearningObjectiveReference), EdFiStudentReference StudentReference = default(EdFiStudentReference), string CompetencyLevelDescriptor = default(string), string DiagnosticStatement = default(string), List <EdFiStudentLearningObjectiveGeneralStudentProgramAssociation> GeneralStudentProgramAssociations = default(List <EdFiStudentLearningObjectiveGeneralStudentProgramAssociation>), List <EdFiStudentLearningObjectiveStudentSectionAssociation> StudentSectionAssociations = default(List <EdFiStudentLearningObjectiveStudentSectionAssociation>), string Etag = default(string))
 {
     // to ensure "Id" is required (not null)
     if (Id == null)
     {
         throw new InvalidDataException("Id is a required property for EdFiStudentLearningObjective and cannot be null");
     }
     else
     {
         this.Id = Id;
     }
     // to ensure "GradingPeriodReference" is required (not null)
     if (GradingPeriodReference == null)
     {
         throw new InvalidDataException("GradingPeriodReference is a required property for EdFiStudentLearningObjective and cannot be null");
     }
     else
     {
         this.GradingPeriodReference = GradingPeriodReference;
     }
     // to ensure "LearningObjectiveReference" is required (not null)
     if (LearningObjectiveReference == null)
     {
         throw new InvalidDataException("LearningObjectiveReference is a required property for EdFiStudentLearningObjective and cannot be null");
     }
     else
     {
         this.LearningObjectiveReference = LearningObjectiveReference;
     }
     // to ensure "StudentReference" is required (not null)
     if (StudentReference == null)
     {
         throw new InvalidDataException("StudentReference is a required property for EdFiStudentLearningObjective and cannot be null");
     }
     else
     {
         this.StudentReference = StudentReference;
     }
     // to ensure "CompetencyLevelDescriptor" is required (not null)
     if (CompetencyLevelDescriptor == null)
     {
         throw new InvalidDataException("CompetencyLevelDescriptor is a required property for EdFiStudentLearningObjective and cannot be null");
     }
     else
     {
         this.CompetencyLevelDescriptor = CompetencyLevelDescriptor;
     }
     this.DiagnosticStatement = DiagnosticStatement;
     this.GeneralStudentProgramAssociations = GeneralStudentProgramAssociations;
     this.StudentSectionAssociations        = StudentSectionAssociations;
     this.Etag = Etag;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EdFiLearningObjective" /> class.
 /// </summary>
 /// <param name="Id">Id (required).</param>
 /// <param name="AcademicSubjects">An unordered collection of learningObjectiveAcademicSubjects. The description of the content or subject area (e.g., arts, mathematics, reading, stenography, or a foreign language) of an assessment. (required).</param>
 /// <param name="LearningObjectiveId">The identifier for the specific learning objective in the context of a standard (e.g., 111.15.3.1.A). (required).</param>
 /// <param name="_Namespace">Namespace for the LearningObjective. (required).</param>
 /// <param name="ParentLearningObjectiveReference">ParentLearningObjectiveReference.</param>
 /// <param name="ContentStandard">ContentStandard.</param>
 /// <param name="Description">The description of the LearningObjective..</param>
 /// <param name="GradeLevels">An unordered collection of learningObjectiveGradeLevels. The grade level for which the LearningObjective is targeted. The semantics of null is assumed to mean that the learning objective is not associated with any grade level..</param>
 /// <param name="LearningStandards">An unordered collection of learningObjectiveLearningStandards. LearningStandard(s) included in this objective..</param>
 /// <param name="Nomenclature">Reflects the specific nomenclature used for the LearningObjective..</param>
 /// <param name="Objective">The designated title of the LearningObjective. (required).</param>
 /// <param name="SuccessCriteria">One or more statements that describes the criteria used by teachers and students to check for attainment of a learning objective. This criteria gives clear indications as to the degree to which learning is moving through the Zone or Proximal Development toward independent achievement of the LearningObjective..</param>
 /// <param name="Etag">A unique system-generated value that identifies the version of the resource..</param>
 public EdFiLearningObjective(string Id = default(string), List <EdFiLearningObjectiveAcademicSubject> AcademicSubjects = default(List <EdFiLearningObjectiveAcademicSubject>), string LearningObjectiveId = default(string), string _Namespace = default(string), EdFiLearningObjectiveReference ParentLearningObjectiveReference = default(EdFiLearningObjectiveReference), EdFiLearningObjectiveContentStandard ContentStandard = default(EdFiLearningObjectiveContentStandard), string Description = default(string), List <EdFiLearningObjectiveGradeLevel> GradeLevels = default(List <EdFiLearningObjectiveGradeLevel>), List <EdFiLearningObjectiveLearningStandard> LearningStandards = default(List <EdFiLearningObjectiveLearningStandard>), string Nomenclature = default(string), string Objective = default(string), string SuccessCriteria = default(string), string Etag = default(string))
 {
     // to ensure "Id" is required (not null)
     if (Id == null)
     {
         throw new InvalidDataException("Id is a required property for EdFiLearningObjective and cannot be null");
     }
     else
     {
         this.Id = Id;
     }
     // to ensure "AcademicSubjects" is required (not null)
     if (AcademicSubjects == null)
     {
         throw new InvalidDataException("AcademicSubjects is a required property for EdFiLearningObjective and cannot be null");
     }
     else
     {
         this.AcademicSubjects = AcademicSubjects;
     }
     // to ensure "LearningObjectiveId" is required (not null)
     if (LearningObjectiveId == null)
     {
         throw new InvalidDataException("LearningObjectiveId is a required property for EdFiLearningObjective and cannot be null");
     }
     else
     {
         this.LearningObjectiveId = LearningObjectiveId;
     }
     // to ensure "_Namespace" is required (not null)
     if (_Namespace == null)
     {
         throw new InvalidDataException("_Namespace is a required property for EdFiLearningObjective and cannot be null");
     }
     else
     {
         this._Namespace = _Namespace;
     }
     // to ensure "Objective" is required (not null)
     if (Objective == null)
     {
         throw new InvalidDataException("Objective is a required property for EdFiLearningObjective and cannot be null");
     }
     else
     {
         this.Objective = Objective;
     }
     this.ParentLearningObjectiveReference = ParentLearningObjectiveReference;
     this.ContentStandard   = ContentStandard;
     this.Description       = Description;
     this.GradeLevels       = GradeLevels;
     this.LearningStandards = LearningStandards;
     this.Nomenclature      = Nomenclature;
     this.SuccessCriteria   = SuccessCriteria;
     this.Etag = Etag;
 }