| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | 
							- using InABox.Core;
 
- using InABox.Wpf;
 
- using NPOI.HPSF;
 
- using System;
 
- using System.IO;
 
- using System.Reactive;
 
- using System.Windows;
 
- using InABox.WPF;
 
- using InABox.Clients;
 
- using System.Linq;
 
- using System.Diagnostics.CodeAnalysis;
 
- namespace InABox.DynamicGrid
 
- {
 
-     /// <summary>
 
-     ///     Interaction logic for DocumentConfirm.xaml
 
-     /// </summary>
 
-     public partial class DocumentConfirm : ThemableWindow
 
-     {
 
-         public DocumentConfirm()
 
-         {
 
-             InitializeComponent();
 
-         }
 
-         public string FileName { get; set; }
 
-         public DateTime LocalTimeStamp { get; set; }
 
-         public DateTime RemoteTimeStamp { get; set; }
 
-         public int LocalSize { get; set; }
 
-         public int RemoteSize { get; set; }
 
-         public DocumentAction Result { get; set; }
 
-         private void Window_Loaded(object sender, RoutedEventArgs e)
 
-         {
 
-             Header.Content = string.Format("A file named [{0}] already exists on the server!", FileName);
 
-             NewTimeStamp.Content = string.Format("{0:dd MMM yy HH:mm:ss}", LocalTimeStamp);
 
-             OldTimeStamp.Content = string.Format("{0:dd MMM yy HH:mm:ss}", RemoteTimeStamp);
 
-             OldSize.Content = string.Format("{0:n0}", RemoteSize);
 
-             NewSize.Content = string.Format("{0:n0}", LocalSize);
 
-             Result = DocumentAction.MakeCopy;
 
-         }
 
-         private void ReplaceButton_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             Result = DocumentAction.Replace;
 
-             DialogResult = true;
 
-             Close();
 
-         }
 
-         private void ExistingButton_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             Result = DocumentAction.UseExisting;
 
-             DialogResult = true;
 
-             Close();
 
-         }
 
-         private void MakeCopyButton_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             Result = DocumentAction.MakeCopy;
 
-             DialogResult = true;
 
-             Close();
 
-         }
 
-         private void CancelButton_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             DialogResult = false;
 
-             Close();
 
-         }
 
-         public static Document? CheckDocument(Document newDocument, Func<string, Document?>? findDocument, out bool shouldSave)
 
-         {
 
-             Document? existing = null;
 
-             
 
-             using (new WaitCursor())
 
-                 existing = findDocument?.Invoke(newDocument.FileName);
 
-             
 
-             if (existing != null)
 
-             {
 
-                 if ((existing.TimeStamp == DateTime.MinValue || existing.TimeStamp.ToString("yyyy-MM-ddThh:mm.ss.fff")
 
-                         .Equals(newDocument.TimeStamp.ToString("yyyy-MM-ddThh:mm.ss.fff"))) && existing.CRC.Equals(newDocument.CRC))
 
-                 {
 
-                     if (existing.TimeStamp == DateTime.MinValue)
 
-                     {
 
-                         existing.TimeStamp = newDocument.TimeStamp;
 
-                         shouldSave = true;
 
-                     }
 
-                     else
 
-                     {
 
-                         shouldSave = false;
 
-                     }
 
-                     return existing;
 
-                 }
 
-                 else
 
-                 {
 
-                     var confirm = new DocumentConfirm
 
-                     {
 
-                         FileName = newDocument.FileName,
 
-                         LocalSize = newDocument.Data.Length,
 
-                         RemoteSize = existing.Data.Length,
 
-                         LocalTimeStamp = newDocument.TimeStamp,
 
-                         RemoteTimeStamp = existing.TimeStamp
 
-                     };
 
-                     if (confirm.ShowDialog() == true)
 
-                     {
 
-                         if (confirm.Result == DocumentAction.Replace)
 
-                         {
 
-                             existing.Data = newDocument.Data;
 
-                             existing.TimeStamp = newDocument.TimeStamp;
 
-                             existing.CRC = newDocument.CRC;
 
-                             shouldSave = true;
 
-                             return existing;
 
-                         }
 
-                         else if (confirm.Result == DocumentAction.UseExisting)
 
-                         {
 
-                             shouldSave = false;
 
-                             return existing;
 
-                         }
 
-                         else if (confirm.Result == DocumentAction.MakeCopy)
 
-                         {
 
-                             using (new WaitCursor())
 
-                             {
 
-                                 var basefilename = Path.GetFileNameWithoutExtension(newDocument.FileName);
 
-                                 var ext = Path.GetExtension(newDocument.FileName);
 
-                                 var i = 0;
 
-                                 while (existing is not null)
 
-                                 {
 
-                                     i++;
 
-                                     newDocument.FileName = Path.ChangeExtension(string.Format("{0} ({1})", basefilename, i), ext);
 
-                                     existing = findDocument?.Invoke(newDocument.FileName);
 
-                                 }
 
-                             }
 
-                             shouldSave = true;
 
-                             return newDocument;
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 shouldSave = true;
 
-                 return newDocument;
 
-             }
 
-             shouldSave = false;
 
-             return null;
 
-         }
 
-     }
 
- }
 
 
  |