public void Execute() { if (!viewModel.InspectionTestResults.All(x => x.Date.IsValid())) { notify.ShowInfo(Program.LanguageManager.GetString(StringResources.WrongDate), Program.LanguageManager.GetString(StringResources.Message_ErrorHeader)); log.Warn("Date limits not valid!"); return; } foreach (InspectionTestResult t in viewModel.InspectionTestResults) { if (t.Status != PartInspectionStatus.Pending && t.Inspectors.Count <= 0) { numberOfOperationWithoutInspectors++; } } if (numberOfOperationWithoutInspectors == 0) { try { viewModel.ConvertedPart.InspectionStatus = viewModel.ConvertedPart.GetPartInspectionStatus(); repo.BeginTransaction(); foreach (InspectionTestResult itr in viewModel.InspectionTestResults) { repo.SaveOrUpdate(itr); } repo.Commit(); foreach (InspectionTestResult itr in viewModel.InspectionTestResults) { repo.Evict(itr); } notify.ShowNotify(string.Concat(Program.LanguageManager.GetString(StringResources.PartInspection_InspectionsSaved), viewModel.SelectedElement.Number), Program.LanguageManager.GetString(StringResources.PartInspection_InspectionsSavedHeader)); log.Info(string.Format("The Inspection Test Results for entity #{0}, id:{1} has been saved in DB.", viewModel.SelectedElement.Number, viewModel.SelectedElement.Id)); } catch (RepositoryException ex) { log.Error(ex.Message); notify.ShowFailure(ex.InnerException.Message, ex.Message); } RefreshVisualStateEvent(); } else { notify.ShowError( Program.LanguageManager.GetString(StringResources.SelectInspectorsForTestResult), Program.LanguageManager.GetString(StringResources.SelectInspectorsForTestResultHeader)); numberOfOperationWithoutInspectors = 0; } }