public ActionResult ActSingle(Models.ModelBase.Row_users actRow) { ZhWebClassV3.UserData userData = ZhWebClassV3.UserHelper.GetUserData(); JObject jo; #region 判斷啟用中 值,不可重複 if (actRow.statusx.ToString() == "A") { //errStr += ZhWebClassV3.CheckObj.Chk_ColumnValue(actRow.RowStatus.ToString(), "S10_users", "userName", "使用者姓名", actRow.userName.ToString(), ""); errStr += ZhWebClassV3.CheckObj.Chk_ColumnValue(actRow.RowStatus.ToString(), "S10_users", "userId", "使用者代號", actRow.userId.ToString(), ""); } else { //errStr += ZhWebClassV3.CheckObj.Chk_ColumnValue(actRow.RowStatus.ToString(), "S10_users", "userName", "使用者姓名", actRow.userName.ToString(), " and sysUserId<>'" + actRow.sysUserId.ToString() + "' "); errStr += ZhWebClassV3.CheckObj.Chk_ColumnValue(actRow.RowStatus.ToString(), "S10_users", "userId", "使用者代號", actRow.userId.ToString(), " and sysUserId<>'" + actRow.sysUserId.ToString() + "' "); } if (errStr != "") { jo = new JObject(); jo.Add("status", "error"); jo.Add("error", errStr); return(Content(JsonConvert.SerializeObject(jo), "application/json")); } #endregion try { using (TransactionScope scope = new TransactionScope()) { using (SqlConnection cn = new SqlConnection(ZhConfig.GlobalSystemVar.StrConnection1)) { cn.Open(); #region act users try { #region ACall_checkIsDBNull actRow.sysUserId = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.sysUserId); actRow.userName = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.userName); actRow.userId = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.userId); actRow.userPassword = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.userPassword); actRow.userEmail = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.userEmail); actRow.userPhone = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.userPhone); actRow.userTel = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.userTel); actRow.statusx = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.statusx); actRow.memo = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.memo); actRow.creatUser = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.creatUser); actRow.actUser = ZhConfig.ZhIniObj.ACall_checkIsDBNull(actRow.actUser); #endregion #region 新增或修改 資料到後端資料庫 #region 設置 要傳入的 SqlParameter 資料 SqlParameter[] param = { new SqlParameter("sysUserId", SqlDbType.Int, 4, ParameterDirection.InputOutput, false, 0, 0, "", DataRowVersion.Proposed, actRow.sysUserId), new SqlParameter("userName", SqlDbType.NVarChar, -1, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, actRow.userName), new SqlParameter("userId", SqlDbType.VarChar, -1, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, actRow.userId), new SqlParameter("userPassword", SqlDbType.VarChar, -1, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, actRow.userPassword), new SqlParameter("userEmail", SqlDbType.VarChar, -1, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, actRow.userEmail), new SqlParameter("userPhone", SqlDbType.VarChar, -1, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, actRow.userPhone), new SqlParameter("userTel", SqlDbType.VarChar, -1, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, actRow.userTel), new SqlParameter("statusx", SqlDbType.VarChar, 255, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, actRow.statusx), new SqlParameter("memo", SqlDbType.NVarChar, -1, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, actRow.memo), new SqlParameter("creatUser", SqlDbType.Int, 4, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, userData.sysUserId), //actRow.creatUser new SqlParameter("actUser", SqlDbType.Int, 4, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, userData.sysUserId), //actRow.actUser new SqlParameter("pk_sysUserId", SqlDbType.Int, 4, ParameterDirection.Input, false, 0, 0, "sysUserId", DataRowVersion.Original, actRow.sysUserId) }; #endregion switch (actRow.RowStatus.ToString()) { case "A": //sysUserId,@sysUserId,,actUser,actTime ,@actUser,getdate() strSql.Append("insert into S10_users (userName,userId,userPassword,userEmail,userPhone,userTel,statusx,memo,creatUser,creatTime) values (@userName,@userId,@userPassword,@userEmail,@userPhone,@userTel,@statusx,@memo,@creatUser,getdate())"); strSql.Append("SELECT @sysUserId = SCOPE_IDENTITY()"); actRow.creatUser = userData.userName; actRow.creatTime = DateTime.Now; errStr = SqlTool2.ExecuteNonQuery(cn, strSql.ToString(), param); actRow.sysUserId = param[0].Value; break; case "M": //sysUserId=@sysUserId, strSql.Append("update S10_users set userName=@userName,userId=@userId,userPassword=@userPassword,userEmail=@userEmail,userPhone=@userPhone,userTel=@userTel,statusx=@statusx,memo=@memo,actUser=@actUser,actTime=getdate() where sysUserId=@pk_sysUserId"); actRow.actUser = userData.userName; actRow.actTime = DateTime.Now; errStr = SqlTool2.ExecuteNonQuery(cn, strSql.ToString(), param); if (errStr != "") { throw new Exception(errStr); } break; } #region OperLog 異動使用者資料 if (Convert.ToBoolean(ZhConfig.GlobalSystemVar.tbl_OperLogFlag.Rows.Find(funcId)["isOperLogEnable"]) && errStr == "") { #region Gen tbl_operLog1 Data (Add/Modify) DataTable tbl_operLog1 = userData.Get_tbl_operLogPart1(); tbl_operLog1.Columns.Add("sysUserId1", typeof(string)); DataRow operLogRow = tbl_operLog1.NewRow(); //operLogRow["rowId"] =0; operLogRow["actSerial"] = userData.actSerial; operLogRow["sysUserId"] = userData.sysUserId; operLogRow["actStatus"] = actRow.RowStatus.ToString(); operLogRow["sysUserId1"] = actRow.sysUserId.ToString(); tbl_operLog1.Rows.Add(operLogRow); #endregion errStr = ZhWebClassSet.Log.LogSet.SaveOperLog(funcId, "S10_users", tbl_operLog1); if (errStr != "") { throw new Exception(errStr); } } #endregion if (errStr != "") { jo = new JObject(); jo.Add("status", "error"); jo.Add("error", errStr); return(Content(JsonConvert.SerializeObject(jo), "application/json")); } #endregion } catch (Exception ex) { jo = new JObject(); jo.Add("status", "error"); jo.Add("error", ex.Message); return(Content(JsonConvert.SerializeObject(jo), "application/json")); } #endregion #region act userVsGroup if (actRow.RowStatus.ToString() == "M") {//若是修改就先刪除再整個新增 strSql.Remove(0, strSql.Length); strSql.Append("delete S10_userVsGroup where sysUserId='" + actRow.sysUserId + "'"); errStr = SqlTool2.ExecuteNonQuery(cn, strSql.ToString()); if (errStr != "") { jo = new JObject(); jo.Add("status", "error"); jo.Add("error", errStr); return(Content(JsonConvert.SerializeObject(jo), "application/json")); } } if (actRow.userGroups != null) { string[] sysUserGroupId = actRow.userGroups.ToString().Split(','); foreach (string gId in sysUserGroupId) { if (gId == "") { continue; } strSql.Remove(0, strSql.Length); strSql.Append("insert into S10_userVsGroup (sysUserId,sysUserGroupId,statusx) values ('" + actRow.sysUserId.ToString() + "','" + gId + "','10') "); errStr = SqlTool2.ExecuteNonQuery(cn, strSql.ToString()); if (errStr != "") { jo = new JObject(); jo.Add("status", "error"); jo.Add("error", errStr); return(Content(JsonConvert.SerializeObject(jo), "application/json")); } } } #endregion } scope.Complete(); } #region return Info if (errStr == "") { JArray ja = new JArray(); var itemObject = new JObject(); itemObject.Add("sysUserId", actRow.sysUserId.ToString()); if (actRow.RowStatus.ToString() == "M") { itemObject.Add("actUser", actRow.actUser.ToString()); itemObject.Add("actTime", actRow.actTime.ToString()); } else //A { itemObject.Add("creatUser", actRow.creatUser.ToString()); itemObject.Add("creatTime", actRow.creatTime.ToString()); } ja.Add(itemObject); jo = new JObject(); jo.Add("status", "OK"); jo.Add("row", ja); } else { jo = new JObject(); jo.Add("status", "error"); jo.Add("error", errStr); } return(Content(JsonConvert.SerializeObject(jo), "application/json")); #endregion } catch (Exception ex) { jo = new JObject(); jo.Add("status", "error"); jo.Add("error", ex.Message); return(Content(JsonConvert.SerializeObject(jo), "application/json")); } }
public static string SaveOperLog(SqlConnection cn, string funcId, string tableName, DataTable OperLogTable) { //object oriRowId; object actStatus; object actSerial; object sysUserId; object rowId = null; DataRow[] delRow; string strSql = "insert into S90_operLog (actSerial,sysUserId, menuId,actStatus,tableName,tblPrimaryKeysAndValues) values (@actSerial,@sysUserId, @menuId,@actStatus,@tableName,@tblPrimaryKeysAndValues);SELECT @rowId = SCOPE_IDENTITY()"; for (int i = 0; i < OperLogTable.Rows.Count; i++) { #region KeyAndValues string strPKeysAndValues = ""; string pKeyName; string pKeyValue; //若有需要串接到operLogDeatil 會用到,目前用不到 ,且一開始rowId 若有值只是自動編來跟 operLogDeatil 串接的 //oriRowId = OperLogTable.Rows[i][0].ToString(); actStatus = OperLogTable.Rows[i]["actStatus"]; actSerial = OperLogTable.Rows[i]["actSerial"]; sysUserId = OperLogTable.Rows[i]["sysUserId"]; for (int j = 5; j < OperLogTable.Columns.Count; j++) { pKeyName = OperLogTable.Columns[j].ColumnName; pKeyValue = OperLogTable.Rows[i][j].ToString().Trim(); strPKeysAndValues += pKeyName + "='" + pKeyValue + "'|"; } strPKeysAndValues = strPKeysAndValues.Substring(0, strPKeysAndValues.Length - 1); #endregion SqlParameter[] param = new SqlParameter[7]; param[0] = new SqlParameter("@sysUserId", SqlDbType.Char, 10); param[0].Value = sysUserId; param[1] = new SqlParameter("@funcId", SqlDbType.Char, 8); param[1].Value = funcId; param[2] = new SqlParameter("@actStatus", SqlDbType.Char, 1); param[2].Value = actStatus; param[3] = new SqlParameter("@tableName", SqlDbType.VarChar, 255); param[3].Value = tableName; param[4] = new SqlParameter("@tblPrimaryKeysAndValues", SqlDbType.NVarChar, 255); param[4].Value = strPKeysAndValues; param[5] = new SqlParameter("@rowId", SqlDbType.Int, 4, ParameterDirection.InputOutput, false, 0, 0, "", DataRowVersion.Proposed, rowId); param[5].Value = rowId; param[6] = new SqlParameter("@actSerial", SqlDbType.Int, 4); param[6].Value = actSerial; string errStr = SqlTool2.ExecuteNonQuery(cn, strSql, param); if (errStr != "") { delRow = OperLogTable.Select("actStatus='*'"); foreach (DataRow dr in delRow) { dr.Delete(); } return(errStr); } OperLogTable.Rows[i]["actStatus"] = "*"; rowId = param[5].Value; //有需要時 寫入 異動前後的值到operLogDetail } delRow = OperLogTable.Select("actStatus='*'"); foreach (DataRow dr in delRow) { dr.Delete(); } OperLogTable.AcceptChanges(); return(""); }