using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Threading.Tasks;
using TEAMModelOS.Models.StudentInfo;
using TEAMModelOS.Models.TeacherInfo;
using TEAMModelOS.SDK;
using TEAMModelOS.SDK.Context.Constant.Common;
using TEAMModelOS.SDK.DI;
using TEAMModelOS.SDK.Helper.Common.StringHelper;
using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
namespace TEAMModelOS.Controllers.Learn
{
///
/// 学习活动
///
[Route("api/[controller]")]
[ApiController]
public class LearnController: BaseController
{
private readonly SnowflakeId _snowflakeId;
private readonly AzureCosmosFactory _azureCosmos;
private readonly AzureServiceBusFactory _serviceBus;
public LearnController(AzureCosmosFactory azureCosmos, AzureServiceBusFactory serviceBus, SnowflakeId snowflakeId)
{
_snowflakeId = snowflakeId;
_serviceBus = serviceBus;
_azureCosmos = azureCosmos;
}
///
/// 保存或更新学习任务
///
///
///
[HttpPost("upsertTask")]
public async Task UpsertTask(LearnTask request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (request.createTime <= 0) {
request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
}
if (request.endTime > 0) {
//设定结束时间
string msgEndId = _snowflakeId.NextId()+"";
await _serviceBus.GetServiceBusClient().SendLeamMessage(Constants.TopicName, request.id, request.code, request.endTime, 300, msgEndId);
}
await _azureCosmos.Save(request);
return builder.Data(request).build();
}
///
/// 查询学习任务
///
///
///
[HttpPost("findTask")]
public async Task FindTask(JsonElement request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (request.TryGetProperty("id",out _) || request.TryGetProperty("code",out _))
{
List tasks = await _azureCosmos.FindByDict(request);
return builder.Data(tasks).build();
}
else {
return builder.Error(ResponseCode.PARAMS_ERROR, "参数异常!").build();
}
}
///
/// 删除学习任务
///
///
///
[HttpPost("deleteTask")]
public async Task DeleteTask(IdPk request)
{
ResponseBuilder builder = ResponseBuilder.custom();
return builder.Data(await _azureCosmos.DeleteAsync(request)).build();
}
///
/// 保存或更新学习单元单元
///
///
///
[HttpPost("upsertUnit")]
public async Task UpsertUnit(LearnUnit request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (string.IsNullOrEmpty(request.id))
{
request.id = _snowflakeId.NextId() + "";
request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
await _azureCosmos.Save(request);
}
else
{
await _azureCosmos.Update(request);
}
return builder.Data(request).build();
}
///
/// 查询学习单元
///
///
///
[HttpPost("findUnit")]
public async Task FindUnit(JsonElement request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (StringHelper.getKeyCount(request) > 0)
{
return builder.Data(await _azureCosmos.FindByDict(request)).build();
}
else {
return builder.build();
}
}
///
/// 删除学习单元
///
///
///
[HttpPost("deleteUnit")]
public async Task DeleteUnit(IdPk request)
{
ResponseBuilder builder = ResponseBuilder.custom();
return builder.Data(await _azureCosmos.DeleteAsync(request)).build();
}
///
/// 保存或新增编序学习活动
///
///
///
[HttpPost("upsertProcess")]
public async Task UpsertProcess(LearnProcess request) {
ResponseBuilder builder = ResponseBuilder.custom();
if (string.IsNullOrEmpty(request.id))
{
request.id = _snowflakeId.NextId() + "";
request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
await _azureCosmos.Save(request);
}
else {
await _azureCosmos.Update(request);
}
return builder.Data(request).build();
}
///
/// 查询编序学习活动
///
///
///
[HttpPost("findProcess")]
public async Task FindProcess(JsonElement request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (StringHelper.getKeyCount(request) > 0) {
builder.Data(await _azureCosmos.FindByDict(request));
}
return builder.build();
}
///
/// 删除编序学习活动
///
///
///
[HttpPost("deleteProcess")]
public async Task DeleteProcess(IdPk request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (request != null)
{
builder.Data(await _azureCosmos.DeleteAsync(request));
}
return builder.build();
}
///
/// 保存或新增作答记录
///
///
///
[HttpPost("upsertRecord")]
public async Task UpsertRecord(List request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (ValidateHelper.IsValid(request))
{
request.ForEach(x =>
{
if (string.IsNullOrEmpty(x.id))
{
}
});
List leanProcesses = await _azureCosmos.SaveOrUpdateAll(request);
builder.Data(leanProcesses);
}
return builder.build();
}
///
/// 查询编序作答记录
///
///
///
[HttpPost("findRecord")]
public async Task FindRecord(JsonElement request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (StringHelper.getKeyCount(request) > 0)
{
builder.Data(await _azureCosmos.FindByDict(request));
}
return builder.build();
}
///
/// 删除作答记录
///
///
///
[HttpPost("deleteRecord")]
public async Task DeleteRecord(IdPk request)
{
ResponseBuilder builder = ResponseBuilder.custom();
if (request != null)
{
builder.Data(await _azureCosmos.DeleteAsync(request));
}
return builder.build();
}
}
}