public void Import(string stream) { var inputFileDescription = new CsvFileDescription { SeparatorChar = ',', FirstLineHasColumnNames = true }; var cc = new CsvContext(); var monsterImports = cc.Read<MonsterImport>(stream, inputFileDescription); var monsterLevels = _monsterLevelService.GetMonsterLevel().ToDictionary(k => k.Name, v => v); var monsters = _monsterService.GetMonsters().ToDictionary(k => k.Name, v => v); var monsterList = new List<Monster>(); foreach (var monsterImport in monsterImports) { Monster monster = null; var name = monsterImport.Unit; if (monsters.ContainsKey(name)) { monster = monsters[name]; } else { monster = new Monster(); monster.Name = name; } monster.Attack = monsterImport.Attack; monster.Defence = monsterImport.Defense; monster.Price = monsterImport.Price; monster.Upkeep = monsterImport.Upkeep; monster.Element = EnumUtil.ParseEnum<Element>(monsterImport.Element); MonsterLevel monsterLevel; if (monsterLevels.ContainsKey(monsterImport.Uniqueness)) { monsterLevel = monsterLevels[monsterImport.Uniqueness]; } else { monsterLevel = new MonsterLevel { Active = true, Name = monsterImport.Uniqueness, Tier = monsterLevels.Count() + 1 }; monsterLevels.Add(monsterImport.Uniqueness, monsterLevel); } monster.MonsterLevel = monsterLevel; monsterList.Add(monster); } _monsterService.SaveMonsters(monsterList); }
public SaveResult SaveMonster(Monster dirtyMonster) { var monster = UpdateMonster(dirtyMonster); var result = new SaveResult(); try { if (monster.MonsterId == 0) _monsterRepository.Add(monster); else _monsterRepository.Update(monster); result.Successful = true; } catch (Exception ex) { result.Error = ex; result.Successful = false; } return result; }
private Monster UpdateMonster(Monster dirtyMonster) { var monster = _monsterRepository.Find(p => p.MonsterId == dirtyMonster.MonsterId) ?? new Monster {MonsterId = 0}; monster.Attack = dirtyMonster.Attack; monster.Defence = dirtyMonster.Defence; monster.Name = dirtyMonster.Name; monster.Price = dirtyMonster.Price; monster.Upkeep = dirtyMonster.Upkeep; monster.Element = dirtyMonster.Element; monster.MonsterLevel = dirtyMonster.MonsterLevel; return monster; }