This commit is contained in:
Christian Kauer 2023-12-30 18:44:51 +01:00
parent 0f4703dc12
commit 69049c6af1
8 changed files with 63 additions and 20 deletions

View File

@ -192,27 +192,25 @@ namespace GameData
return res; return res;
} }
public async Task<T> Delete<T>(object payload, string serviceUrl, bool suppressExceptions = true) public async Task Delete(object payload, string serviceUrl, bool suppressExceptions = true)
{ {
T res = default;
try try
{ {
var response = await client.SendAsync(GetHttpRequestMessage(HttpMethod.Delete, serviceUrl, payload)); var response = await client.SendAsync(GetHttpRequestMessage(HttpMethod.Delete, serviceUrl, payload));
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
using (var responseStream = await response.Content.ReadAsStreamAsync()) //using (var responseStream = await response.Content.ReadAsStreamAsync())
{ //{
using (var streamReader = new StreamReader(responseStream)) // using (var streamReader = new StreamReader(responseStream))
{ // {
using (var jsonTextReader = new JsonTextReader(streamReader)) // using (var jsonTextReader = new JsonTextReader(streamReader))
{ // {
var serializer = new JsonSerializer(); // var serializer = new JsonSerializer();
res = serializer.Deserialize<T>(jsonTextReader); // res = serializer.Deserialize<T>(jsonTextReader);
} // }
} // }
} //}
} }
else else
{ {
@ -229,7 +227,7 @@ namespace GameData
} }
} }
return res; //return res;
} }
public async Task<T[]> Get<T>(string serviceUrl, bool suppressExceptions = false) public async Task<T[]> Get<T>(string serviceUrl, bool suppressExceptions = false)

View File

@ -10,6 +10,11 @@ namespace GameData.Dummy
} }
public Task Delete(IEnumerable<PlayerExpense> enumerable)
{
throw new NotImplementedException();
}
public IEnumerable<Expense> GetAll() public IEnumerable<Expense> GetAll()
{ {
return IExpenseRepository.TestData; return IExpenseRepository.TestData;

View File

@ -47,5 +47,10 @@ namespace GameData.Dummy
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task Delete(IEnumerable<GameState> gameStates)
{
throw new NotImplementedException();
}
} }
} }

View File

@ -2,6 +2,7 @@
using GameModel.Contract; using GameModel.Contract;
using GameModel.Settings; using GameModel.Settings;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -36,5 +37,13 @@ namespace GameData.Repository
{ {
return await _client.Post<PlayerExpense>(memberExpense, UrlPlayerExpense); return await _client.Post<PlayerExpense>(memberExpense, UrlPlayerExpense);
} }
public async Task Delete(IEnumerable<PlayerExpense> items)
{
dynamic keys = new JObject();
keys.keys = items.Select(_ => _.Id).ToArray();
await _client.Delete(keys, UrlPlayerExpense);
}
} }
} }

View File

@ -94,5 +94,13 @@ namespace GameData.Repository
return await _client.Post<Game>(payload, UrlGame); return await _client.Post<Game>(payload, UrlGame);
} }
public async Task Delete(IEnumerable<GameState> gameStates)
{
dynamic keys = new JObject();
keys.keys = gameStates.Select(_ => _.Id).ToArray();
await _client.Delete(keys, UrlGameState);
}
} }
} }

View File

