/// <summary> /// Lưu checker nếu truyền, k truyền thì tìm checker /// </summary> /// <param name="Checkers"></param> /// <param name="Next"></param> /// <returns></returns> public bool AddChecker(List <string> Checkers, string Next, Boolean IsComeBack) { string sql = @"SELECT IdRow, p.IdStep, Next,IsComeBackPro from DP_Process p join Tbl_PhanAnhGopY pa on p.Id = pa.Id and p.IdStep = pa.IdStep where pa.Id = @Id and p.Next=@Next and p.IsComeBackPro = @IsComeBackPro "; DataTable dtProcess = cnn.CreateDataTable(sql, new SqlConditions() { { "Id", Id }, { "Next", Next }, { "IsComeBackPro", IsComeBack } }); if (dtProcess.Rows.Count == 0) { Error = "Không tìm thấy bước xử lý tiếp theo"; return(false); } DataRow dr = dtProcess.Rows[0]; if (Checkers == null || Checkers.Count == 0) { Checkers = GetCheckers(dr["IdStep"].ToString(), Next, Convert.ToBoolean(dr["IsComeBackPro"])); if (!string.IsNullOrEmpty(Error)) { return(false); } } foreach (string id in Checkers) { Hashtable val1 = new Hashtable(); val1["IdProcess"] = dr["IdRow"]; val1["Checker"] = id; if (cnn.Insert(val1, "DP_Process_Detail") < 1) { cnn.RollbackTransaction(); Error = "Có gì đó không đúng, vui lòng thử lại sau"; return(false); } try { string udpate_DonVi = " EXEC sp_ThemDonViXuLy @Id , @Next, @IdUser,@IsComeBack "; cnn.ExecuteNonQuery(udpate_DonVi, new SqlConditions { { "Id", Id }, { "Next", Next }, { "IdUser", id }, { "IsComeBack", IsComeBack } }); } catch (Exception ex) { cnn.RollbackTransaction(); cnn.ClearError(); } } string lstUser = string.Join(",", Checkers); string msg = "Bạn có một phản ánh góp ý mới cần xử lý."; return(notify(lstUser, msg)); }