예제 #1
0
        private void butOK_Click(object sender, System.EventArgs e)
        {
            if (listOp.SelectedIndices.Count == 0)
            {
                MsgBox.Show(this, "Please select at least one operatory first.");
                return;
            }
            try{
                _schedCur.StartTime = DateTime.Parse(comboStart.Text).TimeOfDay;
                _schedCur.StopTime  = DateTime.Parse(comboStop.Text).TimeOfDay;
            }
            catch {
                MsgBox.Show(this, "Incorrect time format");
                return;
            }
            _schedCur.Note         = textNote.Text;
            _schedCur.BlockoutType = _listBlockoutCatDefs[listType.SelectedIndex].DefNum;
            _schedCur.Ops          = new List <long>();
            for (int i = 0; i < listOp.SelectedIndices.Count; i++)
            {
                _schedCur.Ops.Add(_listOps[listOp.SelectedIndices[i]].OperatoryNum);
            }
            List <Schedule> listOverlapSchedules;

            if (Schedules.Overlaps(_schedCur, out listOverlapSchedules))
            {
                if (!PrefC.GetBool(PrefName.ReplaceExistingBlockout) || !Schedules.IsAppointmentBlocking(_schedCur.BlockoutType))
                {
                    MsgBox.Show(this, "Blockouts not allowed to overlap.");
                    return;
                }
                if (!MsgBox.Show(this, MsgBoxButtons.OKCancel, "Creating this blockout will cause blockouts to overlap. Continuing will delete the existing "
                                 + "blockout(s). Continue?"))
                {
                    return;
                }
                Schedules.DeleteMany(listOverlapSchedules.Select(x => x.ScheduleNum).ToList());
            }
            try{
                if (IsNew)
                {
                    Schedules.Insert(_schedCur, true);
                    Schedules.BlockoutLogHelper(BlockoutAction.Create, _schedCur);
                }
                else
                {
                    Schedules.Update(_schedCur);
                    Schedules.BlockoutLogHelper(BlockoutAction.Edit, _schedCur);
                }
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message);
                return;
            }
            DialogResult = DialogResult.OK;
        }