mirror of
https://github.com/simtactics/mysimulation.git
synced 2025-03-26 03:09:10 +00:00
74 lines
2.2 KiB
C#
74 lines
2.2 KiB
C#
|
using FSO.Server.Api.Core.Utils;
|
|||
|
using FSO.Server.Database.DA.Tasks;
|
|||
|
using FSO.Server.Protocol.Gluon.Packets;
|
|||
|
using Newtonsoft.Json;
|
|||
|
using System;
|
|||
|
using System.Net;
|
|||
|
using System.Linq;
|
|||
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
using Microsoft.AspNetCore.Cors;
|
|||
|
|
|||
|
namespace FSO.Server.Api.Core.Controllers.Admin
|
|||
|
{
|
|||
|
[EnableCors("AdminAppPolicy")]
|
|||
|
[Route("admin/tasks")]
|
|||
|
[ApiController]
|
|||
|
public class AdminTasksController : ControllerBase
|
|||
|
{
|
|||
|
[HttpGet]
|
|||
|
public IActionResult Get(int limit, int offset)
|
|||
|
{
|
|||
|
var api = Api.INSTANCE;
|
|||
|
api.DemandAdmin(Request);
|
|||
|
|
|||
|
using (var da = api.DAFactory.Get())
|
|||
|
{
|
|||
|
|
|||
|
if (limit > 100)
|
|||
|
{
|
|||
|
limit = 100;
|
|||
|
}
|
|||
|
|
|||
|
var result = da.Tasks.All((int)offset, (int)limit);
|
|||
|
return ApiResponse.PagedList<DbTask>(Request, HttpStatusCode.OK, result);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpPost("request")]
|
|||
|
public IActionResult request([FromBody] TaskRequest task)
|
|||
|
{
|
|||
|
var api = Api.INSTANCE;
|
|||
|
api.DemandAdmin(Request);
|
|||
|
|
|||
|
var taskServer = api.HostPool.GetByRole(Database.DA.Hosts.DbHostRole.task).FirstOrDefault();
|
|||
|
if (taskServer == null)
|
|||
|
{
|
|||
|
return ApiResponse.Json(HttpStatusCode.OK, -1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
var id = taskServer.Call(new RequestTask()
|
|||
|
{
|
|||
|
TaskType = task.task_type.ToString(),
|
|||
|
ParameterJson = JsonConvert.SerializeObject(task.parameter),
|
|||
|
ShardId = (task.shard_id == null || !task.shard_id.HasValue) ? -1 : task.shard_id.Value
|
|||
|
}).Result;
|
|||
|
return ApiResponse.Json(HttpStatusCode.OK, id);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return ApiResponse.Json(HttpStatusCode.OK, -1);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
public class TaskRequest
|
|||
|
{
|
|||
|
public DbTaskType task_type;
|
|||
|
public int? shard_id;
|
|||
|
public dynamic parameter;
|
|||
|
}
|
|||
|
}
|