238 lines
9.7 KiB
C#
238 lines
9.7 KiB
C#
using HRServer.Models;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace HRServer.Controllers
|
|
{
|
|
[ApiController]
|
|
public class HorseController : ControllerBase
|
|
{
|
|
private readonly ILogger<HorseController> _logger;
|
|
|
|
public HorseController(ILogger<HorseController> logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
[HttpGet("/api/ping")]
|
|
public IActionResult Ping()
|
|
{
|
|
return Ok("pong");
|
|
}
|
|
[HttpDelete("/api/deleteHorse/{id}")]
|
|
public IActionResult DeleteHorse(ulong id)
|
|
{
|
|
HorseFactory.DeleteHorse(id);
|
|
HorseFactory.SaveHorsesToFile();
|
|
return Ok();
|
|
}
|
|
[HttpGet("/api/getHorse/{id}")]
|
|
public IActionResult GetHorse (int id)
|
|
{
|
|
var horse = HorseFactory.GetHorse((ulong)id);
|
|
if (horse == null)
|
|
{
|
|
horse = new Horse();
|
|
}
|
|
return Ok(horse);
|
|
}
|
|
[HttpGet("/api/getHorse/{id}/LoadState")]
|
|
public IActionResult GetHorseLoadState (ulong id)
|
|
{
|
|
// Hole das Pferd aus der Factory
|
|
var horse = HorseFactory.GetHorse((ulong)id);
|
|
|
|
// Überprüfe, ob das Pferd existiert
|
|
if (horse == null)
|
|
{
|
|
return Ok(new DataLoadState
|
|
{
|
|
AchievementsLoaded = false,
|
|
AchievementsNeedsRefresh = false,
|
|
SummaryLoaded = false,
|
|
BasicInfoLoaded = false,
|
|
GeneticsLoaded = false,
|
|
HealthLoaded = false,
|
|
TrainingLoaded = false
|
|
});
|
|
}
|
|
if (horse.LastDrawnDate.AddDays(1) < DateTime.Now)
|
|
{
|
|
horse.LoadState.AchievementsNeedsRefresh = true;
|
|
}
|
|
HorseFactory.SaveHorsesToFile();
|
|
// Gib den Ladezustand des Pferdes zurück
|
|
return Ok(horse.LoadState);
|
|
}
|
|
[HttpPost("/api/updateHorse/{id}/BasicData")]
|
|
public IActionResult UpdateHorseBasicData(ulong id, [FromBody] Horse websiteHorse)
|
|
{
|
|
var localHorse = HorseFactory.GetHorse(id);
|
|
if (localHorse == null)
|
|
{
|
|
localHorse = new Horse { Id = id };
|
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
|
}
|
|
if (websiteHorse.Owner == "Unknown")
|
|
{
|
|
localHorse.Breed = websiteHorse.Breed;
|
|
localHorse.HorseName = websiteHorse.HorseName;
|
|
localHorse.Link = websiteHorse.Link;
|
|
localHorse.Gender = websiteHorse.Gender;
|
|
localHorse.Notes = websiteHorse.Notes;
|
|
return Ok(localHorse);
|
|
}
|
|
localHorse.Age = websiteHorse.Age;
|
|
localHorse.Breed = websiteHorse.Breed;
|
|
localHorse.HorseName = websiteHorse.HorseName;
|
|
localHorse.Gender = websiteHorse.Gender;
|
|
localHorse.Link = websiteHorse.Link;
|
|
localHorse.Owner = websiteHorse.Owner;
|
|
localHorse.Notes = websiteHorse.Notes;
|
|
HorseFactory.SaveHorsesToFile();
|
|
return Ok(localHorse);
|
|
}
|
|
[HttpPost("/api/updateHorse/{id}/Summary")]
|
|
public IActionResult UpdateHorseSummary(ulong id, [FromBody] HorseSummary websiteHorseSummary)
|
|
{
|
|
var localHorse = HorseFactory.GetHorse(id);
|
|
if (localHorse == null)
|
|
{
|
|
localHorse = new Horse { Id = id };
|
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
|
}
|
|
localHorse.Summary = websiteHorseSummary;
|
|
HorseFactory.SaveHorsesToFile();
|
|
return Ok(localHorse);
|
|
}
|
|
[HttpPost("/api/updateHorse/{id}/Training")]
|
|
public IActionResult UpdateHorseTraining(ulong id, [FromBody] HorseTraining websiteHorseTraining)
|
|
{
|
|
var localHorse = HorseFactory.GetHorse((ulong)id);
|
|
if (localHorse == null)
|
|
{
|
|
localHorse = new Horse { Id = (ulong)id };
|
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
|
}
|
|
localHorse.Training = websiteHorseTraining;
|
|
HorseFactory.SaveHorsesToFile();
|
|
return Ok(localHorse);
|
|
}
|
|
[HttpPost("/api/updateHorse/{id}/Health")]
|
|
public IActionResult UpdateHorseHealth(ulong id, [FromBody] HorseHealth websiteHorseHealth)
|
|
{
|
|
var localHorse = HorseFactory.GetHorse((ulong)id);
|
|
if (localHorse == null)
|
|
{
|
|
localHorse = new Horse { Id = (ulong)id };
|
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
|
}
|
|
localHorse.Health = websiteHorseHealth;
|
|
HorseFactory.SaveHorsesToFile();
|
|
return Ok(localHorse);
|
|
}
|
|
[HttpGet("/api/getHorse/{id}/Colors")]
|
|
public IActionResult GetHorseColors(ulong id)
|
|
{
|
|
var horse = HorseFactory.GetHorse(id);
|
|
if (horse == null)
|
|
{
|
|
return Ok(new Dictionary<string, string>());
|
|
}
|
|
return Ok(horse.Genetics.Colors);
|
|
}
|
|
[HttpPost("/api/updateHorse/{id}/Genetics")]
|
|
public IActionResult UpdateHorseGenetics(ulong id, [FromBody] HorseGenetics websiteHorseGenetics)
|
|
{
|
|
var localHorse = HorseFactory.GetHorse((ulong)id);
|
|
if (localHorse == null)
|
|
{
|
|
localHorse = new Horse { Id = (ulong)id };
|
|
localHorse.Genetics = websiteHorseGenetics;
|
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
|
}
|
|
if (websiteHorseGenetics != null)
|
|
{
|
|
localHorse.Genetics.GP = websiteHorseGenetics.GP;
|
|
localHorse.Genetics.Disciplines = websiteHorseGenetics.Disciplines;
|
|
localHorse.Genetics.GeneticPotential = websiteHorseGenetics.GeneticPotential;
|
|
foreach (var kvp in websiteHorseGenetics.Colors)
|
|
{
|
|
// Wert hinzufügen oder überschreiben
|
|
localHorse.Genetics.Colors[kvp.Key] = kvp.Value;
|
|
}
|
|
if (!websiteHorseGenetics.Colors.ContainsKey("Custom"))
|
|
{
|
|
localHorse.Genetics.Colors["Custom"] = string.Empty;
|
|
}
|
|
localHorse.LoadState.GeneticsLoaded = true;
|
|
}
|
|
HorseFactory.SaveHorsesToFile();
|
|
return Ok(localHorse);
|
|
}
|
|
[HttpGet("/api/getHorse/{id}/Notes")]
|
|
public IActionResult GetHorseNotes(ulong id)
|
|
{
|
|
var horse = HorseFactory.GetHorse(id);
|
|
if (horse == null)
|
|
{
|
|
return Ok(string.Empty);
|
|
}
|
|
return Ok(horse.Notes);
|
|
}
|
|
[HttpPost("/api/updateHorse/{id}/Achievements")]
|
|
public IActionResult UpdateHorseAchievements(ulong id, [FromBody] HorseAchievements websiteHorseAchievements)
|
|
{
|
|
var localHorse = HorseFactory.GetHorse((ulong)id);
|
|
if (localHorse == null)
|
|
{
|
|
localHorse = new Horse { Id = (ulong)id };
|
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
|
}
|
|
|
|
if (websiteHorseAchievements.ShowResults.Count >= 1)
|
|
{
|
|
// MinShowResult sollte nicht kleiner als das momentane Maximum - 6.928 sein
|
|
websiteHorseAchievements.MinShowResult = Math.Max(
|
|
websiteHorseAchievements.MinShowResult,
|
|
websiteHorseAchievements.MaxShowResult - 6.928
|
|
);
|
|
// MaxShowResult aktualisieren, wenn es größer ist als der lokale Wert
|
|
websiteHorseAchievements.MaxShowResult = Math.Max(
|
|
websiteHorseAchievements.MaxShowResult,
|
|
localHorse.Achievements.MaxShowResult
|
|
);
|
|
// MinShowResult aktualisieren, wenn ein gültiger Wert vorhanden ist und der lokale Wert kleiner ist
|
|
if (websiteHorseAchievements.MinShowResult == -1 || localHorse.Achievements.MinShowResult == -1 || localHorse.Achievements.MinShowResult == 0 /*Workaround, MinShowResult wurde mit 0 initialisiert, nicht -1*/)
|
|
{
|
|
// MinShowResult ist automatisch der größere Wert, da -1 oder 0 nicht gültig sind
|
|
websiteHorseAchievements.MinShowResult = Math.Max(websiteHorseAchievements.MinShowResult, localHorse.Achievements.MinShowResult);
|
|
}
|
|
else
|
|
{
|
|
// Beide Werte sind gültig, also wird der kleinere Wert genommen
|
|
websiteHorseAchievements.MinShowResult = Math.Min(
|
|
websiteHorseAchievements.MinShowResult,
|
|
localHorse.Achievements.MinShowResult
|
|
);
|
|
}
|
|
}
|
|
// MaxCompetitionResult aktualisieren, wenn es kleiner ist als der lokale Wert
|
|
websiteHorseAchievements.MaxCompetitionResult = Math.Max(
|
|
websiteHorseAchievements.MaxCompetitionResult,
|
|
localHorse.Achievements.MaxCompetitionResult
|
|
);
|
|
|
|
// MinCompetitionResult aktualisieren, wenn ein gültiger Wert vorhanden ist und der lokale Wert kleiner ist
|
|
if (websiteHorseAchievements.MinCompetitionResult != -1)
|
|
{
|
|
websiteHorseAchievements.MinCompetitionResult = Math.Min(
|
|
websiteHorseAchievements.MinCompetitionResult,
|
|
localHorse.Achievements.MinCompetitionResult
|
|
);
|
|
}
|
|
localHorse.Achievements = websiteHorseAchievements;
|
|
HorseFactory.SaveHorsesToFile();
|
|
return Ok(localHorse);
|
|
}
|
|
}
|
|
}
|