/// <summary>
 /// Create a new SpecializationsData object.
 /// </summary>
 /// <param name="specializationDataID">Initial value of the SpecializationDataID property.</param>
 /// <param name="specializationID">Initial value of the SpecializationID property.</param>
 /// <param name="isGeneral">Initial value of the IsGeneral property.</param>
 /// <param name="isElective">Initial value of the IsElective property.</param>
 public static SpecializationsData CreateSpecializationsData(global::System.Int32 specializationDataID, global::System.Int32 specializationID, global::System.Boolean isGeneral, global::System.Boolean isElective)
 {
     SpecializationsData specializationsData = new SpecializationsData();
     specializationsData.SpecializationDataID = specializationDataID;
     specializationsData.SpecializationID = specializationID;
     specializationsData.IsGeneral = isGeneral;
     specializationsData.IsElective = isElective;
     return specializationsData;
 }
 /// <summary>
 /// Deprecated Method for adding a new object to the SpecializationsDatas EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToSpecializationsDatas(SpecializationsData specializationsData)
 {
     base.AddObject("SpecializationsDatas", specializationsData);
 }
        public void AddSubject(NewSubject subject)
        {
            Subject s = this.GetSubject(subject.Name);
            if (s == null)
            {
                Subject newSubject = new Subject()
                {
                    Name = subject.Name
                };
                this.AddSubjectName(newSubject);
            }

            if (subject.Specializations != null && subject.Specializations.Count() > 0 && subject.IsGeneral == false)
            {
                s = this.GetSubject(subject.Name);

                for (int i = 0; i < subject.Specializations.Count(); i++)
                {
                    SpecializationsData specDat = new SpecializationsData()
                    {
                        IsElective = subject.Specializations.ElementAt(i).IsElective,
                        IsGeneral = subject.Specializations.ElementAt(i).IsGenereal,
                        SpecializationID = subject.Specializations.ElementAt(i).SpecializationId
                    };

                    SPDatabase.DB.SpecializationsDatas.AddObject(specDat);

                    SubjectsData sd = new SubjectsData()
                    {
                        DepartamentID = subject.DepartamentId,
                        Ects = subject.Ects,
                        FacultyID = subject.FacultyId,
                        InstituteID = subject.InstituteId,
                        IsExam = subject.IsExam,
                        SemesterID = subject.SemesterId,
                        SpecializationDataID = specDat.SpecializationDataID,
                        SubjectID = s.SubjectID,
                        IsElective = false,
                        IsGeneral = false
                    };

                    if (subject.InstituteId > 0)
                        sd.InstituteID = subject.InstituteId;
                    else
                        sd.InstituteID = null;

                    Plan p = GetPlan(subject.PlanId);
                    if (p != null)
                        sd.Plans.Add(p);

                    foreach (NewSubjectTypeData d in subject.SubjectTypes)
                    {
                        SubjectTypesData std = new SubjectTypesData()
                        {
                            Hours = d.Hours,
                            SubjectTypeID = d.SubjectTypeId
                        };

                        sd.SubjectTypesDatas.Add(std);
                    }

                    SPDatabase.DB.SubjectsDatas.AddObject(sd);
                    SPDatabase.DB.SaveChanges();
                }
            }

            if(subject.IsGeneral || subject.IsElective)
            {
                s = this.GetSubject(subject.Name);

                SubjectsData sdd = new SubjectsData()
                {
                    DepartamentID = subject.DepartamentId,
                    Ects = subject.Ects,
                    FacultyID = subject.FacultyId,
                    IsExam = subject.IsExam,
                    SemesterID = subject.SemesterId,
                    SpecializationDataID = null,
                    SubjectID = s.SubjectID,
                    IsElective = subject.IsElective,
                    IsGeneral = subject.IsGeneral
                };

                if (subject.InstituteId > 0)
                    sdd.InstituteID = subject.InstituteId;
                else
                    sdd.InstituteID = null;

                Plan pp = GetPlan(subject.PlanId);
                if (pp != null)
                    sdd.Plans.Add(pp);

                foreach (NewSubjectTypeData d in subject.SubjectTypes)
                {
                    SubjectTypesData std = new SubjectTypesData()
                    {
                        Hours = d.Hours,
                        SubjectTypeID = d.SubjectTypeId
                    };

                    sdd.SubjectTypesDatas.Add(std);
                }

                SPDatabase.DB.SubjectsDatas.AddObject(sdd);
                SPDatabase.DB.SaveChanges();
            }
        }