public void Checked(long fileId, string comments) { var file = GetFileById(fileId); if (file == null) { throw new ArgumentException(string.Format("Дело с идентификатором {0} не найдено", fileId)); } var status = FileStageService.GetStatusForStage(FileStages.Checked); if (status == null) { throw new ArgumentException(string.Format("Не определен статус для дел, переданных на проверку")); } file.CurrentStatus = status; var unit_of_work = UnitOfWorkProvider.GetUnitOfWork(); unit_of_work.BeginTransaction(); FileRepository.Update(file); FileStatusService.SetStatus(fileId, status.Id, DateTime.Now, comments); unit_of_work.Commit(); }
public IEnumerable <long> AcceptForControl(IEnumerable <long> file_ids) { //1. Проверяем право текущего пользователя принимать дела //2. Проверяем наличие статуса для дел, переданных на контроль //3. Формируем список дел (из переданных), которые еще не заняты другими контролерами //4. В одной транзакции принимает дел на контроль //1. var user = UserService.GetCurrentUser(); if (!user.IsController) { throw new DomainException("Текущий пользователь не имеет прав для приема дел"); } //2. var status = FileStageService.GetStatusForStage(FileStages.SendForControl); if (status == null) { throw new ArgumentException(string.Format("Не определен статус для дел, переданных на проверку")); } //3. List <File> free_files = new List <File>(); List <Int64> free_file_ids = new List <Int64>(); foreach (var id in file_ids) { var file = GetFileById(id); if (file.Controller == null) { free_files.Add(file); free_file_ids.Add(id); } } //4. var unit_of_work = UnitOfWorkProvider.GetUnitOfWork(); unit_of_work.BeginTransaction(); foreach (var file in free_files) { file.Controller = user; file.CurrentStatus = status; FileRepository.Update(file); FileStatusService.SetStatus(file.Id, status.Id, DateTime.Now, string.Empty); } unit_of_work.Commit(); return(free_file_ids); }
public long Add(ServiceAction action) { Debug.Assert(action.Type.NeedMakeFile); //Возраждение удаленного дела File file = FileRepository.GetByActionId(action.Id); if (file != null && file.IsDeleted) { file.IsDeleted = false; FileRepository.Update(file); return(file.Id); } //Создание нового дела var status = FileStageService.GetStatusForStage(FileStages.NewFile); if (status == null) { throw new DomainException(string.Format("Не определен статус для новых дел")); } file = new File { Caption = action.Customer, Date = action.Date, Expert = action.User, Ogv = action.Service.Organization, Action = action, CurrentStatus = status }; //операторные скобки UnitOfWork.BeginTransaction() and UnitOfWork.Commit() //не используем, поскольку предполагается использование этого метода //в уже созданнных FileRepository.Create(file); FileStatusService.SetStatus(file.Id, status.Id, DateTime.Now, string.Empty); return(file.Id); }