123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512 |
- using Azure.Cosmos;
- using HTEXLib.COMM.Helpers;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text.Json;
- using System.Threading.Tasks;
- using TEAMModelOS.Filter;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Extension;
- using TEAMModelOS.SDK.Models;
- using TEAMModelOS.SDK.Models.Cosmos.Common;
- namespace TEAMModelOS.Controllers
- {
- [ProducesResponseType(StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- //
- [Route("teacher")]
- [ApiController]
- public class TeacherCommonController:ControllerBase
- {
- private readonly AzureCosmosFactory _azureCosmos;
- private readonly AzureRedisFactory _azureRedis;
- public TeacherCommonController(AzureCosmosFactory azureCosmos, AzureRedisFactory azureRedis)
- {
- _azureCosmos = azureCosmos;
- _azureRedis = azureRedis;
- }
- [ProducesDefaultResponseType]
- [HttpPost("tch-activity-count")]
- [AuthToken(Roles = "admin,teacher")]
- [Authorize(Roles = "IES")]
- public async Task<IActionResult> TchActivityCount(JsonElement requert)
- {
- var (id, _, _, school) = HttpContext.GetAuthTokenInfo();
- var client = _azureCosmos.GetCosmosClient();
- HashSet<string> classes = new HashSet<string>();
- HashSet<string> stulist = new HashSet<string>();
- //获取学校的名单:
- List<Schedule> schedules = new List<Schedule>();
- string scheduleSql = $"SELECT c.schedule FROM c join scdl in c.schedule where c.pk='Course' and scdl.teacherId='{id}'";
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<Course>(scheduleSql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Course-{school}") }))
- {
- schedules.AddRange(item.schedule);
- }
- schedules.ForEach(x => {
- if (!string.IsNullOrEmpty(x.classId))
- {
- classes.Add(x.classId);
- }
- if (!string.IsNullOrEmpty(x.stulist))
- {
- stulist.Add(x.stulist);
- }
- });
- List<string> types = new List<string> { "Exam", "Survey", "Vote","Homework" };
- List<MQActivity> datas = new List<MQActivity>();
- List<KeyValuePair<string, int>> count = new List<KeyValuePair<string, int>>();
- foreach (var type in types)
- {
- string pksql = $" c.pk='{type}' ";
- string joinSqlClasses = "";
- string andSqlClasses = "";
- if (classes.ToList().IsNotEmpty())
- {
- joinSqlClasses = " join A1 in c.classes ";
- List<string> sqlList = new List<string>();
- classes.ToList().ForEach(x => { sqlList.Add($" '{x}' "); });
- string sql = string.Join(" , ", sqlList);
- andSqlClasses = $" A1 in ({sql}) ";
- }
- string joinSqlStulist = "";
- string andSqlStulist = "";
- if (stulist.ToList().IsNotEmpty())
- {
- joinSqlStulist = " join A1 in c.stuLists ";
- List<string> sqlList = new List<string>();
- stulist.ToList().ForEach(x => { sqlList.Add($" '{x}' "); });
- string sql = string.Join(" , ", sqlList);
- andSqlStulist = $" A1 in ({sql}) ";
- }
- string classesSql = "";
- if (!string.IsNullOrWhiteSpace(joinSqlClasses))
- {
- classesSql = $" and {andSqlClasses } ";
- }
- int acount = 0;
- if (!string.IsNullOrWhiteSpace(school) && classes.ToList().IsNotEmpty())
- {
- string querySchool = $" SELECT distinct c.owner, c.id,c.code, c.classes,c.stuLists,c.subjects,c.progress,c.scope,c.startTime,c.school,c.creatorId,c.name,c.pk ,c.endTime FROM c {joinSqlClasses} where {pksql} {classesSql} and (c.status<>404 or IS_DEFINED(c.status) = false ) ";
- //查询数据归属学校的
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<MQActivity>(querySchool, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"{type}-{school}") }))
- {
- if (item.progress.Equals("going", StringComparison.OrdinalIgnoreCase))
- {
- datas.Add(item);
- }
- acount += 1;
- }
- }
- string stuListsSql = "";
- if (!string.IsNullOrWhiteSpace(joinSqlStulist))
- {
- stuListsSql = $" and {andSqlStulist } ";
- }
- if (!string.IsNullOrWhiteSpace(school) && stulist.ToList().IsNotEmpty())
- {
- string querySchool = $" SELECT distinct c.owner, c.id,c.code, c.classes,c.stuLists,c.subjects,c.progress,c.scope,c.startTime,c.school,c.creatorId,c.name,c.pk ,c.endTime FROM c {joinSqlStulist} where {pksql} {stuListsSql} and (c.status<>404 or IS_DEFINED(c.status) = false ) ";
- //查询数据归属学校的
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<MQActivity>(querySchool, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"{type}-{school}") }))
- {
- if (item.progress.Equals("going", StringComparison.OrdinalIgnoreCase))
- {
- datas.Add(item);
- }
- acount += 1;
- }
- }
- string queryTeacher = $" SELECT distinct c.owner, c.id,c.code, c.classes,c.stuLists,c.subjects,c.progress,c.scope,c.startTime,c.school,c.creatorId,c.name,c.pk ,c.endTime FROM c where {pksql} and (c.status<>404 or IS_DEFINED(c.status) = false ) ";
- //查询数据归属个人的
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<MQActivity>(queryTeacher, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"{type}-{id}") }))
- {
- acount += 1;
- if (item.progress.Equals("going", StringComparison.OrdinalIgnoreCase))
- {
- datas.Add(item);
- }
- }
- KeyValuePair<string, int> valuePair = new KeyValuePair<string, int>(type, acount);
- count.Add(valuePair);
- }
- //课程统计 个人和学校 分别对应的教学的班级有多少
- List<CourseCount> privateCourse = new List<CourseCount>();
- string courseSql = $" SELECT a.teacherId,a.classId, a.stulist,c.id,c.name FROM c join a in c.schedule where a.teacherId='{id}' ";
- await foreach(var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<CourseCount>(courseSql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Course-{id}") })){
- privateCourse.Add(item);
- }
- List<CourseCount> schoolCourse = new List<CourseCount>();
- if (!string.IsNullOrEmpty(school)) {
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, Constant.School).GetItemQueryIterator<CourseCount>(courseSql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Course-{school}") }))
- {
- schoolCourse.Add(item);
- }
- }
- //涉及的课程清单数量(去重),与排课无关,排课涉及周期问题,暂不进行统计
- int privateCourseCount= privateCourse.Select(x => x.id).ToHashSet().Count();
- int schoolCourseCount = schoolCourse.Select(x => x.id).ToHashSet().Count();
- //行政班教学数量,去重。
- HashSet<string> classIds = new HashSet<string>();
- HashSet<string> teachIds = new HashSet<string>();
- HashSet<string> stulists = new HashSet<string>();
- privateCourse.ForEach(x => {
- if (!string.IsNullOrWhiteSpace(x.classId))
- {
- classIds.Add(x.classId);
- }
- if (!string.IsNullOrWhiteSpace(x.stulist))
- {
- stulists.Add(x.stulist);
- }
- });
- schoolCourse.ForEach(x => {
- if (!string.IsNullOrWhiteSpace(x.classId))
- {
- classIds.Add(x.classId);
- }
- if (!string.IsNullOrWhiteSpace(x.stulist))
- {
- teachIds.Add(x.stulist);
- }
- });
- string countItemPaperSql = $" SELECT value(count(1)) FROM c ";
- int privateItemCount = 0;
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<int>(countItemPaperSql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Item-{id}") }))
- {
- privateItemCount=item;
- }
- int privatePaperCount = 0;
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<int>(countItemPaperSql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Paper-{id}") }))
- {
- privatePaperCount = item;
- }
- int privateSyllabusCount = 0;
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<int>(countItemPaperSql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Syllabus-{id}") }))
- {
- privateSyllabusCount = item;
- }
- List<string> bloblogTypes = new List<string>() ;
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<string>(
- "select value( c.type) from c "
- , requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Bloblog-{id}") }))
- {
- bloblogTypes.Add(item);
- }
- var bloblogTypeCount= bloblogTypes.GroupBy(x => x).Select(y => new { type = y, count = y.ToList().Count });
- return Ok(new { totalCount = count, goingDatas = datas, privateCourseCount, schoolCourseCount , classIdsCount= classIds.Count(), teachIdsCount= teachIds.Count(), stulistsCount = stulists.Count(),
- privateItemCount , privatePaperCount, privateSyllabusCount, privateBloblogCount= bloblogTypes.Count,
- bloblogTypeCount
- });
- }
- public class CourseCount{
- public string id { get; set; }
- public string teacherId { get; set; }
- public string classId { get; set; }
- public string stulist { get; set; }
- public string name { get; set; }
- }
- /// <summary>
- /// 教师端,查询活动所有活动类型的列表,班主任,任课教师等
- /// 执教班级
- /// </summary>
- /// <param name="request">
- /// 教师tmdid !userid:"1255868536"
- ///学校编码 !school:"hbcn"
- ///执教的班级信息 !classes:[{"classid":"S-C-00001","scope":"school"},{"classid":"P-C-00004","scope":"private"}] TODO 需要排查 对象和班级字符串id设计原因 {"classid":"S-C-00001","scope":"school"}
- ///执教的科目 ?subjects:["subjectid1","subjectid2"]
- ///活动类型 !"pk":"Vote"/"Exam"/"Homework"/"Learn"/"Survey"" // Vote投票 Survey问卷 Exam评测 Learn学习活动 Homework作业活动
- ///时间筛选范围开始时间 默认30天之前 ?"stime":1608274766154
- ///时间筛选范围结束时间 默认当前时间 ?"etime":1608274766666
- ///每页大小 ?"count":10/null/Undefined
- ///分页Token ?"continuationToken":Undefined/null/"[{\"token\":\"+RID:~omxMAP3ipcSEEwAAAAAAAA==#RT:2#TRC:20#ISV:2#IEO:65551#QCF:1#FPC:AYQTAAAAAAAAiRMAAAAAAAA=\",\"range\":{\"min\":\"\",\"max\":\"FF\"}}]"
- ///当前状态 ?"progress":Undefined/null/"" 表示两种状态都要查询/ "going"/"finish" 表示查询进行中/ 或者已完成 学生端只能查询正在进行或已经结束 going 已发布|finish 已结束
- /// </param>
- /// <returns></returns>
- [ProducesDefaultResponseType]
- [HttpPost("tch-activity")]
- [Authorize(Roles = "IES")]
- //[AuthToken(Roles = "teacher")]
- public async Task<IActionResult> TchActivity(JsonElement requert)
- {
- var (id, _, _, school) = HttpContext.GetAuthTokenInfo();
- if (string.IsNullOrWhiteSpace(school))
- {
- if (requert.TryGetProperty("school", out JsonElement schoolcode))
- {
- if (!schoolcode.ValueKind.Equals(JsonValueKind.Undefined) && !schoolcode.ValueKind.Equals(JsonValueKind.Null) && schoolcode.ValueKind.Equals(JsonValueKind.String))
- {
- school = schoolcode.GetString();
- }
- }
- }
- if (string.IsNullOrWhiteSpace(id))
- {
- if (requert.TryGetProperty("userid", out JsonElement userid))
- {
- if (!userid.ValueKind.Equals(JsonValueKind.Undefined) && !userid.ValueKind.Equals(JsonValueKind.Null) && userid.ValueKind.Equals(JsonValueKind.String))
- {
- id = userid.GetString();
- }
- }
- }
- //var stimestamp = DateTimeOffset.UtcNow.AddDays(-30).ToUnixTimeMilliseconds();
- //if (requert.TryGetProperty("stime", out JsonElement stime))
- //{
- // if (!stime.ValueKind.Equals(JsonValueKind.Undefined) && !stime.ValueKind.Equals(JsonValueKind.Null) && stime.TryGetInt64(out long data))
- // {
- // stimestamp = data;
- // }
- //}
- //string stimesql = $" c.startTime >= {stimestamp} ";
- //var etimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
- //string etimesql = $" and c.startTime <= {etimestamp} ";
- //var progresssql = "";
- //if (requert.TryGetProperty("progress", out JsonElement progress))
- //{
- // if (!progress.ValueKind.Equals(JsonValueKind.Undefined) && !progress.ValueKind.Equals(JsonValueKind.Null) && progress.ValueKind.Equals(JsonValueKind.String))
- // {
- // progresssql = $" and c.progress='{progress}' ";
- // }
- //}
- var pksql = "";
- string type = null;
- if (requert.TryGetProperty("pk", out JsonElement pk))
- {
- if (!pk.ValueKind.Equals(JsonValueKind.Undefined) && !pk.ValueKind.Equals(JsonValueKind.Null) && pk.ValueKind.Equals(JsonValueKind.String))
- {
- pksql = $" c.pk='{pk}' ";
- type = $"{pk}";
- }
- }
- if (string.IsNullOrEmpty(type)) { return BadRequest("type is required!"); }
- string continuationTokenSchool = null;
- //默认不指定返回大小
- int? topcout = null;
- if (requert.TryGetProperty("count", out JsonElement jcount))
- {
- if (!jcount.ValueKind.Equals(JsonValueKind.Undefined) && !jcount.ValueKind.Equals(JsonValueKind.Null) && jcount.TryGetInt32(out int data))
- {
- topcout = data;
- }
- }
- //是否需要进行分页查询,默认不分页
- bool iscontinuation = false;
- if (topcout != null && topcout.Value > 0)
- {
- iscontinuation = true;
- }
- //如果指定了返回大小
- if (requert.TryGetProperty("continuationTokenSchool", out JsonElement continuationSchool))
- {
- //指定了cancellationToken continuationSchool
- if (!continuationSchool.ValueKind.Equals(JsonValueKind.Null) && continuationSchool.ValueKind.Equals(JsonValueKind.String))
- {
- continuationTokenSchool = continuationSchool.GetString();
- }
- }
- //班级
- string joinSqlClasses = "";
- string andSqlClasses = "";
- string joinSqlStulist = "";
- string andSqlStulist = "";
- List<string> classes = null;
- if (requert.TryGetProperty("classes", out JsonElement jclasses))
- {
- if (jclasses.ValueKind is JsonValueKind.Array)
- {
- classes = jclasses.ToObject<List<string>>();
- if (classes.IsNotEmpty())
- {
- //行政班
- joinSqlClasses = " join A1 in c.classes ";
- List<string> sqlListc = new List<string>();
- classes.ForEach(x => { sqlListc.Add($" '{x}' "); });
- string sqlc = string.Join(" , ", sqlListc);
- andSqlClasses = $" A1 in ({sqlc}) ";
- //教学班
- joinSqlStulist = " join A1 in c.stuLists ";
- List<string> sqlListl = new List<string>();
- classes.ForEach(x => { sqlListl.Add($" '{x}' "); });
- string sqll = string.Join(" , ", sqlListl);
- andSqlStulist = $" A1 in ({sqll}) ";
- }
- }
- }
- string classesSql = "";
- if (!string.IsNullOrWhiteSpace(joinSqlClasses))
- {
- classesSql = $" and {andSqlClasses } ";
- }
- string stuListsSql = "";
- if (!string.IsNullOrWhiteSpace(joinSqlStulist))
- {
- stuListsSql = $" and {andSqlStulist } ";
- }
- List<JsonElement> datas = new List<JsonElement>();
- var client = _azureCosmos.GetCosmosClient();
- //班主任 ,任课教师只需要查询两种校园活动 和班级活动 , 不查询私人教室创建的活动。
- if (!string.IsNullOrWhiteSpace(school) && classes.IsNotEmpty())
- {
- //string querySchool = $" SELECT distinct value c FROM c {joinSqlClasses} {joinSqlSubjects} where {stimesql} {etimesql} {progresssql} {typesql} {andSqlSubjects} {tgSql}";
- string querySchoolclss = $" SELECT distinct c.owner,c.sStatus, c.id,c.code, c.classes,c.stuLists,c.subjects,c.progress,c.scope,c.startTime,c.school,c.creatorId,c.name,c.pk ,c.endTime,c.source,c.type FROM c {joinSqlClasses} where {pksql} {classesSql} and (c.status<>404 or IS_DEFINED(c.status) = false ) ";
- //查询数据归属学校的
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryStreamIterator(querySchoolclss, continuationToken: continuationTokenSchool, requestOptions: new QueryRequestOptions() { MaxItemCount = topcout, PartitionKey = new PartitionKey($"{type}-{school}") }))
- {
- using var json = await JsonDocument.ParseAsync(item.ContentStream);
- if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
- {
- foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
- {
- datas.Add(obj.ToObject<JsonElement>());
- }
- //如果需要分页则跳出
- if (iscontinuation)
- {
- continuationTokenSchool = item.GetContinuationToken();
- break;
- }
- }
- }
- string querySchoollist = $" SELECT distinct c.owner,c.sStatus, c.id,c.code, c.classes,c.stuLists,c.subjects,c.progress,c.scope,c.startTime,c.school,c.creatorId,c.name,c.pk ,c.endTime ,c.source,c.type FROM c {joinSqlStulist} where {pksql} {stuListsSql} and (c.status<>404 or IS_DEFINED(c.status) = false ) ";
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryStreamIterator(querySchoollist, continuationToken: continuationTokenSchool, requestOptions: new QueryRequestOptions() { MaxItemCount = topcout, PartitionKey = new PartitionKey($"{type}-{school}") }))
- {
- using var json = await JsonDocument.ParseAsync(item.ContentStream);
- if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
- {
- foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
- {
- datas.Add(obj.ToObject<JsonElement>());
- }
- //如果需要分页则跳出
- if (iscontinuation)
- {
- continuationTokenSchool = item.GetContinuationToken();
- break;
- }
- }
- }
- }
- string continuationTokenTeacher = null;
- //如果指定了返回大小
- if (requert.TryGetProperty("continuationTokenTeacher", out JsonElement continuationTeacher))
- {
- //指定了cancellationToken continuationSchool
- if (!continuationTeacher.ValueKind.Equals(JsonValueKind.Null) && continuationTeacher.ValueKind.Equals(JsonValueKind.String))
- {
- continuationTokenTeacher = continuationTeacher.GetString();
- }
- }
- string queryTeacher = $" SELECT distinct c.owner,c.sStatus, c.id,c.code, c.classes,c.stuLists,c.subjects,c.progress,c.scope,c.startTime,c.school,c.creatorId,c.name,c.pk ,c.endTime ,c.source,c.type FROM c where {pksql} and (c.status<>404 or IS_DEFINED(c.status) = false ) ";
- //查询数据归属学校的
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryStreamIterator(queryTeacher, continuationToken: continuationTokenSchool, requestOptions: new QueryRequestOptions() { MaxItemCount = topcout, PartitionKey = new PartitionKey($"{type}-{id}") }))
- {
- using var json = await JsonDocument.ParseAsync(item.ContentStream);
- if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
- {
- foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
- {
- datas.Add(obj.ToObject<JsonElement>());
- }
- //如果需要分页则跳出
- if (iscontinuation)
- {
- continuationTokenTeacher = item.GetContinuationToken();
- break;
- }
- }
- }
- return Ok(new { datas, continuationTokenSchool, continuationTokenTeacher });
- }
- [ProducesDefaultResponseType]
- [HttpPost("tec-activity")]
- [Authorize(Roles = "IES")]
- [AuthToken(Roles = "student,admin,teacher")]
- public async Task<IActionResult> TecActivity(JsonElement request)
- {
- if (!request.TryGetProperty("type", out JsonElement _type)) return BadRequest();
- var (id, name, pic, school) = HttpContext.GetAuthTokenInfo();
- List<StuActivity> datas = new List<StuActivity>();
- var queryc = $"SELECT value(c) from c where c.school = '{school}' and c.type='{_type}' ";
- await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<StuActivity>(queryText: queryc, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Activity-{id}") }))
- {
- datas.Add(item);
- /*using var json = await JsonDocument.ParseAsync(item.ContentStream);
- if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
- {
- foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
- {
- courses.Add(obj.ToObject<object>());
- }
- }*/
- }
- //(List<StuActivity> datas, string continuationToken) = await ActivityStudentService.FindActivity(request, id, school, _azureCosmos, _azureRedis);
- return Ok(new { datas });
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="element"></param>
- /// <returns></returns>
- [ProducesDefaultResponseType]
- [HttpPost("delete-activity")]
- [Authorize(Roles = "IES")]
- [AuthToken(Roles = "teacher,admin,student")]
- public async Task<IActionResult> DeleteActivity(JsonElement element)
- {
- try
- {
- if (!element.TryGetProperty("id", out JsonElement id)) return BadRequest();
- if (!element.TryGetProperty("code", out JsonElement code)) return BadRequest();
- if (!element.TryGetProperty("role", out JsonElement role)) return BadRequest();
- var client = _azureCosmos.GetCosmosClient();
- if (role.ValueKind.Equals(JsonValueKind.String))
- {
- if (role.GetString().Equals("teacher") || role.GetString().Equals("admin"))
- {
- await client.GetContainer(Constant.TEAMModelOS, "Teacher").DeleteItemAsync<StuActivity>($"{id}", new PartitionKey($"{code}"));
- }
- else if (role.GetString().Equals("student"))
- {
- await client.GetContainer(Constant.TEAMModelOS, "Teacher").DeleteItemAsync<StuActivity>($"{id}", new PartitionKey($"{code}"));
- }
- else
- {
- return Ok(new { status = 500 });
- }
- }
- else
- {
- return Ok(new { status = 500 });
- }
- return Ok(new { status = 200 });
- }
- catch (Exception ex)
- {
- return Ok(new { status = 500 });
- }
- }
- }
- }
|