/// <summary> /// Exports the certificates classes. /// </summary> /// <param name="group">The group.</param> /// <returns></returns> private static IEnumerable <SerializableCertificateClass> ExportCertificateClasses(IHasID group) { List <SerializableCertificateClass> listOfCertClasses = new List <SerializableCertificateClass>(); // Exclude unused classes foreach (CrtClasses certClass in Database.CrtClassesTable) { Util.UpdatePercentDone(Database.CertificatesTotalCount); SerializableCertificateClass crtClass = new SerializableCertificateClass { ID = certClass.ID, Name = certClass.ClassName, Description = certClass.Description }; // Export certificate SerializableCertificate certificate = Database.CrtCertificatesTable .Where(x => x.ClassID == certClass.ID && x.GroupID == group.ID).Select(ExportCertificate).FirstOrDefault(); if (certificate == null) { continue; } // Add certificate to class crtClass.Certificate = certificate; // Add certificate class to classes listOfCertClasses.Add(crtClass); } return(listOfCertClasses); }
/// <summary> /// Constructor from XML /// </summary> /// <param name="certClass"></param> /// <param name="element"></param> internal StaticCertificate(StaticCertificateClass certClass, SerializableCertificate src) { m_class = certClass; m_id = src.ID; m_grade = src.Grade; m_description = src.Description; // Recommendations if (src.Recommendations != null) { foreach (var recommendation in src.Recommendations) { var ship = StaticItems.Ships.AllItems.FirstOrDefault(x => x.Name == recommendation.Ship) as Ship; if (ship != null) { ship.Recommendations.Add(this); m_recommendations.Add(ship); } } } }
/// <summary> /// Constructor from XML. /// </summary> /// <param name="certClass"></param> /// <param name="src"></param> internal StaticCertificate(StaticCertificateClass certClass, SerializableCertificate src) { ID = src.ID; Description = src.Description; Class = certClass; Grades = new Dictionary <CertificateGrade, List <StaticSkillLevel> >(); // Recommendations Recommendations = new StaticRecommendations <Item>(); if (src.Recommendations == null || StaticItems.ShipsMarketGroup == null) { return; } foreach (Ship ship in src.Recommendations .Select(recommendation => StaticItems.ShipsMarketGroup.AllItems.OfType <Ship>() .FirstOrDefault(item => item.Name == recommendation.ShipName)) .Where(ship => ship != null)) { ship.Recommendations.Add(this); Recommendations.Add(ship); } }
/// <summary> /// Exports the certificate. /// </summary> /// <param name="certificate">The certificate.</param> private static SerializableCertificate ExportCertificate(CrtCertificates certificate) { SerializableCertificate crtCertificate = new SerializableCertificate { ID = certificate.ID, Description = certificate.Description }; // Export prerequesities IEnumerable <SerializableCertificatePrerequisite> listOfPrereq = Database.CrtRelationshipsTable .Where(x => x.ChildID == certificate.ID && x.ParentLevel != 0) .Select(relationship => new SerializableCertificatePrerequisite { ID = Database.InvTypesTable[relationship.ParentTypeID].ID, Skill = Database.InvTypesTable[relationship.ParentTypeID].Name, Level = relationship.ParentLevel.ToString(CultureInfo.InvariantCulture), Grade = (CertificateGrade)Enum.ToObject(typeof(CertificateGrade), relationship.Grade), }); //Add prerequisites to certificate crtCertificate.Prerequisites.AddRange(listOfPrereq.OrderBy(x => x.Grade)); // Add recommendations to certificate IEnumerable <SerializableCertificateRecommendation> listOfRecommendations = Database.CrtRecommendationsTable.Where( x => x.CertificateID == certificate.ID) .Select(recommendation => new SerializableCertificateRecommendation { ID = recommendation.ShipTypeID, ShipName = Database.InvTypesTable[recommendation.ShipTypeID].Name, }); crtCertificate.Recommendations.AddRange(listOfRecommendations); // Add certificate return(crtCertificate); }