mysimulation/server/FSO.Server.Api.Core/Controllers/NhoodInfoController.cs
Tony Bark 22191ce648 Removed NioTSO client and server
- NioTSO client isn't needed because we're using RayLib
- Added FreeSO's API server to handle most backend operations
2024-05-01 02:55:43 -04:00

128 lines
4.8 KiB
C#
Executable file

using FSO.Server.Api.Core.Utils;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
using System.Net;
namespace FSO.Server.Api.Core.Controllers
{
[EnableCors]
[ApiController]
public class NhoodInfoController : ControllerBase
{
[HttpGet]
[Route("userapi/city/{shardId}/neighborhoods/all")]
public IActionResult GetAll(int shardId)
{
var api = Api.INSTANCE;
using (var da = api.DAFactory.Get())
{
var nhoods = da.Neighborhoods.All(shardId);
if (nhoods == null) return ApiResponse.Json(HttpStatusCode.NotFound, new JSONNhoodError("Neighborhoods not found"));
List<JSONNhood> nhoodJson = new List<JSONNhood>();
foreach (var nhood in nhoods)
{
nhoodJson.Add(new JSONNhood
{
neighborhood_id = nhood.neighborhood_id,
name = nhood.name,
description = nhood.description,
color = nhood.color,
town_hall_id = nhood.town_hall_id,
icon_url = nhood.icon_url,
mayor_id = nhood.mayor_id,
mayor_elected_date = nhood.mayor_elected_date,
election_cycle_id = nhood.election_cycle_id
});
}
var nhoodsJson = new JSONNhoods();
nhoodsJson.neighborhoods = nhoodJson;
return ApiResponse.Json(HttpStatusCode.OK, nhoodsJson);
}
}
[HttpGet]
[Route("userapi/neighborhoods/{nhoodId}")]
public IActionResult GetByID(uint nhoodId)
{
var api = Api.INSTANCE;
using (var da = api.DAFactory.Get())
{
var nhood = da.Neighborhoods.Get(nhoodId);
if (nhood == null) return ApiResponse.Json(HttpStatusCode.NotFound, new JSONNhoodError("Neighborhood not found"));
var nhoodJson = new JSONNhood
{
neighborhood_id = nhood.neighborhood_id,
name = nhood.name,
description = nhood.description,
color = nhood.color,
town_hall_id = nhood.town_hall_id,
icon_url = nhood.icon_url,
mayor_id = nhood.mayor_id,
mayor_elected_date = nhood.mayor_elected_date,
election_cycle_id = nhood.election_cycle_id
};
return ApiResponse.Json(HttpStatusCode.OK, nhoodJson);
}
}
[HttpGet]
[Route("userapi/city/{shardId}/neighborhoods/name/{nhoodName}")]
public IActionResult GetByName(int shardId, string nhoodName)
{
var api = Api.INSTANCE;
using (var da = api.DAFactory.Get())
{
var searchNhood = da.Neighborhoods.SearchExact(shardId, nhoodName, 1).FirstOrDefault();
if (searchNhood == null) return ApiResponse.Json(HttpStatusCode.NotFound, new JSONNhoodError("Neighborhood not found"));
var nhood = da.Neighborhoods.Get((uint)searchNhood.neighborhood_id);
if (nhood == null) return ApiResponse.Json(HttpStatusCode.NotFound, new JSONNhoodError("Neighborhood not found"));
var nhoodJson = new JSONNhood
{
neighborhood_id = nhood.neighborhood_id,
name = nhood.name,
description = nhood.description,
color = nhood.color,
town_hall_id = nhood.town_hall_id,
icon_url = nhood.icon_url,
mayor_id = nhood.mayor_id,
mayor_elected_date = nhood.mayor_elected_date,
election_cycle_id = nhood.election_cycle_id
};
return ApiResponse.Json(HttpStatusCode.OK, nhoodJson);
}
}
}
public class JSONNhoodError
{
public string error;
public JSONNhoodError(string errorString)
{
error = errorString;
}
}
public class JSONNhoods
{
public List<JSONNhood> neighborhoods { get; set; }
}
public class JSONNhood
{
public int neighborhood_id { get; set; }
public string name { get; set; }
public string description { get; set; }
public uint color { get; set; }
public int? town_hall_id { get; set; }
public string icon_url { get; set; }
public uint? mayor_id { get; set; }
public uint mayor_elected_date { get; set; }
public uint? election_cycle_id { get; set; }
}
}