Esempio n. 1
0
        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));
            }
        }
Esempio n. 3
0
        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);
        }