From 4d23599c13571094459748edc370ab0268dca820 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Thu, 2 Dec 2021 09:02:19 +0100 Subject: [PATCH] Excel import angeschlossen und einmal nur mit ATA getestet --- .../OverViewDetailControl.xaml.cs | 30 +++- ENI2/Import/ExcelUtil.cs | 145 ++++++++++-------- 2 files changed, 103 insertions(+), 72 deletions(-) diff --git a/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs b/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs index b1764f84..0498a945 100644 --- a/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs +++ b/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs @@ -11,9 +11,12 @@ using System.Timers; using bsmd.database; using ENI2.EditControls; +using ENI2.Import; + using System.Windows.Media.Imaging; using System.Collections.Generic; using System.Windows.Media; +using Microsoft.Win32; namespace ENI2.DetailViewControls { @@ -718,12 +721,31 @@ namespace ENI2.DetailViewControls SelectImportClassesDialog sicd = new SelectImportClassesDialog(); if((sicd.ShowDialog() ?? false) && (sicd.SelectedClasses.Count > 0)) { - // get here if user selected some classes + // get here if user selected some classes + OpenFileDialog ofd = new OpenFileDialog + { + Filter = "Excel Files|*.xls;*.xlsx" + }; + if (ofd.ShowDialog() ?? false) + { + Util.UIHelper.SetBusyState(); - // start importer - - // validate all selected import classes (Finger with "selection") + ExcelManager em = new ExcelManager(); + // start importer + if(em.Import(ofd.FileName, this.Core, sicd.SelectedClasses, out string importResultText)) + { + // reload this core + this.OnRequestReload(this.Core.Id.Value); + // validate all selected import classes (Finger with "selection") + this.OnRequestValidate(); + + } + else + { + MessageBox.Show(importResultText, "Import failed", MessageBoxButton.OK, MessageBoxImage.Error); + } + } } } diff --git a/ENI2/Import/ExcelUtil.cs b/ENI2/Import/ExcelUtil.cs index 1373b4ab..ac1e48b1 100644 --- a/ENI2/Import/ExcelUtil.cs +++ b/ENI2/Import/ExcelUtil.cs @@ -23,81 +23,90 @@ namespace ENI2.Import internal static bool ProcessSheet(ExcelReader reader, out string readMessage, MessageCore messageCore, List notificationClasses) { - messageCore = ExcelUtil.LookupMessageCore(reader, out readMessage); - - if (messageCore == null) return false; // cannot work with this sheet or create one + bool result = true; + // messageCore = ExcelUtil.LookupMessageCore(reader, out readMessage); + // if (messageCore == null) return false; // cannot work with this sheet or create one + readMessage = ""; // load messages if already present List messages = DBManager.Instance.GetMessagesForCore(messageCore, DBManager.MessageLoad.ALL); // parse selected classes - - foreach(Message message in messages) + try { - if ((message.MessageNotificationClass == Message.NotificationClass.AGNT) && notificationClasses.Contains(Message.NotificationClass.AGNT)) - { if(ScanAGNT(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.ATA) && notificationClasses.Contains(Message.NotificationClass.ATA)) - { if (ScanATA(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.ATD) && notificationClasses.Contains(Message.NotificationClass.ATD)) - { if (ScanATD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.BKRA) && notificationClasses.Contains(Message.NotificationClass.BKRA)) - { if (ScanBKRA(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.BKRD) && notificationClasses.Contains(Message.NotificationClass.BKRD)) - { if (ScanBKRD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.BPOL) && notificationClasses.Contains(Message.NotificationClass.BPOL)) - { if (ScanBPOL(message, messages, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.CREW) && notificationClasses.Contains(Message.NotificationClass.CREW)) - { if (ScanCREW(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.CREWD) && notificationClasses.Contains(Message.NotificationClass.CREWD)) - { if (ScanCREWD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.HAZA) && notificationClasses.Contains(Message.NotificationClass.HAZA)) - { if (ScanHAZA(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.HAZD) && notificationClasses.Contains(Message.NotificationClass.HAZD)) - { if (ScanHAZD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.INFO) && notificationClasses.Contains(Message.NotificationClass.INFO)) - { if (ScanINFO(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.LADG) && notificationClasses.Contains(Message.NotificationClass.LADG)) - { if (ScanLADG(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.MDH) && notificationClasses.Contains(Message.NotificationClass.MDH)) - { if (ScanMDH(message, messages, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.NAME) && notificationClasses.Contains(Message.NotificationClass.NAME)) - { if (ScanNAME(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.NOA_NOD) && notificationClasses.Contains(Message.NotificationClass.NOA_NOD)) - { if (ScanNOA_NOD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.PAS) && notificationClasses.Contains(Message.NotificationClass.PAS)) - { if (ScanPAS(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.PASD) && notificationClasses.Contains(Message.NotificationClass.PASD)) - { if (ScanPASD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.POBA) && notificationClasses.Contains(Message.NotificationClass.POBA)) - { if (ScanPOBA(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.POBD) && notificationClasses.Contains(Message.NotificationClass.POBD)) - { if (ScanPOBD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.PRE72H) && notificationClasses.Contains(Message.NotificationClass.PRE72H)) - { if (ScanPRE72H(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.SEC) && notificationClasses.Contains(Message.NotificationClass.SEC)) - { if (ScanSEC(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.SERV) && notificationClasses.Contains(Message.NotificationClass.SERV)) - { if (ScanSERV(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.STAT) && notificationClasses.Contains(Message.NotificationClass.STAT)) - { if (ScanSTAT(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.STO) && notificationClasses.Contains(Message.NotificationClass.STO)) - { if (ScanSTO(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.TIEFA) && notificationClasses.Contains(Message.NotificationClass.TIEFA)) - { if (ScanTIEFA(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.TIEFD) && notificationClasses.Contains(Message.NotificationClass.TIEFD)) - { if (ScanTIEFD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.TOWA) && notificationClasses.Contains(Message.NotificationClass.TOWA)) - { if (ScanTOWA(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.TOWD) && notificationClasses.Contains(Message.NotificationClass.TOWD)) - { if (ScanTOWD(message, messageCore, reader)) SaveMessage(message); break; } - if ((message.MessageNotificationClass == Message.NotificationClass.WAS) && notificationClasses.Contains(Message.NotificationClass.WAS)) - { if (ScanWAS(message, messageCore, reader)) SaveMessage(message); break; } + foreach (Message message in messages) + { + if ((message.MessageNotificationClass == Message.NotificationClass.AGNT) && notificationClasses.Contains(Message.NotificationClass.AGNT)) + { if (ScanAGNT(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.ATA) && notificationClasses.Contains(Message.NotificationClass.ATA)) + { if (ScanATA(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.ATD) && notificationClasses.Contains(Message.NotificationClass.ATD)) + { if (ScanATD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.BKRA) && notificationClasses.Contains(Message.NotificationClass.BKRA)) + { if (ScanBKRA(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.BKRD) && notificationClasses.Contains(Message.NotificationClass.BKRD)) + { if (ScanBKRD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.BPOL) && notificationClasses.Contains(Message.NotificationClass.BPOL)) + { if (ScanBPOL(message, messages, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.CREW) && notificationClasses.Contains(Message.NotificationClass.CREW)) + { if (ScanCREW(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.CREWD) && notificationClasses.Contains(Message.NotificationClass.CREWD)) + { if (ScanCREWD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.HAZA) && notificationClasses.Contains(Message.NotificationClass.HAZA)) + { if (ScanHAZA(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.HAZD) && notificationClasses.Contains(Message.NotificationClass.HAZD)) + { if (ScanHAZD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.INFO) && notificationClasses.Contains(Message.NotificationClass.INFO)) + { if (ScanINFO(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.LADG) && notificationClasses.Contains(Message.NotificationClass.LADG)) + { if (ScanLADG(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.MDH) && notificationClasses.Contains(Message.NotificationClass.MDH)) + { if (ScanMDH(message, messages, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.NAME) && notificationClasses.Contains(Message.NotificationClass.NAME)) + { if (ScanNAME(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.NOA_NOD) && notificationClasses.Contains(Message.NotificationClass.NOA_NOD)) + { if (ScanNOA_NOD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.PAS) && notificationClasses.Contains(Message.NotificationClass.PAS)) + { if (ScanPAS(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.PASD) && notificationClasses.Contains(Message.NotificationClass.PASD)) + { if (ScanPASD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.POBA) && notificationClasses.Contains(Message.NotificationClass.POBA)) + { if (ScanPOBA(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.POBD) && notificationClasses.Contains(Message.NotificationClass.POBD)) + { if (ScanPOBD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.PRE72H) && notificationClasses.Contains(Message.NotificationClass.PRE72H)) + { if (ScanPRE72H(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.SEC) && notificationClasses.Contains(Message.NotificationClass.SEC)) + { if (ScanSEC(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.SERV) && notificationClasses.Contains(Message.NotificationClass.SERV)) + { if (ScanSERV(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.STAT) && notificationClasses.Contains(Message.NotificationClass.STAT)) + { if (ScanSTAT(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.STO) && notificationClasses.Contains(Message.NotificationClass.STO)) + { if (ScanSTO(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.TIEFA) && notificationClasses.Contains(Message.NotificationClass.TIEFA)) + { if (ScanTIEFA(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.TIEFD) && notificationClasses.Contains(Message.NotificationClass.TIEFD)) + { if (ScanTIEFD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.TOWA) && notificationClasses.Contains(Message.NotificationClass.TOWA)) + { if (ScanTOWA(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.TOWD) && notificationClasses.Contains(Message.NotificationClass.TOWD)) + { if (ScanTOWD(message, messageCore, reader)) SaveMessage(message); break; } + if ((message.MessageNotificationClass == Message.NotificationClass.WAS) && notificationClasses.Contains(Message.NotificationClass.WAS)) + { if (ScanWAS(message, messageCore, reader)) SaveMessage(message); break; } + + } + + DBManager.Instance.Save(messageCore); // muss das eigentlich sein? + } + catch(Exception ex) + { + readMessage = ex.Message; + result = false; } - DBManager.Instance.Save(messageCore); - - return true; + return result; } internal static void SaveMessage(Message message) @@ -128,7 +137,7 @@ namespace ENI2.Import if(!ata.ATAPortOfCall.HasValue) { - reader.ReadDateTime("ATA.ATADatePortOfCall", "ATA.ATATimePortOfCall"); + ata.ATAPortOfCall = reader.ReadDateTime("ATA.ATADatePortOfCall", "ATA.ATATimePortOfCall"); } return !(!ata.ATAPortOfCall.HasValue && ataMessage.IsNew); @@ -151,7 +160,7 @@ namespace ENI2.Import if (!atd.ATDPortOfCall.HasValue) { - reader.ReadDateTime("ATD.ATDDatePortOfCall", "ATD.ATDTimePortOfCall"); + atd.ATDPortOfCall = reader.ReadDateTime("ATD.ATDDatePortOfCall", "ATD.ATDTimePortOfCall"); } return !(!atd.ATDPortOfCall.HasValue && atdMessage.IsNew);