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;
}
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
{
var response = await client.SendAsync(GetHttpRequestMessage(HttpMethod.Delete, serviceUrl, payload));
if (response.IsSuccessStatusCode)
{
using (var responseStream = await response.Content.ReadAsStreamAsync())
{
using (var streamReader = new StreamReader(responseStream))
{
using (var jsonTextReader = new JsonTextReader(streamReader))
{
var serializer = new JsonSerializer();
res = serializer.Deserialize<T>(jsonTextReader);
}
}
}
//using (var responseStream = await response.Content.ReadAsStreamAsync())
//{
// using (var streamReader = new StreamReader(responseStream))
// {
// using (var jsonTextReader = new JsonTextReader(streamReader))
// {
// var serializer = new JsonSerializer();
// res = serializer.Deserialize<T>(jsonTextReader);
// }
// }
//}
}
else
{
@ -229,7 +227,7 @@ namespace GameData
}
}
return res;
//return res;
}
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()
{
return IExpenseRepository.TestData;

View File

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

View File

@ -2,6 +2,7 @@
using GameModel.Contract;
using GameModel.Settings;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
@ -36,5 +37,13 @@ namespace GameData.Repository
{
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);
}
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.Contract;
using GameModel.Contracts;
using Microsoft.VisualBasic.FileIO;
using System;
using System.Collections.Generic;
using System.Linq;
@ -31,7 +32,7 @@ namespace GameHandler
private List<GameStateHandlerItem<GameState>> redoableGameStates = new List<GameStateHandlerItem<GameState>>();
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 IExpenseRepository _expenseRepository;
@ -90,7 +91,22 @@ namespace GameHandler
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)
@ -127,11 +143,11 @@ namespace GameHandler
gameStates.AddRange(redoableGameStates.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);
redoableExpenseModels.RemoveAll(_ => _.GameStateId == redoId);
redoableemberExpenses.RemoveAll(_ => _.GameStateId == redoId);
redoableMeberExpenses.RemoveAll(_ => _.GameStateId == redoId);
}
_gameStateId = gameStates.Last().GameStateId;
@ -147,7 +163,7 @@ namespace GameHandler
redoableGameStates.AddRange(gameStates.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);
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),
};
Task Delete(IEnumerable<PlayerExpense> enumerable);
Task<IEnumerable<Expense>> GetAll();
Task<PlayerExpense> Save(PlayerExpense data);
}

View File

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