75 lines
2.5 KiB
C#
75 lines
2.5 KiB
C#
using _1CDataBus.RabbitMQ;
|
|
using _1CDataBus.Structure;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Simple.OData.Client;
|
|
using System.Linq.Expressions;
|
|
using System.Text;
|
|
using System.Text.Encodings.Web;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace _1CDataBus.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("[controller]")]
|
|
public class ContractsController : ControllerBase
|
|
{
|
|
private readonly IConfiguration _config;
|
|
private readonly ILogger<ContractsController> _logger;
|
|
private RabbitConnection _rabbit;
|
|
private ODataClient _client;
|
|
|
|
public ContractsController(ILogger<ContractsController> logger, IConfiguration config)
|
|
{
|
|
_config = config;
|
|
_logger = logger;
|
|
_rabbit = new RabbitConnection(_config);
|
|
var odata = new ODataAccess(_config);
|
|
_client = odata.Client;
|
|
}
|
|
|
|
[HttpPost("SendContractFromQDoc")]
|
|
public async Task SendContractFromQDoc(long id)
|
|
{
|
|
var contract = await _client
|
|
.For("IContract")
|
|
.Key(id)
|
|
.Expand("BusinessUnit")
|
|
.Expand("Counterparty")
|
|
.Expand("Currency")
|
|
.Expand("DealKindSungero")
|
|
.FindEntryAsync();
|
|
var sendContract = new Contract(contract);
|
|
await SendContractTo1C(sendContract);
|
|
}
|
|
|
|
[HttpPost("SendContract")]
|
|
public async Task SendContractTo1C([FromBody]Contract contract)
|
|
{
|
|
JsonSerializerOptions options = new()
|
|
{
|
|
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
|
|
WriteIndented = true
|
|
};
|
|
var serialized = JsonSerializer.Serialize(contract, options);
|
|
await _rabbit.SendMessage(serialized);
|
|
}
|
|
|
|
[HttpGet("GetContract")]
|
|
public async Task<string> GetContract(long contractId)
|
|
{
|
|
var contract = await _client
|
|
.For("IContracts")
|
|
.Expand("Versions/Body")
|
|
.Key(contractId)
|
|
.FindEntryAsync();
|
|
var versions = (IEnumerable<dynamic>)contract["Versions"];
|
|
var lastVersion = versions.OrderByDescending(x => x["Number"]).FirstOrDefault();
|
|
byte[] bytes = lastVersion["Body"]["Value"];
|
|
var base64 = Convert.ToBase64String(bytes);
|
|
return base64;
|
|
}
|
|
}
|
|
}
|