320 lines
12 KiB
VB.net
320 lines
12 KiB
VB.net
Imports System.ComponentModel
|
|
Imports DevExpress.Utils.Drawing
|
|
Imports DevExpress.Utils.Svg
|
|
Imports DevExpress.XtraEditors
|
|
Imports DevExpress.XtraGrid
|
|
Imports DevExpress.XtraGrid.Views.Grid
|
|
Imports DevExpress.XtraSplashScreen
|
|
Imports DigitalData.Modules.Logging
|
|
Imports EnvelopeGenerator.Common
|
|
Imports EnvelopeGenerator.Common.Constants
|
|
Imports EnvelopeGenerator.Common.My
|
|
|
|
Partial Public Class frmEnvelopeEditor
|
|
Public Property Envelope As Envelope
|
|
Public Property Documents As New BindingList(Of EnvelopeDocument)
|
|
Public Property Receivers As New BindingList(Of EnvelopeReceiver)
|
|
|
|
Private Controller As EnvelopeEditorController
|
|
Private Logger As Logger
|
|
|
|
Public Property State As State
|
|
|
|
Public Sub New()
|
|
InitializeComponent()
|
|
End Sub
|
|
|
|
Private Sub btnNewFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnNewFile.ItemClick
|
|
|
|
' prüfen ob es schon eine Datei gibt
|
|
If Documents.Count > 0 Then
|
|
MsgBox(Resources.Envelope.Only_one_file_is_allowed, MsgBoxStyle.Information, Text)
|
|
Return
|
|
End If
|
|
|
|
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
|
|
Dim oDocument = Controller.CreateDocument(OpenFileDialog1.FileName)
|
|
|
|
If oDocument IsNot Nothing Then
|
|
Documents.Add(oDocument)
|
|
Else
|
|
MsgBox(Resources.Envelope.Document_Could_Not_Be_Saved, MsgBoxStyle.Critical, Text)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub frmEditor_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
Logger = State.LogConfig.GetLogger()
|
|
Me.Text = State.DbConfig.ExternalProgramName + " - Umschlag-Editor"
|
|
|
|
If Envelope Is Nothing Then
|
|
Controller = New EnvelopeEditorController(State)
|
|
|
|
' Get additional data
|
|
Dim oDataForm As New frmEnvelopeMainData() With {.State = State, .NewEnvelopeMode = True}
|
|
Dim oResult As DialogResult = oDataForm.ShowDialog()
|
|
If oResult = DialogResult.OK Then
|
|
Controller.Envelope.Title = oDataForm.EnvelopeTitle
|
|
Controller.Envelope.ContractType = oDataForm.EnvelopeContractType
|
|
Else
|
|
Me.Close()
|
|
End If
|
|
Else
|
|
Controller = New EnvelopeEditorController(State, Envelope)
|
|
Documents = New BindingList(Of EnvelopeDocument)(Controller.Envelope.Documents)
|
|
Receivers = New BindingList(Of EnvelopeReceiver)(Controller.Envelope.Receivers)
|
|
|
|
For Each docItem As EnvelopeDocument In Documents
|
|
If docItem.Thumbnail Is Nothing Then
|
|
docItem.Thumbnail = Controller.CreateThumbnail(docItem.Filepath)
|
|
End If
|
|
Next
|
|
|
|
If Envelope.Status = Constants.EnvelopeStatus.Sent Then
|
|
' TODO - Nach Testen
|
|
' SetFormReadonly()
|
|
End If
|
|
End If
|
|
|
|
txtMessage.EditValue = Controller.Envelope.Message
|
|
txtSubject.EditValue = Controller.Envelope.Subject
|
|
|
|
GridDocuments.DataSource = Documents
|
|
GridReceivers.DataSource = Receivers
|
|
End Sub
|
|
|
|
Private Sub SetFormReadonly()
|
|
RibbonPageGroup1.Enabled = False
|
|
RibbonPageGroup2.Enabled = False
|
|
RibbonPageGroup3.Enabled = False
|
|
RibbonPageGroup5.Enabled = False
|
|
btnEditFields.Enabled = False
|
|
txtSubject.Properties.ReadOnly = True
|
|
txtMessage.Properties.ReadOnly = True
|
|
ViewReceivers.OptionsBehavior.ReadOnly = True
|
|
ViewDocuments.OptionsBehavior.ReadOnly = True
|
|
End Sub
|
|
|
|
Private Sub frmEnvelopeEditor_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
|
Controller.CleanupEnvelope()
|
|
End Sub
|
|
|
|
Private Sub btnDeleteFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnDeleteFile.ItemClick
|
|
If ViewDocuments.GetSelectedRows().Count > 0 Then
|
|
Dim oDocument As EnvelopeDocument = DirectCast(ViewDocuments.GetFocusedRow(), EnvelopeDocument)
|
|
If Controller.DeleteDocument(oDocument) Then
|
|
Documents.Remove(oDocument)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSave.ItemClick
|
|
Try
|
|
SaveEnvelopeWithOutValidation()
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnEditFields_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnEditFields.ItemClick
|
|
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
|
|
|
Try
|
|
If SaveEnvelopeWithReceiverDocumentValidation() = False Then
|
|
Return
|
|
End If
|
|
|
|
If ViewDocuments.GetSelectedRows().Count > 0 Then
|
|
Dim oDocument As EnvelopeDocument = DirectCast(ViewDocuments.GetFocusedRow(), EnvelopeDocument)
|
|
Dim oGDPictureKey As String = "21182889975216572111813147150675976632"
|
|
|
|
Dim oForm As New frmFieldEditor() With {
|
|
.Document = Controller.Envelope.Documents.
|
|
Where(Function(d) d.Filename = oDocument.Filename).
|
|
SingleOrDefault(),
|
|
.GDPictureKey = oGDPictureKey,
|
|
.Receivers = Receivers.ToList,
|
|
.State = State
|
|
}
|
|
oForm.ShowDialog()
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
Finally
|
|
SplashScreenManager.CloseOverlayForm(oHandle)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Function SaveEnvelopeWithValidation() As Boolean
|
|
Return SaveEnvelope(True)
|
|
End Function
|
|
|
|
Private Function SaveEnvelopeWithOutValidation() As Boolean
|
|
Return SaveEnvelope(False)
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Speichert den Envelope und prüft
|
|
''' ob Receiver und Dokument vorhanden ist.
|
|
''' </summary>
|
|
Private Function SaveEnvelopeWithReceiverDocumentValidation() As Boolean
|
|
|
|
If SaveEnvelope(False) = True Then
|
|
Dim oEnvelope = Controller.Envelope
|
|
Dim oErrors = oEnvelope.ValidateReceiverDocumentData()
|
|
If oErrors.Any Then
|
|
ShowValidationErrors(Resources.Envelope.Errors_when_saving_the_envelope, oErrors)
|
|
Return False
|
|
End If
|
|
Else
|
|
Return False
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Function SaveEnvelope(pWithValidation As Boolean) As Boolean
|
|
Dim oSubject = GetEditValueFromTextControl(txtSubject)
|
|
Dim oMessage = GetEditValueFromTextControl(txtMessage)
|
|
|
|
' Ensure all receivers are saved
|
|
ViewReceivers.CloseEditor()
|
|
|
|
Dim oEnvelope = Controller.Envelope
|
|
oEnvelope.Subject = oSubject
|
|
oEnvelope.Message = oMessage
|
|
oEnvelope.Receivers = Receivers.ToList
|
|
oEnvelope.Documents = Documents.ToList
|
|
|
|
If pWithValidation = True Then
|
|
Dim oErrors = oEnvelope.Validate()
|
|
If oErrors.Any Then
|
|
ShowValidationErrors(Resources.Envelope.Errors_when_saving_the_envelope, oErrors)
|
|
Return False
|
|
End If
|
|
End If
|
|
|
|
If Controller.CreateEnvelopeReceivers(oEnvelope.Receivers) = False Then
|
|
MsgBox(Resources.Envelope.Error_when_saving_the_recipients, MsgBoxStyle.Critical, Text)
|
|
Return False
|
|
End If
|
|
|
|
If Controller.SaveEnvelope() = False Then
|
|
MsgBox(Resources.Envelope.Error_when_saving_the_envelope, MsgBoxStyle.Critical, Text)
|
|
Return False
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
Private Function GetEditValueFromTextControl(pControl As TextEdit) As String
|
|
If pControl.EditValue Is Nothing Then
|
|
Return String.Empty
|
|
Else
|
|
Return pControl.EditValue.ToString
|
|
End If
|
|
End Function
|
|
|
|
Private Sub ShowValidationErrors(pErrorTitle As String, pErrors As List(Of String))
|
|
Dim oError = pErrorTitle & vbNewLine & vbNewLine & String.Join(vbNewLine, pErrors)
|
|
MsgBox(oError, MsgBoxStyle.Exclamation, Text)
|
|
End Sub
|
|
|
|
Private Sub btnDeleteReceiver_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnDeleteReceiver.ItemClick
|
|
If ViewReceivers.SelectedRowsCount = 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oReceiver As EnvelopeReceiver = ViewReceivers.GetFocusedRow()
|
|
|
|
If oReceiver Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oMessage = Resources.Envelope.Do_you_want_to_delete_the_selected_recipient
|
|
If Controller.ElementsExist(oReceiver.Id) Then
|
|
oMessage = "Es gibt für diesen Empfänger bereits Elemente. Wollen Sie den Empfänger trotzdem löschen?"
|
|
End If
|
|
|
|
If MsgBox(oMessage, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) = MsgBoxResult.No Then
|
|
Exit Sub
|
|
End If
|
|
|
|
If Controller.DeleteReceiver(oReceiver) Then
|
|
Receivers.Remove(oReceiver)
|
|
Else
|
|
MsgBox(Resources.Envelope.Recipient_could_not_be_deleted, MsgBoxStyle.Critical, Text)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub btnSendEnvelope_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSendEnvelope.ItemClick
|
|
If Controller.Envelope.Status = Constants.EnvelopeStatus.Sent Then
|
|
MsgBox(Resources.Envelope.Envelope_already_sent, MsgBoxStyle.Information, Text)
|
|
Exit Sub
|
|
End If
|
|
|
|
If SaveEnvelopeWithValidation() = False Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oErrors = Controller.ValidateEnvelopeForSending()
|
|
If oErrors.Any() Then
|
|
ShowValidationErrors(Resources.Envelope.Error_sending_the_envelope, oErrors)
|
|
Exit Sub
|
|
End If
|
|
|
|
If Controller.SendEnvelope() = False Then
|
|
MsgBox(Resources.Envelope.Envelope_could_not_be_sent, MsgBoxStyle.Critical, Text)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnCancel_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnCancel.ItemClick
|
|
' Speichern?
|
|
Dim oMessage = Resources.Envelope.Should_The_Envelope_Be_Saved
|
|
If MsgBox(oMessage, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) = MsgBoxResult.Yes Then
|
|
SaveEnvelope(False)
|
|
End If
|
|
|
|
' Schließen
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub btnEditData_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnEditData.ItemClick
|
|
Dim oForm As New frmEnvelopeMainData() With
|
|
{
|
|
.State = State,
|
|
.EnvelopeTitle = Controller.Envelope.Title,
|
|
.EnvelopeContractType = Controller.Envelope.ContractType,
|
|
.NewEnvelopeMode = False
|
|
}
|
|
If oForm.ShowDialog() = DialogResult.OK Then
|
|
Controller.Envelope.Title = oForm.EnvelopeTitle
|
|
Controller.Envelope.ContractType = oForm.EnvelopeContractType
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub GridReceivers_PaintEx(sender As Object, e As DevExpress.XtraGrid.PaintExEventArgs) Handles GridReceivers.PaintEx
|
|
Dim grid As GridControl = sender, view As GridView = Nothing
|
|
|
|
If TypeOf sender Is GridControl AndAlso TypeOf grid.MainView Is GridView Then
|
|
view = grid.MainView
|
|
Dim pen = New Pen(Color.Gainsboro, 2)
|
|
Dim info = view.GetViewInfo()
|
|
e.Cache.DrawRectangle(pen, info.Bounds)
|
|
pen.Dispose()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ViewReceivers_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles ViewReceivers.InitNewRow
|
|
Dim oReceiver As EnvelopeReceiver = ViewReceivers.GetRow(e.RowHandle)
|
|
Dim oRowCount = ViewReceivers.RowCount
|
|
Dim oColorType = DirectCast(oRowCount, ColorType)
|
|
|
|
oReceiver.ColorType = oColorType
|
|
End Sub
|
|
|
|
End Class
|