private void buttonOK_Click(object sender, EventArgs e) { if (renamingHerd != null) { try { context.RenameHerd(renamingHerd, textBox1.Text); } catch (Exception _e) { logger.Error(_e, "RenameHerd error"); MessageBox.Show("renaming herd failed, check log for details"); } } else { try { context.InsertHerd(textBox1.Text); } catch (Exception _e) { logger.Error(_e, "AddHerd error"); MessageBox.Show("adding herd failed, check log for details"); } } }
public void ImportHerd(GrangerContext context, string newHerdName, string xmlFilePath) { if (newHerdName == null || newHerdName.Trim() == string.Empty) { throw new GrangerException("new herd name cannot be empty"); } // check if this herd already exists in database if (context.Herds.Any(x => x.HerdId == newHerdName)) { throw new GrangerException($"there is already a herd with named {newHerdName} in database"); } XDocument doc = XDocument.Load(xmlFilePath); var creatureEntities = new List <CreatureEntity>(); var elements = doc.Root.Elements("Horse").Union(doc.Root.Elements("Creature")); foreach (var x in elements) { var entity = new CreatureEntity(); entity.Herd = newHerdName; entity.Name = x.Element("Name").Value; if (creatureEntities.Any(y => y.Name.Equals(entity.Name, StringComparison.InvariantCultureIgnoreCase))) { throw new GrangerException( $"Creature named {entity.Name} was already added from this XML file. Review the file for any errors."); } entity.FatherName = x.Element("Father").Value; entity.MotherName = x.Element("Mother").Value; entity.Traits = GetTraitsFromXML(x.Element("Traits")); var notInMood = x.Element("NotInMoodUntil").Value; if (string.IsNullOrEmpty(notInMood)) { entity.NotInMood = null; } else { entity.NotInMood = DateTime.Parse(notInMood, CultureInfo.InvariantCulture); } var pregnantUntil = x.Element("PregnantUntil").Value; if (string.IsNullOrEmpty(pregnantUntil)) { entity.PregnantUntil = null; } else { entity.PregnantUntil = DateTime.Parse(pregnantUntil, CultureInfo.InvariantCulture); } var groomedOn = x.Element("GroomedOn").Value; if (string.IsNullOrEmpty(groomedOn)) { entity.GroomedOn = null; } else { entity.GroomedOn = DateTime.Parse(groomedOn, CultureInfo.InvariantCulture); } var gender = x.Element("Gender").Value; if (string.IsNullOrEmpty(gender)) { entity.IsMale = null; } else { entity.IsMale = gender.Equals("male", StringComparison.InvariantCultureIgnoreCase); } entity.TakenCareOfBy = x.Element("CaredBy").Value; var xInspect = x.Element("InspectSkill"); if (string.IsNullOrEmpty(xInspect.Value)) { entity.TraitsInspectedAtSkill = null; } else { entity.TraitsInspectedAtSkill = float.Parse(xInspect.Value, CultureInfo.InvariantCulture); } var xInspectAttr = xInspect.Attribute("IsEpic"); if (string.IsNullOrEmpty(xInspectAttr.Value)) { entity.EpicCurve = null; } else { entity.EpicCurve = bool.Parse(xInspectAttr.Value); } entity.Age = CreatureAge.CreateAgeFromEnumString(x.Element("Age").Value); entity.CreatureColorId = x.Element("CreatureColorId")?.Value ?? CreatureColorEntity.Unknown.Id; entity.Comments = x.Element("Comments").Value; entity.SpecialTagsRaw = x.Element("Tags").Value; entity.BrandedFor = x.Element("BrandedFor").Value; var smilexaminedElement = x.Element("SmilexamineLastDate"); if (smilexaminedElement != null && !string.IsNullOrWhiteSpace(smilexaminedElement.Value)) { entity.SmilexamineLastDate = DateTime.Parse(smilexaminedElement.Value, CultureInfo.InvariantCulture); } var serverNameElem = x.Element("ServerName"); entity.ServerName = serverNameElem?.Value; creatureEntities.Add(entity); } context.InsertHerd(newHerdName); foreach (var creatureEntity in creatureEntities) { creatureEntity.Id = CreatureEntity.GenerateNewCreatureId(context); context.InsertCreature(creatureEntity); } }