/// <summary> /// Метод создает в БД новое обследование /// </summary> private IExamination CreateNewExamination(IObjectSpace os, IPatient patient, Guid id, ExaminationType type = null, bool allowEmptyFile = false) { IExamination examination = os.CreateObject<IExamination>(); examination.ExaminationSoftType = os.FindObject<ExaminationSoftType>(CriteriaOperator.Parse("ExaminationSoftTypeId = ?", id)); examination.Patient = os.GetObject<IPatient>(patient); examination.AllowEmptyOrNotExistsFile = allowEmptyFile; examination.TimeStart = DateTime.Now; // Создается новое обследование поэтому файла еще нет if (examination.ExaminationFile == null) { // заводим в базе файл //examination.ExaminationFile = os.CreateObject<FileSystemStoreObject>(); examination.ExaminationFile = os.CreateObject<ExaminationFile>(); examination.ExaminationFile.OwnerId = (examination as DevExpress.ExpressApp.DC.DCBaseObject).Oid; if (type != null) { examination.ExaminationType = os.GetObjectByKey<ExaminationType>(type.Oid); //FindObject<ExaminationType>(CriteriaOperator.Parse("ExaminationTypeId = ?", type.)); } // Применяем изменения os.CommitChanges(); if (String.IsNullOrEmpty(examination.ObjectCode) == false) { string fileName = examination.ObjectCode; string fileExtension = examination.ExaminationSoftType.ExaminationFileExtension; examination.ExaminationFile.FileName = Converters.GetFileNameWithoutInvalidChars(fileName, fileExtension); } else throw new Exception("Examination invalid params"); } os.CommitChanges(); // здесь создается пустой файл обследования while (os.IsCommitting) { Thread.Sleep(1000); } // ждем пока применятся изменения, не знаю зачем... //// Заполняем созданный файл заключения //// !!! ЗАПОЛНЯТЬ ЗАКЛЮЧЕНИЕ ПРИ СОЗДАНИИ НЕ НАДО !!! //ConclusionViewController conclusionController = Frame.GetController<ConclusionViewController>(); //if (conclusionController != null) //{ // conclusionController.PopulateConclusionFile(examination); //} return examination; }
/// <summary> /// Метод запускает новое обследование /// </summary> /// <param name="module"></param> /// <param name="examination"></param> /// <param name="patient"></param> protected void NewExaminationExecute(IDynamicModule module, Guid id, IPatient patient, ExaminationType type = null, bool block = false) { ExecuteCommand command = ExecuteCommand.New; // Проверяем готовность модуля if (ModuleIsReady(module, id, command) == false) return; // Получаем представление содержащие объекты IExamination ListView list = GetListViewFromControllerByType(this, typeof(IExamination)); // Получаем объектное пространство для данного представления IObjectSpace os = list.ObjectSpace; bool allowEmpty = (bool)module.DoVerb(VerboseCommand.AllowEmptyFile); // Создаем новое обследование IExamination examination = CreateNewExamination(list.ObjectSpace, patient, id, type, allowEmpty); ExecuteModule(module, command, os, examination); // переводим фокус на новый объект int count = list.CollectionSource.List.Count - 1; if (count > 0) list.CurrentObject = list.CollectionSource.List[count]; //list.ObjectSpace.Refresh(); // Блокируем доступ в БД если надо if (block == true) { WindowsFormsModule owner = Application.Modules.FirstOrDefault(form => form is WindowsFormsModule) as WindowsFormsModule; //owner.BlockingAccessToDatabase(module, context); } }