Esempio n. 1
0
        private void CopyOrMove(String fileFullPath, String targetFile, String hash)
        {
            try
            {
                File.Copy(fileFullPath, targetFile, true);

                using (OrganizerDatabaseContext context = new OrganizerDatabaseContext())
                {
                    bool retain = true;
                    if (!bool.TryParse(archive.retain, out retain))
                    {
                        retain = true;
                    }

                    MediaFile mediaFile = new MediaFile();
                    mediaFile.ArchiveDateTime  = DateTime.UtcNow;
                    mediaFile.ContentHash      = hash;
                    mediaFile.CreatedDateTime  = DateTime.UtcNow;
                    mediaFile.MarkForDelete    = retain;
                    mediaFile.OriginalFileName = fileFullPath;
                    mediaFile.TargetFileName   = targetFile;

                    context.MediaFiles.Add(mediaFile);

                    context.SaveChanges();
                }
            }
            catch { }
        }
Esempio n. 2
0
        public static void DeleteByHash(String hash)
        {
            using (OrganizerDatabaseContext context = new OrganizerDatabaseContext())
            {
                var file = context.MediaFiles.SingleOrDefault(s => s.ContentHash == hash);

                if(file != null)
                {
                    context.MediaFiles.Remove(file);
                    context.SaveChanges();
                }
            }
        }
Esempio n. 3
0
        public static void DeleteByHash(String hash)
        {
            using (OrganizerDatabaseContext context = new OrganizerDatabaseContext())
            {
                var file = context.MediaFiles.SingleOrDefault(s => s.ContentHash == hash);

                if (file != null)
                {
                    context.MediaFiles.Remove(file);
                    context.SaveChanges();
                }
            }
        }
Esempio n. 4
0
        private static void Archive(String file, DateTime createTime, Archive archive)
        {
            String ext        = Path.GetExtension(file);
            String folder     = createTime.GetFolderName();
            String targetDir  = Path.Combine(archive.DestinationFullPath, folder);
            String targetFile = Path.Combine(targetDir,
                                             $"{createTime.ToString("MM-dd-yyyy")}_{DateTime.UtcNow.Ticks.ToString()}{ext}");

            MD5 hasher = MD5.Create();

            // Copy the file if it doesnt already exist.
            try
            {
                // We might need to create the directory.
                CreateDirectory(targetDir);

                String hash = null;
                using (FileStream stream = File.OpenRead(file))
                {
                    hash = Convert.ToBase64String(hasher.ComputeHash(stream));
                }

                // Does this file already exist in the databse?
                if (!MediaFile.Exists(hash))
                {
                    using (OrganizerDatabaseContext context = new OrganizerDatabaseContext())
                    {
                        MediaFile mediaFile = new MediaFile();
                        mediaFile.ArchiveDateTime  = mediaFile.CreatedDateTime = DateTime.UtcNow;
                        mediaFile.ContentHash      = hash;
                        mediaFile.OriginalFileName = file;
                        mediaFile.TargetFileName   = targetFile;

                        context.MediaFiles.Add(mediaFile);

                        context.SaveChanges();
                    }
                }
                else
                {
                    // Overwrite it if we can.
                    MediaFile existingFile = MediaFile.GetByHash(hash);

                    if (existingFile != null) // Should never be the case.
                    {
                        if (!File.Exists(existingFile.TargetFileName))
                        {
                            targetFile = existingFile.TargetFileName;
                        }
                        else
                        {
                            Console.WriteLine($"Skipping: {file}.");
                        }
                    }
                }

                // Copy it over.
                try
                {
                    Console.WriteLine($"Archiving: {file}.");
                    File.Copy(file, targetFile);
                }
                catch
                {
                    // Delete the media file if we couldnt copy it over.
                    MediaFile.DeleteByHash(hash);
                }
            }
            catch (Exception e)
            {
            }
        }