public void LoadDataForOthers(string filePath, string dbName) { try { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); DateTime todayDate = DateTime.Now; string fileName = Path.GetFileName(filePath); string newFile = fileName.Split('.')[0]; string[] lines = File.ReadAllLines(filePath); List <ReaderActivity> readerActivities = new List <ReaderActivity>(); List <Staff> staffDetails = new List <Staff>(); Staff staffDetail = null; #region Check Duplicate file if (lines.Any()) { if (Constants.DetailedLogging) { Logger.Info("Duplicate check started"); } string firstLine = lines.FirstOrDefault(); string[] values = firstLine.Split(','); string date = values[1].ToString().Trim(); string time = values[2].ToString().Trim(); string Employee = values[3].ToString().Trim(); string Revenue = values[7].ToString().Trim(); if (values.Length > 9) { Revenue = values[10].ToString().Trim(); } string CashierDate = DateTime.ParseExact(date, "yyyyMMdd", null).ToString("yyyy-MM-dd"); string tempTime = DateTime.ParseExact(time, "HHmmss", null).ToString("HH:mm:ss tt"); string CashierTime = CashierDate + " " + tempTime; DateTime Time12 = DateTime.Parse(CashierTime); if (dbService.DoesCashierRecordExist(Employee, Revenue, Time12, newFile, dbName)) { if (Constants.DetailedLogging) { Logger.Info("Duplicate file found - " + fileName); } helper.MoveDuplicateFile(filePath, dbName); return; } if (Constants.DetailedLogging) { Logger.Info("Duplicate check End"); } } #endregion #region Process lines in CSV lines.ToList().ForEach(x => { string thisItem = x; string[] values = x.Split(','); // Do the same for values string date = values[1].ToString().Trim(); string time = values[2].ToString().Trim(); string Employee = values[3].ToString().Trim(); string etm = values[6].ToString().Trim(); string Revenue = values[7].ToString().Trim(); string cashOnCard = ""; string tickets = "0"; if (values.Length > 9) { cashOnCard = values[10].ToString().Trim(); Revenue = values[9].ToString().Trim(); tickets = values[8].ToString().Trim(); } //sets the date time string CashierDate = DateTime.ParseExact(date, "yyyyMMdd", null).ToString("dd-MM-yyyy"); string test = CashierDate; //Parsing the date and setting the correct format DateTime date23 = DateTime.ParseExact(test, "dd-MM-yyyy", null); //Converting the date and time to string string ImportDateTime = DateTime.Now.ToString(); //parsing the string to get the correct time in the correct format string tempTime = DateTime.ParseExact(time, "HHmmss", null).ToString("HH:mm:ss tt"); //combining the date and time as one variable string CashierTime = CashierDate + " " + tempTime; //Parsing the Cashier Time DateTime Time12 = DateTime.Parse(CashierTime); readerActivities.Add(new ReaderActivity() { byt_ActivityType = 0, int4_CashierID = Convert.ToInt32(newFile), int4_ThisReaderID = Convert.ToInt32(etm), dat_ActivityDate = date23, dat_ActivityTime = Time12, int4_Supervisor = Convert.ToInt32(newFile), int4_TicketCount = Convert.ToInt32(tickets), int4_AnnulCash = null, int4_AnnulCount = null, dat_SignOnDate = DateTime.Now, int4_OperatorID = Convert.ToInt32(Employee), int4_ModuleCash = Convert.ToInt32(cashOnCard), int4_SignOffCash = Convert.ToInt32(Revenue), int4_SignOffAnnulCash = 0, int4_SignOffAnnulQty = 0, dat_RecordMod = DateTime.Now, int4_RecNum = null, int4_ModuleID = null, int4_CouponCash = 0, int4_CouponCount = 0, int4_SignOffCouponCash = 0, int4_SignOffCouponQty = 0, int4_SmartLastSinglePassCash = 0, int4_SmartLastSinglePassCount = 0, int4_LRMDriverSinglePasses = 0, int4_LRMNoSinglePasses = 0 }); #region Process Staff Information if (!dbService.DoesRecordExist("Staff", "int4_StaffID", Employee, dbName)) { if (staffDetails.FirstOrDefault(y => y.int4_StaffID.ToString() == Employee) == null) { staffDetail = new Staff { int4_StaffID = Convert.ToInt32(Employee) }; staffDetail.str50_StaffName = "New Staff" + " - " + staffDetail.int4_StaffID; staffDetail.bit_InUse = true; staffDetail.int4_StaffTypeID = 1; staffDetail.int4_StaffSubTypeID = 0; staffDetail.dat_RecordMod = DateTime.Now; //var runningBoard = dutyDetail.str_OperatorVersion; staffDetail.str4_LocationCode = "0001";//runningBoard.Substring(runningBoard.Length - 4, 4); staffDetail.str2_LocationCode = null; staffDetails.Add(staffDetail); } } #endregion }); #endregion #region Process Staff Information if (!dbService.DoesRecordExist("Staff", "int4_StaffID", newFile, dbName)) { if (staffDetails.FirstOrDefault(x => x.int4_StaffID.ToString() == newFile) == null) { staffDetail = new Staff { int4_StaffID = Convert.ToInt32(newFile) }; staffDetail.str50_StaffName = "New Staff" + " - " + staffDetail.int4_StaffID; staffDetail.bit_InUse = true; staffDetail.int4_StaffTypeID = 1; staffDetail.int4_StaffSubTypeID = 0; staffDetail.dat_RecordMod = DateTime.Now; //var runningBoard = dutyDetail.str_OperatorVersion; staffDetail.str4_LocationCode = "0001";//runningBoard.Substring(runningBoard.Length - 4, 4); staffDetail.str2_LocationCode = null; staffDetails.Add(staffDetail); } } #endregion #region DB Insertion Section CsvDataToImport csvDataToImport = new CsvDataToImport() { ReaderActivities = readerActivities, Staffs = staffDetails }; dbService.InsertCsvFileData(csvDataToImport, dbName); helper.MoveSuccessFile(filePath, dbName); #endregion } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error("Failed in LoadDataForOthers"); throw; } }
public bool InsertCsvFileData(CsvDataToImport csvDataToImport, string connectionKey) { bool result = false; SqlTransaction transaction = null; SqlConnection con = null; using (con = GetConnection(GetConnectionString(connectionKey))) { try { if (Constants.DetailedLogging) { Logger.Info("-------DB Transaction - Start-------"); } con.Open(); transaction = con.BeginTransaction(); if (csvDataToImport.ReaderActivities.Any()) { DbHelper.BulkCopyDataToTable <ReaderActivity>("ReaderActivity", csvDataToImport.ReaderActivities, con, transaction); } if (csvDataToImport.Cashiers.Any()) { DbHelper.BulkCopyDataToTable <Cashier>("Cashier", csvDataToImport.Cashiers, con, transaction); } if (csvDataToImport.CashierDetails.Any()) { DbHelper.BulkCopyDataToTable <CashierDetail>("CashierDetail", csvDataToImport.CashierDetails, con, transaction); } if (csvDataToImport.CashierSigonSignoffs.Any()) { DbHelper.BulkCopyDataToTable <CashierSigonSignoff>("CashierSigonSignoff", csvDataToImport.CashierSigonSignoffs, con, transaction); } if (csvDataToImport.CashierStaffESNs.Any()) { DbHelper.BulkCopyDataToTable <CashierStaffESN>("CashierStaffESN", csvDataToImport.CashierStaffESNs, con, transaction); } if (csvDataToImport.Staffs.Any()) { DbHelper.BulkCopyDataToTable <Staff>("Staff", csvDataToImport.Staffs, con, transaction); } transaction.Commit(); if (Constants.DetailedLogging) { Logger.Info("Cashiers Inserted: " + csvDataToImport.Cashiers.Count().ToString()); Logger.Info("CashierStaffESNs Inserted: " + csvDataToImport.CashierStaffESNs.Count().ToString()); Logger.Info("CashierDetails Inserted: " + csvDataToImport.CashierDetails.Count().ToString()); Logger.Info("CashierSigonSignoffs Inserted: " + csvDataToImport.CashierSigonSignoffs.Count().ToString()); Logger.Info("Commited Changes"); Logger.Info("-------DB Transaction - End-------"); } } catch (Exception) { if (Constants.DetailedLogging) { Logger.Error("Failed in InsertCsvFileData"); } transaction.Rollback(); if (Constants.DetailedLogging) { Logger.Info("Transaction Rolledback"); } if (Constants.DetailedLogging) { Logger.Info("CSV Data Insertion Failed in DB Service"); } throw; } finally { con.Close(); con.Dispose(); transaction.Dispose(); } } return(result); }
public void LoadDataForAtamelang(string filePath, string dbName) { try { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); DateTime todayDate = DateTime.Now; string fileName = Path.GetFileName(filePath); string[] lines = File.ReadAllLines(filePath); List <CashierStaffESN> cashierStaffESNDetails = new List <CashierStaffESN>(); List <CashierDetail> cashierDetails = new List <CashierDetail>(); List <CashierSigonSignoff> cashierSigonSignoffDetails = new List <CashierSigonSignoff>(); List <Staff> staffDetails = new List <Staff>(); Staff staffDetail = null; #region Check Duplicate file if (lines.Any()) { Logger.Info("Duplicate check started"); string lastLine = lines.LastOrDefault(); string[] values = lastLine.Split(','); string receiptnumber = values[13].ToString().Trim(); string terminal = values[17].ToString().Replace("\"", "").Trim(); string casherID = fileName.Split('.')[0]; if (dbService.DoesCSVRecordExist("CashierSigonSignoff", "WaybillNumber,Terminal,CashierID", receiptnumber.Trim() + "," + terminal.Trim() + "," + casherID.Trim(), dbName)) { Logger.Info("Duplicate file found - " + fileName); helper.MoveDuplicateFile(filePath, dbName); return; } Logger.Info("Duplicate check End"); } #endregion #region Process lines in CSV lines.ToList().ForEach(x => { string thisItem = x; string[] values = x.Split(','); string Name = values[0].ToString().Replace("\"", "").Trim(); string staffID = values[1].ToString().Trim(); string Signondatetime = values[2].ToString().Trim(); string Signoffdatetime = values[3].ToString().Trim(); string activity = values[4].ToString().Trim(); string cashIntype = values[5].ToString().Trim(); string TransactionDatetime = values[6].ToString().Trim(); string driverTotal = values[7].ToString().Trim(); string cashCollected = values[8].ToString().Trim(); string shorts = values[9].ToString().Trim(); string overs = values[10].ToString().Trim(); string nettickets = values[11].ToString().Trim(); string netpasses = values[12].ToString().Trim(); string receiptnumber = values[13].ToString().Trim(); string casherID = fileName.Split('.')[0]; string reason = values[14].ToString().Trim(); string esn = values[15].ToString().Trim(); string psn = values[16].ToString().Trim(); string terminal = values[17].ToString().Replace("\"", "").Trim(); int?oldDuty = null, newDuty = null; if (values.Length > 18) { oldDuty = Convert.ToInt32(values[18]); newDuty = Convert.ToInt32(values[19]); } //SignonDateTime sub string string temp1 = Signondatetime.Substring(0, 8); string temp2 = Signondatetime.Substring(8, 6); string newSignOnDateTime = temp1 + " " + temp2; string mySignOnDate = DateTime.ParseExact(newSignOnDateTime, "ddMMyyyy HHmmss", null).ToString("dd-MM-yyyy HH:mm:ss"); //SignOffDateTime sub string string temp3 = Signoffdatetime.Substring(0, 8); string temp4 = Signoffdatetime.Substring(8, 6); string newSignOffDateTime = temp3 + " " + temp4; string mySignOffDate = DateTime.ParseExact(newSignOffDateTime, "ddMMyyyy HHmmss", null).ToString("dd-MM-yyyy HH:mm:ss"); //Transaction Sub string string temp5 = TransactionDatetime.Substring(0, 8); string temp6 = TransactionDatetime.Substring(8, 6); string newTransactionDateTime = temp5 + " " + temp6; string myTransactionDate = DateTime.ParseExact(newTransactionDateTime, "ddMMyyyy HHmmss", null).ToString("dd-MM-yyyy HH:mm:ss"); if (!dbService.DoesRecordExist("CashierStaffESN", "ESN", esn, dbName) && !cashierStaffESNDetails.Where(i => i.ESN.Equals(esn)).Any()) { cashierStaffESNDetails.Add(new CashierStaffESN() { ESN = esn, PSN = Convert.ToInt64(psn), OperatorID = Convert.ToInt32(staffID), ImportDateTime = todayDate }); } switch (Name) { case "Seller": case "Driver": cashierDetails.Add(new CashierDetail() { StaffNumber = staffID, SignOnDatTime = Convert.ToDateTime(mySignOnDate), SignOffDateTime = Convert.ToDateTime(mySignOffDate), Activity = activity, CashInType = cashIntype, TransactionDateTime = Convert.ToDateTime(myTransactionDate), DriverTotal = driverTotal, CashPaidIn = cashCollected, Shorts = shorts, NetTickets = Convert.ToInt32(nettickets), NetPasses = Convert.ToInt32(netpasses), CashInReceiptNo = Convert.ToInt32(receiptnumber), CashierID = casherID, ImportDateTime = todayDate, Reason = reason, Overs = overs, Terminal = terminal, UID = uid, ESN = esn, PSN = Convert.ToInt64(psn), OldDuty = oldDuty, NewDuty = newDuty }); break; case "Cashier": case "Supervisor": cashierSigonSignoffDetails.Add(new CashierSigonSignoff() { StaffNumber = staffID, SignOnDatTime = Convert.ToDateTime(mySignOnDate), SignOffDateTime = Convert.ToDateTime(mySignOffDate), Activity = activity, CashInType = cashIntype, TransactionDateTime = Convert.ToDateTime(myTransactionDate), DriverTotal = driverTotal, CashCollected = cashCollected, Shorts = shorts, NetTickets = Convert.ToInt32(nettickets), NetPasses = Convert.ToInt32(netpasses), WaybillNumber = Convert.ToInt32(receiptnumber), CashierID = casherID, ImportDateTime = todayDate, Overs = overs, Terminal = terminal, UID = uid, ESN = esn, PSN = Convert.ToInt64(psn), OldDuty = oldDuty, NewDuty = newDuty }); break; } #region Process Staff Information if (!dbService.DoesRecordExist("Staff", "int4_StaffID", staffID, dbName) && !staffDetails.Where(i => i.int4_StaffID.ToString().Equals(staffID)).Any()) { staffDetail = new Staff { int4_StaffID = Convert.ToInt32(staffID) }; staffDetail.str50_StaffName = "New Staff" + " - " + staffDetail.int4_StaffID; staffDetail.bit_InUse = true; staffDetail.int4_StaffTypeID = 1; staffDetail.int4_StaffSubTypeID = 0; //var runningBoard = dutyDetail.str_OperatorVersion; staffDetail.str4_LocationCode = "0001";//runningBoard.Substring(runningBoard.Length - 4, 4); staffDetail.str2_LocationCode = null; staffDetails.Add(staffDetail); } if (!dbService.DoesRecordExist("Staff", "int4_StaffID", casherID, dbName) && !staffDetails.Where(i => i.int4_StaffID.ToString().Equals(casherID)).Any()) { staffDetail = new Staff { int4_StaffID = Convert.ToInt32(casherID) }; staffDetail.str50_StaffName = "New Staff" + " - " + staffDetail.int4_StaffID; staffDetail.bit_InUse = true; staffDetail.int4_StaffTypeID = 1; staffDetail.int4_StaffSubTypeID = 0; //var runningBoard = dutyDetail.str_OperatorVersion; staffDetail.str4_LocationCode = "0001";//runningBoard.Substring(runningBoard.Length - 4, 4); staffDetail.str2_LocationCode = null; staffDetails.Add(staffDetail); } #endregion }); #endregion #region DB Insertion Section CsvDataToImport csvDataToImport = new CsvDataToImport() { CashierDetails = cashierDetails, CashierSigonSignoffs = cashierSigonSignoffDetails, CashierStaffESNs = cashierStaffESNDetails, Staffs = staffDetails }; dbService.InsertCsvFileData(csvDataToImport, dbName); helper.MoveSuccessFile(filePath, dbName); #endregion } catch (Exception) { Logger.Error("Failed in LoadDataForAtamelang"); throw; } }