87 lines
2.8 KiB
C#
87 lines
2.8 KiB
C#
//
|
|
// Class: Util
|
|
// Current CLR: 4.0.30319.34209
|
|
// System: Microsoft Visual Studio 10.0
|
|
// Author: dani
|
|
// Created: 6/17/2015 7:12:38 AM
|
|
//
|
|
// Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved.
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using log4net;
|
|
using bsmd.database;
|
|
|
|
namespace bsmd.ExcelReadService
|
|
{
|
|
public class Util
|
|
{
|
|
private static ILog _log = LogManager.GetLogger(typeof(Util));
|
|
|
|
public static bool ProcessSheet(ExcelReader reader, out string readMessage, out MessageCore messageCore)
|
|
{
|
|
readMessage = "ok";
|
|
messageCore = Util.LookupMessageCore(reader);
|
|
|
|
// start parsing fields
|
|
string sheetVersion = reader.GetCell("Portcall", 2, 1) as string;
|
|
messageCore.SietasSheetVersion = sheetVersion;
|
|
|
|
DBManager.Instance.Save(messageCore);
|
|
|
|
|
|
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check with cell values if this message core is already in our DB
|
|
/// </summary>
|
|
private static MessageCore LookupMessageCore(ExcelReader reader)
|
|
{
|
|
// lookup using field values
|
|
double imoDouble = (double) reader.GetCell("SHIP", 13, 6);
|
|
string imo = Convert.ToInt32(imoDouble).ToString();
|
|
|
|
string etaDateString = reader.GetCell("Portcall", 16, 8).ToString();
|
|
string etaTime = reader.GetCell("Portcall", 16, 10).ToString();
|
|
DateTime dt = Util.ConstructDate(etaDateString, etaTime);
|
|
string poc = reader.GetCell("Portcall", 16, 1) as string;
|
|
|
|
MessageCore result = null;
|
|
|
|
if (DBManager.Instance.GetMessageCoreByShipInfos(imo, dt, poc) == null)
|
|
{
|
|
result = new MessageCore();
|
|
|
|
result.IMO = imo;
|
|
result.ReportStatus = MessageCore.ReportStatusEnum.COMPLETE;
|
|
result.Portname = poc;
|
|
result.ETA = dt;
|
|
if (result.IMO.Length > 7)
|
|
{
|
|
_log.WarnFormat("IMO {0} is longer than 7 chars, truncating!", result.IMO);
|
|
result.IMO = result.IMO.Substring(0, 7);
|
|
}
|
|
DBManager.Instance.Save(result);
|
|
}
|
|
|
|
|
|
return result;
|
|
}
|
|
|
|
private static DateTime ConstructDate(string etaDateString, string etaTime)
|
|
{
|
|
DateTime result = DateTime.Now;
|
|
if (DateTime.TryParse(etaDateString, out result))
|
|
{
|
|
TimeSpan sp;
|
|
if (TimeSpan.TryParse(etaTime, out sp))
|
|
result += sp;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
}
|
|
}
|