public static byte[] GetRetFaxPacket(DbModule.RECV_FAX_DATA_PSI p_info) //WCD(2014-05-28) { string strHead = ""; string strBody = ""; string strPacket = ""; byte[] bprPacket = new byte[RET_FAX_PACKET_LEN]; ClearPacket(ref bprPacket); try { strHead = String.Format("{0:3}{1:D06}{2:yyyyMMddHHmmss}{3,-50}{4,-10}{5,2}{6,-30}{7,-50}{8,2}{9,-50}{10,-50}{11,-30}{12,1}{13,1}{14,1}{15,1}{16,8}{17,6}{18,1}{19,-30}{20,-200}{21,2}{22,52}" , "4.0", RET_FAX_PACKET_LEN, DateTime.Now, "RETURN FAX", "1010", "01", p_info.CID, "", "02", "RETFAX", "RETURN FAX", p_info.SERVICE_FAXNO, "N", "N", "N", "N", "", "", "1", ".", "", "", ""); strBody = String.Format("{0,-20}{1,-20}{2,8}{3,4}{4,2}{5,-50}", p_info.CID, p_info.SERVICE_FAXNO, p_info.RECV_DATE, p_info.RECV_TIME, p_info.PAGE_CNT, p_info.DEPT_NAME); strPacket = strHead + strBody; byte[] tmpPacket = Encoding.Default.GetBytes(strPacket); Buffer.BlockCopy(tmpPacket, 0, bprPacket, 0, bprPacket.Length); } catch { bprPacket = null; } return(bprPacket); }
void SendRecvNoti(DbModule.RECV_FAX_DATA_PSI p_reqItem) { List <string> notiUsers = new List <string>(); //// 부서, 업무에 속한 사용자 아이디 얻음. if (!string.IsNullOrEmpty(p_reqItem.DEPT_CD) || !string.IsNullOrEmpty(p_reqItem.TASK_ID)) { DbModule.Instance.GetReceiveNotiUsers(p_reqItem.DEPT_CD, p_reqItem.TASK_ID, ref notiUsers); } //// 개인팩스함으로 수신 if (!string.IsNullOrEmpty(p_reqItem.USER_ID)) { notiUsers.Clear(); notiUsers.Add(p_reqItem.USER_ID); } //// 사용자에게 수신 알람 메시지 전송 foreach (string userId in notiUsers) { if (!UdpSingle.Instance.SendMessageEx(userId, p_reqItem)) { LogError(string.Format("팩스수신 알림메시지 전송 실패. USER_ID:{0}", userId)); } Thread.Sleep(10); } LogMessage("팩스수신건 알림메시지 전송 완료.", p_reqItem); }
void SendSendToLTM(DbModule.RECV_FAX_DATA_PSI p_reqItem) { string strMsg = string.Format("LOOP_FAX|{0}", p_reqItem.SERVICE_FAXNO); byte[] buffer = Encoding.Default.GetBytes(strMsg); IPAddress ipAddr; if (!IPAddress.TryParse(Config.LTM_IP, out ipAddr)) { LogMessage(string.Format("LOOP 팩스 IP 파싱 실패. IP={0}", Config.LTM_IP)); return; } IPEndPoint ep = new IPEndPoint(ipAddr, Config.LTM_PORT); using (Socket udpSock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { int nLen = udpSock.SendTo(buffer, 0, buffer.Length, SocketFlags.None, ep); if (nLen <= 0) { LogMessage(string.Format("LOOP 팩스 데이터 전송 실패. IP={0}", Config.LTM_IP)); } LogMessage("LOOP FAX 결과 전송 완료.", p_reqItem); } }
bool PostProcessingReq(DbModule.RECV_FAX_DATA_PSI p_reqItem) { LogMessage("팩스수신 후처리 시작.", p_reqItem); if (p_reqItem.SERVICE_FAXNO == Config.LOOP_FAXNO) { // LOOP 송신에 대한 결과 송신. // PSI --> LTM SendSendToLTM(p_reqItem); } else { // 수신 알림메시지 처리. SendRecvNoti(p_reqItem); } // E-Mail 처리. SendEMail(p_reqItem); // 대리자 처리. SendProxyUser(p_reqItem); // 리턴팩스 처리 - 우리카드 커스터마이징 //SendReturnFax(p_reqItem); LogMessage("팩스수신 후처리 완료.", p_reqItem); return(true); }
private bool SendToRetFax(DbModule.RECV_FAX_DATA_PSI p_info) //WCD(2014-05-28) { //string faxErr = "N"; byte[] m_postOutboundPacket = GetRetFaxPacket(p_info); if (m_postOutboundPacket == null) { LogError("RET FAX Packet 생성실패"); return(false); } return(SendPostOutboundPacket(m_postOutboundPacket)); }
private void LogMessage(string message, DbModule.RECV_FAX_DATA_PSI p_info, RESULT db_result = RESULT.EMPTY) { LogMessage(String.Format("[RESULT:{0}] [FAX_ID:{1}][DEPT_CD:{2}][TASK_ID:{3}][USER_ID:{4}][CID:{5}][CID_NAME:{6}][EMAIL_NOTIFY_YN:{7}][EMAIL_NOTIFY:{8}] {9}", db_result, p_info.FAX_ID, p_info.DEPT_CD, p_info.TASK_ID, p_info.USER_ID, p_info.CID, p_info.CID_NAME, p_info.EMAIL_NOTIFY_YN, p_info.EMAIL_NOTIFY, message )); }
void SendReturnFax(DbModule.RECV_FAX_DATA_PSI p_reqItem) { //LogError(string.Format("RET FAX => |{0}|{1}|", Config.RET_DEPT_CD, m_recvInfo.DEPT_CD) ); if (Config.RET_DEPT_CD.CompareTo(p_reqItem.DEPT_CD) == 0) //WCD 2014-06-24 //if (Config.RET_DEPT_CD.IndexOf(m_recvInfo.DEPT_CD) >= 0) { if (!this.SendToRetFax(p_reqItem)) { LogError("리턴팩스 전송 도중 오류가 발생하였습니다!!"); // AlarmAPI.Instance.SendFaultAlarm((UInt32)RESULT.F_DB_UPDATE_ERROR); } LogMessage("팩스수신건 리턴팩스 처리 완료.", p_reqItem); } }
void SendEMail(DbModule.RECV_FAX_DATA_PSI p_reqItem) { if (p_reqItem.EMAIL_NOTIFY_YN == "Y") { bool isSuccess = MailHelper.SendMail(p_reqItem.EMAIL_NOTIFY); //if (this.InsertProcessLog(m_recvInfo.FAX_ID, isSuccess, // "사용자에게 EMail 알림 보내기", // "보낸 EMail 주소 : " + m_recvInfo.EMAIL_NOTIFY, // "SMTP IP : " + Config.SMTP_IP, // "SMTP Port : " + Config.SMTP_PORT.ToString() // ) != RESULT.SUCCESS) if (this.InsertProcessLog(p_reqItem.FAX_ID, isSuccess, "Send EMail") != RESULT.SUCCESS) { LogError("작업완료 상태를 DB에 반영하는 도중 오류가 발생하였습니다 (EMAIL 알림 보내기)"); // AlarmAPI.Instance.SendFaultAlarm((UInt32)RESULT.F_DB_UPDATE_ERROR); } LogMessage("팩스수신건 이메일 전송 완료.", p_reqItem); } }
void SendProxyUser(DbModule.RECV_FAX_DATA_PSI p_reqItem) { if (p_reqItem.PROXY_USER_ID != "") { bool isSuccess = UdpSingle.Instance.SendMessage(p_reqItem.PROXY_USER_ID); //if (this.InsertProcessLog(m_recvInfo.FAX_ID, isSuccess, // "대리자에게 UDP 메세지 보내기", // "대리자 ID : " + m_recvInfo.PROXY_USER_ID, // "FAS IP : " + Config.FAS_IP, // "FAS Port : " + Config.FAS_PORT.ToString() // ) != RESULT.SUCCESS) if (this.InsertProcessLog(p_reqItem.FAX_ID, isSuccess, "Send UDP Message") != RESULT.SUCCESS) { LogError("작업완료 상태를 DB에 반영하는 도중 오류가 발생하였습니다 (UDP 메세지 보내기)"); // AlarmAPI.Instance.SendFaultAlarm((UInt32)RESULT.F_DB_UPDATE_ERROR); } if (p_reqItem.PROXY_EMAIL_NOTIFY_YN == "Y") { isSuccess = MailHelper.SendMail(p_reqItem.PROXY_EMAIL_NOTIFY); //if (this.InsertProcessLog(m_recvInfo.FAX_ID, isSuccess, // "사용자에게 EMail 알림 보내기", // "보낸 EMail 주소 : " + m_recvInfo.PROXY_EMAIL_NOTIFY, // "SMTP IP : " + Config.SMTP_IP, // "SMTP Port : " + Config.SMTP_PORT.ToString() // ) != RESULT.SUCCESS) if (this.InsertProcessLog(p_reqItem.FAX_ID, isSuccess, "Send EMail") != RESULT.SUCCESS) { LogError("작업완료 상태를 DB에 반영하는 도중 오류가 발생하였습니다 (EMAIL 알림 보내기)"); // AlarmAPI.Instance.SendFaultAlarm((UInt32)RESULT.F_DB_UPDATE_ERROR); } } LogMessage("팩스수신건 대리자 처리 완료.", p_reqItem); } }
/// <summary> /// UDP 메세지 보내기 /// </summary> /// <param name="userId">파라미터1 : USER_ID</param> /// <param name="message">파라미터2 : 수신 메세지</param> public bool SendMessageEx(string userId, DbModule.RECV_FAX_DATA_PSI p_psiData) { bool result = false; try { string msg = Config.RECV_NOTIFY_MESSAGE; //{USER_ID},{DEPT_CD},{DEPT_NAME},{TASK_NAME},{CID},{CID_NAME},{CURR_TIME} if (msg.Contains("{USER_ID}")) { msg = msg.Replace("{USER_ID}", p_psiData.USER_ID); } if (msg.Contains("{DEPT_CD}")) { msg = msg.Replace("{DEPT_CD}", p_psiData.DEPT_CD); } if (msg.Contains("{DEPT_NAME}")) { msg = msg.Replace("{DEPT_NAME}", p_psiData.DEPT_NAME); } if (msg.Contains("{TASK_NAME}")) { msg = msg.Replace("{TASK_NAME}", p_psiData.TASK_NAME); } if (msg.Contains("{CID}")) { msg = msg.Replace("{CID}", p_psiData.CID); } if (msg.Contains("{CID_NAME}")) { msg = msg.Replace("{CID_NAME}", p_psiData.CID_NAME); } if (msg.Contains("{CURR_TIME}")) { msg = msg.Replace("{CURR_TIME}", string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); } /// 파라미터 만들기 MessageStream notify = MessageStream.Notice ( MessagePacketNameEnum.NTFTM, userId, Config.SYSTEM_PROCESS_ID, NotifyTextMessageType.INBOUND.ToString(), Config.RECV_NOTIFY_TITLE, msg, NotifyTextMessageUrlType.UrlWithFaxboxId_UserId.ToString(), //NotifyTextMessageUrlType.UrlWithUserId.ToString(), Config.RECV_FAXBOX_URL ); /// STX, ETX 추가 byte[] convertBytes = Encoding.Default.GetBytes(notify.ToString()); byte[] messageBytes = new byte[convertBytes.Length + 2]; messageBytes[0] = MessageConfiguration.STX; messageBytes[messageBytes.Length - 1] = MessageConfiguration.ETX; Buffer.BlockCopy(convertBytes, 0, messageBytes, 1, convertBytes.Length); /// UDP 보내기 udpSocket.Send(Config.FAS_IP, Config.FAS_PORT, Encoding.Default.GetString(messageBytes)); result = true; } catch (Exception ex) { udpSocket.LogWriteErr(ex, "UdpSingle()", "UdpSocket()", "SendMessage()"); } return(result); }