public static void TongHopCongTho(DateTime fromDate, DateTime toDate, UpdateProgessBar objUpdatePGBMaxValues = null, UpdateProgessBar objUpdatePGBValues = null) { NpgsqlConnection conn = ScopeConnection.Instance.GetConnection(); SqlConnection zkConn = ScopeConnection.Instance.GetZKConnection(); List <ThongTinCongTho_TongHopDTO> lstCongThoTongHopDTO = DS_CheckInOut.getTongHopCongTho(conn, fromDate, toDate); if (lstCongThoTongHopDTO != null && lstCongThoTongHopDTO.Count > 0) { List <ThongTinCongTho_TongHop> lstCongThoTongHop = new List <ThongTinCongTho_TongHop>(); if (conn.State == System.Data.ConnectionState.Closed) { conn.Open(); //Do chưa làm được transacion và singleton } NpgsqlTransaction tongHopCongTransaction = conn.BeginTransaction(); foreach (var itemCongThoTongHopDTO in lstCongThoTongHopDTO) { string[] arrChamCong = itemCongThoTongHopDTO.lstChamCong.Split(','); ThongTinCongTho_TongHop itemCongThoTongHop = new ThongTinCongTho_TongHop() { Emp_Code = itemCongThoTongHopDTO.Emp_Code, Check_Date = itemCongThoTongHopDTO.Check_Date }; switch (arrChamCong.Length) { case 0: itemCongThoTongHop.CheckIn = null; itemCongThoTongHop.CheckOut = null; break; case 1: itemCongThoTongHop.CheckIn = DateTime.ParseExact(arrChamCong[0].Trim(), "yyyy-MM-dd HH':'mm':'ss", System.Globalization.CultureInfo.InvariantCulture); itemCongThoTongHop.CheckOut = null; break; default: itemCongThoTongHop.CheckIn = DateTime.ParseExact(arrChamCong[0].Trim(), "yyyy-MM-dd HH':'mm':'ss", System.Globalization.CultureInfo.InvariantCulture); itemCongThoTongHop.CheckOut = DateTime.ParseExact(arrChamCong[arrChamCong.Length - 1].Trim(), "yyyy-MM-dd HH':'mm':'ss", System.Globalization.CultureInfo.InvariantCulture); break; } lstCongThoTongHop.Add(itemCongThoTongHop); } try { if (objUpdatePGBMaxValues != null) { objUpdatePGBMaxValues(lstCongThoTongHop.Count); } DS_CheckInOut.DeleteOldTongHopCong(conn, tongHopCongTransaction, fromDate, toDate); for (int i = 0; i < lstCongThoTongHop.Count; i++) { DS_CheckInOut.InsertTongHopCong(conn, tongHopCongTransaction, lstCongThoTongHop[i]); if (objUpdatePGBValues != null) { objUpdatePGBValues(i + 1); } } tongHopCongTransaction.Commit(); } catch (Exception ex) { tongHopCongTransaction.Rollback(); throw ex; } } }
public static void InsertTongHopCong(NpgsqlConnection conn, NpgsqlTransaction chamCongTransaction, ThongTinCongTho_TongHop thongTinCongTho_TongHop) { //if (conn.State == System.Data.ConnectionState.Closed) conn.Open(); //Do chưa làm được transacion và singleton try { string cmdText = "INSERT INTO tbl_TongHopCong (emp_code, check_date, time_in, time_out)"; cmdText += " values (:emp_code, :check_date, :time_in, :time_out)"; NpgsqlCommand cmd = new NpgsqlCommand(cmdText, conn); cmd.Transaction = chamCongTransaction; cmd.Parameters.Add("emp_code", NpgsqlTypes.NpgsqlDbType.Varchar).Value = thongTinCongTho_TongHop.Emp_Code; cmd.Parameters.Add("check_date", NpgsqlTypes.NpgsqlDbType.Timestamp).Value = thongTinCongTho_TongHop.Check_Date; cmd.Parameters.Add("time_in", NpgsqlTypes.NpgsqlDbType.Timestamp).Value = thongTinCongTho_TongHop.CheckIn; cmd.Parameters.Add("time_out", NpgsqlTypes.NpgsqlDbType.Timestamp).Value = thongTinCongTho_TongHop.CheckOut; cmd.CommandTimeout = 60; cmd.ExecuteNonQuery(); } catch (Exception ex) { //Log file và gửi mail //chamCongTransaction.Rollback(); throw ex; } }