BotSharp/Platform.Articulate/Controllers/EntityController.cs

70 lines
2.2 KiB
C#
Raw Normal View History

using BotSharp.Core;
2018-09-29 18:18:34 +00:00
using BotSharp.Platform.Models;
2018-09-28 00:49:43 +00:00
using Microsoft.AspNetCore.Mvc;
2018-10-01 17:15:17 +00:00
using Microsoft.Extensions.Configuration;
2018-09-28 00:49:43 +00:00
using Newtonsoft.Json;
using Platform.Articulate.Models;
using Platform.Articulate.ViewModels;
2018-09-28 00:49:43 +00:00
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Platform.Articulate.Controllers
2018-09-28 00:49:43 +00:00
{
[Route("[controller]")]
public class EntityController : ControllerBase
{
2018-10-01 17:15:17 +00:00
private readonly IConfiguration configuration;
private ArticulateAi<AgentModel> builder;
2018-09-29 18:18:34 +00:00
2018-10-01 17:15:17 +00:00
public EntityController(IConfiguration configuration)
2018-09-29 18:18:34 +00:00
{
2018-10-01 17:15:17 +00:00
builder = new ArticulateAi<AgentModel>();
builder.PlatformConfig = configuration.GetSection("ArticulateAi");
2018-09-29 18:18:34 +00:00
}
2018-09-28 00:49:43 +00:00
[HttpGet("{entityId}")]
2018-09-29 18:18:34 +00:00
public EntityModel GetEntity([FromRoute] string entityId)
2018-09-28 00:49:43 +00:00
{
string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
string dataPath = Directory.GetFiles(dataDir).FirstOrDefault(x => x.EndsWith($"-entity-{entityId}.json"));
string json = System.IO.File.ReadAllText(dataPath);
var entity = JsonConvert.DeserializeObject<EntityModel>(json);
return entity;
}
[HttpGet("/agent/{agentId}/entity")]
2018-09-29 18:18:34 +00:00
public EntityPageViewModel GetAgentEntities([FromRoute] string agentId, [FromQuery] int start, [FromQuery] int limit)
2018-09-28 00:49:43 +00:00
{
2018-09-30 15:11:36 +00:00
var agent = builder.GetAgentById(agentId);
return new EntityPageViewModel { Entities = agent.Entities.Select(x => x as EntityModel).ToList(), Total = agent.Entities.Count };
}
[HttpPost]
public EntityModel PostEntity()
{
EntityModel entity = null;
2018-09-28 00:49:43 +00:00
using (var reader = new StreamReader(Request.Body))
2018-09-28 00:49:43 +00:00
{
string body = reader.ReadToEnd();
entity = JsonConvert.DeserializeObject<EntityModel>(body);
}
2018-09-28 00:49:43 +00:00
var agent = builder.GetAgentByName(entity.Agent);
2018-09-30 15:11:36 +00:00
entity.Id = Guid.NewGuid().ToString();
agent.Entities.Add(entity);
2018-09-28 00:49:43 +00:00
builder.SaveAgent(agent);
return entity;
2018-09-28 00:49:43 +00:00
}
}
}