private void OnCommandLoadHealth(object sender, EventArgs e) { ITeamHealthView view = base._view as ITeamHealthView; ITeamHealthModel model = base._model as ITeamHealthModel; IMainPresenter presenter = SimpleResolver.Instance.Get <IMainPresenter>(); if (SyncContext != null) { SyncContext.Post(delegate { presenter.EnableControl(false); presenter.ActivateSpinner(true); presenter.UpdateProgressInfo("Pulling health report stats..."); }, null); } Thread healthrefresh = new Thread(() => { if (!string.IsNullOrEmpty(model.AccessToken)) { this.RefreshHealth(model, presenter); if (SyncContext != null) { SyncContext.Post(delegate { // update result and update view with model. view.LoadViewHealthItems(model); presenter.UpdateProgressInfo("Health stats refreshed at [" + model.RefreshDateTime.ToString() + "]"); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } } }); healthrefresh.Start(); }
private void OnDataChanged(object sender, System.EventArgs e) { ITeamHealthView view = base._view as ITeamHealthView; ITeamHealthModel model = base._model as ITeamHealthModel; PresenterBase.SetModelPropertiesFromView <ITeamHealthModel, ITeamHealthView>( ref model, view ); }
protected override void Initialize() { ITeamHealthView view = base._view as ITeamHealthView; ITeamHealthModel model = base._model as ITeamHealthModel; PresenterBase.SetViewPropertiesFromModel <ITeamHealthView, ITeamHealthModel>( ref view, model ); SyncContext.Post(delegate { view.RefreshAccessToken(); }, null); }
private void RefreshHealth(ITeamHealthModel model, IMainPresenter presenter) { string fileAccessToken = ApplicationResource.DefaultAccessToken; //set default values so we have something int licensed = 0; int provisioned = 0; string name = string.Empty; string activityStartDate = string.Empty; int adds = 0; int edits = 0; int deletes = 0; int activeSharedFolders7Day = 0; int activeUsers7Day = 0; string devicesStartDate = string.Empty; int windows = 0; int macos = 0; int linux = 0; int ios = 0; int android = 0; int other = 0; int total = 0; string storageStartDate = string.Empty; UInt64 totalStorage = 0; UInt64 sharedStorage = 0; UInt64 unsharedStorage = 0; int sharedFolders = 0; IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.GetInfoUrl = ApplicationResource.ActionGetInfo; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.GetInfo(fileAccessToken); IMemberServices serviceActivity = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceActivity.GetActivityUrl = ApplicationResource.ActionGetActivity; serviceActivity.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseActivity = serviceActivity.GetActivity(fileAccessToken); IMemberServices serviceDevices = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceDevices.GetDevicesReportUrl = ApplicationResource.ActionGetDevices; serviceDevices.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseDevices = serviceDevices.GetDevicesReport(fileAccessToken); IMemberServices serviceStorage = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceStorage.GetStorageUrl = ApplicationResource.ActionGetStorage; serviceStorage.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseStorage = serviceStorage.GetStorage(fileAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); name = jsonData["name"]; licensed = jsonData["num_licensed_users"]; provisioned = jsonData["num_provisioned_users"]; model.TeamName = name; model.LicensedUsers = licensed.ToString(); model.ProvisionedUsers = provisioned.ToString(); } } if (responseActivity.StatusCode == HttpStatusCode.OK) { if (responseActivity.Data != null) { string data = responseActivity.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); activityStartDate = jsonData["start_date"]; if (jsonData["adds"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["adds"].Count) - availableData) != null) { int addsCount = (jsonData["adds"].Count) - availableData; if (jsonData["adds"][addsCount] != null) { adds = jsonData["adds"][addsCount]; complete = true; } } availableData++; } } catch { adds = 0; } } if (jsonData["edits"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["edits"].Count) - availableData) != null) { int editsCount = (jsonData["edits"].Count) - availableData; if (jsonData["edits"][editsCount] != null) { edits = jsonData["edits"][editsCount]; } complete = true; } availableData++; } } catch { edits = 0; } } if (jsonData["deletes"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["deletes"].Count) - availableData) != null) { int deletesCount = (jsonData["deletes"].Count) - availableData; if (jsonData["deletes"][deletesCount] != null) { deletes = jsonData["deletes"][deletesCount]; } complete = true; } availableData++; } } catch { deletes = 0; } } if (jsonData["active_shared_folders_7_day"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_shared_folders_7_day"].Count) - availableData) != null) { int activeSharedCount = (jsonData["active_shared_folders_7_day"].Count) - availableData; if (jsonData["active_shared_folders_7_day"][activeSharedCount] != null) { activeSharedFolders7Day = jsonData["active_shared_folders_7_day"][activeSharedCount]; } complete = true; } availableData++; } } catch { activeSharedFolders7Day = 0; } } if (jsonData["active_users_7_day"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_users_7_day"].Count) - availableData) != null) { int activeUsers = (jsonData["active_users_7_day"].Count) - availableData; if (jsonData["active_users_7_day"][activeUsers] != null) { activeUsers7Day = jsonData["active_users_7_day"][activeUsers]; } complete = true; } availableData++; } } catch { activeUsers7Day = 0; } } model.Adds = adds.ToString(); model.Edits = edits.ToString(); model.Deletes = deletes.ToString(); model.ActiveSharedFolders7Day = activeSharedFolders7Day.ToString(); model.ActiveUsers7Day = activeUsers7Day.ToString(); } } if (responseDevices.StatusCode == HttpStatusCode.OK) { if (responseDevices.Data != null) { string data = responseDevices.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); devicesStartDate = jsonData["start_date"]; if (jsonData["active_7_day"] != null) { if (jsonData["active_7_day"]["windows"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["windows"].Count) - availableData) != null) { int windowsUsers = (jsonData["active_7_day"]["windows"].Count) - availableData; if (jsonData["active_7_day"]["windows"][windowsUsers] != null) { windows = jsonData["active_7_day"]["windows"][windowsUsers]; } complete = true; } availableData++; } } catch { windows = 0; } } if (jsonData["active_7_day"]["macos"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["macos"].Count) - availableData) != null) { int macosUsers = (jsonData["active_7_day"]["macos"].Count) - availableData; if (jsonData["active_7_day"]["macos"][macosUsers] != null) { macos = jsonData["active_7_day"]["macos"][macosUsers]; } complete = true; } availableData++; } } catch { macos = 0; } } if (jsonData["active_7_day"]["linux"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["linux"].Count) - availableData) != null) { int linuxUsers = (jsonData["active_7_day"]["linux"].Count) - availableData; if (jsonData["active_7_day"]["linux"][linuxUsers] != null) { linux = jsonData["active_7_day"]["linux"][linuxUsers]; } complete = true; } availableData++; } } catch { linux = 0; } } if (jsonData["active_7_day"]["ios"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["ios"].Count) - availableData) != null) { int iosUsers = (jsonData["active_7_day"]["ios"].Count) - availableData; if (jsonData["active_7_day"]["ios"][iosUsers] != null) { ios = jsonData["active_7_day"]["ios"][iosUsers]; } complete = true; } availableData++; } } catch { ios = 0; } } if (jsonData["active_7_day"]["android"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["android"].Count) - availableData) != null) { int androidUsers = (jsonData["active_7_day"]["android"].Count) - availableData; if (jsonData["active_7_day"]["android"][androidUsers] != null) { android = jsonData["active_7_day"]["android"][androidUsers]; } complete = true; } availableData++; } } catch { android = 0; } } if (jsonData["active_7_day"]["other"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["other"].Count) - availableData) != null) { int otherUsers = (jsonData["active_7_day"]["other"].Count) - availableData; if (jsonData["active_7_day"]["other"][otherUsers] != null) { other = jsonData["active_7_day"]["other"][otherUsers]; } complete = true; } availableData++; } } catch { other = 0; } } if (jsonData["active_7_day"]["total"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["total"].Count) - availableData) != null) { int totalUsers = (jsonData["active_7_day"]["total"].Count) - availableData; if (jsonData["active_7_day"]["total"][totalUsers] != null) { total = jsonData["active_7_day"]["total"][totalUsers]; } complete = true; } availableData++; } } catch { total = 0; } } } model.windows = windows.ToString(); model.macos = macos.ToString(); model.linux = linux.ToString(); model.ios = ios.ToString(); model.android = android.ToString(); model.other = other.ToString(); model.total = total.ToString(); } } if (responseStorage.StatusCode == HttpStatusCode.OK) { if (responseStorage.Data != null) { string data = responseStorage.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); storageStartDate = jsonData["start_date"]; if (jsonData["total_usage"][0] != null) { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["total_usage"].Count) - availableData) != null) { int totalCount = (jsonData["total_usage"].Count) - availableData; if (jsonData["total_usage"][totalCount] != null) { totalStorage = jsonData["total_usage"][totalCount]; double totalStorageDec = FileUtil.FormatFileSizeTB(totalStorage); model.TotalUsage = totalStorageDec.ToString() + " TB"; complete = true; } } availableData++; } } if (jsonData["shared_usage"][0] != null) { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["shared_usage"].Count) - availableData) != null) { int sharedCount = (jsonData["shared_usage"].Count) - availableData; if (jsonData["shared_usage"][sharedCount] != null) { sharedStorage = jsonData["shared_usage"][sharedCount]; double sharedStorageDec = FileUtil.FormatFileSizeTB(sharedStorage); model.SharedUsage = sharedStorageDec.ToString() + " TB"; complete = true; } } availableData++; } } if (jsonData["unshared_usage"][0] != null) { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["unshared_usage"].Count) - availableData) != null) { int unsharedCount = (jsonData["unshared_usage"].Count) - availableData; if (jsonData["unshared_usage"][unsharedCount] != null) { unsharedStorage = jsonData["unshared_usage"][unsharedCount]; double unsharedStorageDec = FileUtil.FormatFileSizeTB(unsharedStorage); model.UnsharedUsage = unsharedStorageDec.ToString() + " TB"; complete = true; } } availableData++; } } if (jsonData["shared_folders"][0] != null) { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["shared_usage"].Count) - availableData) != null) { int sharedFolderCount = (jsonData["shared_folders"].Count) - availableData; if (jsonData["shared_folders"][sharedFolderCount] != null) { sharedFolders = jsonData["shared_folders"][sharedFolderCount]; model.SharedFolders = sharedFolders.ToString(); complete = true; } } availableData++; } } } } if (responseStorage.StatusCode != HttpStatusCode.OK) { //if Dropbox gives back Internal Server error, bug filed from engineering on this model.TotalUsage = "N/A"; model.SharedUsage = "N/A"; model.UnsharedUsage = "N/A"; model.SharedFolders = "N/A"; } model.RefreshDateTime = DateTime.Now; }
public TeamHealthPresenter(ITeamHealthModel model, ITeamHealthView view) : base(model, view) { }
public void LoadViewHealthItems(ITeamHealthModel model) { //populate view controls for everything in model labelRefreshDateTime.Text = "Last Refresh: " + model.RefreshDateTime.ToString(); labelTeamName.Text = "Team: " + model.TeamName; labelLicenses.Text = "Total Licenses: " + model.LicensedUsers; labelProvisioned.Text = "Total Provisioned: " + model.ProvisionedUsers; tableLayoutPanelStats.Visible = true; //load users gauge with data this.aquaGaugeUsers.Visible = true; aquaGaugeUsers.MinValue = 0; aquaGaugeUsers.MaxValue = (float)Convert.ToDouble(model.LicensedUsers); aquaGaugeUsers.Value = (float)Convert.ToDouble(model.ProvisionedUsers); //load 3D pie chart with Active Devices info chartPieDevices.Series.Clear(); chartPieDevices.Palette = ChartColorPalette.Bright; chartPieDevices.BackColor = Color.Transparent; chartPieDevices.Titles.Clear(); chartPieDevices.Titles.Add("Active Devices In Past Week: " + model.total); chartPieDevices.ChartAreas[0].BackColor = Color.Transparent; chartPieDevices.ChartAreas[0].Area3DStyle.Enable3D = true; chartPieDevices.ChartAreas[0].Area3DStyle.WallWidth = 0; Series seriesDevices = new Series { Name = "Devices", IsVisibleInLegend = true, Color = Color.Green, Font = new Font(Font.Name, 7, FontStyle.Regular), ChartType = SeriesChartType.Pie }; chartPieDevices.Series.Add(seriesDevices); //pie chart model values here seriesDevices.Points.Add(Convert.ToDouble(model.windows)); seriesDevices.Points.Add(Convert.ToDouble(model.macos)); seriesDevices.Points.Add(Convert.ToDouble(model.linux)); seriesDevices.Points.Add(Convert.ToDouble(model.ios)); seriesDevices.Points.Add(Convert.ToDouble(model.android)); seriesDevices.Points.Add(Convert.ToDouble(model.other)); var p1 = seriesDevices.Points[0]; if (model.windows != "0") { p1.AxisLabel = model.windows + "%"; } p1.LegendText = "Windows OS"; var p2 = seriesDevices.Points[1]; if (model.macos != "0") { p2.AxisLabel = model.macos + "%"; } p2.LegendText = "Mac OS"; var p3 = seriesDevices.Points[2]; if (model.linux != "0") { p3.AxisLabel = model.linux + "%"; } p3.LegendText = "Linux"; var p4 = seriesDevices.Points[3]; if (model.ios != "0") { p4.AxisLabel = model.ios + "%"; } p4.LegendText = "iOS"; var p5 = seriesDevices.Points[4]; if (model.android != "0") { p5.AxisLabel = model.android + "%"; } p5.LegendText = "Android"; var p6 = seriesDevices.Points[5]; if (model.other != "0") { p6.AxisLabel = model.other + "%"; } p6.LegendText = "Other"; chartPieDevices.Invalidate(); //Misc stats labelActiveShared.Text = model.ActiveSharedFolders7Day; labelActiveUsers.Text = model.ActiveUsers7Day; labelAdds.Text = model.Adds; labelDeletes.Text = model.Deletes; labelEdits.Text = model.Edits; labelSharedFolders.Text = model.SharedFolders; labelSharedUsage.Text = model.SharedUsage; labelTotalUsage.Text = model.TotalUsage; labelUnsharedUsage.Text = model.UnsharedUsage; }