Ejemplo n.º 1
0
        public void DeleteModuleGraphics(int orderPositionId)
        {
            var folderPath = new OrderImGraphicsFolderPathProvider(_positionImGraphicsFolderPathTemplate)
                             .GetByValue(orderPositionId);

            DirectoryInfo directoryInfo = new DirectoryInfo(folderPath);

            if (directoryInfo.Exists)
            {
                FileInfo[] existsFiles = directoryInfo.GetFiles();

                // Помечаем все файлы как удалённые.
                foreach (var fileInfo in existsFiles)
                {
                    var existsFilePathToDelete = new OrderImDeletedFileNameProvider(fileInfo.FullName)
                                                 .GetByValue(DateTime.Now);
                    File.Move(fileInfo.FullName, existsFilePathToDelete);
                }
            }
        }
Ejemplo n.º 2
0
        public void UpdateModuleGraphics(int orderPositionId, byte[] bytes, string fileName)
        {
            var updateDate = DateTime.Now;

            var folderPath = _orderImGraphicsFolderPathProvider.GetByValue(orderPositionId);

            DirectoryInfo directoryInfo = new DirectoryInfo(folderPath);

            if (directoryInfo.Exists)
            {
                FileInfo[] existsFiles = directoryInfo.GetFiles();

                // Проверяем, есть ли в папке файлы с таким же названием
                var updateFileInfo = existsFiles.Where(f => f.Name == fileName).SingleOrDefault();

                // Если файл с таким же названием не найден
                if (updateFileInfo == null)
                {
                    // Помечаем все файлы как удалённые.
                    foreach (var fileInfo in existsFiles)
                    {
                        var existsFilePathToDelete = new OrderImDeletedFileNameProvider(fileInfo.FullName)
                                                     .GetByValue(DateTime.Now);
                        File.Move(fileInfo.FullName, existsFilePathToDelete);
                    }

                    // Создаём новый файл
                    CreateModuleGraphics(orderPositionId, bytes, fileName);
                }
                else
                {
                    // Получаем временное название файла
                    var tmpFilePath = folderPath + "\\~" + updateFileInfo.Name;

                    File.WriteAllBytes(tmpFilePath, bytes);

                    var tmpFileInfo = new FileInfo(tmpFilePath);

                    if (FileComparer.FilesAreEqual_OneByte(updateFileInfo, tmpFileInfo))
                    {
                        File.Delete(tmpFilePath);
                        return;
                    }

                    var existsFilePathToDelete = new OrderImDeletedFileNameProvider(updateFileInfo.FullName)
                                                 .GetByValue(updateDate);
                    File.Move(updateFileInfo.FullName, existsFilePathToDelete);

                    File.Move(tmpFilePath, updateFileInfo.FullName);

                    // Помечаем все остальные файлы как удалённые.
                    var filesToDelete = existsFiles.Where(f => f.Name != fileName);

                    foreach (var fileInfo in filesToDelete)
                    {
                        var filePathToDelete = new OrderImDeletedFileNameProvider(fileInfo.FullName)
                                               .GetByValue(updateDate);
                        File.Move(fileInfo.FullName, filePathToDelete);
                    }
                }
            }
            else
            {
                CreateModuleGraphics(orderPositionId, bytes, fileName);
            }
        }