Excel import angeschlossen und einmal nur mit ATA getestet

This commit is contained in:
Daniel Schick 2021-12-02 09:02:19 +01:00
parent 286953e7d8
commit 4d23599c13
2 changed files with 103 additions and 72 deletions

View File

@ -11,9 +11,12 @@ using System.Timers;
using bsmd.database; using bsmd.database;
using ENI2.EditControls; using ENI2.EditControls;
using ENI2.Import;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using System.Collections.Generic; using System.Collections.Generic;
using System.Windows.Media; using System.Windows.Media;
using Microsoft.Win32;
namespace ENI2.DetailViewControls namespace ENI2.DetailViewControls
{ {
@ -719,12 +722,31 @@ namespace ENI2.DetailViewControls
if((sicd.ShowDialog() ?? false) && (sicd.SelectedClasses.Count > 0)) 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();
ExcelManager em = new ExcelManager();
// start importer // 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") // validate all selected import classes (Finger with "selection")
this.OnRequestValidate();
} }
else
{
MessageBox.Show(importResultText, "Import failed", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
} }
#endregion #endregion

View File

@ -23,14 +23,17 @@ namespace ENI2.Import
internal static bool ProcessSheet(ExcelReader reader, out string readMessage, MessageCore messageCore, List<Message.NotificationClass> notificationClasses) internal static bool ProcessSheet(ExcelReader reader, out string readMessage, MessageCore messageCore, List<Message.NotificationClass> notificationClasses)
{ {
messageCore = ExcelUtil.LookupMessageCore(reader, out readMessage); bool result = true;
// messageCore = ExcelUtil.LookupMessageCore(reader, out readMessage);
if (messageCore == null) return false; // cannot work with this sheet or create one
// if (messageCore == null) return false; // cannot work with this sheet or create one
readMessage = "";
// load messages if already present // load messages if already present
List<Message> messages = DBManager.Instance.GetMessagesForCore(messageCore, DBManager.MessageLoad.ALL); List<Message> messages = DBManager.Instance.GetMessagesForCore(messageCore, DBManager.MessageLoad.ALL);
// parse selected classes // parse selected classes
try
{
foreach (Message message in messages) foreach (Message message in messages)
{ {
@ -95,9 +98,15 @@ namespace ENI2.Import
} }
DBManager.Instance.Save(messageCore); DBManager.Instance.Save(messageCore); // muss das eigentlich sein?
}
catch(Exception ex)
{
readMessage = ex.Message;
result = false;
}
return true; return result;
} }
internal static void SaveMessage(Message message) internal static void SaveMessage(Message message)
@ -128,7 +137,7 @@ namespace ENI2.Import
if(!ata.ATAPortOfCall.HasValue) if(!ata.ATAPortOfCall.HasValue)
{ {
reader.ReadDateTime("ATA.ATADatePortOfCall", "ATA.ATATimePortOfCall"); ata.ATAPortOfCall = reader.ReadDateTime("ATA.ATADatePortOfCall", "ATA.ATATimePortOfCall");
} }
return !(!ata.ATAPortOfCall.HasValue && ataMessage.IsNew); return !(!ata.ATAPortOfCall.HasValue && ataMessage.IsNew);
@ -151,7 +160,7 @@ namespace ENI2.Import
if (!atd.ATDPortOfCall.HasValue) if (!atd.ATDPortOfCall.HasValue)
{ {
reader.ReadDateTime("ATD.ATDDatePortOfCall", "ATD.ATDTimePortOfCall"); atd.ATDPortOfCall = reader.ReadDateTime("ATD.ATDDatePortOfCall", "ATD.ATDTimePortOfCall");
} }
return !(!atd.ATDPortOfCall.HasValue && atdMessage.IsNew); return !(!atd.ATDPortOfCall.HasValue && atdMessage.IsNew);