示例#1
0
        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;
                }
            }
        }
示例#2
0
        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;
            }
        }