// // 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; } /// /// Check with cell values if this message core is already in our DB /// 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; } } }