void Dump(PipeObject pipeObj, Guid portionId, string tempDir) { Conflict conflict = new Conflict(); conflict.PortionID = portionId; conflict.Pipe = pipeObj; Data conflictData = new Data(); conflictData.Pipes = new List <PipeObject>(); conflictData.Pipes.Add(pipeObj); ConflictFileName f = new ConflictFileName(pipeObj.Id.ToString(), pipeObj.Number); string fileFolder = f.FolderName; string conflictDir = Path.Combine(Directories.Conflicts, fileFolder); string fileName = f.FileName; DirectoryInfo directoryInfo = new DirectoryInfo(conflictDir); if (!Directory.Exists(conflictDir)) { Directory.CreateDirectory(conflictDir); } else { foreach (FileInfo file in directoryInfo.GetFiles()) { file.Delete(); } } string dumpFilePath = Path.Combine(conflictDir, fileName); WriteManifest(conflictDir, manifest.PortionID, manifest.PortionNumber, manifest.ExportDateTime, manifest.WorkstationType); if (System.IO.File.Exists(dumpFilePath)) { System.IO.File.Delete(dumpFilePath); } string attDir = Path.Combine(conflictDir, "Attachments"); if (pipeObj.Attachments != null && pipeObj.Attachments.Count > 0) { if (!Directory.Exists(attDir)) { Directory.CreateDirectory(attDir); foreach (var file in pipeObj.Attachments) { string attPathInTemp = Path.Combine(tempDir, "Attachments", file.NewName); string targetPath = Path.Combine(attDir, file.NewName); System.IO.File.Copy(attPathInTemp, targetPath, true); } } } WriteData <Data>(conflictDir, conflictData, fileName); }
public override void LoadNotifications() { notifications.Clear(); string conflictDir = Path.Combine(System.Environment.CurrentDirectory, "Conflicts"); var dir = new DirectoryInfo(conflictDir); // папка с файлами DirectoryInfo dInfo = new DirectoryInfo(conflictDir); DirectoryInfo[] subdirs = dInfo.GetDirectories(); foreach (DirectoryInfo d in subdirs) { string fileName = d.Name; ConflictFileName f = new ConflictFileName(fileName); string pipeNumber = f.PipeNumber; notifications.Add(new Notification(Guid.Empty, pipeNumber, TypeNotification.PostponeConflict, pipeNumber, DateTime.Now.Date, fileName)); } }
private IList <Pipe> ImportPipes(Manifest manifest, List <PipeObject> pipes, string tempDir) { IList <Pipe> importedPipes = new List <Pipe>(); const int PROGRESS_RANGE = 30; if (pipes.Count == 0) { progress += PROGRESS_RANGE; FireProgress(progress); return(importedPipes); } int step = PROGRESS_RANGE / pipes.Count; ConflictDecision decision = ConflictDecision.Undefined; bool forAll = false; if (currentStation == WorkstationType.Master && importedStation == WorkstationType.Construction) { decision = ConflictDecision.Replace; forAll = true; } Project currentProject = importRepo.ProjectRepo.GetSingle(); foreach (var pipeObj in pipes) { FireMessage(string.Format(progressMessage, elements--, elementsAll, Program.LanguageManager.GetString(StringResources.PartTypePipe))); Pipe pipe = importRepo.PipeRepo.Get(pipeObj.Id); if (pipe == null) { pipe = new Pipe(); MapSerializableEntityToPipe(tempDir, pipeObj, pipe); pipe.ToExport = currentProject.WorkstationType == WorkstationType.Master && manifest.WorkstationType == WorkstationType.Mill; importRepo.PipeRepo.Save(pipe); importedPipes.Add(pipe); progress += step; FireProgress(progress); } else { if (decision == ConflictDecision.Undefined || !forAll) { ConflictEventArgs args = new ConflictEventArgs(); args.Message = string.Format(Program.LanguageManager.GetString(StringResources.Import_Conflict), pipeObj.Number); FireConflict(args); decision = args.Decision; forAll = args.ForAll; } ConflictFileName f = new ConflictFileName(pipeObj.Id.ToString(), pipeObj.Number); string folderName = f.FolderName; string conflictDir = Path.Combine(Directories.Conflicts, folderName); switch (decision) { case ConflictDecision.Skip: if (Directory.Exists(conflictDir)) { Directory.Delete(conflictDir, true); } break; case ConflictDecision.Replace: Pipe existingPipe = importRepo.PipeRepo.Get(pipeObj.Id); if (afterConflict) { MapSerializableEntityToPipe(conflictDir, pipeObj, existingPipe); } else { MapSerializableEntityToPipe(tempDir, pipeObj, existingPipe); } importRepo.PipeRepo.SaveOrUpdate(existingPipe); importedPipes.Add(existingPipe); if (Directory.Exists(conflictDir)) { Directory.Delete(conflictDir, true); } break; case ConflictDecision.Postpone: Dump(pipeObj, manifest.PortionID, tempDir); break; } NotificationService.Instance.PostponeConflictManager.RefreshNotifications(); progress += step; FireProgress(progress); } } return(importedPipes); }