git_bsmd/nsw/Source/bsmd.ExcelReadService/Util.cs

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;
}
}
}