using Microsoft.IdentityModel.Tokens; using Microsoft.Office.Tools.Ribbon; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Net.Http; using System.Text; using System.Text.Json; using System.Threading.Tasks; using System.Windows.Forms; using static HTEXMark.AI_Form; using static HTEXMark.QRCodeForm; namespace HTEXMark { public partial class AISettingForm : Form { public string domain; public MarkLanguage lang; private HttpClient httpClient; public List periodSubjects = new List(); BindingList bindingList = new BindingList(); private RibbonDropDown schoolDropDown; public AISettingForm(RibbonDropDown schoolDropDown,List periodSubjects, MarkLanguage lang, MarkRibbon markRibbon, string domain) { this.lang= lang; this.periodSubjects = periodSubjects; this.domain = domain; this.schoolDropDown = schoolDropDown; httpClient= HttpClientFactory.Create(); InitializeComponent(); this.Load+=FormLoad; } public class CodeName { public string code { get; set; } public string name { get; set; } public int order { get; set; } } private async void FormLoad(object sender, EventArgs e) { var periodTypes = periodSubjects.Where(x => !string.IsNullOrWhiteSpace(x.periodType)).Select(z => z.periodType); List periods = new List(); List subjects = new List(); List items = new List() { new ItemType { name=lang.single,type= "single" }, new ItemType { name=lang.multiple,type= "multiple" }, new ItemType { name=lang.sortmultiple,type= "sortmultiple" }, new ItemType { name=lang.judge,type= "judge" }, new ItemType { name=lang.complete,type= "complete" }, new ItemType { name=lang.subjective,type= "subjective" }, new ItemType { name=lang.draw,type= "draw" }, new ItemType { name=lang.connector,type= "connector" }, new ItemType { name=lang.compose,type= "compose" }, }; comboBoxItemTypes.DataSource= items; comboBoxItemTypes.DisplayMember="name"; comboBoxItemTypes.ValueMember="type"; if (periodTypes!=null && periodTypes.Count()>0) { periods.Add(new CodeName { order= periodTypes.Contains("pre") ? 1 : 0, name= periodTypes.Contains("pre") ? lang.pre : lang.pre+lang.unmatched, code="pre" }); periods.Add(new CodeName { order= periodTypes.Contains("primary") ? 1 : 0, name= periodTypes.Contains("primary") ? lang.primary : lang.primary+lang.unmatched, code="primary" }); periods.Add(new CodeName { order= periodTypes.Contains("junior") ? 1 : 0, name= periodTypes.Contains("junior") ? lang.junior : lang.junior+lang.unmatched, code="junior" }); periods.Add(new CodeName { order = periodTypes.Contains("senior") ? 1 : 0, name = periodTypes.Contains("senior") ? lang.senior : lang.senior+lang.unmatched, code="senior" }); periods.Add(new CodeName { order = periodTypes.Contains("secondary") ? 1 : 0, name = periodTypes.Contains("secondary") ? lang.secondary : lang.secondary+lang.unmatched, code="secondary" }); periods.Add(new CodeName { order = periodTypes.Contains("college") ? 1 : 0, name = periodTypes.Contains("college") ? lang.college : lang.college+lang.unmatched, code="college" }); periods.Add(new CodeName { order = periodTypes.Contains("university") ? 1 : 0, name = periodTypes.Contains("university") ? lang.university : lang.university+lang.unmatched, code="university" }); periods.Add(new CodeName { order = periodTypes.Contains("special") ? 1 : 0, name = periodTypes.Contains("special") ? lang.special : lang.special+lang.unmatched, code="special" }); periods.Add(new CodeName { order= periodTypes.Contains("edu_bureau") ? 1 : 0, name= periodTypes.Contains("edu_bureau") ? lang.edu_bureau : lang.edu_bureau+lang.unmatched, code="edu_bureau" }); periods.Add(new CodeName { order= periodTypes.Contains("elecedu_dept") ? 1 : 0, name= periodTypes.Contains("elecedu_dept") ? lang.elecedu_dept : lang.elecedu_dept+lang.unmatched, code="elecedu_dept" }); periods.Add(new CodeName { order= periodTypes.Contains("adult_secondary") ? 1 : 0, name= periodTypes.Contains("adult_secondary") ? lang.adult_secondary : lang.adult_secondary+lang.unmatched, code="adult_secondary" }); periods.Add(new CodeName { order= periodTypes.Contains("adult_higher") ? 1 : 0, name= periodTypes.Contains("adult_higher") ? lang.adult_higher : lang.adult_higher+lang.unmatched, code="adult_higher" }); periods.Add(new CodeName { order= periodTypes.Contains("master") ? 1 : 0, name= periodTypes.Contains("master") ? lang.master : lang.master+lang.unmatched, code="master" }); periods.Add(new CodeName { order = periodTypes.Contains("doctor") ? 1 : 0, name = periodTypes.Contains("doctor") ? lang.doctor : lang.doctor+lang.unmatched, code="doctor" }); periods.Add(new CodeName { order = periodTypes.Contains("enterprise") ? 1 : 0, name = periodTypes.Contains("enterprise") ? lang.enterprise : lang.enterprise+lang.unmatched, code="enterprise" }); periods= periods.OrderByDescending(x => x.order).ToList(); } else { periods.Add(new CodeName { name= lang.pre+lang.unmatched, code="pre"}); periods.Add(new CodeName { name= lang.primary+lang.unmatched, code="primary" }); periods.Add(new CodeName { name= lang.junior+lang.unmatched, code="junior" }); periods.Add(new CodeName { name= lang.senior + lang.unmatched, code="senior" }); periods.Add(new CodeName { name= lang.secondary + lang.unmatched, code="secondary" }); periods.Add(new CodeName { name= lang.college + lang.unmatched, code="college" }); periods.Add(new CodeName { name= lang.university +lang.unmatched, code="university" }); periods.Add(new CodeName { name= lang.special+lang.unmatched, code="special" }); periods.Add(new CodeName { name= lang.edu_bureau+lang.unmatched, code="edu_bureau" }); periods.Add(new CodeName { name= lang.elecedu_dept+lang.unmatched, code="elecedu_dept" }); periods.Add(new CodeName { name= lang.adult_secondary + lang.unmatched, code="adult_secondary" }); periods.Add(new CodeName { name= lang.adult_higher + lang.unmatched, code="adult_higher" }); periods.Add(new CodeName { name= lang.master+lang.unmatched, code="master" }); periods.Add(new CodeName { name= lang.doctor + lang.unmatched, code="doctor" }); periods.Add(new CodeName { name= lang.enterprise+lang.unmatched, code="enterprise" }); } var period = periods.First(); if (period.order==1){ var subject= periodSubjects.FindAll(x => x.periodType.Equals(period.code)); if (subject!=null) { subject.ForEach(x => { subjects.Add(new CodeName { name=x.subjectName, code=x.subjectId }); }); bindingList = new BindingList(subjects); comboBoxSubject.DataSource=bindingList; comboBoxSubject.DisplayMember="name"; comboBoxSubject.ValueMember="code"; } } comboBoxPeriod.DataSource=periods; comboBoxPeriod.DisplayMember="name"; comboBoxPeriod.ValueMember="code"; comboBoxPeriod.SelectedIndexChanged+=PeriodSelectedIndexChanged; string schoolId = schoolDropDown.SelectedItem.Tag.ToString() ; string aidomian = "https://appraisal-test.teammodel.cn"; var tokenData = await HttpClientHelper. CheckToken(UserSettings.Default.access_token, domain, UserSettings.Default.x_auth_token, httpClient); if (tokenData.ok) { httpClient= tokenData.httpClient; ///school admin /// List apps =new List(); var jwt = new JwtSecurityToken(UserSettings.Default.x_auth_token); jwt.Payload.TryGetValue("roles", out object _roles); List roles = JsonSerializer.Deserialize>($"{_roles}"); if (roles.Contains("admin") &&!string.IsNullOrWhiteSpace(jwt.Payload.Azp)) { try { var response = await httpClient.PostAsJsonAsync($"{aidomian}/ai/app/list", new { scope = "school", }); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); var json = JsonSerializer.Deserialize(content); json.TryGetProperty("data", out JsonElement _json); var aiApps = JsonSerializer.Deserialize>(_json); if (!aiApps.IsNullOrEmpty()) { apps.AddRange(aiApps); } } } catch (Exception ex) { } } if (jwt.Payload.Sub.Contains("1595321354")) { try { var response = await httpClient.PostAsJsonAsync($"{aidomian}/ai/app/list", new { scope = "public", }); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); var json = JsonSerializer.Deserialize(content); json.TryGetProperty("data", out JsonElement _json); var aiApps = JsonSerializer.Deserialize>(_json); if (!aiApps.IsNullOrEmpty()) { apps.AddRange(aiApps); } } } catch (Exception ex ) { } } { try { var response = await httpClient.PostAsJsonAsync($"{aidomian}/ai/app/list", new { scope = "private", }); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); var json = JsonSerializer.Deserialize(content); json.TryGetProperty("data", out JsonElement _json); var aiApps = JsonSerializer.Deserialize>(_json); if (!aiApps.IsNullOrEmpty()) { apps.AddRange(aiApps); } } } catch (Exception ex) { } } listBox_itemList.DataSource = apps; listBox_itemList.DisplayMember="name"; listBox_itemList.ValueMember="id"; } } public class AiApp { public string id { get; set; } public string code { get; set; } public string schoolId { get; set; } public string icon { get; set; } public string name { get; set; } public string bizType { get; set; } public string scope { get; set; } public string lang { get; set; } public string itemType { get; set; } public string period { get; set; } public string subject { get; set; } public string description { get; set; } public string prompt { get; set; } public string creator { get; set; } public string creatorId { get; set; } public long createTime { get; set; } } private void PeriodSelectedIndexChanged(object sender, EventArgs e) { // comboBoxSubject.Items.Clear(); List subjects = new List(); CodeName period =(CodeName) comboBoxPeriod.SelectedItem; if (period.order==1) { var subject = periodSubjects.FindAll(x => x.periodType.Equals(period.code)); if (subject!=null) { subject.ForEach(x => { subjects.Add(new CodeName { name=x.subjectName, code=x.subjectId }); }); } } comboBoxSubject.SelectedItem=null; bindingList = new BindingList(subjects); comboBoxSubject.DataSource=bindingList; comboBoxSubject.DisplayMember="name"; comboBoxSubject.ValueMember="code"; } } }