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

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 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.GetCircleViewMessages(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.GetCircleViewMessages(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();
}
}
}