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 nhoodJson = new List(); 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 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; } } }