using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; namespace Cosmos.Service { class ReservationService : IReservationUs { private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus; // 기본정보 참조 private TranStatus m_cTrnStatus; // 거래정보 참조 private IMasterUs m_cMstService = null; // 마스터 인터페이스 public ReservationService() { m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER); } /// /// 예약 데이터 조회 /// /// 예약번호 /// 조회결과 /// public string SelectData(string[] aPara, out DataTable dtData) { string sReturn = UserCom.RST_ERR; dtData = new DataTable(); try { string sql = "SELECT CMP_CD \n" + " , STOR_CD \n" + " , RESERV_NO \n" + " , RESERV_DT \n" + " , RESERV_TM \n" + " , CASHIER_NM \n" + " , TEL_NO \n" + " , NOTE \n" + " , ALARM_YN \n" + " , ALARM_TM \n" + " , CONFIRM \n" + " , FILLER1 \n" // 연습모드 + " , FILLER2 \n" + " , FILLER3 \n" + " , FILLER4 \n" + " , FILLER5 \n" + " , UPD_ID \n" + " , UPD_DT \n" + " , REG_ID \n" + " , REG_DT \n" + " FROM POSMST..MST_RESERV WITH(NOLOCK) " + " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; if (aPara[0] == PosConst.TABLE_RESERVE_SEARCH_TYPE.TABLE_RESERVE_NO) { sql += " AND RESERV_NO = '" + aPara[1].Trim() + "' "; } else if (aPara[0] == PosConst.TABLE_RESERVE_SEARCH_TYPE.TABLE_RESERVE_YM) { sql += " AND RESERV_DT LIKE '" + aPara[1].Trim() + "%' "; } else if (aPara[0] == PosConst.TABLE_RESERVE_SEARCH_TYPE.TABLE_RESERVE_ALRAM) { sql += " AND RESERV_DT = '" + m_cPosStatus.Base.SaleDate + "' AND ALARM_YN = 'Y' AND CONFIRM <> 'Y' "; } sql += " AND FILLER1 = '" + m_cPosStatus.Base.TrainingFlag + "' "; // Add, 2017.03.06, 연습모드 sql += " ORDER BY RESERV_DT, RESERV_NO "; dtData = m_cMstService.Select(new string[] { sql }); if (dtData == null) { return UserCom.RST_ERR; } sReturn = UserCom.RST_OK; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Exception." + ex.Message); sReturn = UserCom.RST_ERR + ex.Message; } return sReturn; } /// /// 예약등록 /// /// /// /// /// /// /// /// /// public string InsertData(string reservDate, string reservTime, string cashierNm, string custTelNo, string note, string alarmYN, string alarmTM) { try { string reservNo = this.GetReserveNo(reservDate); if (string.IsNullOrWhiteSpace(reservNo)) return UserCom.RST_ERR; string fmt = "INSERT INTO POSMST..MST_RESERV " + " (CMP_CD, STOR_CD, RESERV_NO, RESERV_DT, RESERV_TM, CASHIER_NM, TEL_NO, NOTE, ALARM_YN, ALARM_TM, CONFIRM " + ", FILLER1, FILLER2, FILLER3, FILLER4, FILLER5, UPD_ID, UPD_DT, REG_ID, REG_DT) " + "SELECT '{0}' " // CMP_CD + " , '{1}' " // STOR_CD + " , '{2}' " // RESERV_DT + " , '{3}' " // RESERV_NO + " , '{4}' " // RESERV_TM + " , N'{5}' " // CASHIER_NM + " , '{6}' " // TEL_NO + " , N'{7}' " // NOTE + " , '{8}' " // ALARM_YN + " , '{9}' " // ALARM_TM + " , '{10}' " // CONFIRM + " , '{11}' " // FILLER1 연습모드 + " , '{12}' " // FILLER2 + " , '{13}' " // FILLER3 + " , '{14}' " // FILLER4 + " , '{15}' " // FILLER5 + " , '{16}' " // UPD_ID + " , '{17}' " // UPD_DT + " , '{18}' " // REG_ID + " , '{19}' "; // REG_DT string sql = string.Format(fmt , m_cPosStatus.Base.CmpCd , m_cPosStatus.Base.StoreNo , reservNo , reservDate , reservTime.Replace(":", "") , cashierNm , custTelNo , ConvertDBStr(note) , alarmYN , alarmTM , "N" , m_cPosStatus.Base.TrainingFlag // Add, 2017.03.06, 연습모드 , "" , "" , "" , "" , m_cPosStatus.Base.CashierNo , DateTime.Now.ToString("yyyyMMddHHmmss") , m_cPosStatus.Base.CashierNo , DateTime.Now.ToString("yyyyMMddHHmmss") ); int ret = m_cMstService.Insert(new string[] { sql }); return ret == UserCom.OK ? UserCom.RST_OK : UserCom.RST_ERR; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Exception." + ex.Message); return UserCom.RST_ERR + ex.Message; } } /// /// 예약수정 /// /// /// /// /// /// /// /// /// /// public string UpdateData(string reserveNo, string reserveDate, string reserveTime, string cashierNm, string custTelNo, string note, string alarmYN, string alarmTM) { try { string fmt = "UPDATE POSMST..MST_RESERV \n" + " SET RESERV_DT = '{3}' \n" // @reserv_dt + " , RESERV_TM = '{4}' \n" // @reserv_tm + " , CASHIER_NM = N'{5}' \n" // @cashier_nm + " , TEL_NO = '{6}' \n" // @tel_no + " , NOTE = N'{7}' \n" // @note + " , ALARM_YN = '{8}' \n" // @alarm_yn + " , ALARM_TM = '{9}' \n" // @alarm_tm + " , FILLER1 = '{10}' \n" // @filler1 + " , FILLER2 = '{11}' \n" // @filler2 + " , FILLER3 = '{12}' \n" // @filler3 + " , FILLER4 = '{13}' \n" // @filler4 + " , FILLER5 = '{14}' \n" // @filler5 + " , UPD_ID = '{15}' \n" // @upd_id + " , UPD_DT = '{16}' \n" // @upd_dt + " , CONFIRM = CASE WHEN '{8}' = 'Y' AND '{9}' <> ALARM_TM THEN 'N' ELSE CONFIRM END " + " WHERE CMP_CD = '{0}' \n" // @cmp_cd + " AND STOR_CD = '{1}' \n" // @stor_cd + " AND RESERV_NO = '{2}' "; // @reserv_no string sql = string.Format(fmt , m_cPosStatus.Base.CmpCd , m_cPosStatus.Base.StoreNo , reserveNo , reserveDate , reserveTime , cashierNm , custTelNo , ConvertDBStr(note) , alarmYN , alarmTM , m_cPosStatus.Base.TrainingFlag // Add, 2017.03.06, 연습모드 , "" , "" , "" , "" , m_cPosStatus.Base.CashierNo , DateTime.Now.ToString("yyyyMMddHHmmss") ); int ret = m_cMstService.Update(new string[] { sql }); return ret == UserCom.OK ? UserCom.RST_OK : UserCom.RST_ERR; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Exception." + ex.Message); return UserCom.RST_ERR + ex.Message; } } /// /// 알람확인 /// /// /// /// public string UpdateAlarmComfrim(string reserveNo) { try { string[] resvNoList = reserveNo.Split('|'); if (resvNoList == null || resvNoList.Length == 0) return UserCom.RST_ERR; for (var i = 0; i < resvNoList.Length; i++) { resvNoList[i] = string.Format("'{0}'", resvNoList[i].Replace("'", "")); } string list = string.Join(",", resvNoList); string fmt = "UPDATE POSMST..MST_RESERV \n" + " SET CONFIRM = 'Y' \n" + " , UPD_ID = '{4}' \n" // @upd_id + " , UPD_DT = '{5}' \n" // @upd_dt + " WHERE CMP_CD = '{0}' \n" // @cmp_cd + " AND STOR_CD = '{1}' \n" // @stor_cd + " AND RESERV_NO IN ({2}) \n" // @reserv_no + " AND FILLER1 = '{3}' \n" // Add, 2017.03.06, 연습모드 ; string sql = string.Format(fmt , m_cPosStatus.Base.CmpCd , m_cPosStatus.Base.StoreNo , list , m_cPosStatus.Base.TrainingFlag // Add, 2017.03.06, 연습모드 , m_cPosStatus.Base.CashierNo , DateTime.Now.ToString("yyyyMMddHHmmss") ); int ret = m_cMstService.Update(new string[] { sql }); return ret == UserCom.OK ? UserCom.RST_OK : UserCom.RST_ERR; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Exception." + ex.Message); return UserCom.RST_ERR + ex.Message; } } /// /// 예약번호 (yyMM + 000000) /// /// /// private string GetReserveNo(string reserveDate) { try { string yymm = reserveDate.Substring(2, 4); string fmt = "SELECT ISNULL(MAX(RESERV_NO), '') AS SEQ FROM POSMST..MST_RESERV WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND RESERV_NO LIKE '{2}%' "; string sql = string.Format(fmt, m_cPosStatus.Base.CmpCd, m_cPosStatus.Base.StoreNo, yymm); DataTable dtData = m_cMstService.Select(new string[] { sql }); if (dtData == null || dtData.Rows.Count <= 0) return string.Empty; int temp = 0; string maxNo = CmUtil.GetDataRowStr(dtData.Rows[0], "SEQ"); if (string.IsNullOrWhiteSpace(maxNo)) { temp = 1; } else { temp = CmUtil.IntParse(maxNo.Substring(4, 6)) + 1; } return string.Format("{0}{1, 6:000000}", yymm, temp); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Exception." + ex.Message); return string.Empty; } } private string ConvertDBStr(string str) { return str.Replace("'", "''"); } } }