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.
154 lines
5.5 KiB
154 lines
5.5 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;
|
|
|
|
namespace CircleViewer.Dialogs
|
|
{
|
|
public partial class ActivityDlgDefault : Form
|
|
{
|
|
CDPWorker _cdp;
|
|
List<CircleInfo> _CircleMeta;
|
|
public ActivityDlgDefault(CDPWorker cdp)
|
|
{
|
|
_cdp = cdp;
|
|
InitializeComponent();
|
|
}
|
|
|
|
private async void ActivityDlg_Load(object sender, EventArgs e)
|
|
{
|
|
LoadActivity();
|
|
await Task.Run(async () =>
|
|
{
|
|
CircleInfo ci = await _cdp.GetCircle(Properties.Settings.Default.DefaultCircleId);
|
|
this.BeginInvoke((MethodInvoker)delegate
|
|
{
|
|
this.Text = $"User Group Activity - {ci.CircleName}";
|
|
});
|
|
});
|
|
}
|
|
private async Task<List<ActivityRow>> LoadCircleActivity()
|
|
{
|
|
List<ActivityRow> lar = new List<ActivityRow>();
|
|
GetMessagesReply gmReply = await _cdp.GetCircleViewMessages();
|
|
|
|
#if FALSE // I only want to display recent events. (making a video)
|
|
foreach (MessageInfo mi in gmReply.Messages)
|
|
{
|
|
ActivityRow ar = new ActivityRow(mi);
|
|
if ((DateTime.Now - ar.EventTime).TotalMinutes < 15)
|
|
lar.Add(new ActivityRow(mi));
|
|
}
|
|
#else
|
|
foreach (MessageInfo mi in gmReply.Messages)
|
|
lar.Add(new ActivityRow(mi));
|
|
#endif
|
|
return lar;
|
|
}
|
|
private async Task<List<ActivityRow>> LoadCloudActivity()
|
|
{
|
|
List<ActivityRow> retList = new List<ActivityRow>();
|
|
|
|
var url = "https://circlecloudfuncstaging.azurewebsites.net/api/GetCircleEvents?circleId=" + Properties.Settings.Default.DefaultCircleId;
|
|
|
|
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()
|
|
{
|
|
GetMessagesReply gmReply = await _cdp.GetCircleViewMessages();
|
|
List<ActivityRow> lar = new List<ActivityRow>();
|
|
List<ActivityRow> lCircleAR = await LoadCircleActivity();
|
|
lar.AddRange(lCircleAR);
|
|
|
|
Dictionary<string, string> _fileIdToName = new Dictionary<string, string>();
|
|
Dictionary<string, string> _userIdToName = new Dictionary<string, string>();
|
|
foreach (ActivityRow ar in lar)
|
|
{
|
|
switch ((CircleViewMessages)ar.MessageType)
|
|
{
|
|
case CircleViewMessages.FileEncrypted:
|
|
{
|
|
string fileId = ar.GetValue("File Id");
|
|
if (!string.IsNullOrEmpty(fileId))
|
|
{
|
|
_fileIdToName[fileId] = ar.GetValue("Filename");
|
|
}
|
|
|
|
string viewerId = ar.GetValue("Sender Id");
|
|
if (!string.IsNullOrEmpty(viewerId))
|
|
{
|
|
_userIdToName[viewerId] = ar.GetValue("Sender");
|
|
}
|
|
break;
|
|
}
|
|
case CircleViewMessages.FileViewed:
|
|
{
|
|
string fileId = ar.GetValue("File Id");
|
|
if (!string.IsNullOrEmpty(fileId))
|
|
{
|
|
_fileIdToName[fileId] = ar.GetValue("Filename");
|
|
}
|
|
|
|
string viewerId = ar.GetValue("Viewer Id");
|
|
if (!string.IsNullOrEmpty(viewerId))
|
|
{
|
|
_userIdToName[viewerId] = ar.GetValue("Viewer");
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
List<ActivityRow> lCloudAR = await LoadCloudActivity();
|
|
foreach (ActivityRow ar in lCloudAR)
|
|
{
|
|
string fileId = ar.GetValue("File Id");
|
|
if (_fileIdToName.ContainsKey(fileId))
|
|
{
|
|
ar.AddValue("Filename*", _fileIdToName[fileId]);
|
|
}
|
|
|
|
string senderId = ar.GetValue("Sender Id");
|
|
if (_userIdToName.ContainsKey(senderId))
|
|
{
|
|
ar.AddValue("Sender*", _userIdToName[senderId]);
|
|
}
|
|
}
|
|
|
|
lar.AddRange(lCloudAR);
|
|
|
|
sfgActivity.DataSource = lar.OrderBy(r => r.EventTime).ToList();
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|