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.

115 lines
3.8 KiB

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