@ -1,6 +1,7 @@
using GameModel; using GameModel;
using GameModel.Contract; using GameModel.Contract;
using GameModel.Contracts; using GameModel.Contracts;
using Microsoft.VisualBasic.FileIO;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -31,7 +32,7 @@ namespace GameHandler
private List<GameStateHandlerItem<GameState>> redoableGameStates = new List<GameStateHandlerItem<GameState>>(); private List<GameStateHandlerItem<GameState>> redoableGameStates = new List<GameStateHandlerItem<GameState>>();
private List<GameStateHandlerItem<ExpenseModel>> redoableExpenseModels = new List<GameStateHandlerItem<ExpenseModel>>(); private List<GameStateHandlerItem<ExpenseModel>> redoableExpenseModels = new List<GameStateHandlerItem<ExpenseModel>>();
private List<GameStateHandlerItem<PlayerExpense>> redoableemberExpenses = new List<GameStateHandlerItem<PlayerExpense>>(); private List<GameStateHandlerItem<PlayerExpense>> redoableMeberExpenses = new List<GameStateHandlerItem<PlayerExpense>>();
private IGameRepository _gameRepository; private IGameRepository _gameRepository;
private IExpenseRepository _expenseRepository; private IExpenseRepository _expenseRepository;
@ -90,7 +91,22 @@ namespace GameHandler
await Save(item); await Save(item);
} }
await DeleteRedoableStates();
}
private async Task DeleteRedoableStates()
{
if (redoableGameStates.Count > 0)
{
await _gameRepository.Delete(redoableGameStates.Select(_ => _.Data));
redoableGameStates.Clear();
}
if (redoableMeberExpenses.Count > 0)
{
await _expenseRepository.Delete(redoableMeberExpenses.Select(_ => _.Data));
redoableMeberExpenses.Clear();
}
} }
private async Task Save(GameStateHandlerItem<PlayerExpense> item) private async Task Save(GameStateHandlerItem<PlayerExpense> item)
@ -127,11 +143,11 @@ namespace GameHandler
gameStates.AddRange(redoableGameStates.Where(_ => _.GameStateId == redoId)); gameStates.AddRange(redoableGameStates.Where(_ => _.GameStateId == redoId));
expenseModels.AddRange(redoableExpenseModels.Where(_ => _.GameStateId == redoId)); expenseModels.AddRange(redoableExpenseModels.Where(_ => _.GameStateId == redoId));
memberExpenses.AddRange(redoableemberExpenses.Where(_ => _.GameStateId == redoId)); memberExpenses.AddRange(redoableMeberExpenses.Where(_ => _.GameStateId == redoId));
redoableGameStates.RemoveAll(_ => _.GameStateId == redoId); redoableGameStates.RemoveAll(_ => _.GameStateId == redoId);
redoableExpenseModels.RemoveAll(_ => _.GameStateId == redoId); redoableExpenseModels.RemoveAll(_ => _.GameStateId == redoId);
redoableemberExpenses.RemoveAll(_ => _.GameStateId == redoId); redoableMeberExpenses.RemoveAll(_ => _.GameStateId == redoId);
} }
_gameStateId = gameStates.Last().GameStateId; _gameStateId = gameStates.Last().GameStateId;
@ -147,7 +163,7 @@ namespace GameHandler
redoableGameStates.AddRange(gameStates.Where(_ => _.GameStateId == _gameStateId)); redoableGameStates.AddRange(gameStates.Where(_ => _.GameStateId == _gameStateId));
redoableExpenseModels.AddRange(expenseModels.Where(_ => _.GameStateId == _gameStateId)); redoableExpenseModels.AddRange(expenseModels.Where(_ => _.GameStateId == _gameStateId));
redoableemberExpenses.AddRange(memberExpenses.Where(_ => _.GameStateId == _gameStateId)); redoableMeberExpenses.AddRange(memberExpenses.Where(_ => _.GameStateId == _gameStateId));
gameStates.RemoveAll(_ => _.GameStateId == _gameStateId); gameStates.RemoveAll(_ => _.GameStateId == _gameStateId);
expenseModels.RemoveAll(_ => _.GameStateId == _gameStateId); expenseModels.RemoveAll(_ => _.GameStateId == _gameStateId);

View File

@ -17,6 +17,7 @@ namespace GameModel.Contract
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.ExpensePoint }, "Strafpunkt, z.B. im \"Scheißspiel\"", 0.5m, false), Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.ExpensePoint }, "Strafpunkt, z.B. im \"Scheißspiel\"", 0.5m, false),
}; };
Task Delete(IEnumerable<PlayerExpense> enumerable);
Task<IEnumerable<Expense>> GetAll(); Task<IEnumerable<Expense>> GetAll();
Task<PlayerExpense> Save(PlayerExpense data); Task<PlayerExpense> Save(PlayerExpense data);
} }

View File

@ -14,5 +14,6 @@ namespace GameModel.Contracts
Task<Game> LoadGame(Guid gameId); Task<Game> LoadGame(Guid gameId);
Task<GameState> Save(GameState gameState); Task<GameState> Save(GameState gameState);
Task Update(Game game); Task Update(Game game);
Task Delete(IEnumerable<GameState> gameStates);
} }
} }