DoctorForm.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using FietsClient.Forms;
  11. using FietsLibrary.JSONObjecten;
  12. using System.Windows.Forms.DataVisualization.Charting;
  13. namespace FietsClient
  14. {
  15. public partial class DoctorForm : Form
  16. {
  17. private DoctorModel doctorModel;
  18. public Forms.DoctorSummaryUC summaryUserControl { get; private set; }
  19. public DoctorForm(TcpConnection connection)
  20. {
  21. InitializeComponent();
  22. doctorModel = DoctorModel.doctorModel;
  23. doctorModel.doctorform = this;
  24. doctorModel.tcpConnection = connection;
  25. this.summaryUserControl = doctorSummaryUC1;
  26. DataHandler.IncomingErrorEvent += HandleError;
  27. connection.IncomingChatmessageEvent += new TcpConnection.ChatmassegeDelegate(printMessage);
  28. }
  29. private void HandleError(string error)
  30. {
  31. switch (error)
  32. {
  33. default:
  34. break;
  35. }
  36. }
  37. private List<User> users;
  38. private void Form1_Load(object sender, EventArgs e)
  39. {
  40. users = doctorModel.requestUsers();
  41. foreach (User user in users)
  42. {
  43. PatientBox.Items.Add(user.id);
  44. }
  45. }
  46. private void messageBox_KeyPress(object sender, KeyPressEventArgs e)
  47. {
  48. if (e.KeyChar == '\r')
  49. {
  50. messageButton_Click(sender, e);
  51. }
  52. }
  53. private void messageButton_Click(object sender, EventArgs e)
  54. {
  55. if (messageBox.Text != null && doctorTabControl.SelectedTab.Name != "tabPageSummary")
  56. {
  57. String[] data = new String[2];
  58. data[0] = messageBox.Text;
  59. //current patient:
  60. data[1] = doctorTabControl.SelectedTab.Name;
  61. messageBox.Clear();
  62. doctorModel.tcpConnection.SendChatMessage(data);
  63. }
  64. else if (messageBox.Text != null && doctorTabControl.SelectedTab.Name == "tabPageSummary")
  65. {
  66. String[] data = new String[2];
  67. data[0] = "This is a broadcast: " + messageBox.Text + "\r\n";
  68. //all patients:
  69. for (int tabs = 1; tabs <= doctorTabControl.TabCount - 1; tabs++)
  70. {
  71. doctorTabControl.SelectTab(tabs);
  72. data[1] = doctorTabControl.SelectedTab.Name;
  73. doctorModel.tcpConnection.SendChatMessage(data);
  74. }
  75. messageBox.Clear();
  76. }
  77. }
  78. private void printMessage(string[] data)
  79. {
  80. string finalMessage = data[0] + ":\t" + data[2] + "\r\n";
  81. chatBox.Invoke((MethodInvoker)delegate ()
  82. {
  83. chatBox.AppendText(finalMessage);
  84. });
  85. }
  86. public void AddSessionToTabcontrol(string patientID)
  87. {
  88. TabPage page = new TabPage("Patientsession " + patientID);
  89. page.Name = patientID;
  90. Forms.DoctorSessionUC sessionUC = new Forms.DoctorSessionUC(patientID);
  91. sessionUC.Name = "sessionUC" + patientID;
  92. doctorModel.doctorSessions.Add(patientID, sessionUC);
  93. doctorModel.doctorSessions.TryGetValue(patientID, out sessionUC);
  94. page.Controls.Add(sessionUC);
  95. doctorTabControl.TabPages.Add(page);
  96. }
  97. public void RemoveSessionFromTabcontrol(string patientID)
  98. {
  99. doctorTabControl.TabPages.RemoveByKey(patientID);
  100. }
  101. private void DoctorForm_FormClosing(object sender, FormClosingEventArgs e)
  102. {
  103. doctorModel.stopAskingData();
  104. doctorModel.tcpConnection.disconnect();
  105. Application.Exit();
  106. }
  107. private void nieuwePatientToolStripMenuItem_Click(object sender, EventArgs e)
  108. {
  109. var newPatient = new NewPatientForm(doctorModel.tcpConnection);
  110. newPatient.Show();
  111. }
  112. private List<DataPoint> speedPoints = new List<DataPoint>();
  113. private List<DataPoint> bpmPoints = new List<DataPoint>();
  114. private List<DataPoint> rpmPoints = new List<DataPoint>();
  115. private void selectSessionToolStripMenuItem_Click(object sender, EventArgs e)
  116. {
  117. //get measurments
  118. List<Measurement> measurments = new List<Measurement>();
  119. User user = null;
  120. foreach (User userx in users)
  121. {
  122. if (PatientBox.Text == user.id)
  123. {
  124. user = userx;
  125. List<Session> sessions = user.GetSessions();
  126. foreach (Session session in sessions)
  127. {
  128. if (sessionsBox.Text == session.date.ToString())
  129. {
  130. measurments = session.session;
  131. }
  132. }
  133. }
  134. }
  135. //fill boxes
  136. summaryUserControl.sessionBox.Text = user.id;
  137. summaryUserControl.nameBox.Text = user.id;
  138. summaryUserControl.pulseBox.Text = measurments[measurments.Count - 1].bpm.ToString();
  139. summaryUserControl.rpmInfoBox.Text = measurments[measurments.Count - 1].rpm.ToString();
  140. summaryUserControl.speedInfoBox.Text = measurments[measurments.Count - 1].speed.ToString();
  141. summaryUserControl.distanceInfoBox.Text = measurments[measurments.Count - 1].distance.ToString();
  142. summaryUserControl.requestedBox.Text = measurments[measurments.Count - 1].requestedPower.ToString();
  143. summaryUserControl.energyInfoBox.Text = measurments[measurments.Count - 1].energy.ToString();
  144. summaryUserControl.timeBox.Text = measurments[measurments.Count - 1].time.ToString();
  145. summaryUserControl.actualBox.Text = measurments[measurments.Count - 1].actualPower.ToString();
  146. //fill speedpoints
  147. for (int i = 0; i < measurments.Count; i++)
  148. {
  149. speedPoints.Add(new DataPoint(measurments[i].time, measurments[i].speed));
  150. }
  151. //fill speedgraph
  152. summaryUserControl.speedChart.Series[0].Points.Clear();
  153. for (int i = 0; i < speedPoints.Count; i++)
  154. summaryUserControl.speedChart.Series[0].Points.Add(speedPoints[i]);
  155. summaryUserControl.speedChart.Update();
  156. //fill bpm
  157. for (int i = 0; i < measurments.Count; i++)
  158. {
  159. bpmPoints.Add(new DataPoint(measurments[i].time, measurments[i].bpm));
  160. }
  161. //fill bpmgraph
  162. summaryUserControl.bpmChart.Series[0].Points.Clear();
  163. for (int i = 0; i < bpmPoints.Count; i++)
  164. summaryUserControl.bpmChart.Series[0].Points.Add(bpmPoints[i]);
  165. summaryUserControl.bpmChart.Update();
  166. //fill rpm
  167. for (int i = 0; i < measurments.Count; i++)
  168. {
  169. rpmPoints.Add(new DataPoint(measurments[i].time, measurments[i].rpm));
  170. }
  171. //fill rpmgraph
  172. summaryUserControl.rpmChart.Series[0].Points.Clear();
  173. for (int i = 0; i < rpmPoints.Count; i++)
  174. summaryUserControl.rpmChart.Series[0].Points.Add(rpmPoints[i]);
  175. summaryUserControl.rpmChart.Update();
  176. }
  177. private void PatientBox_SelectedIndexChanged(object sender, EventArgs e)
  178. {
  179. foreach (User user in users)
  180. {
  181. if (user.id == PatientBox.Text)
  182. foreach (Session session in user.GetSessions())
  183. {
  184. sessionsBox.Items.Add(session.date.ToString());
  185. }
  186. }
  187. }
  188. }
  189. }