You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
3.8 KiB

1 year ago
1 year ago
1 year ago
  1. using CircleSDK.Model;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using Newtonsoft.Json;
  12. using Syncfusion.Windows.Forms;
  13. using System.Net.Http;
  14. using CDPShared;
  15. using WMPLib;
  16. namespace CircleViewer.Dialogs
  17. {
  18. public partial class ActivityDlg : Form
  19. {
  20. private CDPWorker _cdp;
  21. List<CircleInfo> _CircleMeta;
  22. public ActivityDlg(CDPWorker cdp)
  23. {
  24. _cdp = cdp;
  25. InitializeComponent();
  26. }
  27. private async void ActivityDlg_Load(object sender, EventArgs e)
  28. {
  29. _CircleMeta = _cdp.Circles;
  30. cbCircles.DataSource = _CircleMeta;
  31. cbCircles.DisplayMember = "CircleName";
  32. }
  33. private async void cbCircles_SelectedValueChanged(object sender, EventArgs e)
  34. {
  35. CircleInfo ci = (CircleInfo)cbCircles.SelectedItem;
  36. if (ci != null)
  37. {
  38. cbTopics.Enabled = false;
  39. lblDescription.Text = ci.CircleDescription;
  40. List<TopicInfo> topics = await _cdp.EnumTopics(ci.CircleId);
  41. cbTopics.DataSource = topics;
  42. cbTopics.DisplayMember = "TopicName";
  43. cbTopics.Enabled = true;
  44. }
  45. else
  46. lblDescription.Text = "";
  47. }
  48. private async void cbTopics_SelectedValueChanged(object sender, EventArgs e)
  49. {
  50. TopicInfo ti = (TopicInfo)cbTopics.SelectedItem;
  51. if (ti != null)
  52. {
  53. lblTopicDescription.Text = ti.TopicDescription;
  54. LoadActivity();
  55. }
  56. else
  57. lblTopicDescription.Text = "";
  58. }
  59. private async Task<List<ActivityRow>> LoadCircleActivity(string circleId, string topicId)
  60. {
  61. List<ActivityRow> lar = new List<ActivityRow>();
  62. GetMessagesReply gmReply = await _cdp.GetCircleViewMessages(circleId, topicId);
  63. foreach (MessageInfo mi in gmReply.Messages)
  64. lar.Add(new ActivityRow(mi));
  65. return lar;
  66. }
  67. private async Task<List<ActivityRow>> LoadCloudActivity(string circleId)
  68. {
  69. List<ActivityRow> retList = new List<ActivityRow>();
  70. var url = "https://circlecloudfuncstaging.azurewebsites.net/api/GetCircleEvents?circleId=" + circleId;
  71. HttpClient client = new HttpClient();
  72. var response = await client.GetAsync(url);
  73. response.EnsureSuccessStatusCode();
  74. string result = await response.Content.ReadAsStringAsync();
  75. List<CircleViewEventRecord> lrecs = JsonConvert.DeserializeObject<List<CircleViewEventRecord>>(result);
  76. foreach (CircleViewEventRecord rec in lrecs)
  77. {
  78. retList.Add(new ActivityRow(rec));
  79. }
  80. return retList;
  81. }
  82. private async void LoadActivity()
  83. {
  84. CircleInfo ci = (CircleInfo)cbCircles.SelectedItem;
  85. TopicInfo ti = (TopicInfo)cbTopics.SelectedItem;
  86. List<ActivityRow> lar = new List<ActivityRow>();
  87. lar.AddRange(await LoadCircleActivity(ci.CircleId, ti.TopicId));
  88. lar.AddRange(await LoadCloudActivity(ci.CircleId));
  89. GetMessagesReply gmReply = await _cdp.GetCircleViewMessages(ci.CircleId, ti.TopicId);
  90. sfgActivity.DataSource = lar;
  91. }
  92. private void sfgActivity_CellDoubleClick(object sender, Syncfusion.WinForms.DataGrid.Events.CellClickEventArgs e)
  93. {
  94. ActivityRow ar = (ActivityRow)e.DataRow.RowData;
  95. ViewMetaDlg dlg = new ViewMetaDlg(ar);
  96. dlg.ShowDialog();
  97. }
  98. }
  99. }