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
115 lines
3.8 KiB
using CircleSDK.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using CircleViewer.Models;
|
|
using Newtonsoft.Json;
|
|
using Syncfusion.Windows.Forms;
|
|
using System.Net.Http;
|
|
using CDPShared;
|
|
using WMPLib;
|
|
|
|
namespace CircleViewer.Dialogs
|
|
{
|
|
public partial class ActivityDlg : Form
|
|
{
|
|
private CDPWorker _cdp;
|
|
|
|
List<CircleInfo> _CircleMeta;
|
|
public ActivityDlg(CDPWorker cdp)
|
|
{
|
|
_cdp = cdp;
|
|
InitializeComponent();
|
|
}
|
|
|
|
private async void ActivityDlg_Load(object sender, EventArgs e)
|
|
{
|
|
_CircleMeta = _cdp.Circles;
|
|
cbCircles.DataSource = _CircleMeta;
|
|
cbCircles.DisplayMember = "CircleName";
|
|
}
|
|
private async void cbCircles_SelectedValueChanged(object sender, EventArgs e)
|
|
{
|
|
CircleInfo ci = (CircleInfo)cbCircles.SelectedItem;
|
|
if (ci != null)
|
|
{
|
|
cbTopics.Enabled = false;
|
|
|
|
lblDescription.Text = ci.CircleDescription;
|
|
List<TopicInfo> topics = await _cdp.EnumTopics(ci.CircleId);
|
|
cbTopics.DataSource = topics;
|
|
cbTopics.DisplayMember = "TopicName";
|
|
|
|
cbTopics.Enabled = true;
|
|
}
|
|
else
|
|
lblDescription.Text = "";
|
|
}
|
|
private async void cbTopics_SelectedValueChanged(object sender, EventArgs e)
|
|
{
|
|
TopicInfo ti = (TopicInfo)cbTopics.SelectedItem;
|
|
if (ti != null)
|
|
{
|
|
lblTopicDescription.Text = ti.TopicDescription;
|
|
LoadActivity();
|
|
}
|
|
else
|
|
lblTopicDescription.Text = "";
|
|
}
|
|
|
|
private async Task<List<ActivityRow>> LoadCircleActivity(string circleId, string topicId)
|
|
{
|
|
List<ActivityRow> lar = new List<ActivityRow>();
|
|
GetMessagesReply gmReply = await _cdp.API.GetCircleViewwMessages(circleId, topicId);
|
|
foreach (MessageInfo mi in gmReply.Messages)
|
|
lar.Add(new ActivityRow(mi));
|
|
|
|
return lar;
|
|
}
|
|
private async Task<List<ActivityRow>> LoadCloudActivity(string circleId)
|
|
{
|
|
List<ActivityRow> retList = new List<ActivityRow>();
|
|
|
|
var url = "https://circlecloudfuncstaging.azurewebsites.net/api/GetCircleEvents?circleId=" + circleId;
|
|
|
|
HttpClient client = new HttpClient();
|
|
var response = await client.GetAsync(url);
|
|
response.EnsureSuccessStatusCode();
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
|
|
List<CircleViewEventRecord> lrecs = JsonConvert.DeserializeObject<List<CircleViewEventRecord>>(result);
|
|
foreach (CircleViewEventRecord rec in lrecs)
|
|
{
|
|
retList.Add(new ActivityRow(rec));
|
|
}
|
|
|
|
return retList;
|
|
}
|
|
|
|
private async void LoadActivity()
|
|
{
|
|
CircleInfo ci = (CircleInfo)cbCircles.SelectedItem;
|
|
TopicInfo ti = (TopicInfo)cbTopics.SelectedItem;
|
|
|
|
List<ActivityRow> lar = new List<ActivityRow>();
|
|
lar.AddRange(await LoadCircleActivity(ci.CircleId, ti.TopicId));
|
|
lar.AddRange(await LoadCloudActivity(ci.CircleId));
|
|
|
|
GetMessagesReply gmReply = await _cdp.API.GetCircleViewwMessages(ci.CircleId, ti.TopicId);
|
|
sfgActivity.DataSource = lar;
|
|
}
|
|
|
|
private void sfgActivity_CellDoubleClick(object sender, Syncfusion.WinForms.DataGrid.Events.CellClickEventArgs e)
|
|
{
|
|
ActivityRow ar = (ActivityRow)e.DataRow.RowData;
|
|
ViewMetaDlg dlg = new ViewMetaDlg(ar);
|
|
dlg.ShowDialog();
|
|
}
|
|
}
|
|
}
|