DbConnector.cs 84 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974
  1. using Db_Core;
  2. using log4net;
  3. using SuperAdmin.Models;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data.Common;
  7. using Oracle.ManagedDataAccess.Client;
  8. using System.Data;
  9. using ReportWeb.Models;
  10. using ReportWeb.Source;
  11. namespace SuperAdmin.Source
  12. {
  13. /// <summary>
  14. /// Summary description for DbConnector
  15. /// </summary>
  16. public class DbConnector
  17. {
  18. private readonly ILog log = LogManager.GetLogger(typeof(DbConnector));
  19. private ConnectionType connType = ConnectionType.ORACLE;
  20. public List<Services> LoadListServices()
  21. {
  22. try
  23. {
  24. String sql = @"select * from sv where status = 1";
  25. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  26. var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  27. stmt.CloseConnection();
  28. return rs;
  29. }
  30. catch (Exception ex)
  31. {
  32. log.Error("Error LoadListServices", ex);
  33. return null;
  34. }
  35. }
  36. public List<Services> LoadListServicesReport()
  37. {
  38. try
  39. {
  40. String sql = @"select * from sv join sv_report sr on sv.sv_code = sr.sv_code where sv.status = 1";
  41. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  42. var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  43. stmt.CloseConnection();
  44. return rs;
  45. }
  46. catch (Exception ex)
  47. {
  48. log.Error("Error LoadListServicesReport", ex);
  49. return null;
  50. }
  51. }
  52. public List<Services> LoadListServicesAdv(int status)
  53. {
  54. try
  55. {
  56. String sql = @"select sv.id, sv.sv_code, sv.sv_name, a.msg_adv, a.adv_name, a.channel_adv, a.message_type, a.from_money, a.status, a.id adv_id
  57. from sv join sv_adv a on sv.sv_code = a.sv_code where sv.status = 1
  58. [ and a.status = ? ]";
  59. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  60. if (status >= 0)
  61. {
  62. stmt.SetParameter(0, status);
  63. }
  64. var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  65. stmt.CloseConnection();
  66. return rs;
  67. }
  68. catch (Exception ex)
  69. {
  70. log.Error("Error LoadListServicesAdv", ex);
  71. return null;
  72. }
  73. }
  74. public List<Users> GetUserByName(string username)
  75. {
  76. try
  77. {
  78. log.Info("Error GetUserByName: " + username);
  79. String sql = @"select * from user_report where status = 1 and username = ?";
  80. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  81. log.Info(stmt.connectionString);
  82. stmt.SetParameters(username);
  83. var rs = Users.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  84. stmt.CloseConnection();
  85. return rs;
  86. }
  87. catch (Exception ex)
  88. {
  89. log.Error("Error GetUserByName", ex);
  90. return null;
  91. }
  92. }
  93. public Services GetServiceById(string serviceId)
  94. {
  95. try
  96. {
  97. String sql = @"select * from sv where status = 1 and id = ?";
  98. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  99. stmt.SetParameters(serviceId);
  100. var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  101. stmt.CloseConnection();
  102. if (rs != null && rs.Count > 0)
  103. {
  104. return rs[0];
  105. }
  106. return null;
  107. }
  108. catch (Exception ex)
  109. {
  110. log.Error("Error GetServiceById", ex);
  111. return null;
  112. }
  113. }
  114. public Services GetServiceRpBySvCode(string svCode)
  115. {
  116. try
  117. {
  118. String sql = @"select * from sv_report where status = 1 and sv_code = ?";
  119. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  120. stmt.SetParameters(svCode);
  121. var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  122. stmt.CloseConnection();
  123. if (rs != null && rs.Count > 0)
  124. {
  125. return rs[0];
  126. }
  127. return null;
  128. }
  129. catch (Exception ex)
  130. {
  131. log.Error("Error GetServiceRpBySvCode", ex);
  132. return null;
  133. }
  134. }
  135. public Services GetServiceAdvById(string advId)
  136. {
  137. try
  138. {
  139. String sql = @"select a.*, a.id adv_id from sv_adv a where id = ?";
  140. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  141. stmt.SetParameters(advId);
  142. var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  143. stmt.CloseConnection();
  144. if (rs != null && rs.Count > 0)
  145. {
  146. return rs[0];
  147. }
  148. return null;
  149. }
  150. catch (Exception ex)
  151. {
  152. log.Error("Error GetServiceAdvById", ex);
  153. return null;
  154. }
  155. }
  156. public List<DailyReport> GetCommonReport(DateTime fromDate, DateTime toDate)
  157. {
  158. DbConnection myConnection = null;
  159. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  160. String sqlCommand = "SELECT a.sv_code, sv.sv_name service_name, sv.id service_id, to_char(a.report_date,'dd/mm/yyyy') report_date, a.revenue, a.count_reg, a.paid_money, a.count_active, a.count_deactive, a.revenue_buy " +
  161. " FROM daily_report a, sv " +
  162. "WHERE a.sv_code = sv.sv_code AND report_date >= :fromDate AND report_date <= :toDate ORDER BY a.sv_code, a.report_date";
  163. try
  164. {
  165. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  166. {
  167. DbCommand myCommand = myConnection.CreateCommand();
  168. myCommand.CommandText = sqlCommand;
  169. myCommand.Parameters.Clear();
  170. // from date
  171. AddCmdParam(ref myCommand, "fromDate", fromDate);
  172. // todate
  173. AddCmdParam(ref myCommand, "toDate", toDate);
  174. DbDataReader reader = myCommand.ExecuteReader();
  175. return DailyReport.Parse((OracleDataReader)reader);
  176. }
  177. }
  178. catch (Exception ex)
  179. {
  180. log.Error("Error GetDailyReport", ex);
  181. return null;
  182. }
  183. finally
  184. {
  185. try
  186. {
  187. if (myConnection != null)
  188. {
  189. myConnection.Close();
  190. }
  191. }
  192. catch { }
  193. }
  194. }
  195. public List<DailyReport> GetTotalReport(DateTime fromDate, DateTime toDate)
  196. {
  197. DbConnection myConnection = null;
  198. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  199. String sqlCommand = "SELECT to_char(a.report_date,'dd/mm/yyyy') report_date, sum(a.revenue) revenue," +
  200. " sum(a.count_reg) count_reg, sum(a.paid_money) paid_money, sum(a.count_active) count_active, sum(a.count_deactive) count_deactive FROM daily_report a " +
  201. "WHERE report_date >= :fromDate AND report_date <= :toDate GROUP by a.report_date ORDER BY a.report_date";
  202. try
  203. {
  204. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  205. {
  206. DbCommand myCommand = myConnection.CreateCommand();
  207. myCommand.CommandText = sqlCommand;
  208. myCommand.Parameters.Clear();
  209. // from date
  210. AddCmdParam(ref myCommand, "fromDate", fromDate);
  211. // todate
  212. AddCmdParam(ref myCommand, "toDate", toDate);
  213. DbDataReader reader = myCommand.ExecuteReader();
  214. return DailyReport.Parse((OracleDataReader)reader);
  215. }
  216. }
  217. catch (Exception ex)
  218. {
  219. log.Error("Error GetDailyReport", ex);
  220. return null;
  221. }
  222. finally
  223. {
  224. try
  225. {
  226. if (myConnection != null)
  227. {
  228. myConnection.Close();
  229. }
  230. }
  231. catch { }
  232. }
  233. }
  234. public List<DailyReport> GetDailyReport(string serviceCode, DateTime fromDate, DateTime toDate)
  235. {
  236. DbConnection myConnection = null;
  237. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  238. String sqlCommand =
  239. "SELECT a.sv_code, to_char(a.report_date,'dd/mm/yyyy') report_date, a.revenue, a.revenue_buy, a.count_reg, a.paid_money, a.count_active, a.count_deactive " +
  240. "FROM daily_report a " +
  241. "WHERE sv_code = :service_code AND report_date >= :fromDate AND report_date <= :toDate ORDER BY a.report_date desc";
  242. try
  243. {
  244. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  245. {
  246. DbCommand myCommand = myConnection.CreateCommand();
  247. myCommand.CommandText = sqlCommand;
  248. myCommand.Parameters.Clear();
  249. // service code
  250. AddCmdParam(ref myCommand, "service_code", serviceCode);
  251. // from date
  252. AddCmdParam(ref myCommand, "fromDate", fromDate);
  253. // todate
  254. AddCmdParam(ref myCommand, "toDate", toDate);
  255. DbDataReader reader = myCommand.ExecuteReader();
  256. return DailyReport.Parse((OracleDataReader)reader);
  257. }
  258. }
  259. catch (Exception ex)
  260. {
  261. log.Error("Error GetDailyReport", ex);
  262. return null;
  263. }
  264. finally
  265. {
  266. try
  267. {
  268. if (myConnection != null)
  269. {
  270. myConnection.Close();
  271. }
  272. }
  273. catch { }
  274. }
  275. }
  276. public List<DailyReport> GetDailyReportAccu(string serviceCode, DateTime fromDate, DateTime toDate)
  277. {
  278. DbConnection myConnection = null;
  279. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  280. String sqlCommand = "SELECT a.sv_code, to_char(a.report_date,'dd/mm/yyyy') report_date, a.revenue, a.revenue_buy, a.count_reg, a.paid_money, a.count_active, a.count_deactive " +
  281. "FROM daily_report a " +
  282. "WHERE sv_code = :service_code AND report_date >= :fromDate AND report_date <= :toDate ORDER BY a.report_date desc";
  283. try
  284. {
  285. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  286. {
  287. DbCommand myCommand = myConnection.CreateCommand();
  288. myCommand.CommandText = sqlCommand;
  289. myCommand.Parameters.Clear();
  290. // service code
  291. AddCmdParam(ref myCommand, "service_code", serviceCode);
  292. // from date
  293. AddCmdParam(ref myCommand, "fromDate", fromDate);
  294. // todate
  295. AddCmdParam(ref myCommand, "toDate", toDate);
  296. DbDataReader reader = myCommand.ExecuteReader();
  297. return DailyReport.Parse((OracleDataReader)reader);
  298. }
  299. }
  300. catch (Exception ex)
  301. {
  302. log.Error("Error GetDailyReport", ex);
  303. return null;
  304. }
  305. finally
  306. {
  307. try
  308. {
  309. if (myConnection != null)
  310. {
  311. myConnection.Close();
  312. }
  313. }
  314. catch { }
  315. }
  316. }
  317. public List<DailyReport> GetHourlyReport(string serviceCode, DateTime fromDate, DateTime toDate)
  318. {
  319. DbConnection myConnection = null;
  320. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  321. String sqlCommand =
  322. "SELECT a.sv_code, to_char(a.report_date,'dd/mm/yyyy hh24') report_date, a.revenue, a.revenue_buy, a.count_reg, a.paid_money, a.count_active, a.count_deactive " +
  323. "FROM hourly_report a " +
  324. "WHERE sv_code = :service_code AND report_date >= :fromDate AND report_date <= :toDate + 1 ORDER BY a.report_date desc";
  325. try
  326. {
  327. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  328. {
  329. DbCommand myCommand = myConnection.CreateCommand();
  330. myCommand.CommandText = sqlCommand;
  331. myCommand.Parameters.Clear();
  332. // service code
  333. AddCmdParam(ref myCommand, "service_code", serviceCode);
  334. // from date
  335. AddCmdParam(ref myCommand, "fromDate", fromDate);
  336. // todate
  337. AddCmdParam(ref myCommand, "toDate", toDate);
  338. DbDataReader reader = myCommand.ExecuteReader();
  339. return DailyReport.Parse((OracleDataReader)reader);
  340. }
  341. }
  342. catch (Exception ex)
  343. {
  344. log.Error("Error GetHourlyReport", ex);
  345. return null;
  346. }
  347. finally
  348. {
  349. try
  350. {
  351. if (myConnection != null)
  352. {
  353. myConnection.Close();
  354. }
  355. }
  356. catch { }
  357. }
  358. }
  359. public List<DailyReport> GetTotalHourlyReport(DateTime fromDate, DateTime toDate)
  360. {
  361. DbConnection myConnection = null;
  362. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  363. String sqlCommand = "SELECT to_char(a.report_date,'dd/mm/yyyy hh24') report_date, sum(a.revenue) revenue," +
  364. " sum(a.count_reg) count_reg, sum(a.paid_money) paid_money, sum(a.count_active) count_active, sum(a.count_deactive) count_deactive FROM hourly_report a " +
  365. "WHERE report_date >= trunc(:fromDate) AND report_date < trunc(:toDate) + 1 GROUP by a.report_date ORDER BY a.report_date";
  366. try
  367. {
  368. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  369. {
  370. DbCommand myCommand = myConnection.CreateCommand();
  371. myCommand.CommandText = sqlCommand;
  372. myCommand.Parameters.Clear();
  373. // from date
  374. AddCmdParam(ref myCommand, "fromDate", fromDate);
  375. // todate
  376. AddCmdParam(ref myCommand, "toDate", toDate);
  377. DbDataReader reader = myCommand.ExecuteReader();
  378. return DailyReport.Parse((OracleDataReader)reader);
  379. }
  380. }
  381. catch (Exception ex)
  382. {
  383. log.Error("Error GetTotalHourlyRerpot", ex);
  384. return null;
  385. }
  386. finally
  387. {
  388. try
  389. {
  390. if (myConnection != null)
  391. {
  392. myConnection.Close();
  393. }
  394. }
  395. catch { }
  396. }
  397. }
  398. public DataTable GetRevenueHourly(string serviceCode, DateTime fromDate, DateTime toDate)
  399. {
  400. DbConnection myConnection = null;
  401. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  402. String sqlCommand =
  403. @"select * from (SELECT sv_code, report_date,
  404. SUM(revenue) as TOTAL,
  405. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 0 AND to_number(to_char(report_hour, 'hh24')) < 1 THEN revenue ELSE 0 END) as h00,
  406. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 1 AND to_number(to_char(report_hour, 'hh24')) < 2 THEN revenue ELSE 0 END) as h01,
  407. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 2 AND to_number(to_char(report_hour, 'hh24')) < 3 THEN revenue ELSE 0 END) as h02,
  408. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 3 AND to_number(to_char(report_hour, 'hh24')) < 4 THEN revenue ELSE 0 END) as h03,
  409. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 4 AND to_number(to_char(report_hour, 'hh24')) < 5 THEN revenue ELSE 0 END) as h04,
  410. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 5 AND to_number(to_char(report_hour, 'hh24')) < 6 THEN revenue ELSE 0 END) as h05,
  411. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 6 AND to_number(to_char(report_hour, 'hh24')) < 7 THEN revenue ELSE 0 END) as h06,
  412. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 7 AND to_number(to_char(report_hour, 'hh24')) < 8 THEN revenue ELSE 0 END) as h07,
  413. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 8 AND to_number(to_char(report_hour, 'hh24')) < 9 THEN revenue ELSE 0 END) as h08,
  414. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 9 AND to_number(to_char(report_hour, 'hh24')) < 10 THEN revenue ELSE 0 END) as h09,
  415. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 10 AND to_number(to_char(report_hour, 'hh24')) < 11 THEN revenue ELSE 0 END) as h10,
  416. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 11 AND to_number(to_char(report_hour, 'hh24')) < 12 THEN revenue ELSE 0 END) as h11,
  417. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 12 AND to_number(to_char(report_hour, 'hh24')) < 13 THEN revenue ELSE 0 END) as h12,
  418. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 13 AND to_number(to_char(report_hour, 'hh24')) < 14 THEN revenue ELSE 0 END) as h13,
  419. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 14 AND to_number(to_char(report_hour, 'hh24')) < 15 THEN revenue ELSE 0 END) as h14,
  420. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 15 AND to_number(to_char(report_hour, 'hh24')) < 16 THEN revenue ELSE 0 END) as h15,
  421. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 16 AND to_number(to_char(report_hour, 'hh24')) < 17 THEN revenue ELSE 0 END) as h16,
  422. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 17 AND to_number(to_char(report_hour, 'hh24')) < 18 THEN revenue ELSE 0 END) as h17,
  423. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 18 AND to_number(to_char(report_hour, 'hh24')) < 19 THEN revenue ELSE 0 END) as h18,
  424. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 19 AND to_number(to_char(report_hour, 'hh24')) < 20 THEN revenue ELSE 0 END) as h19,
  425. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 20 AND to_number(to_char(report_hour, 'hh24')) < 21 THEN revenue ELSE 0 END) as h20,
  426. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 21 AND to_number(to_char(report_hour, 'hh24')) < 22 THEN revenue ELSE 0 END) as h21,
  427. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 22 AND to_number(to_char(report_hour, 'hh24')) < 23 THEN revenue ELSE 0 END) as h22,
  428. SUM(CASE WHEN to_number(to_char(report_hour, 'hh24')) >= 23 AND to_number(to_char(report_hour, 'hh24')) < 24 THEN revenue ELSE 0 END) as h23
  429. FROM(
  430. SELECT trunc(report_date) report_date,
  431. sv_code,
  432. revenue,
  433. report_date report_hour
  434. FROM hourly_report
  435. )
  436. GROUP BY sv_code, report_date
  437. )
  438. WHERE sv_code = :service_code AND report_date >= :fromDate AND report_date <= :toDate ORDER BY report_date desc";
  439. try
  440. {
  441. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  442. {
  443. DbCommand myCommand = myConnection.CreateCommand();
  444. myCommand.CommandText = sqlCommand;
  445. myCommand.Parameters.Clear();
  446. // service code
  447. AddCmdParam(ref myCommand, "service_code", serviceCode);
  448. // from date
  449. AddCmdParam(ref myCommand, "fromDate", fromDate);
  450. // todate
  451. AddCmdParam(ref myCommand, "toDate", toDate);
  452. DbDataReader reader = myCommand.ExecuteReader();
  453. var tb = new DataTable();
  454. tb.Load(reader);
  455. return tb;
  456. }
  457. }
  458. catch (Exception ex)
  459. {
  460. log.Error("Error GetRevenueHourly", ex);
  461. return null;
  462. }
  463. finally
  464. {
  465. try
  466. {
  467. if (myConnection != null)
  468. {
  469. myConnection.Close();
  470. }
  471. }
  472. catch { }
  473. }
  474. }
  475. public List<ChargeLog> GetChargeLog(Services sv, String msisdn, DateTime fromDate, DateTime toDate)
  476. {
  477. try
  478. {
  479. String sqlCommand = "SELECT * FROM " + sv.db_name + ".charge_log WHERE msisdn = ? AND insert_time >= ? AND insert_time - 1 <= ? ORDER BY insert_time desc";
  480. SqlStatement stmt = new SqlStatement(sqlCommand, BuildConnectionString(sv));
  481. stmt.SetParameters(msisdn, fromDate, toDate);
  482. return ChargeLog.Parse(stmt.ExecuteReader());
  483. }
  484. catch (Exception ex)
  485. {
  486. log.Error("Error GetChargeLog " + msisdn, ex);
  487. return null;
  488. }
  489. }
  490. public List<RegInfo> GetRegisterInfo(Services sv, String msisdn, DateTime fromDate, DateTime toDate)
  491. {
  492. try
  493. {
  494. String sqlCommand = "SELECT * FROM " + sv.db_name + ".reg_info WHERE msisdn = ? AND expire_time >= ? AND register_time - 1 <= ? ORDER BY register_time desc";
  495. SqlStatement stmt = new SqlStatement(sqlCommand, BuildConnectionString(sv));
  496. stmt.SetParameters(msisdn, fromDate, toDate);
  497. return RegInfo.Parse(stmt.ExecuteReader());
  498. }
  499. catch (Exception ex)
  500. {
  501. log.Error("Error Get RegInfo " + msisdn, ex);
  502. return null;
  503. }
  504. }
  505. // lucky spin
  506. public List<SpinLog> GetLuckySpin(String msisdn, DateTime fromDate, DateTime toDate)
  507. {
  508. try
  509. {
  510. String sqlCommand = "SELECT * FROM lucky_spin WHERE msisdn = ? AND expire_time >= ? AND insert_time - 1 <= ? ORDER BY expire_time desc";
  511. SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
  512. stmt.SetParameters(msisdn, fromDate, toDate);
  513. return SpinLog.Parse(stmt.ExecuteReader());
  514. }
  515. catch (Exception ex)
  516. {
  517. log.Error("Error Get Spin log " + msisdn, ex);
  518. return null;
  519. }
  520. }
  521. public int CountLuckySpin(String msisdn)
  522. {
  523. SqlStatement stmt = null;
  524. try
  525. {
  526. String sqlCommand = "select nvl(sum(added - used),0) remain_spin, nvl(sum(added),0) total_spin, nvl(sum(used),0) used_spin from lucky_spin "
  527. + " where msisdn = ? and expire_time > sysdate";
  528. stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
  529. stmt.SetParameters(msisdn);
  530. using (OracleDataReader reader = (OracleDataReader)stmt.ExecuteReader(connType))
  531. {
  532. while (reader.Read())
  533. {
  534. return int.Parse(reader.GetValue("remain_spin").ToString());
  535. }
  536. return 0;
  537. }
  538. }
  539. catch (Exception ex)
  540. {
  541. log.Error("Error Get Spin log " + msisdn, ex);
  542. return 0;
  543. }
  544. finally
  545. {
  546. try
  547. {
  548. stmt.CloseConnection();
  549. }
  550. catch { }
  551. }
  552. }
  553. public List<LuckyCode> GetListLuckyCode(String msisdn, String code, String codeType, String period, String redeemStatus, DateTime? fromDate, DateTime? toDate)
  554. {
  555. try
  556. {
  557. String sqlCommand = @"
  558. SELECT *
  559. FROM (SELECT *
  560. FROM (SELECT a.id, a.msisdn, a.code, a.insert_time, a.expire_time, a.period,
  561. a.status, a.confirm_time, a.confirm_channel, a.fee, a.code_type FROM lucky_code a
  562. WHERE 1=1
  563. [ AND insert_time >= trunc(?) ]
  564. [ AND insert_time < trunc(?) + 1 ]
  565. [ AND msisdn like '%' || ? || '%' ]
  566. [ AND code = ? ]
  567. [ AND period = ? ]
  568. [ AND status = ? ]
  569. [ AND code_type = ? ]
  570. )
  571. lc
  572. UNION ALL
  573. (SELECT a.id, a.msisdn, a.code, a.insert_time, a.expire_time, a.period,
  574. a.status, a.confirm_time, a.confirm_channel, a.fee, a.code_type FROM lucky_code_his a
  575. WHERE 1=1
  576. [ AND insert_time >= trunc(?) ]
  577. [ AND insert_time < trunc(?) + 1 ]
  578. [ AND msisdn like '%' || ? || '%' ]
  579. [ AND code = ? ]
  580. [ AND period = ? ]
  581. [ AND status = ? ]
  582. [ AND code_type = ? ]
  583. )
  584. ) ";
  585. SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
  586. int numPa = 7;
  587. if (fromDate != null)
  588. {
  589. stmt.SetParameter(0, fromDate);
  590. stmt.SetParameter(0 + numPa, fromDate);
  591. }
  592. if (toDate != null)
  593. {
  594. stmt.SetParameter(1, toDate);
  595. stmt.SetParameter(1 + numPa, toDate);
  596. }
  597. if (msisdn != null && msisdn.Length > 0)
  598. {
  599. stmt.SetParameter(2, msisdn);
  600. stmt.SetParameter(2 + numPa, msisdn);
  601. }
  602. if (code != null && code.Length > 0)
  603. {
  604. stmt.SetParameter(3, code);
  605. stmt.SetParameter(3 + numPa, code);
  606. }
  607. if (period != null && period.Length > 0)
  608. {
  609. stmt.SetParameter(4, period);
  610. stmt.SetParameter(4 + numPa, period);
  611. }
  612. if (redeemStatus != null && redeemStatus != "-1" && redeemStatus.Length > 0)
  613. {
  614. stmt.SetParameter(5, redeemStatus);
  615. stmt.SetParameter(5 + numPa, redeemStatus);
  616. }
  617. if (codeType != null && codeType.Length > 0 && codeType != "-1")
  618. {
  619. stmt.SetParameter(6, codeType);
  620. stmt.SetParameter(6 + numPa, codeType);
  621. }
  622. return LuckyCode.Parse(stmt.ExecuteReader());
  623. }
  624. catch (Exception ex)
  625. {
  626. log.Error("Error GetListLuckyCode " + msisdn, ex);
  627. return null;
  628. }
  629. }
  630. // RANKING
  631. public List<UserCoin> GetRankingCoin(String msisdn, String month, int maxRow)
  632. {
  633. try
  634. {
  635. String sqlCommand =
  636. @"SELECT a.* FROM
  637. (SELECT *
  638. FROM ( SELECT rownum rank, a.*
  639. FROM (SELECT c.*, r.product_name
  640. FROM user_coin c
  641. left join (select * from reg_info where status = 1) r on c.msisdn = r.msisdn
  642. where c.start_time <= to_date(?, 'mm/yyyy') and c.end_time >= to_date(?, 'mm/yyyy')
  643. ORDER BY c.total_coin DESC, c.last_update) a )
  644. WHERE 1=1
  645. [ and msisdn = ? ]
  646. [ and rank <= ? ]
  647. ) a";
  648. //String sqlCommand = "SELECT * FROM (SELECT * FROM user_coin WHERE start_time <= to_date(?, 'mm/yyyy') and end_time >= to_date(?, 'mm/yyyy') " +
  649. // " [ and msisdn = ? ]" +
  650. // " ORDER BY total_coin desc, last_update) " +
  651. // " where 1=1 " +
  652. // " [and rownum <= ?]";
  653. SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
  654. stmt.SetParameter(0, month);
  655. stmt.SetParameter(1, month);
  656. if (msisdn != null & msisdn.Length > 0)
  657. {
  658. stmt.SetParameter(2, msisdn);
  659. }
  660. else
  661. {
  662. if (maxRow > 0)
  663. {
  664. stmt.SetParameter(3, maxRow);
  665. }
  666. }
  667. return UserCoin.Parse(stmt.ExecuteReader());
  668. }
  669. catch (Exception ex)
  670. {
  671. log.Error("Error Get ranking coin " + msisdn, ex);
  672. return null;
  673. }
  674. }
  675. public List<PrizeObj> GetListPrizeWinner(String msisdn, String period, DateTime? fromDate, DateTime? toDate)
  676. {
  677. try
  678. {
  679. String sqlCommand = @"
  680. SELECT *
  681. FROM ( SELECT pw.*,
  682. lch.status status,
  683. g.is_auto,
  684. g.times_prize,
  685. lp.description,
  686. lp.prize_name,
  687. lp.is_top
  688. FROM prize_winner pw
  689. LEFT JOIN
  690. list_prize lp
  691. ON pw.prize_id = lp.id
  692. LEFT JOIN
  693. group_prize g
  694. ON lp.sub_group_prize = g.sub_group_id
  695. left join
  696. execute_prize_his lch on lch.prize_winner_id = pw.id
  697. WHERE 1 = 1
  698. ORDER BY code_time DESC)
  699. WHERE 1=1
  700. [ AND code_time >= trunc(?) ]
  701. [ AND code_time < trunc(?) + 1 ]
  702. [ AND msisdn like '%' || ? || '%' ]
  703. [ AND period = ? ]";
  704. SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
  705. if (fromDate != null)
  706. {
  707. stmt.SetParameter(0, fromDate);
  708. }
  709. if (toDate != null)
  710. {
  711. stmt.SetParameter(1, toDate);
  712. }
  713. if (msisdn != null && msisdn.Length > 0)
  714. {
  715. stmt.SetParameter(2, msisdn);
  716. }
  717. if (period != null && period.Length > 0 && period != "-1")
  718. {
  719. stmt.SetParameter(3, period);
  720. }
  721. return PrizeObj.Parse(stmt.ExecuteReader());
  722. }
  723. catch (Exception ex)
  724. {
  725. log.Error("Error GetListPrizeWinner " + msisdn, ex);
  726. return null;
  727. }
  728. }
  729. public PrizeObj GetWinnerById(int id)
  730. {
  731. try
  732. {
  733. String sqlCommand = @"
  734. SELECT * FROM prize_winner where id = ?";
  735. SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
  736. stmt.SetParameters(id);
  737. List<PrizeObj> list = PrizeObj.Parse(stmt.ExecuteReader());
  738. return list[0];
  739. }
  740. catch (Exception ex)
  741. {
  742. log.Error("Error GetWinnerById " + id, ex);
  743. return null;
  744. }
  745. }
  746. public bool InsertPrizeWinner(String msisdn, int prizeId, String code, DateTime codeTime, int codeType)
  747. {
  748. try
  749. {
  750. String sql = @"INSERT INTO prize_winner (ID,MSISDN,PRIZE_ID,CODE,CODE_TIME,PROCESS_TIME,CODE_TYPE)
  751. VALUES(prize_winner_seq.nextval, ?, ?, ?, ?, NULL, ?)";
  752. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  753. stmt.SetParameters(msisdn, prizeId, code, codeTime, codeType);
  754. stmt.ExecuteNonQuery(connType);
  755. stmt.CloseConnection();
  756. return true;
  757. }
  758. catch (Exception ex)
  759. {
  760. log.Error("Error InsertService", ex);
  761. return false;
  762. }
  763. }
  764. public bool DeleteWinner(int id)
  765. {
  766. try
  767. {
  768. String sql = "DELETE FROM prize_winner WHERE id= ?";
  769. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  770. stmt.SetParameters(id);
  771. stmt.ExecuteNonQuery(connType);
  772. stmt.CloseConnection();
  773. return true;
  774. }
  775. catch (Exception ex)
  776. {
  777. log.Error("Error DeleteWinner", ex);
  778. return false;
  779. }
  780. }
  781. public bool UpdateSendWinner(int id, String user)
  782. {
  783. try
  784. {
  785. String sql = "UPDATE prize_winner set process_time = sysdate, processed_by = ? WHERE id= ?";
  786. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  787. stmt.SetParameters(user, id);
  788. stmt.ExecuteNonQuery(connType);
  789. stmt.CloseConnection();
  790. return true;
  791. }
  792. catch (Exception ex)
  793. {
  794. log.Error("Error UpdateSendWinner", ex);
  795. return false;
  796. }
  797. }
  798. public bool SendMessage(String messageCode, String msisdn, String channel)
  799. {
  800. try
  801. {
  802. String sql = @"insert into mt values(
  803. mt_seq.nextval, 0, ?, (select distinct(param_value) from config where param_name = ?), sysdate, 0, ?
  804. )";
  805. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  806. stmt.SetParameters(msisdn, messageCode, channel);
  807. stmt.ExecuteNonQuery(connType);
  808. stmt.CloseConnection();
  809. return true;
  810. }
  811. catch (Exception ex)
  812. {
  813. log.Error("Error InsertService", ex);
  814. return false;
  815. }
  816. }
  817. public List<PrizeObj> LoadListPrize(int period, int is_auto)
  818. {
  819. try
  820. {
  821. String sqlCommand = @"
  822. SELECT *
  823. FROM ( SELECT lp.id, g.period,
  824. g.channel,
  825. g.is_auto,
  826. lp.description,
  827. lp.prize_name,
  828. lp.is_top
  829. FROM list_prize lp
  830. LEFT JOIN
  831. group_prize g
  832. ON lp.sub_group_prize = g.sub_group_id
  833. WHERE 1 = 1 )
  834. WHERE 1=1 and period = ? and is_auto = ? ";
  835. SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
  836. stmt.SetParameters(period, is_auto);
  837. return PrizeObj.Parse(stmt.ExecuteReader());
  838. }
  839. catch (Exception ex)
  840. {
  841. log.Error("Error LoadListPrize ", ex);
  842. return null;
  843. }
  844. }
  845. private String BuildConnectionString(Services sv)
  846. {
  847. String desc = sv.connection_string.Split('@')[1];
  848. return "Data Source=" + desc + "; " +
  849. " User ID=" + sv.db_username + ";Password=" + sv.db_password + ";Max Pool Size=3;";
  850. }
  851. public bool InsertService(string svCode, string svName)
  852. {
  853. try
  854. {
  855. String sql = @"INSERT INTO sv (ID,SV_CODE,SV_NAME,STATUS)
  856. VALUES(sv_seq.nextval, ?, ?, 1)";
  857. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  858. stmt.SetParameters(svCode, svName);
  859. stmt.ExecuteNonQuery(connType);
  860. stmt.CloseConnection();
  861. return true;
  862. }
  863. catch (Exception ex)
  864. {
  865. log.Error("Error InsertService", ex);
  866. return false;
  867. }
  868. }
  869. public bool UpdateServiceInfo(string serviceId, string serviceCode, string serviceName)
  870. {
  871. try
  872. {
  873. String sql = @"Update sv set sv_code = ?, sv_name = ? where id = ?";
  874. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  875. stmt.SetParameters(serviceCode, serviceName, serviceId);
  876. stmt.ExecuteNonQuery(connType);
  877. stmt.CloseConnection();
  878. return true;
  879. }
  880. catch (Exception ex)
  881. {
  882. log.Error("Error UpdateServiceInfo", ex);
  883. return false;
  884. }
  885. }
  886. public bool UpdateServiceStatus(string svId, string status)
  887. {
  888. try
  889. {
  890. String sql = @"Update sv set status = ? where id = ?";
  891. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  892. stmt.SetParameters(status, svId);
  893. stmt.ExecuteNonQuery(connType);
  894. stmt.CloseConnection();
  895. return true;
  896. }
  897. catch (Exception ex)
  898. {
  899. log.Error("Error UpdateServiceStatus", ex);
  900. return false;
  901. }
  902. }
  903. public bool InsertSvReport(string svCode, string dbName, string connectionString, string dbUsername, string dbPassword, string sqlReportDaily, string sqlReportHourly)
  904. {
  905. try
  906. {
  907. String sql = @"INSERT INTO sv_report (SV_CODE,DB_NAME,CONNECTION_STRING,DB_USERNAME,DB_PASSWORD,SQL_REPORT_DAILY,SQL_REPORT_HOURLY,STATUS)
  908. VALUES(?, ?, ?, ?, ?, ?, ?, 1)";
  909. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  910. stmt.SetParameters(svCode, dbName, connectionString, dbUsername, dbPassword, sqlReportDaily, sqlReportHourly);
  911. stmt.ExecuteNonQuery(connType);
  912. stmt.CloseConnection();
  913. return true;
  914. }
  915. catch (Exception ex)
  916. {
  917. log.Error("Error InsertSvReport", ex);
  918. return false;
  919. }
  920. }
  921. public bool UpdateServiceRpInfo(string svCode, string dbName, string connectionString, string dbUsername, string dbPassword, string sqlReportDaily, string sqlReportHourly)
  922. {
  923. try
  924. {
  925. String sql = @"Update sv_report set DB_NAME = ?,CONNECTION_STRING = ?,DB_USERNAME = ?,DB_PASSWORD = ?,SQL_REPORT_DAILY = ?,SQL_REPORT_HOURLY = ?
  926. where sv_code = ?";
  927. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  928. stmt.SetParameters(dbName, connectionString, dbUsername, dbPassword, sqlReportDaily, sqlReportHourly, svCode);
  929. stmt.ExecuteNonQuery(connType);
  930. stmt.CloseConnection();
  931. return true;
  932. }
  933. catch (Exception ex)
  934. {
  935. log.Error("Error UpdateServiceRpInfo", ex);
  936. return false;
  937. }
  938. }
  939. public bool UpdateServiceRpStatus(string svCode, string status)
  940. {
  941. try
  942. {
  943. String sql = @"Update sv_report set status = ? where sv_code = ?";
  944. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  945. stmt.SetParameters(status, svCode);
  946. stmt.ExecuteNonQuery(connType);
  947. stmt.CloseConnection();
  948. return true;
  949. }
  950. catch (Exception ex)
  951. {
  952. log.Error("Error UpdateServiceRpStatus", ex);
  953. return false;
  954. }
  955. }
  956. public bool ClearPortDown(string portName)
  957. {
  958. try
  959. {
  960. String sql = @"UPDATE port_down SET end_time = sysdate WHERE port_name = ? AND end_time is null";
  961. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  962. stmt.SetParameters(portName);
  963. stmt.ExecuteNonQuery(connType);
  964. stmt.CloseConnection();
  965. return true;
  966. }
  967. catch (Exception ex)
  968. {
  969. log.Error("Error ClearPortDown", ex);
  970. return false;
  971. }
  972. }
  973. private void AddCmdParam(ref DbCommand myCommand, string paramName, object paramValue)
  974. {
  975. var parameter1 = myCommand.CreateParameter();
  976. parameter1.ParameterName = ":" + paramName;
  977. parameter1.Value = paramValue;
  978. myCommand.Parameters.Add(parameter1);
  979. }
  980. public List<Broadcast> GetBroadcastById(int broadcastId)
  981. {
  982. try
  983. {
  984. String sql =
  985. @"SELECT br.*, a.adv_name, a.id adv_id"
  986. + " FROM broadcast br JOIN sv_adv a on br.sv_adv_id = a.id "
  987. + " WHERE br.id = ? "
  988. + " ORDER BY schedule_time desc";
  989. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  990. stmt.SetParameters(broadcastId);
  991. var rs = Broadcast.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  992. stmt.CloseConnection();
  993. return rs;
  994. }
  995. catch (Exception ex)
  996. {
  997. log.Error("Error GetBroadcastById", ex);
  998. return null;
  999. }
  1000. }
  1001. public List<Broadcast> LoadListBroadcast(DateTime? fromdate, DateTime? todate)
  1002. {
  1003. try
  1004. {
  1005. String sql =
  1006. @"SELECT br.*, a.adv_name, a.id adv_id"
  1007. + " FROM broadcast br JOIN sv_adv a on br.sv_adv_id = a.id "
  1008. + " WHERE 1=1 " +
  1009. " [ AND br.schedule_time >= ? ] " +
  1010. " [ and br.schedule_time <= ? + 1 ]"
  1011. + " ORDER BY schedule_time desc";
  1012. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1013. if (fromdate != null)
  1014. {
  1015. stmt.SetParameter(0, fromdate);
  1016. }
  1017. if (todate != null)
  1018. {
  1019. stmt.SetParameter(1, todate);
  1020. }
  1021. var rs = Broadcast.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  1022. stmt.CloseConnection();
  1023. return rs;
  1024. }
  1025. catch (Exception ex)
  1026. {
  1027. log.Error("Error LoadListBroadcast", ex);
  1028. return null;
  1029. }
  1030. }
  1031. public bool InsertBroadcast(Broadcast broadcast)
  1032. {
  1033. try
  1034. {
  1035. String sql = @"INSERT INTO broadcast (ID,BROADCAST_NAME,IMPORT_FILE,COUNT_SUB,STATUS,SCHEDULE_TIME,FINISH_TIME,SV_ADV_ID,SV_CODE,MSG_ADV,
  1036. CHANNEL_ADV,MESSAGE_TYPE,COUNT_SUB_REAL,PROGRESS_SUB)
  1037. VALUES(?, ?, ?, ?, 0, ?, NULL, ?, ?, ?, ?, ?, 0, 0)";
  1038. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1039. stmt.SetParameters(
  1040. broadcast.id,
  1041. broadcast.broadcast_name,
  1042. broadcast.import_file,
  1043. broadcast.count_sub,
  1044. DateTime.ParseExact(broadcast.schedule_time, "dd/MM/yyyy HH:mm:ss", null),
  1045. broadcast.sv_adv_id,
  1046. broadcast.sv_code,
  1047. broadcast.msg_adv,
  1048. broadcast.channel_adv,
  1049. broadcast.message_type);
  1050. stmt.ExecuteNonQuery(connType);
  1051. stmt.CloseConnection();
  1052. return true;
  1053. }
  1054. catch (Exception ex)
  1055. {
  1056. log.Error("Error InsertSvReport", ex);
  1057. return false;
  1058. }
  1059. }
  1060. public bool UpdateBroadcast(Broadcast broadcast)
  1061. {
  1062. try
  1063. {
  1064. String sql = "UPDATE BROADCAST SET BROADCAST_NAME = ?, IMPORT_FILE = ?, COUNT_SUB = ?, STATUS = ?, SCHEDULE_TIME = ?, SV_ADV_ID = ?,"
  1065. + "SV_CODE = ?, MSG_ADV = ?, CHANNEL_ADV = ?, MESSAGE_TYPE = ? "
  1066. + " WHERE id = ?";
  1067. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1068. stmt.SetParameters(
  1069. broadcast.broadcast_name,
  1070. broadcast.import_file,
  1071. broadcast.count_sub,
  1072. broadcast.status,
  1073. DateTime.ParseExact(broadcast.schedule_time, "dd/MM/yyyy HH:mm:ss", null),
  1074. broadcast.sv_adv_id,
  1075. broadcast.sv_code,
  1076. broadcast.msg_adv,
  1077. broadcast.channel_adv,
  1078. broadcast.message_type,
  1079. broadcast.id);
  1080. stmt.ExecuteNonQuery(connType);
  1081. stmt.CloseConnection();
  1082. return true;
  1083. }
  1084. catch (Exception ex)
  1085. {
  1086. log.Error("Error UpdateBroadcast", ex);
  1087. return false;
  1088. }
  1089. }
  1090. public bool UpdateBroadcastStatus(int id, string status)
  1091. {
  1092. try
  1093. {
  1094. String sql = "UPDATE BROADCAST SET STATUS = ? WHERE id = ?";
  1095. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1096. stmt.SetParameters(status, id);
  1097. stmt.ExecuteNonQuery(connType);
  1098. stmt.CloseConnection();
  1099. return true;
  1100. }
  1101. catch (Exception ex)
  1102. {
  1103. log.Error("Error UpdateBroadcastStatus", ex);
  1104. return false;
  1105. }
  1106. }
  1107. public int ImportSubBroadcast(Broadcast broadcast, List<String> listMsisdn)
  1108. {
  1109. DbConnection myConnection = null;
  1110. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  1111. String sqlCommand = "INSERT INTO MT_EXTEND_TEMP (ID,MSISDN,MESSAGE,RECEIVE_TIME,SEND_TIME,RETRY_NUM,CHANNEL,MESSAGE_TYPE,BROADCAST_ID)"
  1112. + " VALUES(MT_EXTEND_seq.nextval, :msisdn, :message, sysdate, :send_time, 0, :channel, :message_type, :broadcast_id)";
  1113. int i = 0;
  1114. try
  1115. {
  1116. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  1117. {
  1118. DbTransaction transaction = myConnection.BeginTransaction();
  1119. DbCommand myCommand = myConnection.CreateCommand();
  1120. myCommand.Transaction = transaction;
  1121. myCommand.CommandText = sqlCommand;
  1122. for (i = 0; i < listMsisdn.Count; i++)
  1123. {
  1124. myCommand.Parameters.Clear();
  1125. AddCmdParam(ref myCommand, "msisdn", listMsisdn[i]);
  1126. AddCmdParam(ref myCommand, "message", broadcast.msg_adv);
  1127. AddCmdParam(ref myCommand, "send_time", DateTime.ParseExact(broadcast.schedule_time, "dd/MM/yyyy HH:mm:ss", null));
  1128. AddCmdParam(ref myCommand, "channel", broadcast.channel_adv);
  1129. AddCmdParam(ref myCommand, "message_type", broadcast.message_type);
  1130. AddCmdParam(ref myCommand, "broadcast_id", broadcast.id);
  1131. myCommand.ExecuteNonQuery();
  1132. if (i % 1000 == 999)
  1133. {
  1134. transaction.Commit();
  1135. transaction = myConnection.BeginTransaction();
  1136. myCommand.Transaction = transaction;
  1137. }
  1138. }
  1139. transaction.Commit();
  1140. return i;
  1141. }
  1142. }
  1143. catch (Exception ex)
  1144. {
  1145. log.Error("Error ImportSubBroadcast", ex);
  1146. return i;
  1147. }
  1148. finally
  1149. {
  1150. try
  1151. {
  1152. if (myConnection != null)
  1153. {
  1154. myConnection.Close();
  1155. }
  1156. }
  1157. catch { }
  1158. }
  1159. }
  1160. public bool InsertMtExtendFromTemp(int broadcastId)
  1161. {
  1162. DbConnection myConnection = null;
  1163. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  1164. String sqlCommand = "broadcast_from_temp";
  1165. try
  1166. {
  1167. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  1168. {
  1169. DbCommand myCommand = myConnection.CreateCommand();
  1170. myCommand.CommandType = CommandType.StoredProcedure;
  1171. myCommand.CommandText = sqlCommand;
  1172. myCommand.Parameters.Clear();
  1173. AddCmdParam(ref myCommand, "brid", broadcastId);
  1174. myCommand.ExecuteNonQuery();
  1175. return true;
  1176. }
  1177. }
  1178. catch (Exception ex)
  1179. {
  1180. log.Error("Error InsertMtExtendFromTemp", ex);
  1181. return false;
  1182. }
  1183. finally
  1184. {
  1185. try
  1186. {
  1187. if (myConnection != null)
  1188. {
  1189. myConnection.Close();
  1190. }
  1191. }
  1192. catch { }
  1193. }
  1194. }
  1195. public bool DeleteMtExtendTemp(int broadcastId)
  1196. {
  1197. try
  1198. {
  1199. String sql = "DELETE FROM mt_extend_temp WHERE broadcast_id= ?";
  1200. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1201. stmt.SetParameters(broadcastId);
  1202. stmt.ExecuteNonQuery(connType);
  1203. stmt.CloseConnection();
  1204. return true;
  1205. }
  1206. catch (Exception ex)
  1207. {
  1208. log.Error("Error DeleteMtExtendTemp", ex);
  1209. return false;
  1210. }
  1211. }
  1212. public bool DeleteMtExtend(int broadcastId)
  1213. {
  1214. try
  1215. {
  1216. String sql = "DELETE FROM mt_extend WHERE broadcast_id= ?";
  1217. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1218. stmt.SetParameters(broadcastId);
  1219. stmt.ExecuteNonQuery(connType);
  1220. stmt.CloseConnection();
  1221. return true;
  1222. }
  1223. catch (Exception ex)
  1224. {
  1225. log.Error("Error DeleteMtExtend", ex);
  1226. return false;
  1227. }
  1228. }
  1229. public int GetNextBroadcastId()
  1230. {
  1231. try
  1232. {
  1233. String sql = @"select broadcast_seq.nextval seq from dual";
  1234. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1235. OracleDataReader reader = (OracleDataReader)stmt.ExecuteReader(connType);
  1236. int seq = 0;
  1237. while (reader.Read())
  1238. {
  1239. seq = int.Parse(reader.GetValue(0).ToString());
  1240. }
  1241. stmt.CloseConnection();
  1242. return seq;
  1243. }
  1244. catch (Exception ex)
  1245. {
  1246. log.Error("Error GetNextBroadcastId", ex);
  1247. return 0;
  1248. }
  1249. }
  1250. public List<ReportDetail> GetReportDetail(DateTime fromDate, DateTime toDate)
  1251. {
  1252. DbConnection myConnection = null;
  1253. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  1254. String sqlCommand = @"SELECT a.sv_code, to_char(a.report_date,'dd/mm/yyyy') report_date, a.revenue_others, a.revenue_mocha,
  1255. a.revenue_web, a.revenue_buy_others, a.revenue_buy_mocha,
  1256. a.revenue_buy_web, a.count_reg_others, a.count_reg_mocha,
  1257. a.count_reg_web FROM report_detail a WHERE REPORT_DATE >= :fromDate and REPORT_DATE <= :toDate ORDER BY report_date desc";
  1258. // @"select
  1259. //'LUCKY_DRAW' SV_CODE,
  1260. // to_char(REPORT_DATE,'dd-mm-yyyy') REPORT_DATE,
  1261. //nvl(revenue_others,0) REVENUE_OTHERS,
  1262. //nvl(revenue_mocha,0) REVENUE_MOCHA,
  1263. //nvl(revenue_web,0) revenue_web,
  1264. //nvl(revenue_buy_others,0) REVENUE_BUY_OTHERS,
  1265. //nvl(revenue_buy_mocha,0) REVENUE_BUY_MOCHA,
  1266. //nvl(revenue_buy_web,0) revenue_buy_web,
  1267. //nvl(count_reg_others,0) count_reg_others ,
  1268. //nvl(count_reg_mocha,0) count_reg_mocha ,
  1269. //nvl(count_reg_web,0) count_reg_web
  1270. //from
  1271. //(
  1272. //select a.report_date, a.revenue_others, revenue_mocha, revenue_web, revenue_buy_others, revenue_buy_mocha, revenue_buy_web, count_reg_others, count_reg_mocha, count_reg_web from
  1273. //( select nvl(sum(fee),0) revenue_others, trunc(charge_time) REPORT_DATE from charge_log
  1274. // where charge_time >= :from_date and charge_time < :to_date + 1 and fee > 0 and product_name = 'Lucky_Draw' and channel not in ('1','4')
  1275. // group by trunc(charge_time) ) a
  1276. // left join
  1277. //(select nvl(sum(fee),0) revenue_mocha, trunc(charge_time) REPORT_DATE from charge_log
  1278. // where charge_time >= :from_date and charge_time < :to_date + 1 and fee > 0 and product_name = 'Lucky_Draw' and channel = '1'
  1279. // group by trunc(charge_time) ) a2 on a.report_date = a2.report_date
  1280. //left join
  1281. //(select nvl(sum(fee),0) revenue_web, trunc(charge_time) REPORT_DATE from charge_log
  1282. // where charge_time >= :from_date and charge_time < :to_date + 1 and fee > 0 and product_name = 'Lucky_Draw' and channel = '4'
  1283. // group by trunc(charge_time) ) a3 on a.report_date = a3.report_date
  1284. //left join
  1285. //(select nvl(sum(fee),0) revenue_buy_others, trunc(charge_time) REPORT_DATE from charge_log
  1286. // where charge_time >= :from_date and charge_time < :to_date + 1 and fee > 0 and product_name = 'Lucky_Draw' and description in ('Redeem')and channel not in ('1','4')
  1287. // group by trunc(charge_time) ) b on a.report_date = b.report_date
  1288. //left join
  1289. //(select nvl(sum(fee),0) revenue_buy_mocha, trunc(charge_time) REPORT_DATE from charge_log
  1290. // where charge_time >= :from_date and charge_time < :to_date+ 1 and fee > 0 and product_name = 'Lucky_Draw' and description in ('Redeem')and channel = '1'
  1291. // group by trunc(charge_time) ) b2 on a.report_date = b2.report_date
  1292. //left join
  1293. //(select nvl(sum(fee),0) revenue_buy_web, trunc(charge_time) REPORT_DATE from charge_log
  1294. // where charge_time >= :from_date and charge_time < :to_date+ 1 and fee > 0 and product_name = 'Lucky_Draw' and description in ('Redeem')and channel = '4'
  1295. // group by trunc(charge_time) ) b3 on a.report_date = b3.report_date
  1296. //left join
  1297. //(select count(*) count_reg_others, trunc(register_time) REPORT_DATE from reg_info
  1298. // where register_time >= :from_date and register_time < :to_date+ 1 and channel not in ('1','4')
  1299. // group by trunc(register_time) ) c on c.report_date = a.report_date
  1300. //left join
  1301. //(select count(*) count_reg_mocha, trunc(register_time) REPORT_DATE from reg_info
  1302. // where register_time >= :from_date and register_time < :to_date+ 1 and channel = '1'
  1303. // group by trunc(register_time) ) c2 on c2.report_date = a.report_date
  1304. //left join
  1305. //(select count(*) count_reg_web, trunc(register_time) REPORT_DATE from reg_info
  1306. // where register_time >= :from_date and register_time < :to_date+ 1 and channel = '4'
  1307. // group by trunc(register_time) ) c3 on c3.report_date = a.report_date
  1308. // ) a order by a.report_date desc ";
  1309. try
  1310. {
  1311. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  1312. {
  1313. DbCommand myCommand = myConnection.CreateCommand();
  1314. myCommand.CommandText = sqlCommand;
  1315. myCommand.Parameters.Clear();
  1316. // from date
  1317. AddCmdParam(ref myCommand, "fromDate", fromDate);
  1318. // todate
  1319. AddCmdParam(ref myCommand, "toDate", toDate);
  1320. DbDataReader reader = myCommand.ExecuteReader();
  1321. return ReportDetail.Parse((OracleDataReader)reader);
  1322. }
  1323. }
  1324. catch (Exception ex)
  1325. {
  1326. log.Error("Error GetReportDetail", ex);
  1327. return null;
  1328. }
  1329. finally
  1330. {
  1331. try
  1332. {
  1333. if (myConnection != null)
  1334. {
  1335. myConnection.Close();
  1336. }
  1337. }
  1338. catch { }
  1339. }
  1340. }
  1341. public List<WebserviceObj> GetWebserviceById(int wsId)
  1342. {
  1343. try
  1344. {
  1345. String sql =
  1346. @"SELECT * from webservice where ws_id = ?";
  1347. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1348. stmt.SetParameters(wsId);
  1349. var rs = WebserviceObj.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  1350. stmt.CloseConnection();
  1351. return rs;
  1352. }
  1353. catch (Exception ex)
  1354. {
  1355. log.Error("Error GetWebserviceById", ex);
  1356. return null;
  1357. }
  1358. }
  1359. public List<WebserviceObj> LoadListWebserivce(String wsName)
  1360. {
  1361. try
  1362. {
  1363. String sql =
  1364. @"SELECT * from webservice WHERE ws_name = ?"
  1365. + " ORDER BY ws_code";
  1366. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1367. stmt.SetParameters(wsName);
  1368. var rs = WebserviceObj.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  1369. stmt.CloseConnection();
  1370. return rs;
  1371. }
  1372. catch (Exception ex)
  1373. {
  1374. log.Error("Error LoadListWebserivce", ex);
  1375. return null;
  1376. }
  1377. }
  1378. public bool InsertWebservice(WebserviceObj wsObj)
  1379. {
  1380. try
  1381. {
  1382. String sql = @"INSERT INTO webservice (WS_ID,WS_NAME,WS_CODE,WSDL,MSG_TEMPLATE,STATUS)
  1383. VALUES(webservice_seq.nextval, ?, ?, ?, ?, 1)";
  1384. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1385. stmt.SetParameters(
  1386. wsObj.ws_name,
  1387. wsObj.ws_code,
  1388. wsObj.wsdl,
  1389. wsObj.msg_template);
  1390. stmt.ExecuteNonQuery(connType);
  1391. stmt.CloseConnection();
  1392. return true;
  1393. }
  1394. catch (Exception ex)
  1395. {
  1396. log.Error("Error InsertWebservice", ex);
  1397. return false;
  1398. }
  1399. }
  1400. public bool UpdateWebservice(WebserviceObj wsObj)
  1401. {
  1402. try
  1403. {
  1404. String sql = "UPDATE webservice SET WS_NAME = ?, WS_CODE = ?, WSDL = ?, MSG_TEMPLATE = ? "
  1405. + " WHERE WS_ID = ?";
  1406. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1407. stmt.SetParameters(
  1408. wsObj.ws_name,
  1409. wsObj.ws_code,
  1410. wsObj.wsdl,
  1411. wsObj.msg_template,
  1412. wsObj.ws_id);
  1413. stmt.ExecuteNonQuery(connType);
  1414. stmt.CloseConnection();
  1415. return true;
  1416. }
  1417. catch (Exception ex)
  1418. {
  1419. log.Error("Error UpdateWebservice", ex);
  1420. return false;
  1421. }
  1422. }
  1423. public bool UpdateWebserviceStatus(int id, string status)
  1424. {
  1425. try
  1426. {
  1427. String sql = "UPDATE webservice SET STATUS = ? WHERE ws_id = ?";
  1428. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1429. stmt.SetParameters(status, id);
  1430. stmt.ExecuteNonQuery(connType);
  1431. stmt.CloseConnection();
  1432. return true;
  1433. }
  1434. catch (Exception ex)
  1435. {
  1436. log.Error("Error UpdateWebserviceStatus", ex);
  1437. return false;
  1438. }
  1439. }
  1440. // SV ADV
  1441. public bool InsertSvAdv(string svCode, string msgAdv, string advName, string channelAdv, string messageType, string fromMoney)
  1442. {
  1443. try
  1444. {
  1445. String sql = @"INSERT INTO sv_adv (ID, SV_CODE,ADV_NAME,MSG_ADV,MSG_ADV_PUSH,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY,STATUS )
  1446. VALUES(sv_adv_seq.nextval, ?, ?, ?, ?, ?, ?, ?, 1)";
  1447. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1448. stmt.SetParameters(svCode, advName, msgAdv, msgAdv, channelAdv, messageType, fromMoney);
  1449. stmt.ExecuteNonQuery(connType);
  1450. stmt.CloseConnection();
  1451. return true;
  1452. }
  1453. catch (Exception ex)
  1454. {
  1455. log.Error("Error InsertSvReport", ex);
  1456. return false;
  1457. }
  1458. }
  1459. //public bool InsertSvAdvHistory(string svCode, string messageType)
  1460. //{
  1461. // try
  1462. // {
  1463. // String sql = @"INSERT INTO sv_adv_history (ID,SV_CODE,START_TIME,END_TIME,COUNT_MSG,MESSAGE_TYPE)
  1464. // VALUES(sv_adv_history_seq.nextval, ?, sysdate, NULL, 0, ?)";
  1465. // SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1466. // stmt.SetParameters(svCode, messageType);
  1467. // stmt.ExecuteNonQuery(connType);
  1468. // stmt.CloseConnection();
  1469. // return true;
  1470. // }
  1471. // catch (Exception ex)
  1472. // {
  1473. // log.Error("Error InsertSvAdvHistory", ex);
  1474. // return false;
  1475. // }
  1476. //}
  1477. public bool UpdateServiceAdvInfo(string svCode, string msgAdv, string advName, string channelAdv, string messageType, string fromMoney, string advId)
  1478. {
  1479. try
  1480. {
  1481. String sql = @"Update sv_adv set sv_code = ?, msg_adv = ?,adv_name = ?,channel_adv = ?,message_type = ?,from_money = ?
  1482. where id = ?";
  1483. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1484. stmt.SetParameters(svCode, msgAdv, advName, channelAdv, messageType, fromMoney, advId);
  1485. stmt.ExecuteNonQuery(connType);
  1486. stmt.CloseConnection();
  1487. return true;
  1488. }
  1489. catch (Exception ex)
  1490. {
  1491. log.Error("Error UpdateServiceAdvInfo", ex);
  1492. return false;
  1493. }
  1494. }
  1495. public bool UpdateServiceAdvStatus(string advId, string status)
  1496. {
  1497. try
  1498. {
  1499. String sql = @"Update sv_adv set status = ? where id = ?";
  1500. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1501. stmt.SetParameters(status, advId);
  1502. stmt.ExecuteNonQuery(connType);
  1503. stmt.CloseConnection();
  1504. return true;
  1505. }
  1506. catch (Exception ex)
  1507. {
  1508. log.Error("Error UpdateServiceAdvStatus", ex);
  1509. return false;
  1510. }
  1511. }
  1512. //public bool UpdateServiceAdvEndTime(string svCode)
  1513. //{
  1514. // try
  1515. // {
  1516. // String sql = @"Update sv_adv_history set end_time = sysdate WHERE sv_code = ? and end_time is null";
  1517. // SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1518. // stmt.SetParameters(svCode);
  1519. // stmt.ExecuteNonQuery(connType);
  1520. // stmt.CloseConnection();
  1521. // return true;
  1522. // }
  1523. // catch (Exception ex)
  1524. // {
  1525. // log.Error("Error UpdateServiceAdvStatus", ex);
  1526. // return false;
  1527. // }
  1528. //}
  1529. // Service Adv schedule
  1530. public SvAdvSchedule GetSvAdvScheduleById(string scheduleId, int codeType)
  1531. {
  1532. try
  1533. {
  1534. String sql;
  1535. if (codeType == LuckyCardUtils.CodeType.LUCKY_CARD)
  1536. {
  1537. sql = @"select s.*, a.adv_name, a.id sv_adv_id, a.sv_code, a.msg_adv, a.msg_adv_push, a.channel_adv, a.message_type, a.from_money,
  1538. d.id schedule_detail_id, nvl(d.percent,0) percent
  1539. from sv_adv_schedule s
  1540. left join sv_adv a on a.status = 1
  1541. left join sv_adv_schedule_detail d on s.id = d.schedule_id and d.sv_adv_id = a.id and d.status = 1
  1542. where s.id = ?";
  1543. }
  1544. else
  1545. {
  1546. sql = @"select s.*, a.adv_name, a.id sv_adv_id, a.sv_code, a.msg_adv, a.msg_adv_push, a.channel_adv, a.message_type, a.from_money,
  1547. d.id schedule_detail_id, nvl(d.percent,0) percent
  1548. from sv_adv_schedule_call s
  1549. left join sv_adv a on a.status = 1
  1550. left join sv_adv_schedule_detail_call d on s.id = d.schedule_id and d.sv_adv_id = a.id and d.status = 1
  1551. where s.id = ?";
  1552. }
  1553. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1554. stmt.SetParameters(scheduleId);
  1555. var rs = SvAdvSchedule.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  1556. stmt.CloseConnection();
  1557. if (rs != null && rs.Count > 0)
  1558. {
  1559. return rs[0];
  1560. }
  1561. return null;
  1562. }
  1563. catch (Exception ex)
  1564. {
  1565. log.Error("Error GetSvAdvScheduleById", ex);
  1566. return null;
  1567. }
  1568. }
  1569. public bool UpdateSvAdvScheduleInfo(SvAdvSchedule svAdvSchedule, int codeType)
  1570. {
  1571. DbConnection myConnection = null;
  1572. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  1573. String sqlUpdateSchedule = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1574. ? "UPDATE sv_adv_schedule SET from_date = :from_date, to_date = :to_date, schedule_name = :schedule_name WHERE id = :id"
  1575. : "UPDATE sv_adv_schedule_call SET from_date = :from_date, to_date = :to_date, schedule_name = :schedule_name WHERE id = :id";
  1576. String sqlDeleteAdv = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1577. ? "UPDATE sv_adv_schedule_detail SET status = 0 WHERE schedule_id = :schedule_id"
  1578. : "UPDATE sv_adv_schedule_detail_call SET status = 0 WHERE schedule_id = :schedule_id";
  1579. String sqlInsertAdv = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1580. ? @"INSERT INTO sv_adv_schedule_detail (ID,SCHEDULE_ID,SV_ADV_ID,PERCENT,SV_CODE,MSG_ADV,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY)
  1581. SELECT sv_adv_schedule_detail_seq.nextval,
  1582. :schedule_id, id, :percent, sv_code, msg_adv, channel_adv, message_type, from_money FROM sv_adv WHERE id = :sv_adv_id"
  1583. : @"INSERT INTO sv_adv_schedule_detail_call (ID,SCHEDULE_ID,SV_ADV_ID,PERCENT,SV_CODE,MSG_ADV,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY)
  1584. SELECT sv_adv_schedule_detail_seq.nextval,
  1585. :schedule_id, id, :percent, sv_code, msg_adv, channel_adv, message_type, from_money FROM sv_adv WHERE id = :sv_adv_id";
  1586. try
  1587. {
  1588. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  1589. {
  1590. DbTransaction transaction = myConnection.BeginTransaction();
  1591. DbCommand myCommand = myConnection.CreateCommand();
  1592. myCommand.Transaction = transaction;
  1593. // update schedule
  1594. myCommand.CommandText = sqlUpdateSchedule;
  1595. myCommand.Parameters.Clear();
  1596. AddCmdParam(ref myCommand, "from_date", svAdvSchedule.from_date);
  1597. AddCmdParam(ref myCommand, "to_date", svAdvSchedule.to_date);
  1598. AddCmdParam(ref myCommand, "schedule_name", svAdvSchedule.schedule_name);
  1599. AddCmdParam(ref myCommand, "id", svAdvSchedule.id);
  1600. myCommand.ExecuteNonQuery();
  1601. // delete old adv
  1602. myCommand.CommandText = sqlDeleteAdv;
  1603. myCommand.Parameters.Clear();
  1604. AddCmdParam(ref myCommand, "schedule_id", svAdvSchedule.id);
  1605. myCommand.ExecuteNonQuery();
  1606. // insert new adv
  1607. myCommand.CommandText = sqlInsertAdv;
  1608. for (int i = 0; i < svAdvSchedule.list_adv.Count; i++)
  1609. {
  1610. SvAdv adv = svAdvSchedule.list_adv[i];
  1611. myCommand.Parameters.Clear();
  1612. AddCmdParam(ref myCommand, "schedule_id", svAdvSchedule.id);
  1613. AddCmdParam(ref myCommand, "percent", adv.percent);
  1614. AddCmdParam(ref myCommand, "sv_adv_id", adv.id);
  1615. //AddCmdParam(ref myCommand, "sv_code", adv.sv_code);
  1616. //AddCmdParam(ref myCommand, "msg_adv", adv.msg_adv);
  1617. //AddCmdParam(ref myCommand, "channel_adv", adv.channel_adv);
  1618. //AddCmdParam(ref myCommand, "message_type", adv.message_type);
  1619. //AddCmdParam(ref myCommand, "from_money", adv.from_money);
  1620. myCommand.ExecuteNonQuery();
  1621. }
  1622. transaction.Commit();
  1623. return true;
  1624. }
  1625. }
  1626. catch (Exception ex)
  1627. {
  1628. log.Error("Error UpdateSvAdvScheduleInfo", ex);
  1629. return false;
  1630. }
  1631. finally
  1632. {
  1633. try
  1634. {
  1635. if (myConnection != null)
  1636. {
  1637. myConnection.Close();
  1638. }
  1639. }
  1640. catch { }
  1641. }
  1642. }
  1643. public bool UpdateSvAdvScheduleStatus(string scheduleId, string status, int codeType)
  1644. {
  1645. try
  1646. {
  1647. String sql = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1648. ? @"Update sv_adv_schedule set status = ? where id = ?"
  1649. : @"Update sv_adv_schedule_call set status = ? where id = ?";
  1650. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1651. stmt.SetParameters(status, scheduleId);
  1652. stmt.ExecuteNonQuery(connType);
  1653. stmt.CloseConnection();
  1654. return true;
  1655. }
  1656. catch (Exception ex)
  1657. {
  1658. log.Error("Error UpdateSvAdvScheduleStatus", ex);
  1659. return false;
  1660. }
  1661. }
  1662. public List<SvAdv> LoadListServicesAdv()
  1663. {
  1664. try
  1665. {
  1666. String sql = @"select sv.sv_code, sv.sv_name, a.msg_adv, a.adv_name, a.channel_adv, a.message_type, a.from_money, a.status, a.id
  1667. from sv join sv_adv a on sv.sv_code = a.sv_code
  1668. where sv.status = 1
  1669. and a.status = 1 ORDER BY sv.sv_code ";
  1670. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1671. var rs = SvAdv.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  1672. stmt.CloseConnection();
  1673. return rs;
  1674. }
  1675. catch (Exception ex)
  1676. {
  1677. log.Error("Error LoadListServicesAdv", ex);
  1678. return null;
  1679. }
  1680. }
  1681. public List<SvAdvSchedule> LoadListSvAdvSchedule(int month, int year, int codeType)
  1682. {
  1683. try
  1684. {
  1685. String sql = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1686. ? @"select s.*, d.sv_adv_id, d.sv_code, d.msg_adv, d.channel_adv, d.message_type, d.from_money,
  1687. d.id schedule_detail_id, nvl(d.percent,0) percent
  1688. from sv_adv_schedule s
  1689. left join sv_adv_schedule_detail d on s.id = d.schedule_id and d.status = 1
  1690. where 1=1
  1691. and s.from_date < ? +1
  1692. and s.to_date >= ?
  1693. ORDER BY s.from_date desc"
  1694. : @"select s.*, d.sv_adv_id, d.sv_code, d.msg_adv, d.channel_adv, d.message_type, d.from_money,
  1695. d.id schedule_detail_id, nvl(d.percent,0) percent
  1696. from sv_adv_schedule_call s
  1697. left join sv_adv_schedule_detail_call d on s.id = d.schedule_id and d.status = 1
  1698. where 1=1
  1699. and s.from_date < ? +1
  1700. and s.to_date >= ?
  1701. ORDER BY s.from_date desc";
  1702. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1703. DateTime max = new DateTime(year, month, DateTime.DaysInMonth(year, month));
  1704. DateTime min = new DateTime(year, month, 1);
  1705. stmt.SetParameters(max, min);
  1706. var rs = SvAdvSchedule.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  1707. stmt.CloseConnection();
  1708. return rs;
  1709. }
  1710. catch (Exception ex)
  1711. {
  1712. log.Error("Error LoadListSvAdvSchedule", ex);
  1713. return null;
  1714. }
  1715. }
  1716. public List<SvAdv> LoadListSvAdvCounter(int month, int year, int codeType)
  1717. {
  1718. try
  1719. {
  1720. String sql = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1721. ? @"select nvl(c.schedule_detail_id,-1) schedule_detail_id,
  1722. nvl(c.counter,0) counter, nvl(c.create_time, s.from_date) start_time, nvl(c.report_date, trunc(s.from_date)) report_date,
  1723. nvl(s.to_date, trunc(c.report_date) + 1 - 1/86400) end_time, d.*
  1724. from sv_adv_schedule_detail d
  1725. full outer join schedule_counter c on d.id = c.schedule_detail_id
  1726. left join sv_adv_schedule s on s.id = d.schedule_id
  1727. where 1=1
  1728. and nvl(c.create_time, s.from_date) < ? + 1
  1729. and nvl(c.create_time, s.to_date) >= ?
  1730. ORDER BY nvl(c.report_date, trunc(s.from_date)) desc, d.sv_code"
  1731. : @"select nvl(c.schedule_detail_id,-1) schedule_detail_id,
  1732. nvl(c.counter,0) counter, nvl(c.create_time, s.from_date) start_time, nvl(c.report_date, trunc(s.from_date)) report_date,
  1733. nvl(s.to_date, trunc(c.report_date) + 1 - 1/86400) end_time, d.*
  1734. from sv_adv_schedule_detail_call d
  1735. full outer join schedule_counter_call c on d.id = c.schedule_detail_id
  1736. left join sv_adv_schedule_call s on s.id = d.schedule_id
  1737. where 1=1
  1738. and nvl(c.create_time, s.from_date) < ? + 1
  1739. and nvl(c.create_time, s.to_date) >= ?
  1740. ORDER BY nvl(c.create_time, s.from_date) desc, d.sv_code";
  1741. SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
  1742. DateTime max = new DateTime(year, month, DateTime.DaysInMonth(year, month));
  1743. DateTime min = new DateTime(year, month, 1);
  1744. stmt.SetParameters(max, min);
  1745. var rs = SvAdv.Parse((OracleDataReader)stmt.ExecuteReader(connType));
  1746. stmt.CloseConnection();
  1747. return rs;
  1748. }
  1749. catch (Exception ex)
  1750. {
  1751. log.Error("Error LoadListSvAdvCounter", ex);
  1752. return null;
  1753. }
  1754. }
  1755. public bool InsertSvAdvSchedule(SvAdvSchedule svAdvSchedule, int codeType)
  1756. {
  1757. DbConnection myConnection = null;
  1758. SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
  1759. String sqlGetScheduleId = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1760. ? "SELECT sv_adv_schedule_seq.nextval seq FROM DUAL"
  1761. : "SELECT sv_adv_schedule_call_seq.nextval seq FROM DUAL";
  1762. String sqlUpdateSchedule = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1763. ? @"INSERT INTO sv_adv_schedule (ID,FROM_DATE,TO_DATE,SCHEDULE_NAME,STATUS)
  1764. VALUES(:schedule_id, :from_date, :to_date, :schedule_name, 1)"
  1765. : @"INSERT INTO sv_adv_schedule_call (ID,FROM_DATE,TO_DATE,SCHEDULE_NAME,STATUS)
  1766. VALUES(:schedule_id, :from_date, :to_date, :schedule_name, 1)";
  1767. String sqlInsertAdv = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
  1768. ? @"INSERT INTO sv_adv_schedule_detail (ID,SCHEDULE_ID,SV_ADV_ID,PERCENT,SV_CODE,MSG_ADV,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY)
  1769. SELECT sv_adv_schedule_detail_seq.nextval,
  1770. :schedule_id, id, :percent, sv_code, msg_adv, channel_adv, message_type, from_money FROM sv_adv WHERE id = :sv_adv_id"
  1771. : @"INSERT INTO sv_adv_schedule_detail_call (ID,SCHEDULE_ID,SV_ADV_ID,PERCENT,SV_CODE,MSG_ADV,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY)
  1772. SELECT sv_adv_schedule_detail_seq.nextval,
  1773. :schedule_id, id, :percent, sv_code, msg_adv, channel_adv, message_type, from_money FROM sv_adv WHERE id = :sv_adv_id";
  1774. // VALUES(sv_adv_schedule_detail_seq.nextval, :schedule_id, :sv_adv_id, :percent, :sv_code, :msg_adv, :channel_adv, :message_type, :from_money)";
  1775. try
  1776. {
  1777. using (myConnection = (DbConnection)stmt.GetConnection(connType))
  1778. {
  1779. DbTransaction transaction = myConnection.BeginTransaction();
  1780. DbCommand myCommand = myConnection.CreateCommand();
  1781. myCommand.Transaction = transaction;
  1782. // get sequence
  1783. myCommand.CommandText = sqlGetScheduleId;
  1784. myCommand.Parameters.Clear();
  1785. DbDataReader reader = myCommand.ExecuteReader();
  1786. if (reader.Read())
  1787. {
  1788. svAdvSchedule.id = reader.GetInt32(0);
  1789. }
  1790. // update schedule
  1791. myCommand.CommandText = sqlUpdateSchedule;
  1792. myCommand.Parameters.Clear();
  1793. AddCmdParam(ref myCommand, "schedule_id", svAdvSchedule.id);
  1794. AddCmdParam(ref myCommand, "from_date", svAdvSchedule.from_date);
  1795. AddCmdParam(ref myCommand, "to_date", svAdvSchedule.to_date);
  1796. AddCmdParam(ref myCommand, "schedule_name", svAdvSchedule.schedule_name);
  1797. myCommand.ExecuteNonQuery();
  1798. // insert new adv
  1799. myCommand.CommandText = sqlInsertAdv;
  1800. for (int i = 0; i < svAdvSchedule.list_adv.Count; i++)
  1801. {
  1802. SvAdv adv = svAdvSchedule.list_adv[i];
  1803. myCommand.Parameters.Clear();
  1804. AddCmdParam(ref myCommand, "schedule_id", svAdvSchedule.id);
  1805. AddCmdParam(ref myCommand, "percent", adv.percent);
  1806. AddCmdParam(ref myCommand, "sv_adv_id", adv.id);
  1807. //AddCmdParam(ref myCommand, "sv_code", adv.sv_code);
  1808. //AddCmdParam(ref myCommand, "msg_adv", adv.msg_adv);
  1809. //AddCmdParam(ref myCommand, "channel_adv", adv.channel_adv);
  1810. //AddCmdParam(ref myCommand, "message_type", adv.message_type);
  1811. //AddCmdParam(ref myCommand, "from_money", adv.from_money);
  1812. myCommand.ExecuteNonQuery();
  1813. }
  1814. transaction.Commit();
  1815. return true;
  1816. }
  1817. }
  1818. catch (Exception ex)
  1819. {
  1820. log.Error("Error InsertSvAdvSchedule", ex);
  1821. return false;
  1822. }
  1823. finally
  1824. {
  1825. try
  1826. {
  1827. if (myConnection != null)
  1828. {
  1829. myConnection.Close();
  1830. }
  1831. }
  1832. catch { }
  1833. }
  1834. }
  1835. }
  1836. }