96 lines
3.7 KiB
C#
96 lines
3.7 KiB
C#
// Copyright (c) 2017- Informatikbüro Daniel Schick
|
|
// Description: Controller class for reading excel sheets (label-based)
|
|
|
|
using bsmd.database;
|
|
using log4net;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
|
|
namespace ENI2.Excel
|
|
{
|
|
public class ExcelManager
|
|
{
|
|
private readonly ILog _log = LogManager.GetLogger(typeof(ExcelManager));
|
|
|
|
public ExcelManager()
|
|
{
|
|
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
|
|
}
|
|
|
|
public bool Import(string filePath, MessageCore core, List<Message.NotificationClass> classes, out string readMessage)
|
|
{
|
|
bool result = false;
|
|
readMessage = "";
|
|
try
|
|
{
|
|
using (ExcelReader reader = new ExcelReader(filePath))
|
|
{
|
|
switch (reader.SheetType)
|
|
{
|
|
case ExcelReader.SheetTypeEnum.BSMD:
|
|
{
|
|
|
|
ImportHeader importHeader = new ImportHeader
|
|
{
|
|
ImportDate = DateTime.Now
|
|
};
|
|
|
|
result = ExcelUtil.ProcessSheet(reader, out readMessage, core, classes); // actual import
|
|
if (result)
|
|
{
|
|
importHeader.MessageCoreId = core.Id.Value;
|
|
importHeader.Filename = Path.GetFileName(filePath);
|
|
ReportingParty thisUser = ReportingParty.CurrentReportingParty;
|
|
importHeader.SenderEmail = thisUser.EMail;
|
|
importHeader.ReportingPartyId = thisUser.Id;
|
|
|
|
DBManager.Instance.Save(importHeader);
|
|
// Saving plaintext data (ImportHeader + ImportValues) for each reading
|
|
List<ImportValue> valueList = importHeader.CreateUpdateList(reader.ImportValues);
|
|
// Bulk save recommended here..
|
|
ImportValue.BulkSave(valueList);
|
|
}
|
|
break;
|
|
}
|
|
case ExcelReader.SheetTypeEnum.DAKOSY:
|
|
{
|
|
result = DakosyUtil.ProcessSheet(reader, out readMessage, core, classes);
|
|
// at this point do not save import data values
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
_log.WarnFormat("Unknown excel sheet type {0}", reader.SheetType);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
readMessage = ex.Message;
|
|
_log.Error(ex);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
internal void Export(string fileName, MessageCore core, List<Message> messages, out string resultMessage, bool isRefSheet)
|
|
{
|
|
resultMessage = "";
|
|
|
|
// Create ExcelWriter
|
|
using (ExcelWriter ew = new ExcelWriter(isRefSheet))
|
|
{
|
|
ew.WriteData(messages, core, out resultMessage, isRefSheet);
|
|
ew.Save(fileName);
|
|
}
|
|
}
|
|
|
|
internal void ExportMaersk(List<MaerskData> exportList, string fileName)
|
|
{
|
|
ExcelSimpleWriter.WriteMaerskList(fileName, exportList);
|
|
}
|
|
}
|
|
}
|