From fc430e89901ae2545882e30ed9b02ccb2578cd2f Mon Sep 17 00:00:00 2001 From: sam Date: Thu, 3 Dec 2009 22:36:03 +0000 Subject: [PATCH] This update does the following: - Remove the non-functioning CalendarGrid.dll and associated project files. - Add the code from CalendarGrid.dll generated using reflector.exe to ClinicalScheduling.csproj --- cs/bsdx0200GUISourceCode/CGAppointment.cs | 305 ++++ .../CGAppointmentChangedArgs.cs | 104 ++ .../CGAppointmentChangedHandler.cs | 11 + cs/bsdx0200GUISourceCode/CGAppointments.cs | 60 + cs/bsdx0200GUISourceCode/CGAvailability.cs | 218 +++ cs/bsdx0200GUISourceCode/CGCell.cs | 113 ++ cs/bsdx0200GUISourceCode/CGCells.cs | 60 + cs/bsdx0200GUISourceCode/CGRange.cs | 109 ++ cs/bsdx0200GUISourceCode/CGResource.cs | 129 ++ .../CGSelectionChangedArgs.cs | 52 + .../CGSelectionChangedHandler.cs | 11 + cs/bsdx0200GUISourceCode/CalendarGrid.cs | 1277 +++++++++++++++++ cs/bsdx0200GUISourceCode/CalendarGrid.csproj | 129 -- .../CalendarGrid.csproj.user | 56 - cs/bsdx0200GUISourceCode/CalendarGrid.dll | Bin 53248 -> 0 bytes cs/bsdx0200GUISourceCode/CalendarGrid.suo | Bin 2560 -> 0 bytes .../ClinicalScheduling.csproj | 21 +- .../ClinicalScheduling.suo | Bin 62976 -> 78848 bytes cs/bsdx0200GUISourceCode/DAccessBlock.cs | 418 ++++++ .../bin/Release/ClinicalScheduling.XML | 78 + 20 files changed, 2962 insertions(+), 189 deletions(-) create mode 100644 cs/bsdx0200GUISourceCode/CGAppointment.cs create mode 100644 cs/bsdx0200GUISourceCode/CGAppointmentChangedArgs.cs create mode 100644 cs/bsdx0200GUISourceCode/CGAppointmentChangedHandler.cs create mode 100644 cs/bsdx0200GUISourceCode/CGAppointments.cs create mode 100644 cs/bsdx0200GUISourceCode/CGAvailability.cs create mode 100644 cs/bsdx0200GUISourceCode/CGCell.cs create mode 100644 cs/bsdx0200GUISourceCode/CGCells.cs create mode 100644 cs/bsdx0200GUISourceCode/CGRange.cs create mode 100644 cs/bsdx0200GUISourceCode/CGResource.cs create mode 100644 cs/bsdx0200GUISourceCode/CGSelectionChangedArgs.cs create mode 100644 cs/bsdx0200GUISourceCode/CGSelectionChangedHandler.cs create mode 100644 cs/bsdx0200GUISourceCode/CalendarGrid.cs delete mode 100644 cs/bsdx0200GUISourceCode/CalendarGrid.csproj delete mode 100644 cs/bsdx0200GUISourceCode/CalendarGrid.csproj.user delete mode 100644 cs/bsdx0200GUISourceCode/CalendarGrid.dll delete mode 100644 cs/bsdx0200GUISourceCode/CalendarGrid.suo create mode 100644 cs/bsdx0200GUISourceCode/DAccessBlock.cs diff --git a/cs/bsdx0200GUISourceCode/CGAppointment.cs b/cs/bsdx0200GUISourceCode/CGAppointment.cs new file mode 100644 index 0000000..c8958f5 --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGAppointment.cs @@ -0,0 +1,305 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.Drawing; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + [Serializable] + public class CGAppointment + { + private bool m_bAccessBlock; + private bool m_bNoShow; + private bool m_bSelected = false; + private bool m_bWalkIn; + public DateTime m_dAuxTime; + public DateTime m_dCheckIn; + private DateTime m_EndTime; + public int m_nAccessTypeID = -1; + private int m_nColumn; + public int m_nKey; + private string m_Note; + public int m_nPatientID; + public int m_nSlots; + private Rectangle m_rectangle; + public string m_sAccessTypeName; + private string m_sHRN = ""; + private string m_sPatientName; + public string m_sResource; + private DateTime m_StartTime; + private string m_Text; + + public void CreateAppointment(DateTime StartTime, DateTime EndTime, string Note, int Key, string sResource) + { + this.m_StartTime = StartTime; + this.m_EndTime = EndTime; + this.m_Note = Note; + this.m_nKey = Key; + this.m_sResource = sResource; + } + + public override string ToString() + { + string patientName = ""; + if (this.m_bAccessBlock) + { + string str2 = (this.Slots == 1) ? " Slot, " : " Slots, "; + return ((((this.AccessTypeName + ": ") + this.Slots.ToString() + str2) + this.Duration.ToString() + " Minutes. ") + this.Note); + } + patientName = this.PatientName; + if (this.HealthRecordNumber != "") + { + patientName = patientName + " #" + this.HealthRecordNumber; + } + return (patientName + " " + this.Note); + } + + public int AccessTypeID + { + get + { + return this.m_nAccessTypeID; + } + set + { + this.m_nAccessTypeID = value; + } + } + + public string AccessTypeName + { + get + { + return this.m_sAccessTypeName; + } + set + { + this.m_sAccessTypeName = value; + } + } + + public int AppointmentKey + { + get + { + return this.m_nKey; + } + set + { + this.m_nKey = value; + } + } + + public DateTime AuxTime + { + get + { + return this.m_dAuxTime; + } + set + { + this.m_dAuxTime = value; + } + } + + public DateTime CheckInTime + { + get + { + return this.m_dCheckIn; + } + set + { + this.m_dCheckIn = value; + } + } + + public int Duration + { + get + { + TimeSpan span = (TimeSpan) (this.EndTime - this.StartTime); + return (int) span.TotalMinutes; + } + } + + public DateTime EndTime + { + get + { + return this.m_EndTime; + } + set + { + this.m_EndTime = value; + } + } + + public int GridColumn + { + get + { + return this.m_nColumn; + } + set + { + this.m_nColumn = value; + } + } + + public Rectangle GridRectangle + { + get + { + return this.m_rectangle; + } + set + { + this.m_rectangle = value; + } + } + + public string HealthRecordNumber + { + get + { + return this.m_sHRN; + } + set + { + this.m_sHRN = value; + } + } + + public bool IsAccessBlock + { + get + { + return this.m_bAccessBlock; + } + set + { + this.m_bAccessBlock = value; + } + } + + public bool NoShow + { + get + { + return this.m_bNoShow; + } + set + { + this.m_bNoShow = value; + } + } + + public string Note + { + get + { + return this.m_Note; + } + set + { + this.m_Note = value; + } + } + + public int PatientID + { + get + { + return this.m_nPatientID; + } + set + { + this.m_nPatientID = value; + } + } + + public string PatientName + { + get + { + return this.m_sPatientName; + } + set + { + this.m_sPatientName = value; + } + } + + public string Resource + { + get + { + return this.m_sResource; + } + set + { + this.m_sResource = value; + } + } + + public bool Selected + { + get + { + return this.m_bSelected; + } + set + { + this.m_bSelected = value; + } + } + + public int Slots + { + get + { + return this.m_nSlots; + } + set + { + this.m_nSlots = value; + } + } + + public DateTime StartTime + { + get + { + return this.m_StartTime; + } + set + { + this.m_StartTime = value; + } + } + + public string Text + { + get + { + this.m_Text = this.m_sPatientName; + return this.m_Text; + } + } + + public bool WalkIn + { + get + { + return this.m_bWalkIn; + } + set + { + this.m_bWalkIn = value; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGAppointmentChangedArgs.cs b/cs/bsdx0200GUISourceCode/CGAppointmentChangedArgs.cs new file mode 100644 index 0000000..26716a6 --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGAppointmentChangedArgs.cs @@ -0,0 +1,104 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + [Serializable] + public class CGAppointmentChangedArgs : EventArgs + { + private DateTime m_dEnd; + private DateTime m_dStart; + private int m_nAccessTypeID; + private int m_nSlots; + private CGAppointment m_pAppt; + private string m_sOldResource; + private string m_sResource; + + public int AccessTypeID + { + get + { + return this.m_nAccessTypeID; + } + set + { + this.m_nAccessTypeID = value; + } + } + + public CGAppointment Appointment + { + get + { + return this.m_pAppt; + } + set + { + this.m_pAppt = value; + } + } + + public DateTime EndTime + { + get + { + return this.m_dEnd; + } + set + { + this.m_dEnd = value; + } + } + + public string OldResource + { + get + { + return this.m_sOldResource; + } + set + { + this.m_sOldResource = value; + } + } + + public string Resource + { + get + { + return this.m_sResource; + } + set + { + this.m_sResource = value; + } + } + + public int Slots + { + get + { + return this.m_nSlots; + } + set + { + this.m_nSlots = value; + } + } + + public DateTime StartTime + { + get + { + return this.m_dStart; + } + set + { + this.m_dStart = value; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGAppointmentChangedHandler.cs b/cs/bsdx0200GUISourceCode/CGAppointmentChangedHandler.cs new file mode 100644 index 0000000..4663443 --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGAppointmentChangedHandler.cs @@ -0,0 +1,11 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.Runtime.CompilerServices; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public delegate void CGAppointmentChangedHandler(object sender, CGAppointmentChangedArgs e); +} + diff --git a/cs/bsdx0200GUISourceCode/CGAppointments.cs b/cs/bsdx0200GUISourceCode/CGAppointments.cs new file mode 100644 index 0000000..272d32b --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGAppointments.cs @@ -0,0 +1,60 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.Collections; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + [Serializable] + public class CGAppointments : IEnumerable + { + private Hashtable apptList = new Hashtable(); + + public void AddAppointment(CGAppointment appt) + { + if (this.apptList.ContainsKey(appt.AppointmentKey)) + { + this.apptList.Remove(appt.AppointmentKey); + } + this.apptList.Add(appt.AppointmentKey, appt); + } + + public void ClearAllAppointments() + { + this.apptList.Clear(); + } + + public CGAppointment GetAppointment(int nKey) + { + return (CGAppointment) this.apptList[nKey]; + } + + public IEnumerator GetEnumerator() + { + return this.apptList.GetEnumerator(); + } + + public void RemoveAppointment(int nKey) + { + this.apptList.Remove(nKey); + } + + public int AppointmentCount + { + get + { + return this.apptList.Count; + } + } + + public Hashtable AppointmentTable + { + get + { + return this.apptList; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGAvailability.cs b/cs/bsdx0200GUISourceCode/CGAvailability.cs new file mode 100644 index 0000000..7d2390d --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGAvailability.cs @@ -0,0 +1,218 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.Drawing; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public class CGAvailability + { + private DateTime m_EndTime; + private int m_nAvailabilityType; + private int m_nBlue; + private int m_nGreen; + private int m_nRed; + private int m_nSlots; + private string m_sAccessRuleList; + private string m_sAccessTypeName; + private string m_sDisplayColor = "Cornsilk"; + private string m_sNote; + private string m_sResourceList; + private DateTime m_StartTime; + + public CGAvailability() + { + Color color = Color.FromName("Khaki"); + this.m_nRed = color.R; + this.m_nGreen = color.G; + this.m_nBlue = color.B; + this.m_sNote = ""; + } + + public void Create(DateTime StartTime, DateTime EndTime, int nSlots) + { + this.m_StartTime = StartTime; + this.m_EndTime = EndTime; + this.m_nAvailabilityType = 0; + this.m_nSlots = nSlots; + this.m_sResourceList = ""; + this.m_sAccessRuleList = ""; + } + + public void Create(DateTime StartTime, DateTime EndTime, int nAvailabilityType, int nSlots) + { + this.m_StartTime = StartTime; + this.m_EndTime = EndTime; + this.m_nAvailabilityType = nAvailabilityType; + this.m_nSlots = nSlots; + this.m_sResourceList = ""; + this.m_sAccessRuleList = ""; + } + + public void Create(DateTime StartTime, DateTime EndTime, int nAvailabilityType, int nSlots, string sResourceList) + { + this.m_StartTime = StartTime; + this.m_EndTime = EndTime; + this.m_nAvailabilityType = nAvailabilityType; + this.m_nSlots = nSlots; + this.m_sResourceList = sResourceList; + this.m_sAccessRuleList = ""; + } + + public void Create(DateTime StartTime, DateTime EndTime, int nAvailabilityType, int nSlots, string sResourceList, string sAccessRuleList) + { + this.m_StartTime = StartTime; + this.m_EndTime = EndTime; + this.m_nAvailabilityType = nAvailabilityType; + this.m_nSlots = nSlots; + this.m_sResourceList = sResourceList; + this.m_sAccessRuleList = sAccessRuleList; + } + + public string AccessRuleList + { + get + { + return this.m_sAccessRuleList; + } + set + { + this.m_sAccessRuleList = value; + } + } + + public string AccessTypeName + { + get + { + return this.m_sAccessTypeName; + } + set + { + this.m_sAccessTypeName = value; + } + } + + public int AvailabilityType + { + get + { + return this.m_nAvailabilityType; + } + set + { + this.m_nAvailabilityType = value; + } + } + + public int Blue + { + get + { + return this.m_nBlue; + } + set + { + this.m_nBlue = value; + } + } + + public string DisplayColor + { + get + { + return this.m_sDisplayColor; + } + set + { + this.m_sDisplayColor = value; + } + } + + public DateTime EndTime + { + get + { + return this.m_EndTime; + } + set + { + this.m_EndTime = value; + } + } + + public int Green + { + get + { + return this.m_nGreen; + } + set + { + this.m_nGreen = value; + } + } + + public string Note + { + get + { + return this.m_sNote; + } + set + { + this.m_sNote = value; + } + } + + public int Red + { + get + { + return this.m_nRed; + } + set + { + this.m_nRed = value; + } + } + + public string ResourceList + { + get + { + return this.m_sResourceList; + } + set + { + this.m_sResourceList = value; + } + } + + public int Slots + { + get + { + return this.m_nSlots; + } + set + { + this.m_nSlots = value; + } + } + + public DateTime StartTime + { + get + { + return this.m_StartTime; + } + set + { + this.m_StartTime = value; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGCell.cs b/cs/bsdx0200GUISourceCode/CGCell.cs new file mode 100644 index 0000000..6bfe93a --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGCell.cs @@ -0,0 +1,113 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.Drawing; + using System.Text; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public class CGCell + { + private Brush m_ApptTypeColor; + public bool m_bIsSelected; + private int m_Col; + private Rectangle m_Rectangle; + private int m_Row; + private string m_sKey; + + public CGCell() + { + this.m_ApptTypeColor = Brushes.Cornsilk; + } + + public CGCell(Rectangle r, int row, int col) + { + this.m_Rectangle = r; + this.m_Row = row; + this.m_Col = col; + this.m_sKey = BuildKey(this.m_Row, this.m_Col); + this.m_ApptTypeColor = Brushes.Cornsilk; + } + + public static string BuildKey(int nRow, int nCol) + { + StringBuilder builder = new StringBuilder("r"); + builder.Append(nRow.ToString()); + builder.Append("c"); + builder.Append(nCol.ToString()); + return builder.ToString(); + } + + public Brush AppointmentTypeColor + { + get + { + return this.m_ApptTypeColor; + } + set + { + this.m_ApptTypeColor = value; + } + } + + public int CellColumn + { + get + { + return this.m_Col; + } + set + { + this.m_Col = value; + this.m_sKey = BuildKey(this.m_Row, this.m_Col); + } + } + + public Rectangle CellRectangle + { + get + { + return this.m_Rectangle; + } + set + { + this.m_Rectangle = value; + } + } + + public int CellRow + { + get + { + return this.m_Row; + } + set + { + this.m_Row = value; + this.m_sKey = BuildKey(this.m_Row, this.m_Col); + } + } + + public bool IsSelected + { + get + { + return this.m_bIsSelected; + } + set + { + this.m_bIsSelected = value; + } + } + + public string Key + { + get + { + return this.m_sKey; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGCells.cs b/cs/bsdx0200GUISourceCode/CGCells.cs new file mode 100644 index 0000000..18712de --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGCells.cs @@ -0,0 +1,60 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.Collections; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public class CGCells : IEnumerable + { + private Hashtable cellList = new Hashtable(); + + internal CGCells() + { + } + + public void AddCell(CGCell r) + { + this.cellList.Add(r.Key, r); + } + + public void ClearAllCells() + { + this.cellList.Clear(); + } + + public CGCell GetCellFromRowCol(int nRow, int nCol) + { + string str = CGCell.BuildKey(nRow, nCol); + return (CGCell) this.cellList[str]; + } + + public IEnumerator GetEnumerator() + { + return this.cellList.GetEnumerator(); + } + + public void RemoveCell(string sKey) + { + this.cellList.Remove(sKey); + } + + public int CellCount + { + get + { + return this.cellList.Count; + } + } + + public Hashtable CellHashTable + { + get + { + return this.cellList; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGRange.cs b/cs/bsdx0200GUISourceCode/CGRange.cs new file mode 100644 index 0000000..fbc1a84 --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGRange.cs @@ -0,0 +1,109 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public class CGRange + { + private CGCells m_Cells; + private CGCell m_gcEnd; + private CGCell m_gcStart; + + public CGRange() + { + this.m_Cells = new CGCells(); + } + + public CGRange(CGCells gridCells, CGCell gcStart, CGCell gcEnd) + { + this.CreateRange(gridCells, gcStart, gcEnd); + } + + public void AppendCell(CGCells gridCells, CGCell aCell) + { + if ((aCell != this.StartCell) && (aCell.CellColumn == this.StartCell.CellColumn)) + { + CGCell startCell = this.StartCell; + this.m_Cells.ClearAllCells(); + this.CreateRange(gridCells, startCell, aCell); + } + } + + public bool CellIsInRange(CGCell cgCell) + { + return this.m_Cells.CellHashTable.ContainsKey(cgCell.Key); + } + + public void CreateRange(CGCells gridCells, CGCell sCell, CGCell eCell) + { + this.m_Cells.ClearAllCells(); + this.m_Cells.AddCell(sCell); + this.m_gcStart = sCell; + this.m_gcEnd = eCell; + if (sCell != eCell) + { + int num; + CGCell r = null; + if (sCell.CellRow < eCell.CellRow) + { + for (num = sCell.CellRow + 1; num <= eCell.CellRow; num++) + { + r = gridCells.GetCellFromRowCol(num, eCell.CellColumn); + this.m_Cells.AddCell(r); + } + } + else + { + for (num = sCell.CellRow - 1; num >= eCell.CellRow; num--) + { + r = gridCells.GetCellFromRowCol(num, eCell.CellColumn); + this.m_Cells.AddCell(r); + } + } + } + } + + public void SubtractCell(CGCells gridCells, CGCell aCell, bool bUp) + { + int nRow = bUp ? (this.m_gcEnd.CellRow - 1) : (this.m_gcEnd.CellRow + 1); + int cellColumn = this.m_gcEnd.CellColumn; + this.Cells.RemoveCell(this.m_gcEnd.Key); + this.m_gcEnd = gridCells.GetCellFromRowCol(nRow, cellColumn); + } + + public CGCells Cells + { + get + { + return this.m_Cells; + } + } + + public CGCell EndCell + { + get + { + return this.m_gcEnd; + } + set + { + this.m_gcEnd = value; + } + } + + public CGCell StartCell + { + get + { + return this.m_gcStart; + } + set + { + this.m_gcStart = value; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGResource.cs b/cs/bsdx0200GUISourceCode/CGResource.cs new file mode 100644 index 0000000..3bc3eae --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGResource.cs @@ -0,0 +1,129 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public class CGResource + { + private bool m_bInactive = false; + private int m_nHospitalLocationID = 0; + private int m_nResourceID = 0; + private int m_nTimeScale = 15; + private string m_sCancellationLetterText; + private string m_sHospitalLocation = ""; + private string m_sLetterText; + private string m_sNoShowLetterText; + private string m_sResourceName = ""; + + public string CancellationLetterText + { + get + { + return this.m_sCancellationLetterText; + } + set + { + this.m_sCancellationLetterText = value; + } + } + + public string HospitalLocation + { + get + { + return this.m_sHospitalLocation; + } + set + { + this.m_sHospitalLocation = value; + } + } + + public int HospitalLocationID + { + get + { + return this.m_nHospitalLocationID; + } + set + { + this.m_nHospitalLocationID = value; + } + } + + public bool Inactive + { + get + { + return this.m_bInactive; + } + set + { + this.m_bInactive = value; + } + } + + public string LetterText + { + get + { + return this.m_sLetterText; + } + set + { + this.m_sLetterText = value; + } + } + + public string NoShowLetterText + { + get + { + return this.m_sNoShowLetterText; + } + set + { + this.m_sNoShowLetterText = value; + } + } + + public int ResourceID + { + get + { + return this.m_nResourceID; + } + set + { + this.m_nResourceID = value; + } + } + + public string ResourceName + { + get + { + return this.m_sResourceName; + } + set + { + this.m_sResourceName = value; + } + } + + public int TimeScale + { + get + { + return this.m_nTimeScale; + } + set + { + this.m_nTimeScale = value; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGSelectionChangedArgs.cs b/cs/bsdx0200GUISourceCode/CGSelectionChangedArgs.cs new file mode 100644 index 0000000..f1c7286 --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGSelectionChangedArgs.cs @@ -0,0 +1,52 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + [Serializable] + public class CGSelectionChangedArgs : EventArgs + { + private DateTime m_dEnd; + private DateTime m_dStart; + private string m_sResource; + + public DateTime EndTime + { + get + { + return this.m_dEnd; + } + set + { + this.m_dEnd = value; + } + } + + public string Resource + { + get + { + return this.m_sResource; + } + set + { + this.m_sResource = value; + } + } + + public DateTime StartTime + { + get + { + return this.m_dStart; + } + set + { + this.m_dStart = value; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CGSelectionChangedHandler.cs b/cs/bsdx0200GUISourceCode/CGSelectionChangedHandler.cs new file mode 100644 index 0000000..5bb3693 --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CGSelectionChangedHandler.cs @@ -0,0 +1,11 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.Runtime.CompilerServices; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public delegate void CGSelectionChangedHandler(object sender, CGSelectionChangedArgs e); +} + diff --git a/cs/bsdx0200GUISourceCode/CalendarGrid.cs b/cs/bsdx0200GUISourceCode/CalendarGrid.cs new file mode 100644 index 0000000..4bb8d5b --- /dev/null +++ b/cs/bsdx0200GUISourceCode/CalendarGrid.cs @@ -0,0 +1,1277 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.Collections; + using System.ComponentModel; + using System.Drawing; + using System.Globalization; + using System.Runtime.CompilerServices; + using System.Runtime.InteropServices; + using System.Windows.Forms; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public class CalendarGrid : Panel + { + private Container components; + private Font fontArial10; + private Font fontArial8; + private CGAppointments m_Appointments; + private Hashtable m_ApptOverlapTable; + private bool m_bAutoDrag = true; + private bool m_bDragDropStart; + private bool m_bDrawWalkIns = true; + private bool m_bGridEnter; + private bool m_bInitialUpdate; + private bool m_bMouseDown; + private bool m_bScroll; + private bool m_bScrollDown; + private bool m_bSelectingRange; + private int m_cellHeight; + private int m_cellWidth; + private int m_col0Width; + private Hashtable m_ColumnInfoTable; + private CGCell m_currentCell; + private DateTime m_dtStart; + private Font m_fCell; + private string m_GridBackColor; + private CGCells m_gridCells; + private int m_nColumns = 5; + private int m_nSelectID; + private int m_nTimeScale = 20; + private ArrayList m_pAvArray; + private string m_sDragSource; + private CGAppointments m_SelectedAppointments; + private CGRange m_selectedRange; + private StringFormat m_sf; + private StringFormat m_sfHour; + private StringFormat m_sfRight; + private ArrayList m_sResourcesArray; + private Timer m_Timer; + private ToolTip m_toolTip; + private const int WM_HSCROLL = 0x114; + private const int WM_VSCROLL = 0x115; + + public event CGAppointmentChangedHandler CGAppointmentAdded; + + public event CGAppointmentChangedHandler CGAppointmentChanged; + + public event CGSelectionChangedHandler CGSelectionChanged; + + public CalendarGrid() + { + this.InitializeComponent(); + base.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + base.SetStyle(ControlStyles.UserPaint, true); + base.SetStyle(ControlStyles.DoubleBuffer, true); + this.m_nColumns = 5; + this.m_gridCells = new CGCells(); + this.m_selectedRange = new CGRange(); + this.m_SelectedAppointments = new CGAppointments(); + this.m_dtStart = new DateTime(0x7d3, 1, 0x1b); + this.m_ApptOverlapTable = new Hashtable(); + this.m_ColumnInfoTable = new Hashtable(); + this.m_sResourcesArray = new ArrayList(); + base.ResizeRedraw = true; + this.m_col0Width = 100; + this.fontArial8 = new Font("Arial", 8f); + this.fontArial10 = new Font("Arial", 10f); + this.m_fCell = this.fontArial10; + this.m_sf = new StringFormat(); + this.m_sfRight = new StringFormat(); + this.m_sfHour = new StringFormat(); + this.m_sf.LineAlignment = StringAlignment.Center; + this.m_sfRight.LineAlignment = StringAlignment.Center; + this.m_sfRight.Alignment = StringAlignment.Far; + this.m_sfHour.LineAlignment = StringAlignment.Center; + this.m_sfHour.Alignment = StringAlignment.Far; + this.m_bInitialUpdate = false; + } + + private Rectangle AdjustRectForOverlap() + { + return new Rectangle(); + } + + private void AutoDragStart() + { + this.m_bAutoDrag = true; + this.m_Timer = new Timer(); + this.m_Timer.Interval = 5; + this.m_Timer.Tick += new EventHandler(this.tickEventHandler); + this.m_Timer.Start(); + } + + private void AutoDragStop() + { + this.m_bAutoDrag = false; + if (this.m_Timer != null) + { + this.m_Timer.Stop(); + this.m_Timer.Dispose(); + this.m_Timer = null; + } + } + + private void BuildGridCellsArray(Graphics g) + { + try + { + SizeF ef = g.MeasureString("Test", this.m_fCell); + this.m_cellHeight = ((int) ef.Height) + 4; + int nColumns = this.m_nColumns; + int num2 = 60 / this.m_nTimeScale; + int num3 = 0x18 * num2; + nColumns++; + num3++; + this.m_cellWidth = 600 / nColumns; + if (base.ClientRectangle.Width > 600) + { + this.m_cellWidth = (base.ClientRectangle.Width - this.m_col0Width) / (nColumns - 1); + } + if (this.m_nColumns == 1) + { + this.m_cellWidth = base.ClientRectangle.Width - this.m_col0Width; + } + g.TranslateTransform((float) base.AutoScrollPosition.X, (float) base.AutoScrollPosition.Y); + for (int i = num3; i > -1; i--) + { + for (int j = 1; j < nColumns; j++) + { + int x = 0; + if (j == 1) + { + x = this.m_col0Width; + } + if (j > 1) + { + x = this.m_col0Width + (this.m_cellWidth * (j - 1)); + } + Point point = new Point(x, i * this.m_cellHeight); + Rectangle r = new Rectangle(point.X, point.Y, this.m_cellWidth, this.m_cellHeight); + if (i != 0) + { + CGCell cell = null; + cell = new CGCell(r, i, j); + this.m_gridCells.AddCell(cell); + } + } + } + } + catch (Exception exception) + { + string message = exception.Message; + } + } + + private void CalendarGrid_DragDrop(object Sender, DragEventArgs e) + { + CGAppointment data = (CGAppointment) e.Data.GetData(typeof(CGAppointment)); + Point point = base.PointToClient(new Point(e.X, e.Y)); + int x = point.X - base.AutoScrollPosition.X; + int y = point.Y - base.AutoScrollPosition.Y; + Point pt = new Point(x, y); + foreach (DictionaryEntry entry in this.m_gridCells.CellHashTable) + { + CGCell cgCell = (CGCell) entry.Value; + if (cgCell.CellRectangle.Contains(pt)) + { + DateTime timeFromCell = this.GetTimeFromCell(cgCell); + string resourceFromColumn = this.GetResourceFromColumn(cgCell.CellColumn); + int duration = data.Duration; + TimeSpan span = new TimeSpan(0, duration, 0); + DateTime time2 = timeFromCell + span; + data.Selected = false; + this.m_nSelectID = 0; + CGAppointmentChangedArgs args = new CGAppointmentChangedArgs(); + args.Appointment = data; + args.StartTime = timeFromCell; + args.EndTime = time2; + args.Resource = resourceFromColumn; + args.OldResource = data.Resource; + args.AccessTypeID = data.AccessTypeID; + args.Slots = data.Slots; + if (this.ApptDragSource == "grid") + { + this.CGAppointmentChanged(this, args); + } + else + { + this.CGAppointmentAdded(this, args); + } + break; + } + } + this.SetOverlapTable(); + base.Invalidate(); + } + + private void CalendarGrid_DragEnter(object Sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(typeof(CGAppointment))) + { + if ((e.KeyState & 8) == 8) + { + e.Effect = DragDropEffects.Copy; + } + else + { + e.Effect = DragDropEffects.Move; + } + } + else + { + e.Effect = DragDropEffects.None; + } + } + + private void CalendarGrid_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + foreach (DictionaryEntry entry in this.m_gridCells.CellHashTable) + { + CGCell cell = (CGCell) entry.Value; + cell.IsSelected = false; + } + this.m_selectedRange.Cells.ClearAllCells(); + this.m_bMouseDown = true; + this.OnLButtonDown(e.X, e.Y, true); + } + } + + private void CalendarGrid_MouseMove(object Sender, MouseEventArgs e) + { + if (this.m_bMouseDown) + { + if ((e.Y >= base.ClientRectangle.Bottom) || (e.Y <= base.ClientRectangle.Top)) + { + this.m_bScrollDown = e.Y >= base.ClientRectangle.Bottom; + } + if ((e.Y < base.ClientRectangle.Bottom) && (e.Y > base.ClientRectangle.Top)) + { + bool bAutoDrag = this.m_bAutoDrag; + } + if (this.m_bSelectingRange) + { + this.OnLButtonDown(e.X, e.Y, false); + } + if (this.m_nSelectID != 0) + { + if (this.m_bGridEnter) + { + this.m_bGridEnter = false; + } + else if (!this.m_bDragDropStart) + { + CGAppointment data = (CGAppointment) this.m_Appointments.AppointmentTable[this.m_nSelectID]; + this.ApptDragSource = "grid"; + base.DoDragDrop(data, DragDropEffects.Move); + this.m_bDragDropStart = true; + } + } + } + else + { + int y = e.Y - base.AutoScrollPosition.Y; + int x = e.X - base.AutoScrollPosition.X; + Point pt = new Point(x, y); + foreach (CGAppointment appointment2 in this.m_Appointments.AppointmentTable.Values) + { + if (appointment2.GridRectangle.Contains(pt)) + { + this.m_toolTip.SetToolTip(this, appointment2.ToString()); + return; + } + } + this.m_toolTip.RemoveAll(); + } + } + + private void CalendarGrid_MouseUp(object Sender, MouseEventArgs e) + { + if (this.m_bAutoDrag) + { + this.m_bAutoDrag = false; + this.AutoDragStop(); + } + this.m_bMouseDown = false; + if (this.m_bSelectingRange) + { + CGSelectionChangedArgs args = new CGSelectionChangedArgs(); + args.StartTime = this.GetTimeFromCell(this.m_selectedRange.StartCell); + args.EndTime = this.GetTimeFromCell(this.m_selectedRange.EndCell); + args.Resource = this.GetResourceFromColumn(this.m_selectedRange.StartCell.CellColumn); + if (args.EndTime < args.StartTime) + { + DateTime startTime = args.StartTime; + args.StartTime = args.EndTime; + args.EndTime = startTime; + } + TimeSpan span = new TimeSpan(0, 0, this.m_nTimeScale, 0, 0); + args.EndTime += span; + this.CGSelectionChanged(this, args); + this.m_bSelectingRange = false; + } + } + + private void CalendarGrid_Paint(object sender, PaintEventArgs e) + { + if (e.Graphics != null) + { + this.DrawGrid(e.Graphics); + if (!this.m_bInitialUpdate) + { + this.SetAppointmentTypes(); + base.Invalidate(); + this.m_bInitialUpdate = true; + } + } + } + + public void CloseGrid() + { + foreach (CGAppointment appointment in this.m_Appointments.AppointmentTable.Values) + { + appointment.Selected = false; + } + this.m_nSelectID = 0; + } + + protected override void Dispose(bool disposing) + { + if (disposing && (this.components != null)) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + private void DrawAppointments(Graphics g, int col0Width, int cellWidth, int cellHeight) + { + if (!base.DesignMode && (this.m_Appointments != null)) + { + int num = 0; + int num2 = 0; + int x = 0; + ArrayList list = new ArrayList(); + foreach (CGAppointment appointment in this.m_Appointments.AppointmentTable.Values) + { + bool bRet = false; + Rectangle rect = this.GetAppointmentRect(appointment, col0Width, cellWidth, cellHeight, out bRet); + if (bRet && (!appointment.WalkIn || this.m_bDrawWalkIns)) + { + rect.Inflate(-10, 0); + num = (int) this.m_ApptOverlapTable[appointment.m_nKey]; + num2 = rect.Right - rect.Left; + x = num2 / (num + 1); + rect.Width = x; + if (num > 0) + { + foreach (object obj2 in list) + { + Rectangle rectangle2 = (Rectangle) obj2; + if (rect.IntersectsWith(rectangle2)) + { + rect.Offset(x, 0); + } + } + } + appointment.GridRectangle = rect; + if (appointment.Selected) + { + Pen pen = new Pen(Brushes.Black, 5f); + g.DrawRectangle(pen, rect); + pen.Dispose(); + } + else + { + g.DrawRectangle(Pens.Blue, rect); + } + string s = appointment.ToString(); + Rectangle rectangle3 = new Rectangle(rect.X + 1, rect.Y + 1, rect.Width - 1, rect.Height - 1); + g.FillRectangle(Brushes.White, rectangle3); + Brush black = Brushes.Black; + if (appointment.CheckInTime.Ticks > 0L) + { + black = Brushes.Green; + g.FillRectangle(Brushes.LightGreen, rectangle3); + } + if (appointment.NoShow) + { + black = Brushes.Red; + g.FillRectangle(Brushes.LightPink, rectangle3); + } + if (appointment.WalkIn) + { + black = Brushes.Blue; + g.FillRectangle(Brushes.LightSteelBlue, rectangle3); + } + g.DrawString(s, this.fontArial8, black, rectangle3); + list.Add(rect); + } + } + } + } + + private void DrawGrid(Graphics g) + { + try + { + Pen pen = new Pen(Color.Black); + SizeF ef = g.MeasureString("Test", this.m_fCell); + int num = 10; + this.m_cellHeight = ((int) ef.Height) + num; + int nColumns = this.m_nColumns; + int num3 = 60 / this.m_nTimeScale; + int num4 = 0x18 * num3; + nColumns++; + num4++; + this.m_cellWidth = 600 / nColumns; + if (base.ClientRectangle.Width > 600) + { + this.m_cellWidth = (base.ClientRectangle.Width - this.m_col0Width) / (nColumns - 1); + } + if (this.m_nColumns == 1) + { + this.m_cellWidth = base.ClientRectangle.Width - this.m_col0Width; + } + base.AutoScrollMinSize = new Size(600, this.m_cellHeight * num4); + g.FillRectangle(Brushes.LightGray, base.ClientRectangle); + int num5 = 0; + int num6 = 0; + bool flag = this.m_gridCells.CellCount == 0; + g.TranslateTransform((float) base.AutoScrollPosition.X, (float) base.AutoScrollPosition.Y); + for (int i = 1; i < num4; i++) + { + int x = 0; + Point point = new Point(x, i * this.m_cellHeight); + Rectangle rectangle2 = new Rectangle(point.X, point.Y, this.m_cellWidth, this.m_cellHeight); + Rectangle rect = new Rectangle(0, rectangle2.Y, this.m_col0Width, rectangle2.Height * num3); + int height = rect.Height; + height = (height > (this.m_col0Width / 4)) ? (this.m_col0Width / 4) : height; + if (num5 == 0) + { + g.FillRectangle(Brushes.LightGray, rect); + g.DrawRectangle(pen, rect.X, rect.Y, rect.Width, rect.Height); + string str = string.Format("{0}", num6).PadLeft(2, '0'); + Font font = new Font("Arial", (float) height, FontStyle.Bold, GraphicsUnit.Pixel); + Rectangle rectangle3 = new Rectangle(rect.X, rect.Y, rect.Width / 2, rect.Height); + g.DrawString(str, font, Brushes.Black, rectangle3, this.m_sfHour); + num6++; + font.Dispose(); + } + string s = string.Format("{0}", num5); + s = ":" + s.PadLeft(2, '0'); + Rectangle layoutRectangle = new Rectangle(rect.X + ((rect.Width * 2) / 3), rectangle2.Top, rect.Width / 3, rectangle2.Height); + g.DrawString(s, this.m_fCell, Brushes.Black, layoutRectangle, this.m_sfRight); + Point point2 = new Point(rect.X + ((rect.Width * 2) / 3), rectangle2.Bottom); + Point point3 = new Point(rect.Right, rectangle2.Bottom); + g.DrawLine(pen, point2, point3); + num5 += this.m_nTimeScale; + num5 = (num5 >= 60) ? 0 : num5; + if ((i == (num4 - 1)) && !this.m_bScroll) + { + g.TranslateTransform((float) -base.AutoScrollPosition.X, (float) -base.AutoScrollPosition.Y); + rect = new Rectangle(0, 0, this.m_col0Width, this.m_cellHeight); + g.FillRectangle(Brushes.LightGray, rect); + g.DrawRectangle(pen, rect); + g.TranslateTransform((float) base.AutoScrollPosition.X, (float) base.AutoScrollPosition.Y); + } + } + for (int j = num4; j > -1; j--) + { + for (int k = 1; k < nColumns; k++) + { + int num12 = 0; + if (k == 1) + { + num12 = this.m_col0Width; + } + if (k > 1) + { + num12 = this.m_col0Width + (this.m_cellWidth * (k - 1)); + } + Point point4 = new Point(num12, j * this.m_cellHeight); + Rectangle r = new Rectangle(point4.X, point4.Y, this.m_cellWidth, this.m_cellHeight); + if (j != 0) + { + CGCell cellFromRowCol = null; + if (flag) + { + cellFromRowCol = new CGCell(r, j, k); + this.m_gridCells.AddCell(cellFromRowCol); + } + else + { + cellFromRowCol = this.m_gridCells.GetCellFromRowCol(j, k); + cellFromRowCol.CellRectangle = r; + } + if (this.m_sResourcesArray.Count > 0) + { + if (this.m_selectedRange.CellIsInRange(cellFromRowCol)) + { + g.FillRectangle(Brushes.Aquamarine, r); + } + else + { + g.FillRectangle(cellFromRowCol.AppointmentTypeColor, r); + } + g.DrawRectangle(pen, r.X, r.Y, r.Width, r.Height); + if (j == 1) + { + this.DrawAppointments(g, this.m_col0Width, this.m_cellWidth, this.m_cellHeight); + } + } + continue; + } + if (!this.m_bScroll) + { + g.TranslateTransform(0f, (float) -base.AutoScrollPosition.Y); + Rectangle rectangle6 = r; + g.FillRectangle(Brushes.LightBlue, rectangle6); + g.DrawRectangle(pen, rectangle6.X, rectangle6.Y, rectangle6.Width, rectangle6.Height); + string str3 = ""; + if (this.m_sResourcesArray.Count > 1) + { + foreach (DictionaryEntry entry in this.m_ColumnInfoTable) + { + int num13 = (int) entry.Value; + num13++; + if (num13 == k) + { + str3 = entry.Key.ToString(); + break; + } + } + } + else + { + DateTime dtStart = this.m_dtStart; + if (k > 1) + { + dtStart = dtStart.AddDays((double) (k - 1)); + } + string format = "ddd, MMM d"; + str3 = dtStart.ToString(format, DateTimeFormatInfo.InvariantInfo); + } + g.DrawString(str3, this.m_fCell, Brushes.Black, rectangle6, this.m_sf); + g.TranslateTransform(0f, (float) base.AutoScrollPosition.Y); + } + } + } + this.m_bScroll = false; + pen.Dispose(); + } + catch (Exception) + { + } + } + + public Rectangle GetAppointmentRect(CGAppointment a, int col0Width, int cellWidth, int cellHeight, out bool bRet) + { + DateTime startTime = a.StartTime; + DateTime endTime = a.EndTime; + string resource = a.Resource; + int num = 0; + int num2 = 0; + int num3 = 0; + int num4 = 0; + int num5 = 0; + Rectangle rectangle = new Rectangle(); + int totalMinutes = (int) startTime.TimeOfDay.TotalMinutes; + int num7 = (int) endTime.TimeOfDay.TotalMinutes; + if (this.m_sResourcesArray.Count > 1) + { + num5 = (int) this.m_ColumnInfoTable[resource]; + num5++; + } + else + { + num5 = ((int) (startTime.DayOfWeek - this.m_dtStart.DayOfWeek)) + 1; + } + if (num5 < 1) + { + bRet = false; + return rectangle; + } + num = col0Width + (cellWidth * (num5 - 1)); + int num8 = totalMinutes + this.m_nTimeScale; + int num9 = (num7 > 0) ? num7 : 0x5a0; + num9 -= totalMinutes; + num2 = (cellHeight * num8) / this.m_nTimeScale; + num3 = (cellHeight * num9) / this.m_nTimeScale; + num4 = cellWidth; + rectangle.X = num; + rectangle.Y = num2; + rectangle.Width = num4; + rectangle.Height = num3; + bRet = true; + return rectangle; + } + + public bool GetCellFromTime(DateTime dDate, ref int nRow, ref int nCol, bool bStartCell, string sResource) + { + int num = (dDate.Hour * 60) + dDate.Minute; + nRow = num / this.m_nTimeScale; + if (bStartCell) + { + nRow++; + } + if (this.m_sResourcesArray.Count > 1) + { + if (sResource == "") + { + sResource = this.m_sResourcesArray[0].ToString(); + } + nCol = (int) this.m_ColumnInfoTable[sResource]; + nCol++; + return true; + } + DateTime time = new DateTime(dDate.Year, dDate.Month, dDate.Day); + TimeSpan span = (TimeSpan) (time - this.StartDate); + int totalDays = 0; + totalDays = (int) span.TotalDays; + nCol = totalDays; + nCol++; + return true; + } + + private string GetResourceFromColumn(int nCol) + { + if (this.m_sResourcesArray.Count == 1) + { + return this.m_sResourcesArray[0].ToString(); + } + foreach (DictionaryEntry entry in this.m_ColumnInfoTable) + { + int num = (int) entry.Value; + num++; + if (num == nCol) + { + return entry.Key.ToString(); + } + } + return ""; + } + + public bool GetSelectedTime(out DateTime dStart, out DateTime dEnd, out string sResource) + { + if (this.m_selectedRange.Cells.CellCount == 0) + { + dEnd = new DateTime(); + dStart = dEnd; + sResource = ""; + return false; + } + CGCell startCell = this.m_selectedRange.StartCell; + CGCell endCell = this.m_selectedRange.EndCell; + if (startCell.CellRow > endCell.CellRow) + { + CGCell cell3 = startCell; + startCell = endCell; + endCell = cell3; + } + dStart = this.GetTimeFromCell(startCell); + dEnd = this.GetTimeFromCell(endCell); + dEnd = dEnd.AddMinutes((double) this.m_nTimeScale); + sResource = this.GetResourceFromColumn(startCell.CellColumn); + return true; + } + + public bool GetSelectedType(out int nAccessTypeID) + { + nAccessTypeID = 0; + if (this.m_selectedRange.Cells.CellCount == 0) + { + return false; + } + CGCell startCell = this.m_selectedRange.StartCell; + CGCell endCell = this.m_selectedRange.EndCell; + if (startCell.CellRow > endCell.CellRow) + { + CGCell cell3 = startCell; + startCell = endCell; + endCell = cell3; + } + DateTime timeFromCell = this.GetTimeFromCell(startCell); + DateTime time2 = this.GetTimeFromCell(endCell).AddMinutes((double) this.m_nTimeScale); + foreach (CGAvailability availability in this.m_pAvArray) + { + if (this.TimesOverlap(availability.StartTime, availability.EndTime, timeFromCell, time2)) + { + nAccessTypeID = availability.AvailabilityType; + break; + } + } + return (nAccessTypeID > 0); + } + + public DateTime GetTimeFromCell(CGCell cgCell) + { + int cellRow = cgCell.CellRow; + int cellColumn = cgCell.CellColumn; + DateTime dtStart = this.m_dtStart; + int num3 = (cellRow - 1) * this.m_nTimeScale; + int num4 = num3 / 60; + if (num4 > 0) + { + num3 = num3 % (num4 * 60); + } + dtStart = dtStart.AddHours((double) num4).AddMinutes((double) num3); + if (this.m_sResourcesArray.Count == 1) + { + dtStart = dtStart.AddDays((double) (cellColumn - 1)); + } + return dtStart; + } + + public bool GetTypeFromCell(CGCell cgCell, out int nAccessTypeID) + { + nAccessTypeID = 0; + CGCell cell = cgCell; + CGCell cell2 = cgCell; + if (cell.CellRow > cell2.CellRow) + { + CGCell cell3 = cell; + cell = cell2; + cell2 = cell3; + } + DateTime timeFromCell = this.GetTimeFromCell(cell); + DateTime time2 = this.GetTimeFromCell(cell2).AddMinutes((double) this.m_nTimeScale); + foreach (CGAvailability availability in this.m_pAvArray) + { + if (this.TimesOverlap(availability.StartTime, availability.EndTime, timeFromCell, time2)) + { + nAccessTypeID = availability.AvailabilityType; + break; + } + } + return (nAccessTypeID > 0); + } + + private bool HitTest(int X, int Y, ref int nRow, ref int nCol) + { + Y -= base.AutoScrollPosition.Y; + X -= base.AutoScrollPosition.X; + foreach (DictionaryEntry entry in this.m_gridCells) + { + CGCell cell = (CGCell) entry.Value; + if (cell.CellRectangle.Contains(X, Y)) + { + nRow = cell.CellRow; + nCol = cell.CellColumn; + return true; + } + } + return false; + } + + public void InitializeCalendarGrid() + { + this.AllowDrop = true; + } + + private void InitializeComponent() + { + this.AutoScroll = true; + base.AutoScrollMinSize = new Size(600, 400); + this.BackColor = SystemColors.Window; + base.Paint += new PaintEventHandler(this.CalendarGrid_Paint); + base.MouseDown += new MouseEventHandler(this.CalendarGrid_MouseDown); + base.MouseUp += new MouseEventHandler(this.CalendarGrid_MouseUp); + base.MouseMove += new MouseEventHandler(this.CalendarGrid_MouseMove); + base.DragEnter += new DragEventHandler(this.CalendarGrid_DragEnter); + base.DragDrop += new DragEventHandler(this.CalendarGrid_DragDrop); + this.m_toolTip = new ToolTip(); + } + + private int MinSince80(DateTime d) + { + DateTime time = new DateTime(0x7bc, 1, 1, 0, 0, 0); + TimeSpan span = (TimeSpan) (d - time); + return (int) span.TotalMinutes; + } + + private void OnLButtonDown(int X, int Y, bool bStart) + { + this.m_bDragDropStart = false; + this.m_nSelectID = 0; + if (!this.m_bSelectingRange) + { + int y = Y - base.AutoScrollPosition.Y; + int x = X - base.AutoScrollPosition.X; + Point pt = new Point(x, y); + if (Control.ModifierKeys == Keys.Control) + { + this.m_bMouseDown = false; + foreach (CGAppointment appointment in this.m_Appointments.AppointmentTable.Values) + { + if (!appointment.GridRectangle.Contains(pt)) + { + continue; + } + if (this.m_SelectedAppointments.AppointmentTable.ContainsKey(appointment.AppointmentKey)) + { + this.m_SelectedAppointments.RemoveAppointment(appointment.AppointmentKey); + if (this.m_SelectedAppointments.AppointmentTable.Count == 0) + { + this.m_nSelectID = 0; + } + else + { + foreach (CGAppointment appointment2 in this.m_Appointments.AppointmentTable.Values) + { + this.m_nSelectID = appointment2.AppointmentKey; + } + } + } + else + { + this.m_SelectedAppointments.AddAppointment(appointment); + this.m_nSelectID = appointment.AppointmentKey; + } + appointment.Selected = !appointment.Selected; + break; + } + base.Invalidate(); + return; + } + foreach (CGAppointment appointment3 in this.m_Appointments.AppointmentTable.Values) + { + if (!appointment3.GridRectangle.Contains(pt)) + { + continue; + } + this.m_bMouseDown = false; + if (appointment3.Selected) + { + appointment3.Selected = false; + this.m_SelectedAppointments.ClearAllAppointments(); + this.m_nSelectID = 0; + } + else + { + foreach (CGAppointment appointment4 in this.m_Appointments.AppointmentTable.Values) + { + appointment4.Selected = false; + } + this.m_SelectedAppointments.ClearAllAppointments(); + this.m_SelectedAppointments.AddAppointment(appointment3); + appointment3.Selected = true; + this.m_nSelectID = appointment3.AppointmentKey; + this.m_bMouseDown = true; + this.m_bGridEnter = true; + } + base.Invalidate(); + return; + } + } + int nRow = -1; + int nCol = -1; + if (this.HitTest(X, Y, ref nRow, ref nCol)) + { + CGCell cellFromRowCol = this.m_gridCells.GetCellFromRowCol(nRow, nCol); + if (cellFromRowCol != null) + { + if (bStart) + { + this.m_currentCell = cellFromRowCol; + this.m_selectedRange.StartCell = null; + this.m_selectedRange.EndCell = null; + this.m_selectedRange.CreateRange(this.m_gridCells, cellFromRowCol, cellFromRowCol); + bStart = false; + this.m_bMouseDown = true; + this.m_bSelectingRange = true; + } + else if (cellFromRowCol != this.m_currentCell) + { + if (!this.m_selectedRange.Cells.CellHashTable.ContainsKey(cellFromRowCol.Key)) + { + this.m_selectedRange.AppendCell(this.m_gridCells, cellFromRowCol); + } + else + { + bool bUp = cellFromRowCol.CellRow < this.m_currentCell.CellRow; + this.m_selectedRange.SubtractCell(this.m_gridCells, cellFromRowCol, bUp); + } + this.m_currentCell = cellFromRowCol; + } + cellFromRowCol.IsSelected = true; + base.Invalidate(); + } + } + } + + public void OnUpdateArrays() + { + try + { + this.m_gridCells.ClearAllCells(); + this.SetColumnInfo(); + this.SetOverlapTable(); + Graphics g = base.CreateGraphics(); + this.BuildGridCellsArray(g); + this.SetAppointmentTypes(); + } + catch (Exception exception) + { + string message = exception.Message; + } + } + + private void SetAppointmentTypes() + { + if (this.m_gridCells.CellCount != 0) + { + foreach (DictionaryEntry entry in this.m_gridCells.CellHashTable) + { + CGCell cell = (CGCell) entry.Value; + cell.AppointmentTypeColor = (this.m_GridBackColor == "blue") ? Brushes.CornflowerBlue : Brushes.Khaki; + } + if ((this.m_pAvArray != null) && (this.m_pAvArray.Count != 0)) + { + foreach (CGAvailability availability in this.m_pAvArray) + { + int nRow = 0; + int nCol = 0; + int num3 = 0; + int num4 = 0; + Brush brush = new SolidBrush(Color.FromArgb(availability.Red, availability.Green, availability.Blue)); + this.GetCellFromTime(availability.StartTime, ref nRow, ref nCol, true, availability.ResourceList); + this.GetCellFromTime(availability.EndTime, ref num3, ref num4, false, availability.ResourceList); + for (int i = nCol; i <= num4; i++) + { + for (int j = nRow; (i == num4) && (j <= num3); j++) + { + string str = "r" + j.ToString() + "c" + i.ToString(); + CGCell cell2 = (CGCell) this.m_gridCells.CellHashTable[str]; + if (cell2 != null) + { + cell2.AppointmentTypeColor = brush; + } + } + } + } + } + } + } + + private void SetColumnInfo() + { + this.m_ColumnInfoTable.Clear(); + for (int i = 0; i < this.m_sResourcesArray.Count; i++) + { + this.m_ColumnInfoTable.Add(this.m_sResourcesArray[i], i); + } + if (this.m_sResourcesArray.Count > 1) + { + this.m_nColumns = this.m_sResourcesArray.Count; + } + } + + public void SetOverlapTable() + { + Hashtable hashtable = new Hashtable(); + int y = 0; + int num2 = 0; + int x = 0; + foreach (CGAppointment appointment in this.m_Appointments.AppointmentTable.Values) + { + if (!appointment.WalkIn || this.m_bDrawWalkIns) + { + string resource = appointment.Resource; + y = appointment.StartTime.Minute + (60 * appointment.StartTime.Hour); + num2 = appointment.EndTime.Minute + (60 * appointment.EndTime.Hour); + x = (this.m_sResourcesArray.Count > 1) ? (((int) this.m_ColumnInfoTable[resource]) + 1) : appointment.StartTime.DayOfYear; + Rectangle rectangle = new Rectangle(x, y, 1, num2 - y); + hashtable.Add(appointment.m_nKey, rectangle); + } + } + this.m_ApptOverlapTable.Clear(); + foreach (int num4 in hashtable.Keys) + { + this.m_ApptOverlapTable.Add(num4, 0); + } + if (this.m_ApptOverlapTable.Count != 0) + { + int num5 = (this.m_sResourcesArray.Count > 1) ? 1 : this.StartDate.DayOfYear; + int num6 = (this.m_sResourcesArray.Count > 1) ? (this.m_sResourcesArray.Count + 1) : (this.Columns + this.StartDate.DayOfYear); + for (int i = num5; i < num6; i++) + { + ArrayList list = new ArrayList(); + for (int j = 1; j < this.Rows; j++) + { + Rectangle rectangle2 = new Rectangle(i, j * this.m_nTimeScale, 1, this.m_nTimeScale); + int num9 = -1; + list.Clear(); + foreach (int num10 in hashtable.Keys) + { + Rectangle rect = (Rectangle) hashtable[num10]; + if (rectangle2.IntersectsWith(rect)) + { + num9++; + list.Add(num10); + } + } + if (num9 > 0) + { + foreach (object obj2 in list) + { + int num11 = (int) obj2; + if (((int) this.m_ApptOverlapTable[num11]) < num9) + { + this.m_ApptOverlapTable[num11] = num9; + } + } + } + } + } + } + } + + private void tickEventHandler(object o, EventArgs e) + { + Point point = new Point(base.AutoScrollPosition.X, base.AutoScrollPosition.Y); + int x = point.X; + int num = point.Y * -1; + num = this.m_bScrollDown ? (num + 5) : (num - 5); + point.Y = num; + base.AutoScrollPosition = point; + base.Invalidate(); + } + + private bool TimesOverlap(DateTime dStart1, DateTime dEnd1, DateTime dStart2, DateTime dEnd2) + { + long ticks = dEnd1.Ticks - dStart1.Ticks; + TimeSpan ts = new TimeSpan(ticks); + ticks = dEnd2.Ticks - dStart2.Ticks; + new TimeSpan(ticks).Subtract(ts); + Rectangle rect = new Rectangle(); + Rectangle rectangle2 = new Rectangle(); + rect.X = 0; + rectangle2.X = 0; + rect.Width = 1; + rectangle2.Width = 1; + rect.Y = this.MinSince80(dStart1); + rect.Height = this.MinSince80(dEnd1) - rect.Y; + rectangle2.Y = this.MinSince80(dStart2); + rectangle2.Height = this.MinSince80(dEnd2) - rectangle2.Y; + return rectangle2.IntersectsWith(rect); + } + + protected override void WndProc(ref Message msg) + { + try + { + if (msg.Msg == 0x115) + { + this.m_bScroll = true; + base.Invalidate(false); + this.m_bScroll = false; + } + if (msg.Msg == 0x114) + { + base.Invalidate(false); + } + base.WndProc(ref msg); + } + catch (Exception exception) + { + MessageBox.Show("CalendarGrid::WndProc: " + exception.Message + "\nStack: " + exception.StackTrace); + } + } + + public CGAppointments Appointments + { + get + { + return this.m_Appointments; + } + set + { + this.m_Appointments = value; + } + } + + public string ApptDragSource + { + get + { + return this.m_sDragSource; + } + set + { + this.m_sDragSource = value; + } + } + + public ArrayList AvailabilityArray + { + get + { + return this.m_pAvArray; + } + set + { + this.m_pAvArray = value; + } + } + + public int CellHeight + { + get + { + return this.m_cellHeight; + } + } + + public ToolTip CGToolTip + { + get + { + return this.m_toolTip; + } + } + + public int Columns + { + get + { + return this.m_nColumns; + } + set + { + if ((value > 0) && (value < 11)) + { + this.m_nColumns = value; + this.m_gridCells.ClearAllCells(); + this.m_selectedRange.Cells.ClearAllCells(); + Graphics g = base.CreateGraphics(); + this.BuildGridCellsArray(g); + this.SetAppointmentTypes(); + base.Invalidate(); + } + } + } + + public bool DrawWalkIns + { + get + { + return this.m_bDrawWalkIns; + } + set + { + this.m_bDrawWalkIns = value; + } + } + + public string GridBackColor + { + get + { + return this.m_GridBackColor; + } + set + { + this.m_GridBackColor = value; + } + } + + public bool GridEnter + { + get + { + return this.m_bGridEnter; + } + set + { + this.m_bGridEnter = value; + } + } + + public ArrayList Resources + { + get + { + return this.m_sResourcesArray; + } + set + { + this.m_sResourcesArray = value; + } + } + + public int Rows + { + get + { + return (0x5a0 / this.m_nTimeScale); + } + } + + public int SelectedAppointment + { + get + { + return this.m_nSelectID; + } + set + { + this.m_nSelectID = value; + } + } + + public CGAppointments SelectedAppointments + { + get + { + return this.m_SelectedAppointments; + } + } + + public CGRange SelectedRange + { + get + { + return this.m_selectedRange; + } + } + + public DateTime StartDate + { + get + { + return this.m_dtStart; + } + set + { + this.m_dtStart = value; + } + } + + public int TimeScale + { + get + { + return this.m_nTimeScale; + } + set + { + if ((((value == 5) || (value == 10)) || ((value == 15) || (value == 20))) || ((value == 30) || (value == 60))) + { + this.m_nTimeScale = value; + this.m_gridCells.ClearAllCells(); + this.m_selectedRange.Cells.ClearAllCells(); + Graphics g = base.CreateGraphics(); + this.BuildGridCellsArray(g); + this.SetAppointmentTypes(); + base.Invalidate(); + } + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/CalendarGrid.csproj b/cs/bsdx0200GUISourceCode/CalendarGrid.csproj deleted file mode 100644 index 5265cfe..0000000 --- a/cs/bsdx0200GUISourceCode/CalendarGrid.csproj +++ /dev/null @@ -1,129 +0,0 @@ - - - Local - 8.0.30729 - 2.0 - {8D1686A4-87D3-43F9-9E54-6CFB307A734E} - Debug - AnyCPU - - - - - CalendarGrid - - - JScript - Grid - IE50 - false - Library - CalendarGrid - - - - - 0.0 - v3.5 - - - - - bin\Debug\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - false - false - false - 4 - full - prompt - - - bin\Release\ - false - 285212672 - false - - - TRACE - - - false - 4096 - true - false - false - false - 4 - none - prompt - - - - RPX20Lib - ..\..\RPX20\ReleaseMinDependency\RPX20Lib.dll - - - System - - - System.Data - - - System.Design - - - System.Drawing - - - System.Windows.Forms - - - System.XML - - - - - - Component - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - CalendarGrid.cs - - - - - - - - - - \ No newline at end of file diff --git a/cs/bsdx0200GUISourceCode/CalendarGrid.csproj.user b/cs/bsdx0200GUISourceCode/CalendarGrid.csproj.user deleted file mode 100644 index 89dd305..0000000 --- a/cs/bsdx0200GUISourceCode/CalendarGrid.csproj.user +++ /dev/null @@ -1,56 +0,0 @@ - - - Debug - AnyCPU - C:\Documents and Settings\hwhitt\My Documents\Visual Studio Projects\RPX20\ReleaseMinDependency\ - - - - - 0 - ProjectFiles - 0 - - - false - false - false - false - false - - - Project - - - - - - - - - - - true - - - false - false - false - false - false - - - Project - - - - - - - - - - - true - - \ No newline at end of file diff --git a/cs/bsdx0200GUISourceCode/CalendarGrid.dll b/cs/bsdx0200GUISourceCode/CalendarGrid.dll deleted file mode 100644 index 5765acef8b67a56c0b61bd0834dae48f5a99a285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 zcmeIbd3>Bz^*?@|XZA@l$upBo_GHqHAxW3C6q=$-&wEG5gd4NdZ-GYL>a zv;k#N7Of!S!XhG6KOnduRZwtYRS*yb7Zw!-K?M;%peVohIrly@&m_eU-|rva*XQ^B zCNSqY=iGD8z4zR6?>+ZEccyE%ev~{!Gqmar#}lnF zJoL!JKRm%H?Kz4x6c|CG>%d7U?rGoF_&q{f!Y@(vW)9b1{TW2y^B>v;HVC1eXEs@6 zywH0pWA_lfXbLMIJV#WR&v|cDf(R|h{slp=&Qe5khErz`gYLZs0BO=zU2jnGmmoTQ zPCAqB0VQ?22MEjDhL7uS8M|5?SsZd|ZFah?cv^DRjyLQx=%Az?221 zEHGt(DGN+lV9Ekh7MQZYlm-4DvcNLlSL2WOrY8C5IqV^4Y$d`jTK2W*nv0xU9&u6(Bn0|W7uYUP2U)A&rNews8J@8*u473e9U%buQNwE zU*j}WDQEeTz^5%Gt(ht8AEn7RIC*rgJ!Q;HWue{KLtsc zk4=SCHdPTnBHpnAdHTizcs5dOo`=4Q`oRd6s0^Es(#SE?HcvMXI|801lQ7X%C(nJ9)JV6Yve>jeRWEg}p-z<|>zh9F?D zu|z_Ub#O6G8H)gzqYSxZwxkFN0tR=0Fa!YuU91>_fPuy;h9Iyz`$sjNa4yT_ro*1F zt3O%EW{eV>C)~%SNq?~e2m(gf(Ip5N((x=I2pG_zN)rSOSWPhm0Rsgph9F?DLrD_^ z0fU`E7=nON<}d^SquyZ%0!E#~5CjZ(j?y6r7-+F#2m%KBR51hrBjGRv0i(fT2vTPz zkyQr9G$%n2NKSVcf`Bo@VF==6?MA1^mjeUQ9AjE? zs07K8pK#=a9860Nm5|FJ37&aAT90{x|IF$!3^uP>Uph9IpXFn%>hT}^NW!`pH#^v6 z5|kh+Poe|DW`%x&V>mpmDDwt{$C@~I=F^N~gabXqC`PE)OgsTIl-E~hkU2coBB`)< zcnqTxf`T3`D2yE*JBHEnBwCwJWis7?L5fsr%fQ^>vE^=NLNiw|(;Vf;*h
J!d~nS(9~^AstZOS2ppO*ofj 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 diff --git a/cs/bsdx0200GUISourceCode/CalendarGrid.suo b/cs/bsdx0200GUISourceCode/CalendarGrid.suo deleted file mode 100644 index 4bcad8eac18cd8bb6cae3bb194e4c868bd22ab01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2560 zcmeHHJxjx25Ps5DQFPFygM(B@2dRP}1x1LZ3VvbGDNth5idGFY5$xdR>W}baaTNRk z&Mx``9CY?CXybEjQzS{jic2;3a=Cl&y?gI+$vsbx!!H-NBd_q$JmRRi{pkH-SEviu zX$Xi>k$uf|-G&jM8c`Q@;Dfcw_w%@mN{>qYg$``O;&PBe7Dtp7RJ~FDmQ13jHS;ZO zXcKw=cAD=Sd{E*%UuZgSFr$TiEHitFS{5g5qQlKe#1v_RV3Ejhub`FiRi||v^Q{lC z$Na*((6~3qMNDBP80fQ%69px&N513Gt-Shs=*iEFUT%?{-XL=?y_0W}Aj>|Y|I>l9 zDCC#j~ mv%q>(>L#U5Ef>f=Ngtc7sNPJh%u&j8jFK~C@86*M2j~+xvK{IG diff --git a/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj b/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj index 50d3ce5..36baadf 100644 --- a/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj +++ b/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj @@ -101,10 +101,6 @@ False .\BMXNet20.dll - - False - .\CalendarGrid.dll - True @@ -189,21 +185,35 @@ Code + + Component + + + + + + Code Form + + Code Form + + Code + + Form @@ -237,6 +247,9 @@ True True + + Form + Form diff --git a/cs/bsdx0200GUISourceCode/ClinicalScheduling.suo b/cs/bsdx0200GUISourceCode/ClinicalScheduling.suo index 3c9155d9fee083c9fa13232f80e00c56c6207c97..7048fe43dc76719ad9ef8e022fd838b7436bfa90 100644 GIT binary patch literal 78848 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 M2IB=cQhg}!|38utv;Y7A delta 1661 zcmbu9du&s66vywmeYmdO+TD$@N4IWc-PohAb%u>c*o#NUq-89CI&}pmLIHN!UQA7MoV1E)rL}E3@#MRTSizNPG3^)1o_xqjS z@1FC!=X_7Y_m$xXilg;J5zC^fKm}i)^ zjEm`H)-kEm>v?>daiCdI?ApY$&CC|&S>`$Bd8U_nfq9X6iRoj!%vNR_vz_T@US@VM zGZF6^;-BKEav*!$;keS`zd;J#5SrwW@|K!PVqfG^9Rk`O%9)+Y3GFcj27^u5V7Fmf znG-d1s21`IS?QAo4>h3GZj%!R9pQsu4XuDRXvW8SDJq%duyl>6e9l!MFI%yUgoiUf zCsQHkpPL^xN+}!Byk&0ummOCZzNOOfW?njWfk!3rvUF~lC~%8HW$G^KgKVuPgbH0E z8B!K)6?$Cc(2L}XRreAIL!E_eyw3w`_kTyz1xDj z`}YKf%Dj6JwuJF|(1eGM9JnpzxD+(P60E`!>+XxTun4o&j@#CHyc;ZLCz@zOp5_E= zV@=z}_LazKc4MHyt~p%tYv1|78`LpxL8UWaVVL_$Y;hK)1R}rYG?6x$Ox<=b>+2Ov zI-BJm8<&gFHHBnD^HEXOEw50>)(cV=x>tL!b4dZlN7d-+(a9dq9~qAu6(=Uk!O z_w^Y)bdL4l`aCxwXHdAgw5SFsQw+cfn<6)M!za-|iQUspb0{Hg_aHhN> z=37h?xK&q5+St8na>Mg>9{OrCl(~FOwD^Bluv~DUW;YpOirzuXp$94s&9|p=x3*Q- zBy{lCY!iZVa@TdD{Mj;SR`Q8aMwr}ifxEaT>YKt;rUMCI51G=k7<6Mw>5x(lrcUeD zyT`ku-w%@V5qDI|E&dk5cYzh?m5RyEJyDI%f<^M@Loz{caYpwQXi|-Sm_2Yuy5ZY* zKjJeY@TwuQb3YypS>dx7pq99@!)=9cQl=mzlLMkK-zA^ya;dHjxNv^B1XH1Dxc3(# zJ`&~{E4aqUS-2N*m+lF&rTs~0pDh9BNKTHjbPpasjI;0mfQfV4qnbEI&sQLv{V9pK z*FTA~J9=Z`TC&2^qJ*d1aJj9DwkV=wYbkd&XL4YyON8N0cWk_dhEZ0R|4%8f@A$F* z=lP_FFZ~0tv24o3rBj`_D^0Ug)0XO& o^)M_`%2zs1s2*>M|LT+p{pFra>ZTJqDwRtUwL}GJG5&VsZ>ISC{{R30 diff --git a/cs/bsdx0200GUISourceCode/DAccessBlock.cs b/cs/bsdx0200GUISourceCode/DAccessBlock.cs new file mode 100644 index 0000000..a80f6bf --- /dev/null +++ b/cs/bsdx0200GUISourceCode/DAccessBlock.cs @@ -0,0 +1,418 @@ +namespace IndianHealthService.ClinicalScheduling +{ + using System; + using System.ComponentModel; + using System.Data; + using System.Drawing; + using System.Windows.Forms; + using System.Xml; + /// + /// This class was regenerated from Calendargrid.dll using Reflector.exe + /// by Sam Habiel for WorldVista. The original source code is lost. + /// + public class DAccessBlock : Form + { + private ComboBox cboAccessTypeFilter; + private Button cmdCancel; + private Button cmdOK; + private Container components; + private Label label1; + private Label label15; + private Label label2; + private Label label3; + private Label label4; + private Label label6; + private Label label7; + private Label lblClinic; + private Label lblEndTime; + private Label lblStartTime; + private ListBox lstAccessTypes; + private DataSet m_dsGlobal; + private DataTable m_dtTypes; + private DataView m_dvTypes; + private CGAppointment m_pAppt; + private NumericUpDown nudSlots; + private Panel panel1; + private Panel panel2; + private TextBox txtNote; + + public DAccessBlock() + { + this.InitializeComponent(); + } + + private void cboAccessTypeFilter_SelectionChangeCommitted(object sender, EventArgs e) + { + if (this.cboAccessTypeFilter.Text == "") + { + this.LoadListBox("ALL"); + } + else + { + this.LoadListBox("SELECTED"); + } + } + + private void cmdOK_Click(object sender, EventArgs e) + { + this.UpdateDialogData(false); + } + + protected override void Dispose(bool disposing) + { + if (disposing && (this.components != null)) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.panel1 = new Panel(); + this.cmdCancel = new Button(); + this.cmdOK = new Button(); + this.panel2 = new Panel(); + this.label4 = new Label(); + this.cboAccessTypeFilter = new ComboBox(); + this.lstAccessTypes = new ListBox(); + this.nudSlots = new NumericUpDown(); + this.label6 = new Label(); + this.lblEndTime = new Label(); + this.label7 = new Label(); + this.label2 = new Label(); + this.lblClinic = new Label(); + this.label15 = new Label(); + this.txtNote = new TextBox(); + this.label1 = new Label(); + this.lblStartTime = new Label(); + this.label3 = new Label(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.nudSlots.BeginInit(); + base.SuspendLayout(); + this.panel1.Controls.Add(this.cmdCancel); + this.panel1.Controls.Add(this.cmdOK); + this.panel1.Dock = DockStyle.Bottom; + this.panel1.Location = new Point(0, 0x14e); + this.panel1.Name = "panel1"; + this.panel1.Size = new Size(0x192, 40); + this.panel1.TabIndex = 2; + this.cmdCancel.DialogResult = DialogResult.Cancel; + this.cmdCancel.Location = new Point(0x120, 8); + this.cmdCancel.Name = "cmdCancel"; + this.cmdCancel.Size = new Size(0x40, 0x18); + this.cmdCancel.TabIndex = 1; + this.cmdCancel.Text = "Cancel"; + this.cmdOK.DialogResult = DialogResult.OK; + this.cmdOK.Location = new Point(0xd0, 8); + this.cmdOK.Name = "cmdOK"; + this.cmdOK.Size = new Size(0x40, 0x18); + this.cmdOK.TabIndex = 0; + this.cmdOK.Text = "OK"; + this.cmdOK.Click += new EventHandler(this.cmdOK_Click); + this.panel2.Controls.Add(this.label4); + this.panel2.Controls.Add(this.cboAccessTypeFilter); + this.panel2.Controls.Add(this.lstAccessTypes); + this.panel2.Controls.Add(this.nudSlots); + this.panel2.Controls.Add(this.label6); + this.panel2.Controls.Add(this.lblEndTime); + this.panel2.Controls.Add(this.label7); + this.panel2.Controls.Add(this.label2); + this.panel2.Controls.Add(this.lblClinic); + this.panel2.Controls.Add(this.label15); + this.panel2.Controls.Add(this.txtNote); + this.panel2.Controls.Add(this.label1); + this.panel2.Controls.Add(this.lblStartTime); + this.panel2.Controls.Add(this.label3); + this.panel2.Dock = DockStyle.Fill; + this.panel2.Location = new Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new Size(0x192, 0x14e); + this.panel2.TabIndex = 3; + this.label4.Location = new Point(8, 0x88); + this.label4.Name = "label4"; + this.label4.Size = new Size(80, 0x10); + this.label4.TabIndex = 0x29; + this.label4.Text = "Access Group:"; + this.label4.TextAlign = ContentAlignment.MiddleRight; + this.cboAccessTypeFilter.DropDownStyle = ComboBoxStyle.DropDownList; + this.cboAccessTypeFilter.Location = new Point(0x58, 0x88); + this.cboAccessTypeFilter.Name = "cboAccessTypeFilter"; + this.cboAccessTypeFilter.Size = new Size(0x128, 0x15); + this.cboAccessTypeFilter.TabIndex = 40; + this.cboAccessTypeFilter.SelectionChangeCommitted += new EventHandler(this.cboAccessTypeFilter_SelectionChangeCommitted); + this.lstAccessTypes.Location = new Point(0x58, 0xb0); + this.lstAccessTypes.Name = "lstAccessTypes"; + this.lstAccessTypes.Size = new Size(0x128, 0x52); + this.lstAccessTypes.TabIndex = 0x26; + this.nudSlots.Location = new Point(0x58, 0x38); + int[] bits = new int[4]; + bits[0] = 0x3e6; + this.nudSlots.Maximum = new decimal(bits); + this.nudSlots.Name = "nudSlots"; + this.nudSlots.Size = new Size(40, 20); + this.nudSlots.TabIndex = 0x25; + int[] numArray2 = new int[4]; + numArray2[0] = 1; + this.nudSlots.Value = new decimal(numArray2); + this.label6.Location = new Point(40, 0x38); + this.label6.Name = "label6"; + this.label6.Size = new Size(40, 0x10); + this.label6.TabIndex = 0x24; + this.label6.Text = "Slots:"; + this.label6.TextAlign = ContentAlignment.MiddleRight; + this.lblEndTime.BorderStyle = BorderStyle.Fixed3D; + this.lblEndTime.Location = new Point(0x110, 8); + this.lblEndTime.Name = "lblEndTime"; + this.lblEndTime.Size = new Size(0x70, 0x10); + this.lblEndTime.TabIndex = 0x22; + this.label7.Location = new Point(0xd0, 8); + this.label7.Name = "label7"; + this.label7.Size = new Size(0x40, 0x10); + this.label7.TabIndex = 0x21; + this.label7.Text = "End Time:"; + this.label7.TextAlign = ContentAlignment.MiddleRight; + this.label2.Location = new Point(0x10, 0xb0); + this.label2.Name = "label2"; + this.label2.Size = new Size(0x48, 0x10); + this.label2.TabIndex = 0x1d; + this.label2.Text = "Access Type:"; + this.label2.TextAlign = ContentAlignment.MiddleRight; + this.lblClinic.BorderStyle = BorderStyle.Fixed3D; + this.lblClinic.Location = new Point(0x58, 0x20); + this.lblClinic.Name = "lblClinic"; + this.lblClinic.Size = new Size(0x128, 0x10); + this.lblClinic.TabIndex = 0x1b; + this.label15.Location = new Point(40, 0x20); + this.label15.Name = "label15"; + this.label15.Size = new Size(40, 0x10); + this.label15.TabIndex = 0x1a; + this.label15.Text = "Clinic:"; + this.label15.TextAlign = ContentAlignment.MiddleRight; + this.txtNote.AcceptsReturn = true; + this.txtNote.Location = new Point(0x58, 80); + this.txtNote.Multiline = true; + this.txtNote.Name = "txtNote"; + this.txtNote.Size = new Size(0x128, 0x30); + this.txtNote.TabIndex = 0x19; + this.label1.Location = new Point(0x18, 0x58); + this.label1.Name = "label1"; + this.label1.Size = new Size(0x38, 0x10); + this.label1.TabIndex = 0x18; + this.label1.Text = "Note:"; + this.label1.TextAlign = ContentAlignment.MiddleRight; + this.lblStartTime.BorderStyle = BorderStyle.Fixed3D; + this.lblStartTime.Location = new Point(0x58, 8); + this.lblStartTime.Name = "lblStartTime"; + this.lblStartTime.Size = new Size(120, 0x10); + this.lblStartTime.TabIndex = 0x16; + this.label3.Location = new Point(0x18, 8); + this.label3.Name = "label3"; + this.label3.Size = new Size(0x40, 0x10); + this.label3.TabIndex = 20; + this.label3.Text = "Start Time:"; + this.label3.TextAlign = ContentAlignment.MiddleRight; + base.AcceptButton = this.cmdOK; + this.AutoScaleBaseSize = new Size(5, 13); + base.CancelButton = this.cmdCancel; + base.ClientSize = new Size(0x192, 0x176); + base.Controls.Add(this.panel2); + base.Controls.Add(this.panel1); + base.FormBorderStyle = FormBorderStyle.FixedDialog; + base.Name = "DAccessBlock"; + base.StartPosition = FormStartPosition.CenterParent; + this.Text = "Access Block"; + this.panel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.nudSlots.EndInit(); + base.ResumeLayout(false); + } + + public void InitializePage(CGAppointment pAppt, DataSet dsGlobal) + { + this.m_pAppt = new CGAppointment(); + this.m_pAppt.StartTime = pAppt.StartTime; + this.m_pAppt.EndTime = pAppt.EndTime; + this.m_pAppt.Resource = pAppt.Resource; + this.m_pAppt.Note = pAppt.Note; + this.m_pAppt.Slots = pAppt.Slots; + this.m_pAppt.AccessTypeID = pAppt.AccessTypeID; + this.m_pAppt.AccessTypeName = pAppt.AccessTypeName; + this.m_dsGlobal = dsGlobal; + this.LoadListBox("ALL"); + DataTable table = dsGlobal.Tables["AccessGroup"]; + DataSet set = new DataSet("dsTemp"); + set.Tables.Add(table.Copy()); + DataTable table2 = set.Tables["AccessGroup"]; + DataView view = new DataView(table2); + view.AddNew()["ACCESS_GROUP"] = ""; + view.Sort = "ACCESS_GROUP ASC"; + this.cboAccessTypeFilter.DataSource = view; + this.cboAccessTypeFilter.DisplayMember = "ACCESS_GROUP"; + this.cboAccessTypeFilter.SelectedIndex = this.cboAccessTypeFilter.Items.Count - 1; + this.UpdateDialogData(true); + } + + public void InitializePage(DateTime dStart, DateTime dEnd, string sClinic, string sNote, DataSet dsGlobal) + { + this.m_pAppt = new CGAppointment(); + this.m_pAppt.StartTime = dStart; + this.m_pAppt.EndTime = dEnd; + this.m_pAppt.Resource = sClinic; + this.m_pAppt.Note = sNote; + this.m_pAppt.Slots = 1; + this.m_dsGlobal = dsGlobal; + this.LoadListBox("ALL"); + DataTable table = dsGlobal.Tables["AccessGroup"]; + DataSet set = new DataSet("dsTemp"); + set.Tables.Add(table.Copy()); + DataTable table2 = set.Tables["AccessGroup"]; + DataView view = new DataView(table2); + view.AddNew()["ACCESS_GROUP"] = ""; + view.Sort = "ACCESS_GROUP ASC"; + this.cboAccessTypeFilter.DataSource = view; + this.cboAccessTypeFilter.DisplayMember = "ACCESS_GROUP"; + this.cboAccessTypeFilter.SelectedIndex = this.cboAccessTypeFilter.Items.Count - 1; + this.m_pAppt.AccessTypeID = 0; + this.UpdateDialogData(true); + } + + public void LoadListBox(string sGroup) + { + string str = ""; + if (sGroup == "ALL") + { + this.m_dtTypes = this.m_dsGlobal.Tables["AccessTypes"]; + this.m_dvTypes = new DataView(this.m_dtTypes); + str = "INACTIVE <> 'YES'"; + this.m_dvTypes.RowFilter = str; + this.lstAccessTypes.DataSource = this.m_dvTypes; + this.lstAccessTypes.DisplayMember = "ACCESS_TYPE_NAME"; + this.lstAccessTypes.ValueMember = "BMXIEN"; + } + else + { + this.m_dtTypes = this.m_dsGlobal.Tables["AccessGroupType"]; + this.m_dvTypes = new DataView(this.m_dtTypes); + str = "ACCESS_GROUP = '" + this.cboAccessTypeFilter.Text + "'"; + this.m_dvTypes.RowFilter = str; + this.lstAccessTypes.DataSource = this.m_dvTypes; + this.lstAccessTypes.DisplayMember = "ACCESS_TYPE"; + this.lstAccessTypes.ValueMember = "ACCESS_TYPE_ID"; + } + } + + private void UpdateDialogData(bool b) + { + if (b) + { + this.lblClinic.Text = this.m_pAppt.Resource; + this.lblEndTime.Text = this.m_pAppt.EndTime.ToShortDateString() + " " + this.m_pAppt.EndTime.ToShortTimeString(); + this.lblStartTime.Text = this.m_pAppt.StartTime.ToShortDateString() + " " + this.m_pAppt.StartTime.ToShortTimeString(); + this.txtNote.Text = this.m_pAppt.Note; + this.nudSlots.Value = this.m_pAppt.Slots; + if (this.m_pAppt.AccessTypeID != 0) + { + this.lstAccessTypes.SelectedValue = this.m_pAppt.AccessTypeID; + } + } + else + { + this.m_pAppt.Note = this.txtNote.Text; + int selectedIndex = this.lstAccessTypes.SelectedIndex; + string str = this.lstAccessTypes.SelectedValue.ToString(); + str = (str == "") ? "-1" : str; + int num = Convert.ToInt16(str); + this.m_pAppt.AccessTypeID = num; + this.m_pAppt.Slots = Convert.ToInt16(this.nudSlots.Value); + } + } + + public int AccessTypeID + { + get + { + return this.m_pAppt.AccessTypeID; + } + set + { + this.m_pAppt.AccessTypeID = value; + } + } + + public CGAppointment Appointment + { + get + { + return this.m_pAppt; + } + set + { + this.m_pAppt = value; + } + } + + public DateTime EndTime + { + get + { + return this.m_pAppt.EndTime; + } + set + { + this.m_pAppt.EndTime = value; + } + } + + public string Note + { + get + { + return this.m_pAppt.Note; + } + set + { + this.m_pAppt.Note = value; + } + } + + public string Resource + { + get + { + return this.m_pAppt.Resource; + } + set + { + this.m_pAppt.Resource = value; + } + } + + public int Slots + { + get + { + return this.m_pAppt.Slots; + } + set + { + this.m_pAppt.Slots = value; + } + } + + public DateTime StartTime + { + get + { + return this.m_pAppt.StartTime; + } + set + { + this.m_pAppt.StartTime = value; + } + } + } +} + diff --git a/cs/bsdx0200GUISourceCode/bin/Release/ClinicalScheduling.XML b/cs/bsdx0200GUISourceCode/bin/Release/ClinicalScheduling.XML index 7926d68..ca8fabe 100644 --- a/cs/bsdx0200GUISourceCode/bin/Release/ClinicalScheduling.XML +++ b/cs/bsdx0200GUISourceCode/bin/Release/ClinicalScheduling.XML @@ -1083,5 +1083,83 @@ Contains the beginning date of the appointment document + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + + + + + This class was regenerated from Calendargrid.dll using Reflector.exe + by Sam Habiel for WorldVista. The original source code is lost. + +