/// <summary>
        /// On save done
        /// </summary>
        /// <param name="sender">The parameter is not used.</param>
        /// <param name="e">The parameter is not used.</param>
        void Model_OnSaveCompleted(object sender, EventArgs e)
        {
            Refresh();
            CertificateViewModel model= sender as CertificateViewModel;

            bool canClose = (model.Certificate.CertificateStatusId == CertificateStatusEnum.Conform &&
                model.Certificate.WorkflowStatusId == WorkflowStatusEnum.Approved) ||
                (model.Certificate.CertificateStatusId == CertificateStatusEnum.NonConform &&
                model.Certificate.WorkflowStatusId == WorkflowStatusEnum.Closed);

            //Label is null when action is executed from grid.
            if (GridActionCompleted != null && (model.Label == null || model.IsNew || canClose))
                GridActionCompleted(sender, EventArgs.Empty);

            if (model.IsNew || canClose)
            {
                CertificateViewModel certificateViewModel = new CertificateViewModel();
                certificateViewModel.OnSaveCompleted += Model_OnSaveCompleted;
                certificateViewModel.Initialize(model.Certificate.CertificateId, string.IsNullOrEmpty(model.Certificate.Sequential) ? model.Certificate.ComdivNumber : model.Certificate.Sequential);
                CertificateEditionRequested(this, new ContextEditionEventArgs<CertificateViewModel>(certificateViewModel));
            }
        }
        /// <summary>
        /// Edit the selected certificate
        /// </summary>
        /// <param name="item">certificate item</param>
        private void EditCertificate(Certificate item)
        {
            if (CertificateEditionRequested != null)
            {
                CertificateViewModel certificateViewModel = new CertificateViewModel();
                certificateViewModel.OnSaveCompleted += Model_OnSaveCompleted;

                if (item.EntityState == EntityState.Detached)
                    certificateViewModel.InitializeNew(item);
                else
                    certificateViewModel.Initialize(item.CertificateId, string.IsNullOrEmpty(item.Sequential) ? item.ComdivNumber : item.Sequential);
                CertificateEditionRequested(this, new ContextEditionEventArgs<CertificateViewModel>(certificateViewModel));
            }
        }
 /// <summary>
 /// On done getting document
 /// </summary>
 /// <param name="operation">Operation result</param>
 private void GetDocumentDone(InvokeOperation<Document> operation)
 {
     HandleInvokeOperation(operation, () =>
     {
         CertificateViewModel certificateViewModel = new CertificateViewModel();
         certificateViewModel.Initialize(_context);
         certificateViewModel.Certificate = operation.UserState as Certificate;
         certificateViewModel.DisplayCertificateFile(operation.Value);
     });
 }
 void OnWindowsLoaded(object sender, RoutedEventArgs e)
 {
     _model = DataContext as CertificateViewModel;
     _model.DocumentEditionRequested += OnDocumentEditionRequested;
     _model.ReleaseNoteEditionRequested += OnReleaseNoteEditionRequested;
     _model.ActivateDocumentsTab += ModelActivateDocumentsTab;
     _model.ReadOnlyModeChanged += delegate
     {
         GridResults.Columns.GetByName("colEdit").Visibility = _model.IsUploadSuppDocumentsEnable ? Visibility.Visible : Visibility.Collapsed;
     };
     Loaded -= OnWindowsLoaded;
 }