Beispiel #1
0
        /// <summary>
        /// Добавляем операцию и предоперационный протокол
        /// </summary>
        /// <param name="toHospitalizationWorker"></param>
        /// <param name="fromOperationWorker"></param>
        /// <param name="toOperationWorker"></param>
        /// <param name="fromOperationProtocolWorker"></param>
        /// <param name="toOperationProtocolWorker"></param>
        /// <param name="fromOperationId"></param>
        /// <param name="toHospitalizationId"></param>
        public static void AddOperationAndProtocol(
            CHospitalizationWorker toHospitalizationWorker,
            COperationWorker fromOperationWorker,
            COperationWorker toOperationWorker,
            COperationProtocolWorker fromOperationProtocolWorker,
            COperationProtocolWorker toOperationProtocolWorker,
            int fromOperationId,
            int toHospitalizationId)
        {
            CHospitalization toHospitalization = toHospitalizationWorker.GetById(toHospitalizationId);

            var toOperation = new COperation(fromOperationWorker.GetById(fromOperationId))
            {
                Id                = toOperationWorker.GetNewID(),
                PatientId         = toHospitalization.PatientId,
                HospitalizationId = toHospitalizationId
            };

            toOperationWorker.Update(toOperation);

            // Добавляем предоперационный протокол
            toOperationProtocolWorker.GetByOperationId(toOperation.Id);
            var toOperationProtocol = new COperationProtocol(
                fromOperationProtocolWorker.GetByOperationId(fromOperationId))
            {
                OperationId = toOperation.Id
            };

            toOperationProtocolWorker.Update(toOperationProtocol);
        }
        /// <summary>
        /// Сохранение изменений при закрытие формы, если надо
        /// </summary>
        /// <param name="sender">Объект, пославший сообщение</param>
        /// <param name="e">Объект, содержащий данные посланного сообщения</param>
        private void OperationViewForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!_isFormClosingByButton)
            {
                DialogResult dialogResult = MessageBox.ShowDialog("Вы хотите сохранить изменения?", "Закрытие окна", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                if (dialogResult == DialogResult.Yes)
                {
                    _isNeedSaveData = true;
                }
                else if (dialogResult == DialogResult.No)
                {
                    _isNeedSaveData = false;
                }
                else
                {
                    e.Cancel = true;
                    return;
                }
            }

            _isFormClosingByButton = false;

            // Если все проверки при закрытии формы пройдены и форму закрыли с сохранением данных -
            // то сохраняем данные
            if (_isNeedSaveData)
            {
                _isNeedSaveData = false;

                if (IsFormHasEmptyNeededFields())
                {
                    MessageBox.ShowDialog("Поля, отмеченные звёздочкой, обязательны для заполнения", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    e.Cancel = true;
                    return;
                }

                if (_operationInfo.OpenedOperationProtocolForm != null &&
                    !_operationInfo.OpenedOperationProtocolForm.IsDisposed)
                {
                    MessageBox.ShowDialog("Вы не можете закрыть эту форму, пока не закроете форму \"Протокол операции\"", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    _operationInfo.OpenedOperationProtocolForm.Focus();
                    e.Cancel = true;
                    return;
                }

                try
                {
                    _operationWorker.Update(_operationInfo);

                    _hospitalizationViewForm.ShowOperations();
                }
                catch (Exception ex)
                {
                    MessageBox.ShowDialog(ex.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    e.Cancel = true;
                    return;
                }
            }
            else
            {
                try
                {
                    if (_action == AddUpdate.Add)
                    {
                        _operationWorker.Remove(_operationInfo.Id);
                    }
                    else
                    {
                        _operationInfo = new COperation(_saveOperationInfo);
                        _operationWorker.Update(_operationInfo);
                    }

                    _hospitalizationViewForm.ShowOperations();
                }
                catch (Exception ex)
                {
                    MessageBox.ShowDialog(ex.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            _configurationEngine.OperationViewFormLocation = Location;
        }