private void SuaGio(cCheckInOut CIO, MayCheck LoaiCheck, TimeSpan gioMoi, int UEN) { if (CIO.HaveINOUT == -1 && LoaiCheck.ToString() == MayCheck.O.ToString()) { return; // sửa giờ cùng loại, khác loại bỏ qua } if (CIO.HaveINOUT == -2 && LoaiCheck.ToString() == MayCheck.I.ToString()) { return; // sửa giờ cùng loại, khác loại bỏ qua } DateTime timeStringOld; int machineNoOld; string sourceOld; if (CIO.HaveINOUT == -1) { timeStringOld = CIO.Vao.Time; machineNoOld = CIO.Vao.MachineNo; sourceOld = CIO.Vao.Source; } else if (CIO.HaveINOUT == -2) { timeStringOld = CIO.Raa.Time; machineNoOld = CIO.Raa.MachineNo; sourceOld = CIO.Raa.Source; } else { return; } DateTime ngayGioMoi = timeStringOld.Date.Add(gioMoi); if (CIO.HaveINOUT == -1) { ngayGioMoi = ngayGioMoi.Add(XL2._01giay); // nếu sửa giờ vào thì add thêm 1 giây. } #region int kq = SqlDataAccessHelper.ExecSPNoneQuery(SPName.CheckInOut_Update.ToString(), new SqlParameter("@UserEnrollNumber", UEN), new SqlParameter("@TimeStrOld", timeStringOld), new SqlParameter("@MachineNoOld", machineNoOld), new SqlParameter("@SourceOld", sourceOld), new SqlParameter("@OriginTypeNew", LoaiCheck.ToString()), new SqlParameter("@TimeDateNew", ngayGioMoi.Date), new SqlParameter("@TimeStrNew", ngayGioMoi), new SqlParameter("@MachineNoNew", (int)LoaiCheck), new SqlParameter("@SourceNew", "PC")); #endregion }
private void BoSungGio(cCheckInOut CIO, MayCheck LoaiCheck, TimeSpan gioBoSung, int UEN) { if (CIO.HaveINOUT == -1 && LoaiCheck.ToString() == MayCheck.I.ToString()) { return; // có vào thiếu ra , bổ sung ra thì trùng bỏ qua } if (CIO.HaveINOUT == -2 && LoaiCheck.ToString() == MayCheck.O.ToString()) { return; // có ra thiếu vào, bổ sung vào thì trùng bỏ qua } if (CIO.HaveINOUT == -2) // bổ sung giờ vào cho CIO thiếu vào --> ok { //if (LoaiCheck.ToString() == MayCheck.I.ToString()) /* xác định giờ ra đã có, ngày ra đã có, bỏ phần dư giây giờ bổ sung (vào = 0, ra =1) (hh:mm:00) * tạo NGÀY giờ vào mới để thêm vào CSDL, (nếu vào sau ra thì có qua đêm phải add thêm 1 ngày) */ TimeSpan gioRa = CIO.Raa.Time.TimeOfDay; // xác định giờ ra DateTime ngayGioVaoMoi = CIO.Raa.Time.Date; //ngày gioBoSung = new TimeSpan(gioBoSung.Hours, gioBoSung.Minutes, 0); ngayGioVaoMoi = (gioBoSung >= gioRa) ? ngayGioVaoMoi.AddDays(-1d).Add(gioBoSung).Add(XL2._01giay) // giây = 1 --> hh:mm:01 vào ca sau phải sau ra ca trước : ngayGioVaoMoi.Add(gioBoSung).Add(XL2._01giay); // thêm 1 ngày nếu vào sau ra #region int kq = SqlDataAccessHelper.ExecSPNoneQuery(SPName.CheckInOut_Ins.ToString(), new SqlParameter("@UserEnrollNumber", UEN), new SqlParameter("@TimeDate", ngayGioVaoMoi.Date), new SqlParameter("@TimeStr", ngayGioVaoMoi), new SqlParameter("@OriginType", LoaiCheck.ToString()), new SqlParameter("@MachineNo", (int)LoaiCheck), new SqlParameter("@Source", "PC")); #endregion if (kq == 0) { } } else if (CIO.HaveINOUT == -1) //bổ sung giờ vào cho CIO đã có vào /* xác định giờ vào đã có, ngày ra đã có, bỏ phần dư giây giờ bổ sung (vào = 0, ra =1) (hh:mm:00) * tạo NGÀY giờ vào mới để thêm vào CSDL, () */ { TimeSpan gioVao = CIO.Vao.Time.TimeOfDay; // xác định giờ vào DateTime ngayGioRaaMoi = CIO.Vao.Time.Date; //ngày gioBoSung = new TimeSpan(gioBoSung.Hours, gioBoSung.Minutes, 0); ngayGioRaaMoi = (gioVao >= gioBoSung) ? ngayGioRaaMoi.AddDays(1d).Add(gioBoSung) // giây = 0--> hh:mm:00 ko cần add thêm 1 giây : ngayGioRaaMoi.Add(gioBoSung); // thêm 1 ngày nếu ra trước vào #region int kq = SqlDataAccessHelper.ExecSPNoneQuery(SPName.CheckInOut_Ins.ToString(), new SqlParameter("@UserEnrollNumber", UEN), new SqlParameter("@TimeDate", ngayGioRaaMoi.Date), new SqlParameter("@TimeStr", ngayGioRaaMoi), new SqlParameter("@OriginType", LoaiCheck.ToString()), new SqlParameter("@MachineNo", (int)LoaiCheck), new SqlParameter("@Source", "PC")); #endregion } else { } }