public ProtocolViolationViewModel(IRepository repository, ProtocolViolationModel violation) : base(repository)
 {
     if (violation == null)
     {
         throw new ArgumentNullException("violation");
     }
     _violation       = violation;
     base.DisplayName = (IsNewRecord)?Strings.ProtocolViolationVM_Register:Strings.ProtocolViolationVM_Edit;
     SaveCmd          = new RelayCommand(Save, param => WasValidOnLastNotify && _isRecordAltered);
 }
        public bool OkToProceed()
        {
            if (_isRecordAltered)
            {
                string           title;
                string           msg;
                MessageBoxButton buttonOptions;
                if (IsValid())
                {
                    title         = Strings.ParticipantUpdateVM_Confirm_SaveChanges_Title;
                    msg           = Strings.ParticipantUpdateVM_Confirm_SaveChanges;
                    buttonOptions = MessageBoxButton.YesNoCancel;
                }
                else
                {
                    title         = Strings.ParticipantUpdateVM_Confirm_Close_Title;
                    msg           = Strings.ParticipantUpdateVM_Confirm_Close;
                    buttonOptions = MessageBoxButton.OKCancel;
                }
                MessageBoxResult result = MessageBox.Show(
                    msg,
                    title,
                    buttonOptions,
                    MessageBoxImage.Question);
                switch (result)
                {
                case MessageBoxResult.Yes:
                    Save(null);
                    break;

                case MessageBoxResult.Cancel:
                    return(false);

                case MessageBoxResult.No:
                    if (!IsNewRecord)
                    {
                        _violation = Mapper.Map <ProtocolViolationModel>(_repository.FindViolation(_violation.Id));
                        NotifyPropertyChanged("Details", "AbbrevDetails", "MajorViolation", "SeverityDescription");
                    }
                    break;

                default:     //OK in Proceed
                    break;
                }
            }
            // Yes, OK or No
            return(true);
        }
        void ShowProtocolViolation(object param)
        {
            var viol = new ProtocolViolationModel
            {
                Participant = SelectedParticipant.ParticipantModel
            };
            var violVM   = new ProtocolViolationViewModel(_repository, viol);
            var violView = new ProtocolViolationView(violVM);

            EventHandler violCloseHandler = null;

            violCloseHandler = delegate
            {
                violView.Close();
                violVM.RequestClose -= violCloseHandler;
            };

            violVM.RequestClose += violCloseHandler;
            violView.ShowDialog();
        }