顯示具有 OracleDataReader 標籤的文章。 顯示所有文章
顯示具有 OracleDataReader 標籤的文章。 顯示所有文章

2022年10月20日 星期四

V20107D - reader & Email OracleDataReader - try catch finally

 目的: 讀取 SQL 的欄位值 &  Email 處理

處理說明: 1>OracleDataReader   reader;
                       cmd.CommandText = Tmp_Sql;
                      reader = cmd.ExecuteReader();
                      if (reader.HasRows)
                     {
                          while (reader.Read())
                          {
                                ChkMail.To.Add(reader["NOTES_MAIL"].ToString());
                          }
                      };  

                 2>Email 處理
                     MailMessage ChkMail = new MailMessage();
                     string mail_from = "tlsapp@ms.aidc.com.tw";
                    ChkMail.From = new MailAddress(mail_from, "AMM系統", System.Text.Encoding.UTF8);//發送者 
                    string subject = "AMM V20107 工作步序資料維護 - 工時不完整(=0)";
                   string content = "附檔內的件號工作步序資料不完整<br>"
                                           + "請至 AMM V20107維護工作步序資料<br>";
                  sendMail(subject, content, ChkMail);
                  //ChkMail.Subject = subject;    //主題
                  //ChkMail.Body = content;       //內容  
                  //SmtpClient Smtp = new SmtpClient();   //建立SMTP連線  
                  //Smtp.Send(ChkMail);   //發送

     

1>*.js

//[MAIL通知]鈕
function MAILNotifyBtn_click() {    
    var np = {};
    np = {        
    };
    Ext.Ajax.request({
        url: '../../api/V20107DAPI/DoMAIL',
        method: 'POST',
        async: false,
        //standardSubmit: true, //若要傳送檔案至前端, standardSubmit必需設為 true  
        params: np,
        success: function (response, opts) {
            var Tmp_Obj = Ext.decode(response.responseText);
            if (Tmp_Obj["success"] == false) {
                var Tmp_Rtn_Msg = "EMAIL通知人員失敗!!<br>"
                    + "請檢核<br>"
                    + Tmp_Obj["Rtn_Msg"];
                mywarnalert(Tmp_Rtn_Msg);
                return;
            }
            else {
                var Tmp_Rtn_Msg = "EMAIL通知人員成功!!<br>";
                mysuccessalert(Tmp_Rtn_Msg);                
            }
        }

    });
}  // end of function MAILNotifyBtn_click() {


2>*.cs
// [MAIL通知] - DoMAIL
        [HttpPost]
        public HttpResponseMessage DoMAIL()
        {
            //取得參數值
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            
            string Tmp_USERID = LoginUserModel.LoginUserId;            
            string Tmp_RtnMsg = "";
            string To_Adr = "";

            string n = funId + "_DoMAIL";
            OracleConnection conn = new OracleConnection(DBService.ConnectionString(DBLINK));
            OracleCommand cmd = new OracleCommand();
            OracleDataReader reader;
            var response = Request.CreateResponse();
            MailMessage ChkMail = new MailMessage();
            try
            {
                conn.Open();
                conn.ClientInfo = User.Identity.Name;
                conn.ModuleName = BaseSYS + "_" + BaseMODID;
                conn.ActionName = ActionName;
                cmd.BindByName = true;
                cmd.Connection = conn;
                string Tmp_Sql;
                int Tmp_cnt=0;
                Tmp_Sql = "  SELECT COUNT(*)  "
                                +"   FROM   AMM_WKSTP A, AMM_WKSTPD B  "
                                +"   WHERE A.MITM = B.MITM  "
                                +"   AND      (B.WHR = '0' OR B.WHR IS NULL)  "
                                +"  AND        SUBSTR(DEPID,1,2) = ( SELECT SUBSTR(DEPID, 1, 2)  "
                                +                                                        "   FROM   HR_EMPLYM  "
                                +                                                        "  WHERE  EMPLYID = "+myfunc.AA(Tmp_USERID)+") ";
                Tmp_cnt = int.Parse(myfunc.SqlValue(Tmp_Sql));
                if (Tmp_cnt==0)
                {
                    Tmp_RtnMsg = "目前登入使用者(" + Tmp_USERID + ")的部門相關工作步序資料<br>"
                                             + "工時資料均完整 ( 工時>0 ) <br>"
                                             + "不需 MAIL 通知相關人員";                                             
                    response.Content = new StringContent("{'success': false,'Rtn_Msg':'" + Tmp_RtnMsg + "'}");    // 回應內容
                    return response;
                }
                //填寫 Email.From, To, subject, BODY
                Tmp_Sql= "  SELECT A.EMPLYID,B.NOTES_MAIL  "
                               +"   FROM AMM_MAILIST A, HR_EMPLYM B  "
                               +"   WHERE A.EMPLYID = B.EMPLYID  "
                               +"   AND A.DEPID = ( SELECT   SUBSTR(DEPID, 1, 2)  "
                               +                               "   FROM    HR_EMPLYM  "
                               +                               "   WHERE  EMPLYID ="+myfunc.AA(Tmp_USERID)+" ) ";
                cmd.CommandText = Tmp_Sql;
                reader = cmd.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        ChkMail.To.Add(reader["NOTES_MAIL"].ToString());
                    }
                };                
                string mail_from = "tlsapp@ms.aidc.com.tw";
                ChkMail.From = new MailAddress(mail_from, "AMM系統", System.Text.Encoding.UTF8);//發送者 
                string subject = "AMM V20107 工作步序資料維護 - 工時不完整(=0)";
                string content = "附檔內的件號工作步序資料不完整<br>"
                                          + "請至 AMM V20107維護工作步序資料<br>";
                sendMail(subject, content, ChkMail);
                  //ChkMail.Subject = subject;    //主題
                  //ChkMail.Body = content;       //內容  
                  //SmtpClient Smtp = new SmtpClient();   //建立SMTP連線  
                  //Smtp.Send(ChkMail);   //發送

                response.StatusCode = HttpStatusCode.OK;
                Tmp_RtnMsg = "已 Email 通知相關人員 !!  <br>";
                response.Content = new StringContent("{'success': true,'Rtn_Msg':'" + Tmp_RtnMsg + "'}");    // 回應內容
                return response;
                //excuteSQLTran
            }  //try
            catch (Exception e)
            {
                string Tmp_msg;
                Tmp_msg = myfunc.Get1ORA(e.Message);
                Tmp_RtnMsg = "Email 通知失敗<br>"
                                         + Tmp_msg;
                response.Content = new StringContent("{'success': false,'Rtn_Msg':'" + Tmp_RtnMsg + "'}");    // 回應內容
                return response;
            }
            finally
            {
                conn.Close();
            }
        }  // end of DoMAIL