|
@@ -21,6 +21,7 @@ using StackExchange.Redis;
|
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
using System.Text.RegularExpressions;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
+using OpenXmlPowerTools;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers
|
|
namespace TEAMModelOS.Controllers
|
|
{
|
|
{
|
|
@@ -55,12 +56,12 @@ namespace TEAMModelOS.Controllers
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
- /// 活动创建
|
|
|
|
|
|
+ /// 添加活动参与对象,学校,教师
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
[ProducesDefaultResponseType]
|
|
[ProducesDefaultResponseType]
|
|
- [AuthToken(Roles = "teacher,admin,area")]
|
|
|
|
|
|
+ [AuthToken(Roles = "admin,area")]
|
|
[HttpPost("invite-target")]
|
|
[HttpPost("invite-target")]
|
|
[Authorize(Roles = "IES")]
|
|
[Authorize(Roles = "IES")]
|
|
|
|
|
|
@@ -72,23 +73,50 @@ namespace TEAMModelOS.Controllers
|
|
{
|
|
{
|
|
case bool when $"{grant_type}".Equals("schools", StringComparison.OrdinalIgnoreCase):
|
|
case bool when $"{grant_type}".Equals("schools", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
- if (!request.TryGetProperty("areaId", out JsonElement _areaId)) return BadRequest();
|
|
|
|
- if (_areaId.GetString().Equals("02944f32-f534-3397-ea56-e6f1fc6c3714", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
|
+
|
|
|
|
+ if (!request.TryGetProperty("scope", out JsonElement _scope)) return BadRequest();
|
|
|
|
+ string sql = string.Empty;
|
|
|
|
+ if (_scope.GetString().Equals("public", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
{
|
|
- string sql = "select c.id,c.name ,c.picture,c.region,c.province,c.city,c.areaId from c where c.code='Base' ";
|
|
|
|
|
|
+ sql = "select c.id,c.name ,c.picture,c.region,c.province,c.city,c.areaId from c where c.code='Base' ";
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
- string sql = "select c.id,c.name ,c.picture,c.region,c.province,c.city,c.areaId from c where c.code='Base' ";
|
|
|
|
|
|
+ if (!request.TryGetProperty("areaId", out JsonElement _areaId)) return BadRequest();
|
|
|
|
+ sql = $"select c.id,c.name ,c.picture,c.region,c.province,c.city,c.areaId from c where c.code='Base' and c.areaId='{_areaId}' ";
|
|
}
|
|
}
|
|
- break;
|
|
|
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<School>(sql, "Base");
|
|
|
|
+ var sc= result.list.FindAll(z => !string.IsNullOrWhiteSpace(z.areaId));
|
|
|
|
+ if (sc.IsNotEmpty()) {
|
|
|
|
+ string areaSql = $"select value c from c where c.id in ({string.Join(",",sc.Select(z=>$"'{z.areaId}'").ToHashSet())})";
|
|
|
|
+ var areaResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).GetList<Area>(sql, "Base-Area");
|
|
|
|
+ if (areaResult.list.IsNotEmpty()) {
|
|
|
|
+ List<dynamic> schools= new List<dynamic>();
|
|
|
|
+ foreach (var item in result.list) {
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(item.areaId))
|
|
|
|
+ {
|
|
|
|
+ var area = areaResult.list.Find(z => z.id.Equals(item.areaId));
|
|
|
|
+ schools.Add(new { item.id, item.name, item.picture, item.region, item.province, item.city, item.areaId, areaName = area?.name });
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ schools.Add(new { item.id, item.name, item.picture, item.region, item.province, item.city, item.areaId, areaName = string.Empty });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return Ok(new {code=200, schools = result.list.Select(z=>new { z.id,z.name,z.picture,z.region,z.province,z.city,z.areaId, areaName = string.Empty }) });
|
|
}
|
|
}
|
|
case bool when $"{grant_type}".Equals("teachers", StringComparison.OrdinalIgnoreCase):
|
|
case bool when $"{grant_type}".Equals("teachers", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
- if (!request.TryGetProperty("schoolId", out JsonElement _schoolId)) return BadRequest();
|
|
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(school)) {
|
|
|
|
+ School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
|
+ string sql = $"select c.id,c.name ,c.picture from c where c.code='Teacher-{school}' ";
|
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<SchoolTeacher>(sql, $"Teacher-{school}");
|
|
|
|
+ return Ok(new { code = 200, teachers = result.list.Select(z=>new { z.id,z.name,z.picture,school,schooName = schoolbase.name}) });
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return Ok();
|
|
|
|
|
|
+ return Ok(new { code = 400 });
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -198,17 +226,51 @@ namespace TEAMModelOS.Controllers
|
|
case bool when $"{grant_type}".Equals("list-area", StringComparison.OrdinalIgnoreCase):
|
|
case bool when $"{grant_type}".Equals("list-area", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
if (!request.TryGetProperty("areaId", out JsonElement _areaId)) return BadRequest();
|
|
if (!request.TryGetProperty("areaId", out JsonElement _areaId)) return BadRequest();
|
|
- string sql = $"select value c from c where c.scope='area' and c.owner='{_areaId}' ";
|
|
|
|
|
|
+ string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
|
|
|
|
+
|
|
|
|
+ if (request.TryGetProperty("year", out JsonElement _year)) {
|
|
|
|
+ yearSql = $" and c.year={_year}";
|
|
|
|
+ }
|
|
|
|
+ string sql = $"select value c from c where c.scope='area' and c.owner='{_areaId}' {yearSql} ";
|
|
//醍摩豆智慧学区
|
|
//醍摩豆智慧学区
|
|
if (_areaId.GetString().Equals("02944f32-f534-3397-ea56-e6f1fc6c3714", StringComparison.OrdinalIgnoreCase)) {
|
|
if (_areaId.GetString().Equals("02944f32-f534-3397-ea56-e6f1fc6c3714", StringComparison.OrdinalIgnoreCase)) {
|
|
- sql = $"select value c from c where c.owner='{_areaId}' and ( c.scope='area' or c.scope='public' ) ";
|
|
|
|
|
|
+ sql = $"select value c from c where c.owner='{_areaId}' {yearSql } and ( c.scope='area' or c.scope='public' ) ";
|
|
}
|
|
}
|
|
var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<Activity>(sql, "Activity");
|
|
var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<Activity>(sql, "Activity");
|
|
return Ok(new { activities = result.list.OrderByDescending(z=>z.stime) });
|
|
return Ok(new { activities = result.list.OrderByDescending(z=>z.stime) });
|
|
}
|
|
}
|
|
case bool when $"{grant_type}".Equals("list-school", StringComparison.OrdinalIgnoreCase):
|
|
case bool when $"{grant_type}".Equals("list-school", StringComparison.OrdinalIgnoreCase):
|
|
{
|
|
{
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(school)) {
|
|
|
|
+ List<Activity> activities = new List<Activity>();
|
|
|
|
+ string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
|
|
|
|
+
|
|
|
|
+ if (request.TryGetProperty("year", out JsonElement _year))
|
|
|
|
+ {
|
|
|
|
+ yearSql = $" and c.year={_year}";
|
|
|
|
+ }
|
|
|
|
+ //获取开放的
|
|
|
|
+ {
|
|
|
|
+ string sqlOpen = $"select value c from c where c.scope='public'{yearSql} and( ARRAY_LENGTH(c.schools)=0 or IS_DEFINED(c.schools) = false ) ";
|
|
|
|
+ string sqlSchool = $"select value c from c join s in c.schools where c.scope='public'{yearSql} and s.id='{school}' ";
|
|
|
|
+ }
|
|
|
|
+ //获取区级下放的
|
|
|
|
+ {
|
|
|
|
+ School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(schoolbase.areaId)) {
|
|
|
|
+ string sqlOpen = $"select value c from c where c.scope='area'{yearSql} and c.owner='{schoolbase.areaId}' and( ARRAY_LENGTH(c.schools)=0 or IS_DEFINED(c.schools) = false) ";
|
|
|
|
+ string sqlSchool = $"select value c from c join s in c.schools where c.scope='area'{yearSql} and c.owner='{schoolbase.areaId}' and s.id='{school}' ";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //获取学校自己的
|
|
|
|
+ {
|
|
|
|
+ string sqlOpen = $"select value c from c where c.scope='school'{yearSql} and c.owner='{school}' ";
|
|
|
|
+ }
|
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<Activity>("", "Activity");
|
|
|
|
+ return Ok(new { activities = result.list.OrderByDescending(z => z.stime) });
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
case bool when $"{grant_type}".Equals("list-teacher", StringComparison.OrdinalIgnoreCase):
|
|
case bool when $"{grant_type}".Equals("list-teacher", StringComparison.OrdinalIgnoreCase):
|