using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using TEAMModelOS.SDK;
using TEAMModelOS.SDK.DI;
using TEAMModelOS.Service.Models;
namespace TEAMModelOS.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class PaperController: BaseController
{
private readonly SnowflakeId _snowflakeId;
private readonly AzureCosmosFactory _azureCosmos;
public PaperController(AzureCosmosFactory azureCosmos, SnowflakeId snowflakeId)
{
_azureCosmos = azureCosmos;
_snowflakeId = snowflakeId;
}
///
/// 删除
///
///
///
[HttpPost("delete")]
public async Task Delete(IdPk request)
{
ResponseBuilder builder = ResponseBuilder.custom();
IdPk items = await _azureCosmos.DeleteAsync(request.id, request.pk);
return builder.Data(items).build();
}
///
/// 查询试卷摘要信息
///
///
///
[HttpPost("findSummary")]
public async Task findSummary(JsonElement request)
{
ResponseBuilder builder = ResponseBuilder.custom();
//Dictionary dict = new Dictionary();
int keys = 0;
var emobj = request.EnumerateObject();
while (emobj.MoveNext())
{
keys++;
//dict[emobj.Current.Name] = emobj.Current.Value;
}
List props = new List {
"subjectCode", "id", "code", "periodCode",
"name","itemCount","level","pointItem","pointScore","score", "gradeCode"
};
if (keys > 0)
{
return builder.Data(await _azureCosmos.FindByDict(request, propertys: props)).build();
}
else {
return builder.build();
}
}
///
/// 查询试卷
///
///
///
[HttpPost("find")]
public async Task Find(JsonElement request)
{
ResponseBuilder builder = ResponseBuilder.custom();
//Dictionary dict = new Dictionary();
var emobj = request.EnumerateObject();
int keys = 0;
while (emobj.MoveNext())
{
keys++;
//dict[emobj.Current.Name] = emobj.Current.Value;
}
if (keys > 0) {
return builder.Data(await _azureCosmos.FindByDict(request)).build();
}
else
{
return builder.build();
}
}
///
/// 保存试卷
///
///
///
[HttpPost("upsert")]
public async Task Upsert(Paper request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (string.IsNullOrEmpty(request.id))
{
request.id = _snowflakeId.NextId() + "";
request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
await _azureCosmos.SaveOrUpdate(request);
}
else
{
await _azureCosmos.SaveOrUpdate(request);
}
return builder.Data(request).build();
}
}
}