source: Scheduling/branches/GUI1.2/DApptSearch.cs@ 1165

Last change on this file since 1165 was 614, checked in by Sam Habiel, 15 years ago

Initial committ of scheduling package

File size: 27.0 KB
Line 
1using System;
2using System.Drawing;
3using System.Collections;
4using System.ComponentModel;
5using System.Windows.Forms;
6using System.Data;
7//using System.Data.OleDb;
8using IndianHealthService.BMXNet;
9
10namespace IndianHealthService.ClinicalScheduling
11{
12 /// <summary>
13 /// Summary description for DApptSearch.
14 /// </summary>
15 public class DApptSearch : System.Windows.Forms.Form
16 {
17 private System.Windows.Forms.Panel panel1;
18 private System.Windows.Forms.Button cmdCancel;
19 private System.Windows.Forms.Button cmdOK;
20 private System.Windows.Forms.Panel pnlDescription;
21 private System.Windows.Forms.GroupBox grpDescription;
22 private System.Windows.Forms.Label lblDescription;
23 private System.Windows.Forms.GroupBox groupBox1;
24 private System.Windows.Forms.Label label3;
25 private System.Windows.Forms.Label label2;
26 private System.Windows.Forms.CheckedListBox lstAccessTypes;
27 private System.Windows.Forms.ComboBox cboAccessTypeFilter;
28 private System.Windows.Forms.GroupBox grpDayOfWeek;
29 private System.Windows.Forms.CheckBox chkSun;
30 private System.Windows.Forms.CheckBox chkSat;
31 private System.Windows.Forms.CheckBox chkFri;
32 private System.Windows.Forms.CheckBox chkThu;
33 private System.Windows.Forms.CheckBox chkWed;
34 private System.Windows.Forms.CheckBox chkTue;
35 private System.Windows.Forms.CheckBox chkMon;
36 private System.Windows.Forms.GroupBox grpTimeOfDay;
37 private System.Windows.Forms.RadioButton rdoBoth;
38 private System.Windows.Forms.RadioButton rdoPM;
39 private System.Windows.Forms.RadioButton rdoAM;
40 private System.Windows.Forms.Label label1;
41 private System.Windows.Forms.MonthCalendar calStartDate;
42 private System.Windows.Forms.GroupBox groupBox2;
43 private System.Windows.Forms.DataGrid grdResult;
44 private System.Windows.Forms.Button cmdSearch;
45 /// <summary>
46 /// Required designer variable.
47 /// </summary>
48 private System.ComponentModel.Container components = null;
49
50 public DApptSearch()
51 {
52 InitializeComponent();
53 }
54
55 #region Fields
56
57 private CGDocumentManager m_DocManager;
58
59 private DataSet m_dsGlobal;
60 DataTable m_dtTypes;
61 DataView m_dvTypes;
62
63 DateTime m_dStart;
64 DateTime m_dEnd;
65 ArrayList m_alResources;
66 ArrayList m_alAccessTypes;
67 string m_sWeekDays;
68 string m_sAmpm;
69
70 DataTable m_dtResult;
71 DataView m_dvResult;
72
73 string m_sSelectedResource;
74 DateTime m_sSelectedDate;
75
76 #endregion Fields
77
78 #region Methods
79
80 public void LoadListBox(string sGroup)
81 {
82 if (sGroup == "ALL")
83 {
84 //Load the Access Type list box with ALL access types
85 m_dtTypes = m_dsGlobal.Tables["AccessTypes"];
86 m_dvTypes = new DataView(m_dtTypes);
87 lstAccessTypes.DataSource = m_dvTypes;
88 lstAccessTypes.DisplayMember = "ACCESS_TYPE_NAME";
89 lstAccessTypes.Tag = 1; //This holds the column index of the ACCESS_TYPE_NAME column
90 lstAccessTypes.ValueMember = "BMXIEN";
91 }
92 else
93 {
94 //Load the Access Type list box with active access types belonging
95 //to group sGroup
96
97 //Build AccessGroup table containing *active* AccessTypes and their Groups
98 m_dtTypes = m_dsGlobal.Tables["AccessGroupType"];
99 CGSchedLib.OutputArray(m_dtTypes, "Access Group Type");
100 //Create a view that is filterable on Access Group
101 m_dvTypes = new DataView(m_dtTypes);
102 m_dvTypes.RowFilter = "ACCESS_GROUP = '" + this.cboAccessTypeFilter.Text + "'";
103 lstAccessTypes.DataSource = m_dvTypes;
104 lstAccessTypes.DisplayMember = "ACCESS_TYPE";
105 lstAccessTypes.ValueMember = "ACCESS_TYPE_ID";
106 lstAccessTypes.Tag = 4; //This holds the column index of the ACCESS_TYPE column
107 }
108 }
109
110 public void InitializePage(ArrayList alResources, CGDocumentManager docManager)
111 {
112
113 this.m_DocManager = docManager;
114 this.m_dsGlobal = m_DocManager.GlobalDataSet;
115 System.IntPtr pHandle = this.Handle;
116 LoadListBox("ALL");
117
118 m_dStart = DateTime.Today;
119 m_dEnd = new DateTime(9999);
120 this.m_alResources = alResources;
121 this.m_alAccessTypes = new ArrayList();
122 this.m_sAmpm="both";
123 this.m_sWeekDays = "";
124
125 //Load filter combo with list of access type groups
126 DataTable dtGroup = m_dsGlobal.Tables["AccessGroup"];
127 DataSet dsTemp = new DataSet("dsTemp");
128 dsTemp.Tables.Add(dtGroup.Copy());
129 DataTable dtTemp = dsTemp.Tables["AccessGroup"];
130 DataView dvGroup = new DataView(dtTemp);
131 DataRowView drv = dvGroup.AddNew();
132 drv["ACCESS_GROUP"]="<Show All Access Types>";
133 cboAccessTypeFilter.DataSource = dvGroup;
134 cboAccessTypeFilter.DisplayMember = "ACCESS_GROUP";
135 cboAccessTypeFilter.SelectedText = "<Show All Access Types>";
136 cboAccessTypeFilter.SelectedIndex = cboAccessTypeFilter.Items.Count - 1;
137 cboAccessTypeFilter.Refresh();
138
139 //Create DataGridTableStyle for Result grid
140 DataGridTableStyle tsResult = new DataGridTableStyle();
141 tsResult.MappingName = "Result";
142 tsResult.ReadOnly = true;
143 // Add START_TIME column style.
144 DataGridTextBoxColumn colStartTime = new DataGridTextBoxColumn();
145 colStartTime.MappingName = "START_TIME";
146 colStartTime.HeaderText = "Start Time";
147 colStartTime.Width = 200;
148 colStartTime.Format = "f";
149 tsResult.GridColumnStyles.Add(colStartTime);
150
151 // Add END_TIME column style.
152 DataGridTextBoxColumn colEndTime = new DataGridTextBoxColumn();
153 colEndTime.MappingName = "END_TIME";
154 colEndTime.HeaderText = "End Time";
155 colEndTime.Width = 75;
156 colEndTime.Format = "h:mm tt";
157 tsResult.GridColumnStyles.Add(colEndTime);
158
159 // Add RESOURCE column style.
160 DataGridTextBoxColumn colResource = new DataGridTextBoxColumn();
161 colResource.MappingName = "RESOURCE";
162 colResource.HeaderText = "Resource";
163 colResource.Width = 200;
164 tsResult.GridColumnStyles.Add(colResource);
165
166 // Add SLOTS column style.
167 DataGridTextBoxColumn colSlots = new DataGridTextBoxColumn();
168 colSlots.MappingName = "SLOTS";
169 colSlots.HeaderText = "Slots";
170 colSlots.Width = 50;
171 tsResult.GridColumnStyles.Add(colSlots);
172
173 // Add AMPM column style.
174 DataGridTextBoxColumn colAccess = new DataGridTextBoxColumn();
175 colAccess.MappingName = "ACCESSNAME";
176 colAccess.HeaderText = "Access Type";
177 colAccess.Width = 200;
178 tsResult.GridColumnStyles.Add(colAccess);
179 grdResult.TableStyles.Add(tsResult);
180
181 this.UpdateDialogData(true);
182
183 }
184
185 /// <summary>
186 /// If b is true, moves member vars into control data
187 /// otherwise, moves control data into member vars
188 /// </summary>
189 /// <param name="b"></param>
190 private void UpdateDialogData(bool b)
191 {
192 if (b == true) //move member vars into controls
193 {
194
195 }
196 else //move control data into member vars
197 {
198
199 //Build AccessType list
200
201 this.m_alAccessTypes.Clear();
202
203 for (int j = 0; j < this.lstAccessTypes.CheckedItems.Count; j++)
204 {
205 DataRowView drv = (DataRowView) lstAccessTypes.CheckedItems[j];
206 int nIndex = (int) lstAccessTypes.Tag;
207 string sItem = drv.Row.ItemArray[nIndex].ToString();
208 m_alAccessTypes.Add(sItem);
209 }
210
211 //AM/PM
212 this.m_sAmpm = (this.rdoAM.Checked == true) ? "AM":"BOTH";
213 if (this.m_sAmpm != "AM")
214 this.m_sAmpm = (this.rdoPM.Checked == true) ? "PM":"BOTH";
215
216
217 //Weekday
218 this.m_sWeekDays = ""; //any
219 if (chkMon.Checked == true)
220 m_sWeekDays += "Monday";
221 if (chkTue.Checked == true)
222 m_sWeekDays += "Tuesday";
223 if (chkWed.Checked == true)
224 m_sWeekDays += "Wednesday";
225 if (chkThu.Checked == true)
226 m_sWeekDays += "Thursday";
227 if (chkFri.Checked == true)
228 m_sWeekDays += "Friday";
229 if (chkSat.Checked == true)
230 m_sWeekDays += "Saturday";
231 if (chkSun.Checked == true)
232 m_sWeekDays += "Sunday";
233
234 //Start
235 this.m_dStart = this.calStartDate.SelectionStart;
236
237 //End
238 m_dEnd = calStartDate.SelectionEnd;
239 m_dEnd = m_dEnd.AddHours(23);
240 m_dEnd = m_dEnd.AddMinutes(59);
241
242 }
243 }
244
245
246 /// <summary>
247 /// Clean up any resources being used.
248 /// </summary>
249 protected override void Dispose( bool disposing )
250 {
251 if( disposing )
252 {
253 if(components != null)
254 {
255 components.Dispose();
256 }
257 }
258 base.Dispose( disposing );
259 }
260
261 #endregion Methods
262
263 #region Windows Form Designer generated code
264 /// <summary>
265 /// Required method for Designer support - do not modify
266 /// the contents of this method with the code editor.
267 /// </summary>
268 private void InitializeComponent()
269 {
270 this.panel1 = new System.Windows.Forms.Panel();
271 this.cmdSearch = new System.Windows.Forms.Button();
272 this.cmdCancel = new System.Windows.Forms.Button();
273 this.cmdOK = new System.Windows.Forms.Button();
274 this.pnlDescription = new System.Windows.Forms.Panel();
275 this.grpDescription = new System.Windows.Forms.GroupBox();
276 this.lblDescription = new System.Windows.Forms.Label();
277 this.groupBox1 = new System.Windows.Forms.GroupBox();
278 this.label3 = new System.Windows.Forms.Label();
279 this.label2 = new System.Windows.Forms.Label();
280 this.lstAccessTypes = new System.Windows.Forms.CheckedListBox();
281 this.cboAccessTypeFilter = new System.Windows.Forms.ComboBox();
282 this.grpDayOfWeek = new System.Windows.Forms.GroupBox();
283 this.chkSun = new System.Windows.Forms.CheckBox();
284 this.chkSat = new System.Windows.Forms.CheckBox();
285 this.chkFri = new System.Windows.Forms.CheckBox();
286 this.chkThu = new System.Windows.Forms.CheckBox();
287 this.chkWed = new System.Windows.Forms.CheckBox();
288 this.chkTue = new System.Windows.Forms.CheckBox();
289 this.chkMon = new System.Windows.Forms.CheckBox();
290 this.grpTimeOfDay = new System.Windows.Forms.GroupBox();
291 this.rdoBoth = new System.Windows.Forms.RadioButton();
292 this.rdoPM = new System.Windows.Forms.RadioButton();
293 this.rdoAM = new System.Windows.Forms.RadioButton();
294 this.label1 = new System.Windows.Forms.Label();
295 this.calStartDate = new System.Windows.Forms.MonthCalendar();
296 this.groupBox2 = new System.Windows.Forms.GroupBox();
297 this.grdResult = new System.Windows.Forms.DataGrid();
298 this.panel1.SuspendLayout();
299 this.pnlDescription.SuspendLayout();
300 this.grpDescription.SuspendLayout();
301 this.groupBox1.SuspendLayout();
302 this.grpDayOfWeek.SuspendLayout();
303 this.grpTimeOfDay.SuspendLayout();
304 this.groupBox2.SuspendLayout();
305 ((System.ComponentModel.ISupportInitialize)(this.grdResult)).BeginInit();
306 this.SuspendLayout();
307 //
308 // panel1
309 //
310 this.panel1.Controls.Add(this.cmdSearch);
311 this.panel1.Controls.Add(this.cmdCancel);
312 this.panel1.Controls.Add(this.cmdOK);
313 this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
314 this.panel1.Location = new System.Drawing.Point(0, 456);
315 this.panel1.Name = "panel1";
316 this.panel1.Size = new System.Drawing.Size(730, 40);
317 this.panel1.TabIndex = 4;
318 //
319 // cmdSearch
320 //
321 this.cmdSearch.Location = new System.Drawing.Point(536, 8);
322 this.cmdSearch.Name = "cmdSearch";
323 this.cmdSearch.Size = new System.Drawing.Size(72, 24);
324 this.cmdSearch.TabIndex = 2;
325 this.cmdSearch.Text = "Search";
326 this.cmdSearch.Click += new System.EventHandler(this.cmdSearch_Click);
327 //
328 // cmdCancel
329 //
330 this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
331 this.cmdCancel.Location = new System.Drawing.Point(616, 8);
332 this.cmdCancel.Name = "cmdCancel";
333 this.cmdCancel.Size = new System.Drawing.Size(64, 24);
334 this.cmdCancel.TabIndex = 1;
335 this.cmdCancel.Text = "Cancel";
336 //
337 // cmdOK
338 //
339 this.cmdOK.DialogResult = System.Windows.Forms.DialogResult.OK;
340 this.cmdOK.Location = new System.Drawing.Point(128, 8);
341 this.cmdOK.Name = "cmdOK";
342 this.cmdOK.Size = new System.Drawing.Size(64, 24);
343 this.cmdOK.TabIndex = 0;
344 this.cmdOK.Text = "OK";
345 this.cmdOK.Visible = false;
346 this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
347 //
348 // pnlDescription
349 //
350 this.pnlDescription.Controls.Add(this.grpDescription);
351 this.pnlDescription.Dock = System.Windows.Forms.DockStyle.Bottom;
352 this.pnlDescription.Location = new System.Drawing.Point(0, 392);
353 this.pnlDescription.Name = "pnlDescription";
354 this.pnlDescription.Size = new System.Drawing.Size(730, 64);
355 this.pnlDescription.TabIndex = 47;
356 //
357 // grpDescription
358 //
359 this.grpDescription.Controls.Add(this.lblDescription);
360 this.grpDescription.Dock = System.Windows.Forms.DockStyle.Fill;
361 this.grpDescription.Location = new System.Drawing.Point(0, 0);
362 this.grpDescription.Name = "grpDescription";
363 this.grpDescription.Size = new System.Drawing.Size(730, 64);
364 this.grpDescription.TabIndex = 0;
365 this.grpDescription.TabStop = false;
366 this.grpDescription.Text = "Description";
367 //
368 // lblDescription
369 //
370 this.lblDescription.Dock = System.Windows.Forms.DockStyle.Fill;
371 this.lblDescription.Location = new System.Drawing.Point(3, 16);
372 this.lblDescription.Name = "lblDescription";
373 this.lblDescription.Size = new System.Drawing.Size(724, 45);
374 this.lblDescription.TabIndex = 1;
375 this.lblDescription.Text = "Search for available appointment times using this panel. You may narrow your sea" +
376 "rch by selecting an access type or by selecting specific days of the week or tim" +
377 "es of day.";
378 //
379 // groupBox1
380 //
381 this.groupBox1.Controls.Add(this.label3);
382 this.groupBox1.Controls.Add(this.label2);
383 this.groupBox1.Controls.Add(this.lstAccessTypes);
384 this.groupBox1.Controls.Add(this.cboAccessTypeFilter);
385 this.groupBox1.Controls.Add(this.grpDayOfWeek);
386 this.groupBox1.Controls.Add(this.grpTimeOfDay);
387 this.groupBox1.Controls.Add(this.label1);
388 this.groupBox1.Controls.Add(this.calStartDate);
389 this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
390 this.groupBox1.Location = new System.Drawing.Point(0, 0);
391 this.groupBox1.Name = "groupBox1";
392 this.groupBox1.Size = new System.Drawing.Size(730, 208);
393 this.groupBox1.TabIndex = 56;
394 this.groupBox1.TabStop = false;
395 this.groupBox1.Text = "Search Parameters";
396 //
397 // label3
398 //
399 this.label3.Location = new System.Drawing.Point(472, 72);
400 this.label3.Name = "label3";
401 this.label3.Size = new System.Drawing.Size(80, 16);
402 this.label3.TabIndex = 63;
403 this.label3.Text = "Access Type:";
404 //
405 // label2
406 //
407 this.label2.Location = new System.Drawing.Point(472, 24);
408 this.label2.Name = "label2";
409 this.label2.Size = new System.Drawing.Size(104, 16);
410 this.label2.TabIndex = 62;
411 this.label2.Text = "Access Group:";
412 //
413 // lstAccessTypes
414 //
415 this.lstAccessTypes.CheckOnClick = true;
416 this.lstAccessTypes.HorizontalScrollbar = true;
417 this.lstAccessTypes.Location = new System.Drawing.Point(472, 88);
418 this.lstAccessTypes.MultiColumn = true;
419 this.lstAccessTypes.Name = "lstAccessTypes";
420 this.lstAccessTypes.Size = new System.Drawing.Size(224, 109);
421 this.lstAccessTypes.TabIndex = 61;
422 //
423 // cboAccessTypeFilter
424 //
425 this.cboAccessTypeFilter.Location = new System.Drawing.Point(472, 40);
426 this.cboAccessTypeFilter.Name = "cboAccessTypeFilter";
427 this.cboAccessTypeFilter.Size = new System.Drawing.Size(224, 21);
428 this.cboAccessTypeFilter.TabIndex = 60;
429 this.cboAccessTypeFilter.Text = "cboAccessTypeFilter";
430 this.cboAccessTypeFilter.SelectionChangeCommitted += new System.EventHandler(this.cboAccessTypeFilter_SelectionChangeCommitted);
431 //
432 // grpDayOfWeek
433 //
434 this.grpDayOfWeek.Controls.Add(this.chkSun);
435 this.grpDayOfWeek.Controls.Add(this.chkSat);
436 this.grpDayOfWeek.Controls.Add(this.chkFri);
437 this.grpDayOfWeek.Controls.Add(this.chkThu);
438 this.grpDayOfWeek.Controls.Add(this.chkWed);
439 this.grpDayOfWeek.Controls.Add(this.chkTue);
440 this.grpDayOfWeek.Controls.Add(this.chkMon);
441 this.grpDayOfWeek.Location = new System.Drawing.Point(224, 96);
442 this.grpDayOfWeek.Name = "grpDayOfWeek";
443 this.grpDayOfWeek.Size = new System.Drawing.Size(240, 96);
444 this.grpDayOfWeek.TabIndex = 59;
445 this.grpDayOfWeek.TabStop = false;
446 this.grpDayOfWeek.Text = "Day of the Week";
447 //
448 // chkSun
449 //
450 this.chkSun.Location = new System.Drawing.Point(176, 64);
451 this.chkSun.Name = "chkSun";
452 this.chkSun.Size = new System.Drawing.Size(48, 16);
453 this.chkSun.TabIndex = 6;
454 this.chkSun.Text = "Sun";
455 //
456 // chkSat
457 //
458 this.chkSat.Location = new System.Drawing.Point(128, 64);
459 this.chkSat.Name = "chkSat";
460 this.chkSat.Size = new System.Drawing.Size(48, 16);
461 this.chkSat.TabIndex = 5;
462 this.chkSat.Text = "Sat";
463 //
464 // chkFri
465 //
466 this.chkFri.Location = new System.Drawing.Point(72, 64);
467 this.chkFri.Name = "chkFri";
468 this.chkFri.Size = new System.Drawing.Size(48, 16);
469 this.chkFri.TabIndex = 4;
470 this.chkFri.Text = "Fri";
471 //
472 // chkThu
473 //
474 this.chkThu.Location = new System.Drawing.Point(16, 64);
475 this.chkThu.Name = "chkThu";
476 this.chkThu.Size = new System.Drawing.Size(48, 16);
477 this.chkThu.TabIndex = 3;
478 this.chkThu.Text = "Thu";
479 //
480 // chkWed
481 //
482 this.chkWed.Location = new System.Drawing.Point(128, 32);
483 this.chkWed.Name = "chkWed";
484 this.chkWed.Size = new System.Drawing.Size(48, 16);
485 this.chkWed.TabIndex = 2;
486 this.chkWed.Text = "Wed";
487 //
488 // chkTue
489 //
490 this.chkTue.Location = new System.Drawing.Point(72, 32);
491 this.chkTue.Name = "chkTue";
492 this.chkTue.Size = new System.Drawing.Size(48, 16);
493 this.chkTue.TabIndex = 1;
494 this.chkTue.Text = "Tue";
495 //
496 // chkMon
497 //
498 this.chkMon.Location = new System.Drawing.Point(16, 32);
499 this.chkMon.Name = "chkMon";
500 this.chkMon.Size = new System.Drawing.Size(48, 16);
501 this.chkMon.TabIndex = 0;
502 this.chkMon.Text = "Mon";
503 //
504 // grpTimeOfDay
505 //
506 this.grpTimeOfDay.Controls.Add(this.rdoBoth);
507 this.grpTimeOfDay.Controls.Add(this.rdoPM);
508 this.grpTimeOfDay.Controls.Add(this.rdoAM);
509 this.grpTimeOfDay.Location = new System.Drawing.Point(224, 32);
510 this.grpTimeOfDay.Name = "grpTimeOfDay";
511 this.grpTimeOfDay.Size = new System.Drawing.Size(240, 48);
512 this.grpTimeOfDay.TabIndex = 58;
513 this.grpTimeOfDay.TabStop = false;
514 this.grpTimeOfDay.Text = "Time of Day";
515 //
516 // rdoBoth
517 //
518 this.rdoBoth.Checked = true;
519 this.rdoBoth.Location = new System.Drawing.Point(176, 24);
520 this.rdoBoth.Name = "rdoBoth";
521 this.rdoBoth.Size = new System.Drawing.Size(48, 16);
522 this.rdoBoth.TabIndex = 2;
523 this.rdoBoth.TabStop = true;
524 this.rdoBoth.Text = "Both";
525 //
526 // rdoPM
527 //
528 this.rdoPM.Location = new System.Drawing.Point(96, 24);
529 this.rdoPM.Name = "rdoPM";
530 this.rdoPM.Size = new System.Drawing.Size(72, 16);
531 this.rdoPM.TabIndex = 1;
532 this.rdoPM.Text = "PM Only";
533 //
534 // rdoAM
535 //
536 this.rdoAM.Location = new System.Drawing.Point(16, 24);
537 this.rdoAM.Name = "rdoAM";
538 this.rdoAM.Size = new System.Drawing.Size(72, 16);
539 this.rdoAM.TabIndex = 0;
540 this.rdoAM.Text = "AM Only";
541 //
542 // label1
543 //
544 this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
545 this.label1.Location = new System.Drawing.Point(16, 24);
546 this.label1.Name = "label1";
547 this.label1.Size = new System.Drawing.Size(136, 16);
548 this.label1.TabIndex = 57;
549 this.label1.Text = "Date Range:";
550 //
551 // calStartDate
552 //
553 this.calStartDate.Location = new System.Drawing.Point(16, 40);
554 this.calStartDate.MaxSelectionCount = 62;
555 this.calStartDate.Name = "calStartDate";
556 this.calStartDate.TabIndex = 56;
557 //
558 // groupBox2
559 //
560 this.groupBox2.Controls.Add(this.grdResult);
561 this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
562 this.groupBox2.Location = new System.Drawing.Point(0, 208);
563 this.groupBox2.Name = "groupBox2";
564 this.groupBox2.Size = new System.Drawing.Size(730, 184);
565 this.groupBox2.TabIndex = 57;
566 this.groupBox2.TabStop = false;
567 this.groupBox2.Text = "Search Result";
568 //
569 // grdResult
570 //
571 this.grdResult.CaptionVisible = false;
572 this.grdResult.DataMember = "";
573 this.grdResult.Dock = System.Windows.Forms.DockStyle.Fill;
574 this.grdResult.HeaderForeColor = System.Drawing.SystemColors.ControlText;
575 this.grdResult.Location = new System.Drawing.Point(3, 16);
576 this.grdResult.Name = "grdResult";
577 this.grdResult.ReadOnly = true;
578 this.grdResult.Size = new System.Drawing.Size(724, 165);
579 this.grdResult.TabIndex = 0;
580 this.grdResult.DoubleClick += new System.EventHandler(this.grdResult_DoubleClick);
581 this.grdResult.CurrentCellChanged += new System.EventHandler(this.grdResult_CurrentCellChanged);
582 //
583 // DApptSearch
584 //
585 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
586 this.CancelButton = this.cmdCancel;
587 this.ClientSize = new System.Drawing.Size(730, 496);
588 this.Controls.Add(this.groupBox2);
589 this.Controls.Add(this.groupBox1);
590 this.Controls.Add(this.pnlDescription);
591 this.Controls.Add(this.panel1);
592 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
593 this.Name = "DApptSearch";
594 this.Text = "Find Clinic Availability";
595 this.panel1.ResumeLayout(false);
596 this.pnlDescription.ResumeLayout(false);
597 this.grpDescription.ResumeLayout(false);
598 this.groupBox1.ResumeLayout(false);
599 this.grpDayOfWeek.ResumeLayout(false);
600 this.grpTimeOfDay.ResumeLayout(false);
601 this.groupBox2.ResumeLayout(false);
602 ((System.ComponentModel.ISupportInitialize)(this.grdResult)).EndInit();
603 this.ResumeLayout(false);
604
605 }
606 #endregion
607
608 #region Event Handlers
609 private void cmdOK_Click(object sender, System.EventArgs e)
610 {
611
612 }
613
614 private void cmdSearch_Click(object sender, System.EventArgs e)
615 {
616 //Get the control data into local vars
617 UpdateDialogData(false);
618 //Resource array, Begin date, Access type array, MTWTF , AM PM
619 //Assemble |-delimited resource string
620 string sResources = "";
621 for (int j=0; j < m_alResources.Count; j++)
622 {
623 sResources = sResources + m_alResources[j];
624 if (j < (m_alResources.Count - 1))
625 sResources = sResources + "|";
626 }
627
628 //Access Types Array
629 string sTypes = "";
630 if (m_alAccessTypes.Count > 0)
631 {
632 for (int j=0; j < m_alAccessTypes.Count; j++)
633 {
634 sTypes = sTypes + (string) m_alAccessTypes[j];
635 if (j < (m_alAccessTypes.Count-1))
636 sTypes = sTypes + "|";
637 }
638 }
639
640 string sSearchInfo = "1|" + m_sAmpm + "|" + m_sWeekDays;
641 m_dtResult = CGSchedLib.CreateAvailabilitySchedule(m_DocManager, m_alResources, m_dStart, m_dEnd, m_alAccessTypes, ScheduleType.Resource, sSearchInfo);
642
643 if (m_dtResult.Rows.Count == 0)
644 {
645 MessageBox.Show("No availability found.");
646 return;
647 }
648
649 m_dtResult.TableName = "Result";
650 m_dtResult.Columns.Add("AMPM", System.Type.GetType("System.String") ,"Convert(START_TIME, 'System.String')" );
651 m_dtResult.Columns.Add("DAYOFWEEK", System.Type.GetType("System.String"));
652 m_dtResult.Columns.Add("ACCESSNAME", System.Type.GetType("System.String"));
653
654 DataRow drAT;
655 DateTime dt;
656 string sDOW;
657 int nAccessTypeID;
658 string sAccessType;
659 CGSchedLib.OutputArray(m_dtResult, "Result Grid");
660 foreach (DataRow dr in m_dtResult.Rows)
661 {
662 dt = (DateTime) dr["START_TIME"];
663 sDOW = dt.DayOfWeek.ToString();
664 dr["DAYOFWEEK"] = sDOW;
665 if (dr["ACCESS_TYPE"].ToString() != "")
666 {
667 nAccessTypeID =Convert.ToInt16(dr["ACCESS_TYPE"].ToString());
668 drAT = m_dsGlobal.Tables["AccessTypes"].Rows.Find(nAccessTypeID);
669 if (drAT != null)
670 {
671 sAccessType = drAT["ACCESS_TYPE_NAME"].ToString();
672 dr["ACCESSNAME"] = sAccessType;
673 }
674 }
675 }
676 CGSchedLib.OutputArray(m_dtResult, "Result Grid");
677
678 m_dvResult = new DataView(m_dtResult);
679
680 string sFilter = "(SLOTS > 0)";
681 if (m_sAmpm != "")
682 {
683 if (m_sAmpm == "AM")
684 sFilter = sFilter + " AND (AMPM LIKE '*AM*')";
685 if (m_sAmpm == "PM")
686 sFilter = sFilter + " AND (AMPM LIKE '*PM*')";
687 }
688
689 bool sOr = false;
690 if (m_sWeekDays != "")
691 {
692 sFilter += " AND (";
693 if (chkMon.Checked == true)
694 {
695 sFilter = sFilter + "(DAYOFWEEK LIKE '*Monday*')";
696 sOr = true;
697 }
698 if (chkTue.Checked == true)
699 {
700 sFilter = (sOr == true)?sFilter + " OR ":sFilter;
701 sFilter = sFilter + "(DAYOFWEEK LIKE '*Tuesday*')";
702 sOr = true;
703 }
704 if (chkWed.Checked == true)
705 {
706 sFilter = (sOr == true)?sFilter + " OR ":sFilter;
707 sFilter = sFilter + "(DAYOFWEEK LIKE '*Wednesday*')";
708 sOr = true;
709 }
710 if (chkThu.Checked == true)
711 {
712 sFilter = (sOr == true)?sFilter + " OR ":sFilter;
713 sFilter = sFilter + "(DAYOFWEEK LIKE '*Thursday*')";
714 sOr = true;
715 }
716 if (chkFri.Checked == true)
717 {
718 sFilter = (sOr == true)?sFilter + " OR ":sFilter;
719 sFilter = sFilter + "(DAYOFWEEK LIKE '*Friday*')";
720 sOr = true;
721 }
722 if (chkSat.Checked == true)
723 {
724 sFilter = (sOr == true)?sFilter + " OR ":sFilter;
725 sFilter = sFilter + "(DAYOFWEEK LIKE '*Saturday*')";
726 sOr = true;
727 }
728 if (chkSun.Checked == true)
729 {
730 sFilter = (sOr == true)?sFilter + " OR ":sFilter;
731 sFilter = sFilter + "(DAYOFWEEK LIKE '*Sunday*')";
732 sOr = true;
733 }
734 sFilter += ")";
735 }
736
737 if (m_alAccessTypes.Count > 0)
738 {
739 sFilter += " AND (";
740 sOr = false;
741 foreach (string sType in m_alAccessTypes)
742 {
743 if (sOr == true)
744 sFilter += " OR ";
745 sOr = true;
746 sFilter += "(ACCESSNAME = '" + sType + "')";
747 }
748 sFilter += ")";
749 }
750
751 m_dvResult.RowFilter = sFilter;
752 this.grdResult.DataSource = m_dvResult;
753
754 }
755
756 private void cboAccessTypeFilter_SelectionChangeCommitted(object sender, System.EventArgs e)
757 {
758 //Load Access Types listbox & filter
759 string sGroup = cboAccessTypeFilter.Text;
760 if (sGroup == "<Show All Access Types>")
761 {
762 LoadListBox("ALL");
763 }
764 else
765 {
766 LoadListBox("SELECTED");
767 }
768
769 }
770
771 private void grdResult_DoubleClick(object sender, System.EventArgs e)
772 {
773 if (grdResult.DataSource == null)
774 return;
775
776 DataGridCell dgCell;
777 dgCell = this.grdResult.CurrentCell;
778 dgCell.ColumnNumber = 2;
779 this.m_sSelectedResource = grdResult[dgCell.RowNumber, dgCell.ColumnNumber].ToString();
780 this.m_sSelectedDate = (DateTime) grdResult[dgCell.RowNumber,0];
781 this.DialogResult = DialogResult.OK;
782 this.Close();
783 }
784
785 private void grdResult_CurrentCellChanged(object sender, System.EventArgs e)
786 {
787 DataGridCell dgCell;
788 dgCell = this.grdResult.CurrentCell;
789 this.grdResult.Select(dgCell.RowNumber);
790
791 }
792
793 #endregion Event Handlers
794
795 #region Properties
796 /// <summary>
797 /// Gets the resource selected by the user
798 /// </summary>
799 public string SelectedResource
800 {
801 get
802 {
803 return this.m_sSelectedResource;
804 }
805 }
806
807 /// <summary>
808 /// Gets the date selected by the user
809 /// </summary>
810 public DateTime SelectedDate
811 {
812 get
813 {
814 return this.m_sSelectedDate;
815 }
816 }
817 #endregion Properties
818
819 }
820}
Note: See TracBrowser for help on using the repository browser.