public override void Save() { if (docControl == null || !docControl.ImageDisplayed || ServerInfo == null) { return; } string oldFileName; TmpFile tf = null; // Добавил сохранения изменений изображения из факса. if (IsFax() && docControl.Modified) { oldFileName = Path.Combine(Path.GetTempPath(), Path.GetTempFileName()); if (!docControl.SaveAs(oldFileName)) { return; } } else { tf = Environment.GetTmpFileByKey(docControl.FileName); oldFileName = docControl.FileName; if (tf != null && tf.CurAct == Environment.ActionBefore.Save) { if (!File.Exists(tf.TmpFullName)) { docControl.SaveToTmpCopy(docControl.FileName, tf.TmpFullName, docControl.IsPDFMode); } oldFileName = tf.TmpFullName; } } if (Environment.DocToSave.ContainsKey(oldFileName)) { Form dialog = Environment.DocToSave[oldFileName] as Form; if (dialog != null) { dialog.BringToFront(); dialog.Activate(); } } else { if (File.Exists(oldFileName)) { Environment.DocToSave.TryAdd(oldFileName, null); Form findForm = docControl.FindForm(); if (findForm != null && findForm.InvokeRequired) { findForm.Invoke((MethodInvoker)(delegate { Dialogs.AddDBDocDialog dialog = new Dialogs.AddDBDocDialog(serverInfo, Dialogs.AddDBDocDialog.TypeSave.SaveAll, RetrieveScanDate(), IsFax(), ID, docControl.CurDocString, //GetStringToSave(), IsFax(), IsScaner(), oldFileName, saveFaxInfo, null, IsPdf, docControl.PageCount); Environment.DocToSave.TryUpdate(oldFileName, dialog, null); if (tf == null || tf.CurAct == Environment.ActionBefore.Save) { if (tf == null) { tf = Environment.GetTmpFile(oldFileName); } if (tf != null) { tf.LinkCnt++; } } dialog.DialogEvent += dialog_DialogEvent; dialog.Show(); })); } else { Dialogs.AddDBDocDialog dialog = new Dialogs.AddDBDocDialog(serverInfo, Dialogs.AddDBDocDialog.TypeSave.SaveAll, RetrieveScanDate(), IsFax(), ID, docControl.CurDocString, //GetStringToSave(), IsFax(), IsScaner(), oldFileName, saveFaxInfo, null, IsPdf, docControl.PageCount); Environment.DocToSave.TryUpdate(oldFileName, dialog, null); if (tf == null || tf.CurAct == Environment.ActionBefore.Save) { if (tf == null) { tf = Environment.GetTmpFile(oldFileName); } if (tf != null) { tf.LinkCnt++; } } dialog.DialogEvent += dialog_DialogEvent; dialog.Show(); } } } }
private void dialog_DialogEvent(object source, DialogEventArgs e) { Dialogs.AddDBDocDialog dialog = e.Dialog as Dialogs.AddDBDocDialog; if (dialog == null) { return; } Form form; Document.Objects.TmpFile tf = null; if (!string.IsNullOrEmpty(dialog.OldFileName)) { Environment.DocToSave.TryRemove(dialog.OldFileName, out form); tf = Environment.GetTmpFileByValue(dialog.OldFileName); } switch (dialog.DialogResult) { case DialogResult.Yes: case DialogResult.Retry: case DialogResult.OK: { int docID = dialog.DocID; int imageID = dialog.ImageID; Console.WriteLine("{0}: DocID: {1} ImageID: {2}", DateTime.Now.ToString("HH:mm:ss fff"), docID, imageID); if (docID > 0 && imageID > 0) { bool work = dialog.DialogResult != DialogResult.Yes; if (work && dialog.AddToWork) { Console.WriteLine("{0}: Add to Work", DateTime.Now.ToString("HH:mm:ss fff")); Environment.WorkDocData.AddDocToEmployee(docID, Environment.CurEmp.ID); } DocumentSavedEventArgs doc = new DocumentSavedEventArgs(docID, imageID, work && dialog.GotoDoc, work && dialog.CreateEForm, dialog.CreateSlaveEForm); if (work) { force = !dialog.AddToWork; sendMail = dialog.SendMessage && !dialog.CreateSlaveEForm; parentDocIDs = dialog.ParentDocIDs; childDocIDs = dialog.ChildDocIDs; sendString = GetStringToSave(); if (dialog.NeedOpenDoc) { Environment.OnNewWindow(this, doc); } Send(dialog.DocID); } Console.WriteLine("{0}: Save event", DateTime.Now.ToString("HH:mm:ss fff")); OnDocumentSaved(doc); Console.WriteLine("{0}: event", DateTime.Now.ToString("HH:mm:ss fff")); } } if (tf != null && tf.Window != null) { tf.AscBeforeClose = false; tf.Window.Close(); } break; } if (tf != null) { tf.CurAct = Environment.ActionBefore.None; tf.LinkCnt--; } }