diff --git a/ENI-2/ENI2/ENI2/App.config b/ENI-2/ENI2/ENI2/App.config index 2b0bf49c..9ff3f9c0 100644 --- a/ENI-2/ENI2/ENI2/App.config +++ b/ENI-2/ENI2/ENI2/App.config @@ -26,12 +26,12 @@ 1000 - - http://heupferd/bsmd.LockingService/LockingService.svc + http://192.168.2.4/LockingService/LockingService.svc + - - Data Source=(localdb)\Projects;Initial Catalog=nsw;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False + Data Source=192.168.2.12;Initial Catalog=nsw;Uid=dfuser;Pwd=dfpasswd;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False + diff --git a/ENI-2/ENI2/ENI2/App.xaml.cs b/ENI-2/ENI2/ENI2/App.xaml.cs index ceac4874..ca028cc9 100644 --- a/ENI-2/ENI2/ENI2/App.xaml.cs +++ b/ENI-2/ENI2/ENI2/App.xaml.cs @@ -39,6 +39,11 @@ namespace ENI2 public static ServiceClient LockingServiceClient { get { return _lockingServiceClient; } } + public static void RestartLockingService() + { + _lockingServiceClient = new ServiceClient("BasicHttpBinding_IService", ENI2.Properties.Settings.Default.LockingServerAddress); + } + public static SplashScreenWindow SplashScreen { get { return _splashScreenWindow; } } public static Guid? UserId { get { return _userId; } set { _userId = value; } } @@ -93,6 +98,7 @@ namespace ENI2 { string errorMessage = string.Format("An unhandled exception occurred: {0}\r\n{1}", e.Exception.Message, e.Exception.StackTrace); MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error); + // TODO: Dieser Fehler muss irgendwohin gesendet / gespeichert werden e.Handled = true; } diff --git a/ENI-2/ENI2/ENI2/DetailBaseControl.cs b/ENI-2/ENI2/ENI2/DetailBaseControl.cs index 9a0485cc..31ef84a3 100644 --- a/ENI-2/ENI2/ENI2/DetailBaseControl.cs +++ b/ENI-2/ENI2/ENI2/DetailBaseControl.cs @@ -166,7 +166,7 @@ namespace ENI2 protected void RegisterDateTimePickerChange(Xceed.Wpf.Toolkit.DateTimePicker dateTimePicker, Message.NotificationClass notificationClass) { - this._dpDateTimePicker.AddValueChanged(dateTimePicker, this.controlContentChanged); + this._dpDateTimePicker.AddValueChanged(dateTimePicker, this.controlContentChanged); this._controlClassDict[dateTimePicker] = notificationClass; } diff --git a/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs b/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs index 8329016c..ebdde657 100644 --- a/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs @@ -200,6 +200,9 @@ namespace ENI2 MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { + + Util.UIHelper.SetBusyState(); + DetailBaseControl currentControl = this.detailView.Children[0] as DetailBaseControl; if (currentControl != null) { @@ -222,7 +225,7 @@ namespace ENI2 private void SaveMessage(Message message) { - if (message.IsDirty) + if (message.IsDirty || message.IsNew) { if ((message.Status == Message.MessageStatus.ACCEPTED) && ((message.InternalStatus == Message.BSMDStatus.CONFIRMED) || (message.InternalStatus == Message.BSMDStatus.VIOLATION))) @@ -234,7 +237,24 @@ namespace ENI2 } message.ChangedBy = string.Format("{0} at {1}", userName, DateTime.Now); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(message); - message.SaveElements(); + if (message.MessageNotificationClass == Message.NotificationClass.CREW) + { + foreach(CREW crew in message.Elements) + { + if (crew.IsNew || crew.IsDirty) DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(crew); + } + } + else if (message.MessageNotificationClass == Message.NotificationClass.PAS) + { + foreach(PAS pas in message.Elements) + { + if(pas.IsNew || pas.IsDirty) DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(pas); + } + } + else + { + message.SaveElements(); + } message.IsDirty = false; } } @@ -245,7 +265,10 @@ namespace ENI2 MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { - foreach(Message message in this._messages) + + Util.UIHelper.SetBusyState(); + + foreach (Message message in this._messages) { this.SaveMessage(message); } @@ -323,6 +346,8 @@ namespace ENI2 this._vViolations.Clear(); // TODO: clear highlighting + Util.UIHelper.SetBusyState(); + RuleEngine ruleEngine = new RuleEngine(); foreach (Message aMessage in _messages) { diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs b/ENI-2/ENI2/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs index bf7078e0..6ce206c8 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs @@ -214,7 +214,7 @@ namespace ENI2.DetailViewControls if(!this._pasMessage.Elements.Contains(epd.PAS)) this._pasMessage.Elements.Add(epd.PAS); this.dataGridPassengerList.Items.Refresh(); - epd.PAS = new PAS(); + epd.PAS = new PAS(); epd.PAS.MessageHeader = this._pasMessage; epd.PAS.Identifier = PAS.GetNewIdentifier(_pasMessage.Elements); this.SublistElementChanged(Message.NotificationClass.PAS); @@ -223,7 +223,7 @@ namespace ENI2.DetailViewControls if (epd.ShowDialog() ?? false) { if(!this._pasMessage.Elements.Contains(epd.PAS)) - _pasMessage.Elements.Add(epd.PAS); + _pasMessage.Elements.Add(epd.PAS); this.dataGridPassengerList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PAS); } @@ -258,7 +258,7 @@ namespace ENI2.DetailViewControls if(!_pasMessage.Elements.Contains(epd.PAS)) _pasMessage.Elements.Add(epd.PAS); this.dataGridPassengerList.Items.Refresh(); - epd.PAS = new PAS(); + epd.PAS = new PAS(); epd.PAS.Identifier = PAS.GetNewIdentifier(_pasMessage.Elements); epd.PAS.MessageHeader = _pasMessage; this.SublistElementChanged(Message.NotificationClass.PAS); @@ -268,6 +268,7 @@ namespace ENI2.DetailViewControls { if (!_pasMessage.Elements.Contains(epd.PAS)) _pasMessage.Elements.Add(epd.PAS); + epd.PAS.IsDirty = true; this.dataGridPassengerList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PAS); } @@ -349,6 +350,7 @@ namespace ENI2.DetailViewControls { if (!_crewMessage.Elements.Contains(ecd.CREW)) _crewMessage.Elements.Add(ecd.CREW); + ecd.CREW.IsDirty = true; this.dataGridCrewList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.CREW); } @@ -422,6 +424,7 @@ namespace ENI2.DetailViewControls if (!reader.IsDBNull(9)) crew.CrewMemberVisaNumber = this.getValueAsString(reader, 9); crew.MessageHeader = this._crewMessage; + crew.IsDirty = true; crew.Identifier = CREW.GetNewIdentifier(this._crewMessage.Elements); this._crewMessage.Elements.Add(crew); importCrew.Add(crew); @@ -500,6 +503,7 @@ namespace ENI2.DetailViewControls if (!reader.IsDBNull(11)) pas.PassengerVisaNumber = this.getValueAsString(reader, 11); pas.MessageHeader = this._pasMessage; + pas.IsDirty = true; pas.Identifier = PAS.GetNewIdentifier(this._pasMessage.Elements); this._pasMessage.Elements.Add(pas); importPassenger.Add(pas); diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs b/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs index 7cb1cedd..d6aeb453 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs @@ -79,7 +79,7 @@ namespace ENI2.DetailViewControls this.comboBoxInitialHis.ItemsSource = Util.EnumHelper.GetAllValuesAndDescription(typeof(Message.NSWProvider)); this.comboBoxInitialHis.DataContext = this.Core; - Binding vtBinding = new Binding(); + Binding vtBinding = new Binding(); vtBinding.Source = this.Core; vtBinding.Path = this.Core.IsTransit ? new PropertyPath("TransitId") : new PropertyPath("VisitId"); vtBinding.Mode = BindingMode.TwoWay; @@ -352,8 +352,11 @@ namespace ENI2.DetailViewControls public void ShowLockedBy(ReportingParty reportingParty) { - this.stackPanelLock.Visibility = Visibility.Visible; - this.textBlockLockUserName.Text = reportingParty.FirstName + " " + reportingParty.LastName; + if (reportingParty != null) + { + this.stackPanelLock.Visibility = Visibility.Visible; + this.textBlockLockUserName.Text = reportingParty.FirstName + " " + reportingParty.LastName; + } } #endregion diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/WasteDetailControl.xaml b/ENI-2/ENI2/ENI2/DetailViewControls/WasteDetailControl.xaml index 73be64e5..ea018d24 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/WasteDetailControl.xaml +++ b/ENI-2/ENI2/ENI2/DetailViewControls/WasteDetailControl.xaml @@ -49,7 +49,7 @@