|
@@ -30,12 +30,11 @@ namespace TEAMModelOS.Services
|
|
public static class TeacherService
|
|
public static class TeacherService
|
|
{
|
|
{
|
|
public static async Task<TeacherInfo> TeacherInfo(AzureCosmosFactory _azureCosmos, Teacher teacher, string name, string picture, string id,
|
|
public static async Task<TeacherInfo> TeacherInfo(AzureCosmosFactory _azureCosmos, Teacher teacher, string name, string picture, string id,
|
|
- AzureStorageFactory _azureStorage, Option _option,AzureRedisFactory _azureRedis,string ip, HttpTrigger _httpTrigger,string lang )
|
|
|
|
|
|
+ AzureStorageFactory _azureStorage, Option _option, AzureRedisFactory _azureRedis, string ip, HttpTrigger _httpTrigger, string lang)
|
|
{
|
|
{
|
|
List<object> schools = new List<object>();
|
|
List<object> schools = new List<object>();
|
|
List<AreaDto> areas = new List<AreaDto>();
|
|
List<AreaDto> areas = new List<AreaDto>();
|
|
string defaultschool = null;
|
|
string defaultschool = null;
|
|
- string defaultschoolPeriod = null;
|
|
|
|
//TODO 取得Teacher 個人相關數據(課程清單、虛擬教室清單、歷史紀錄清單等),學校數據另外API處理,多校切換時不同
|
|
//TODO 取得Teacher 個人相關數據(課程清單、虛擬教室清單、歷史紀錄清單等),學校數據另外API處理,多校切換時不同
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
int total = 0;
|
|
int total = 0;
|
|
@@ -47,7 +46,8 @@ namespace TEAMModelOS.Services
|
|
if (teacher == null)
|
|
if (teacher == null)
|
|
{
|
|
{
|
|
teacher = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<Teacher>(id, new PartitionKey("Base"));
|
|
teacher = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<Teacher>(id, new PartitionKey("Base"));
|
|
- if (!string.IsNullOrWhiteSpace(lang) && string.IsNullOrWhiteSpace(teacher.lang)) {
|
|
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(lang) && string.IsNullOrWhiteSpace(teacher.lang))
|
|
|
|
+ {
|
|
teacher.lang = lang;
|
|
teacher.lang = lang;
|
|
}
|
|
}
|
|
teacher.name = $"{name}";
|
|
teacher.name = $"{name}";
|
|
@@ -116,7 +116,6 @@ namespace TEAMModelOS.Services
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//检查是否有加入学校,如果加入学校,则当个人空间size是0G的时候,则免费获得一个G空间,但无论加入多少个学校,只能获取一次 1G的免费空间。没有加入学校则默认0G空间,除非自己购买空间
|
|
//检查是否有加入学校,如果加入学校,则当个人空间size是0G的时候,则免费获得一个G空间,但无论加入多少个学校,只能获取一次 1G的免费空间。没有加入学校则默认0G空间,除非自己购买空间
|
|
- List<SchoolTeacher> schoolTeachers= new List<SchoolTeacher>();
|
|
|
|
if (teacher.schools.IsNotEmpty())
|
|
if (teacher.schools.IsNotEmpty())
|
|
{
|
|
{
|
|
foreach (var sc in teacher.schools)
|
|
foreach (var sc in teacher.schools)
|
|
@@ -131,7 +130,6 @@ namespace TEAMModelOS.Services
|
|
schoolExtobj.time = sc.time;
|
|
schoolExtobj.time = sc.time;
|
|
schoolExtobj.picture = sc.picture;
|
|
schoolExtobj.picture = sc.picture;
|
|
schoolExtobj.areaId = $"{sc.areaId}";
|
|
schoolExtobj.areaId = $"{sc.areaId}";
|
|
-
|
|
|
|
Area area = null;
|
|
Area area = null;
|
|
int access = 0;
|
|
int access = 0;
|
|
if (!string.IsNullOrEmpty($"{sc.areaId}"))
|
|
if (!string.IsNullOrEmpty($"{sc.areaId}"))
|
|
@@ -160,24 +158,6 @@ namespace TEAMModelOS.Services
|
|
{
|
|
{
|
|
var jsonDoc = await JsonDocument.ParseAsync(sctch.ContentStream);
|
|
var jsonDoc = await JsonDocument.ParseAsync(sctch.ContentStream);
|
|
SchoolTeacher schoolTeacher = jsonDoc.RootElement.ToObject<SchoolTeacher>();
|
|
SchoolTeacher schoolTeacher = jsonDoc.RootElement.ToObject<SchoolTeacher>();
|
|
- if (!string.IsNullOrWhiteSpace(schoolTeacher.periodId))
|
|
|
|
- {
|
|
|
|
- schoolExtobj.periodId = schoolTeacher.periodId;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- var schoolbase = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(sc.schoolId, new PartitionKey($"Base"));
|
|
|
|
- if (schoolbase.Status == 200) {
|
|
|
|
- var schoolJsonDoc = await JsonDocument.ParseAsync(schoolbase.ContentStream);
|
|
|
|
- School schoolBase = schoolJsonDoc.RootElement.ToObject<School>();
|
|
|
|
- if (schoolBase.period.IsNotEmpty()) {
|
|
|
|
- schoolExtobj.periodId = schoolBase.period[0].id;
|
|
|
|
- schoolTeacher.periodId = schoolBase.period[0].id;
|
|
|
|
- await client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(schoolTeacher, id, new PartitionKey($"Teacher-{sc.schoolId}"));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if (schoolTeacher.name == null || schoolTeacher.picture == null || !schoolTeacher.name.Equals($"{name}") || !schoolTeacher.picture.Equals($"{picture}"))
|
|
if (schoolTeacher.name == null || schoolTeacher.picture == null || !schoolTeacher.name.Equals($"{name}") || !schoolTeacher.picture.Equals($"{picture}"))
|
|
{
|
|
{
|
|
schoolTeacher.name = $"{name}";
|
|
schoolTeacher.name = $"{name}";
|
|
@@ -190,7 +170,6 @@ namespace TEAMModelOS.Services
|
|
schoolExtobj.size = _size.GetInt32();
|
|
schoolExtobj.size = _size.GetInt32();
|
|
}
|
|
}
|
|
else { schoolExtobj.size = 0; }
|
|
else { schoolExtobj.size = 0; }
|
|
- schoolTeachers.Add(schoolTeacher);
|
|
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
@@ -245,20 +224,6 @@ namespace TEAMModelOS.Services
|
|
teacher.defaultSchool = null;
|
|
teacher.defaultSchool = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- var sctecher= schoolTeachers.Find(z => z.id.Equals(teacher.id) && z.code.Equals($"Teacher-{teacher.defaultSchool}"));
|
|
|
|
- if (sctecher != null)
|
|
|
|
- {
|
|
|
|
- defaultschoolPeriod = sctecher.periodId;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- var sctch = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(id, new PartitionKey($"Teacher-{teacher.defaultSchool}"));
|
|
|
|
- if (sctch.Status == 200 && sctch != null && sctch.ContentStream != null) {
|
|
|
|
- var jsonDoc = await JsonDocument.ParseAsync(sctch.ContentStream);
|
|
|
|
- SchoolTeacher schoolTeacher = jsonDoc.RootElement.ToObject<SchoolTeacher>();
|
|
|
|
- defaultschoolPeriod = schoolTeacher.periodId;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- teacher.defaultschoolPeriod= defaultschoolPeriod;
|
|
|
|
await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, id, new PartitionKey("Base"));
|
|
await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, id, new PartitionKey("Base"));
|
|
//預設學校ID
|
|
//預設學校ID
|
|
defaultschool = teacher.defaultSchool;
|
|
defaultschool = teacher.defaultSchool;
|
|
@@ -321,11 +286,11 @@ namespace TEAMModelOS.Services
|
|
//用户在线记录
|
|
//用户在线记录
|
|
try
|
|
try
|
|
{
|
|
{
|
|
- _ = _httpTrigger.RequestHttpTrigger(new { school = defaultschool, scope = $"{Constant.ScopeTeacher}", id=$"{id}", ip=$"{ip}", expire=1 }, _option.Location, "online-record");
|
|
|
|
|
|
+ _ = _httpTrigger.RequestHttpTrigger(new { school = defaultschool, scope = $"{Constant.ScopeTeacher}", id = $"{id}", ip = $"{ip}", expire = 1 }, _option.Location, "online-record");
|
|
}
|
|
}
|
|
catch { }
|
|
catch { }
|
|
|
|
|
|
-
|
|
|
|
|
|
+
|
|
//取得Teacher Blob 容器位置及SAS
|
|
//取得Teacher Blob 容器位置及SAS
|
|
await _azureStorage.GetBlobContainerClient(id).CreateIfNotExistsAsync(PublicAccessType.None); //嘗試創建Teacher私有容器,如存在則不做任何事,保障容器一定存在
|
|
await _azureStorage.GetBlobContainerClient(id).CreateIfNotExistsAsync(PublicAccessType.None); //嘗試創建Teacher私有容器,如存在則不做任何事,保障容器一定存在
|
|
var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(id, BlobContainerSasPermissions.Write | BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List | BlobContainerSasPermissions.Delete);
|
|
var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(id, BlobContainerSasPermissions.Write | BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List | BlobContainerSasPermissions.Delete);
|
|
@@ -337,7 +302,6 @@ namespace TEAMModelOS.Services
|
|
blob_sas = blob_sas,
|
|
blob_sas = blob_sas,
|
|
schools = schools,
|
|
schools = schools,
|
|
defaultschool = defaultschool,
|
|
defaultschool = defaultschool,
|
|
- defaultschoolPeriod=defaultschoolPeriod,
|
|
|
|
courses = courses,
|
|
courses = courses,
|
|
total = total,
|
|
total = total,
|
|
osblob_sas = osblob_sas,
|
|
osblob_sas = osblob_sas,
|
|
@@ -348,7 +312,7 @@ namespace TEAMModelOS.Services
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
public record AreaDto
|
|
public record AreaDto
|
|
{
|
|
{
|
|
//areaId = area.id, name = area.name, area.standard, area.standardName
|
|
//areaId = area.id, name = area.name, area.standard, area.standardName
|