CrazyIter_Bin 1 vuosi sitten
vanhempi
commit
8a31271b51

+ 0 - 2
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -264,8 +264,6 @@ namespace TEAMModelOS.SDK.Models
         public double score {  get; set; }
         public int order { get; set; }
         public List<string> cids { get; set; } = new List<string>();
-
-
     }
     public class ReviewRuleTree {
         public string id { get; set; }

+ 79 - 3
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -24,6 +24,7 @@ using Microsoft.AspNetCore.Authorization;
 using OpenXmlPowerTools;
 using System.IdentityModel.Tokens.Jwt;
 using Microsoft.AspNetCore.Routing;
+using Pipelines.Sockets.Unofficial.Arenas;
 
 namespace TEAMModelOS.Controllers
 {
@@ -67,13 +68,29 @@ namespace TEAMModelOS.Controllers
         [Authorize(Roles = "IES")]
 
         public async Task<IActionResult> WebsiteManage(JsonElement request) {
-            (string tmdid, _, _, string school) = HttpContext.GetAuthTokenInfo();
+            (string tmdid, _, _, string school,string areaId,string keyData) = HttpContext.GetAuthTokenKey();
             if (!request.TryGetProperty("grant_type", out JsonElement grant_type)) return BadRequest();
             {
                 switch (true)
                 {
-                    case bool when $"{grant_type}".Equals("update", StringComparison.OrdinalIgnoreCase): 
+                    case bool when $"{grant_type}".Equals("update", StringComparison.OrdinalIgnoreCase):
                         {
+                            if (!request.TryGetProperty("website", out JsonElement _website)) return BadRequest();
+                            ActivityWebsite website = _website.ToObject<ActivityWebsite>();
+                            Azure.Response teammodelResponse = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemStreamAsync(website.id, new PartitionKey("ActivityWebsite"));
+                            if (teammodelResponse.Status == 200)
+                            {
+                                ActivityWebsite activityWebsite = JsonDocument.Parse(teammodelResponse.Content).RootElement.ToObject<ActivityWebsite>();
+                                website.route=activityWebsite.route;
+                                website.pk=activityWebsite.pk;
+                                website.code=activityWebsite.code;
+                                website.scope=activityWebsite.scope;
+                                //不是醍摩豆学区的,不能修改是否有公开办活动权限
+                                if (!areaId.Equals("02944f32-f534-3397-ea56-e6f1fc6c3714")) {
+                                    website.allowPublic=activityWebsite.allowPublic;
+                                }
+                               
+                            }
                             break;
                         }
                     case bool when $"{grant_type}".Equals("list", StringComparison.OrdinalIgnoreCase):
@@ -108,6 +125,46 @@ namespace TEAMModelOS.Controllers
                                 var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).GetList<Area>(sqlArea, "Base-Area");
                                 if (result.list.IsNotEmpty()) {
                                     string sqlWebsite = $"select value c from c where c.id in ({string.Join(",", result.list.Select(z => $"'{z.id}'"))})";
+                                    var resultWebsite = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).GetList<ActivityWebsite>(sqlWebsite, "ActivityWebsite");
+                                    foreach (var item in result.list) {
+                                        var website =  resultWebsite.list.Find(z => z.id.Equals(item.id));
+                                        if (website!=null)
+                                        {
+                                            if (!string.IsNullOrWhiteSpace(item.shortCode))
+                                            {
+                                                bool change = false;
+                                                if (string.IsNullOrWhiteSpace(website.route))
+                                                {
+                                                    website.route=item.shortCode;
+                                                    change = true;
+                                                }
+                                                else
+                                                {
+                                                    if (!website.route.Equals(item.shortCode))
+                                                    {
+                                                        website.route=item.shortCode;
+                                                        change = true;
+                                                    }
+                                                }
+                                                if (change)
+                                                {
+                                                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).UpsertItemAsync(website, new PartitionKey(website.code));
+                                                }
+                                            }
+                                        }
+                                        else {
+                                            website= new ActivityWebsite
+                                            {
+                                                id= item.id,
+                                                code="ActivityWebsite",
+                                                pk="ActivityWebsite",
+                                                route=item.shortCode,
+                                                scope="area",
+                                                allowPublic=0,
+                                            };
+                                        }
+                                        websites.Add(website);
+                                    }
                                 }
                                 return Ok(websites);
                             }
@@ -116,6 +173,26 @@ namespace TEAMModelOS.Controllers
                                 if (activityWebsiteResponse.Status == 200)
                                 {
                                     ActivityWebsite activityWebsite = JsonDocument.Parse(activityWebsiteResponse.Content).RootElement.ToObject<ActivityWebsite>();
+                                    Area area = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemAsync<Area>(websiteId, new PartitionKey("Base-Area"));
+                                    if (!string.IsNullOrWhiteSpace(area.shortCode) )
+                                    {
+                                        bool change = false;
+                                        if (string.IsNullOrWhiteSpace(activityWebsite.route))
+                                        {
+                                            activityWebsite.route=area.shortCode;
+                                            change = true;
+                                        }
+                                        else {
+                                            if (!activityWebsite.route.Equals(area.shortCode))
+                                            {
+                                                activityWebsite.route=area.shortCode;
+                                                change = true;
+                                            }
+                                        }
+                                        if (change) {
+                                            await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).UpsertItemAsync(activityWebsite, new PartitionKey(activityWebsite.code));
+                                        }
+                                    }
                                     websites.Add(activityWebsite);
                                 }
                                 else
@@ -166,7 +243,6 @@ namespace TEAMModelOS.Controllers
                             }
                         }
                 }
-
              }
             return Ok();
         }