public static void Attendance_Calc(string EMP_ID, string ATT_DT, SqlConnection con, string table) { QLNhaHangContext _db = new QLNhaHangContext(); var _dt = DateTime.Parse(ATT_DT); var rs = _db.Tbldetailsattendance.Where(x => x.EmpId == EMP_ID && x.AttDt == _dt).FirstOrDefault(); if (rs == null || rs.LocB1 == true) { return; } var rsca = _db.Tbldetailsroster.Where(x => x.ShiId == rs.ShiId).OrderBy(x => x.SeqNo).ToList(); var rsTypeShift = _db.Tbltypeshift.ToList(); ArrayList Ca = new ArrayList(); ArrayList ATT = new ArrayList(); for (int j = 0; j < rsca.Count(); j++) { Ca.Add(rsca[j].OnnTm); Ca.Add(rsca[j].OffTm); } Ca.Add(0); Ca.Add(0); Ca.Add(0); Ca.Add(0); for (int j = 1; j <= 5; j++) { ATT.Add(T_String.IsNullTo00(T_String.GetPropValue(rs, "Onn" + j.ToString("00")) + "")); ATT.Add(T_String.IsNullTo00(T_String.GetPropValue(rs, "Off" + j.ToString("00")) + "")); } string NOT_DR = rs.NotDr + ""; int pos = NOT_DR.IndexOf("Sign"); if (pos >= 0) { int pos1 = PublicFunction.S_Left(NOT_DR, pos + 4).LastIndexOf(";"); if (pos1 > 0) { NOT_DR = NOT_DR.Substring(pos1 + 1, pos - pos1 + 3); } else { NOT_DR = NOT_DR.Substring(0, pos + 4); } } else { NOT_DR = ""; } Attendance_Calc(EMP_ID, ATT_DT, con, Ca, ATT, rs.ShiId + "", rsca, null, rsTypeShift, table, NOT_DR); }