1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using Microsoft.EntityFrameworkCore;
- using Waaagh.Models;
- using Waaagh.Services.Abstract;
- namespace Waaagh.Services {
- internal class ScenarioManager: IScenarioManager {
- private readonly IDbContextFactory<AppDatabaseContext> AppDatabaseContextFactory;
- public ScenarioManager(IDbContextFactory<AppDatabaseContext> dbContextFactory) {
- AppDatabaseContextFactory = dbContextFactory;
- using AppDatabaseContext dbContext = AppDatabaseContextFactory.CreateDbContext();
- foreach (Scenario scenario in dbContext.Scenarios) {
- }
- }
- private Dictionary<string, Scenario> Scenarios { get; }
- #region IScenarioManager
- public bool AddScenario(Scenario scenario) {
- string name = scenario.Name;
- if (Scenarios.TryAdd(name, scenario) == false) {
- Scenarios[name].UpdateReferences(scenario);
- }
- return true;
- }
- public bool TryAddScenario(Scenario scenario) {
- string name = scenario.Name;
- return Scenarios.TryAdd(name, scenario);
- }
- public bool RemoveScenario(string name) {
- return Scenarios.Remove(name);
- }
- public int SaveAll() {
- int count = 0;
- AppDatabaseContext dbContext = AppDatabaseContextFactory.CreateDbContext();
- int toSaveIndex = 0;
- List<Scenario> toSaveList = Scenarios.Values.ToList();
- foreach (Scenario scenario in dbContext.Scenarios) {
- while (toSaveList[toSaveIndex].IsLegacy == true) {
- ++toSaveIndex;
- }
- Scenario toSaveScenario = toSaveList[toSaveIndex];
- if (toSaveScenario.Id == scenario.Id) {
- // Update
- }
- else {
- // Insert
- }
- }
- dbContext.SaveChanges();
- return count;
- }
- public int ReloadAll() {
- int legacyCount = 0;
- foreach (Scenario scenario in Scenarios.Values) {
- scenario.IsLegacy = true;
- ++legacyCount;
- }
- AppDatabaseContext dbContext = AppDatabaseContextFactory.CreateDbContext();
- foreach (Scenario scenario in dbContext.Scenarios) {
- scenario.IsLegacy = false;
- string name = scenario.Name;
- if (Scenarios.ContainsKey(name) == true) {
- Scenarios[name].UpdateReferences(scenario);
- }
- else {
- Scenarios.Add(name, scenario);
- }
- }
- return Scenarios.Count() - legacyCount;
- }
- #endregion
- }
- }
|