public static BaseResultInfo FileToNewDB(string fileName, LOGTYPE logType, bool isUnified) { SiteLogger.ILogger logger = SiteLogger.LoggingFactory.GetLogger; List <string> file = LogReader.LogFileReader.ReadFile(fileName); if (isUnified) { file = LogReader.LogFileReader.UnifiedLogLines(file); } List <LogItem> items = LogReader.LogFileReader.LinesToLogs(file.ToArray(), logType); LogItemRepository repository = new LogItemRepository(); BaseResultInfo res = repository.GetLastLogItem(logType.ToString(), null); LogItem last = res.GetResult <LogItem>(); int itemsSentToDB = items.Count; LogItem lastFound = last == null? null: items.FirstOrDefault(l => l.InsertDate == last.InsertDate); if (lastFound == null) { res = repository.InsertLogItem(items); } else { List <LogItem> itemsToSend = items.FindAll(l => l.Index > lastFound.Index); itemsSentToDB = itemsToSend.Count; res = repository.InsertLogItem(itemsToSend); } logger.Debug(string.Format("FILE NAME = {0} , TOTAL ITEMS = {1} , ITEM TRY INSERT = {2}, TOTAL SUCCESS = {3}, TOTAL FAILD = {4}", fileName, items.Count, itemsSentToDB, res.ReturnValue, itemsSentToDB - res.ReturnValue)); return(res); }
public BaseResultInfo InsertLogItem(List <LogItem> items) { SiteLogger.ILogger logger = SiteLogger.LoggingFactory.GetLogger; BaseResultInfo result = new BaseResultInfo(); List <ResultLogItem> errorData = new List <ResultLogItem>(); try { using (SqlConnection conn = new SqlConnection(base.ConnectionString)) { conn.Open(); SqlParameterList commandParams = new SqlParameterList(); int successCount = 0; foreach (var item in items) { try { commandParams = SqlSerializer.Serialize(item); int res = SqlHelper.ExecuteNonQuery(conn, CommandType.StoredProcedure, SQL_ADD_LOG_ITEM, commandParams.ToArray()); successCount++; } catch (Exception ex) { logger.Error(string.Format("INDEX = {0}, DATETIME = {1}, LOG_TYPE = {2}, MESSAGE = {3}", item.Index, item.InsertDate, item.LogType, ex.Message)); errorData.Add(new ResultLogItem() { Log = item, ErrorMessage = ex.Message }); } } result.ReturnValue = successCount; commandParams.GetReturnValue(); result.ResultObject = errorData; conn.Close(); if (result.ReturnValue < 0) { throw new Exception("SQL_ADD_LOG_ITEM"); } } } catch (Exception ex) { if (result.Error == null) { result.Error = new BaseErrorInfo(); } result.Error.BuildException(ex); } return(result); }