using Db_Core;
using log4net;
using SuperAdmin.Models;
using System;
using System.Collections.Generic;
using System.Data.Common;
using Oracle.ManagedDataAccess.Client;
using System.Data;
using ReportWeb.Models;
using ReportWeb.Source;
namespace SuperAdmin.Source
{
///
/// Summary description for DbConnector
///
public class DbConnector
{
private readonly ILog log = LogManager.GetLogger(typeof(DbConnector));
private ConnectionType connType = ConnectionType.ORACLE;
public List LoadListServices()
{
try
{
String sql = @"select * from sv where status = 1";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error LoadListServices", ex);
return null;
}
}
public List LoadListServicesReport()
{
try
{
String sql = @"select * from sv join sv_report sr on sv.sv_code = sr.sv_code where sv.status = 1";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error LoadListServicesReport", ex);
return null;
}
}
public List LoadListServicesAdv(int status)
{
try
{
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
from sv join sv_adv a on sv.sv_code = a.sv_code where sv.status = 1
[ and a.status = ? ]";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
if (status >= 0)
{
stmt.SetParameter(0, status);
}
var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error LoadListServicesAdv", ex);
return null;
}
}
public List GetUserByName(string username)
{
try
{
log.Info("Error GetUserByName: " + username);
String sql = @"select * from user_report where status = 1 and username = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
log.Info(stmt.connectionString);
stmt.SetParameters(username);
var rs = Users.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error GetUserByName", ex);
return null;
}
}
public Services GetServiceById(string serviceId)
{
try
{
String sql = @"select * from sv where status = 1 and id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(serviceId);
var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
if (rs != null && rs.Count > 0)
{
return rs[0];
}
return null;
}
catch (Exception ex)
{
log.Error("Error GetServiceById", ex);
return null;
}
}
public Services GetServiceRpBySvCode(string svCode)
{
try
{
String sql = @"select * from sv_report where status = 1 and sv_code = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(svCode);
var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
if (rs != null && rs.Count > 0)
{
return rs[0];
}
return null;
}
catch (Exception ex)
{
log.Error("Error GetServiceRpBySvCode", ex);
return null;
}
}
public Services GetServiceAdvById(string advId)
{
try
{
String sql = @"select a.*, a.id adv_id from sv_adv a where id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(advId);
var rs = Services.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
if (rs != null && rs.Count > 0)
{
return rs[0];
}
return null;
}
catch (Exception ex)
{
log.Error("Error GetServiceAdvById", ex);
return null;
}
}
public List GetCommonReport(DateTime fromDate, DateTime toDate)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
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 " +
" FROM daily_report a, sv " +
"WHERE a.sv_code = sv.sv_code AND report_date >= :fromDate AND report_date <= :toDate ORDER BY a.sv_code, a.report_date";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
// from date
AddCmdParam(ref myCommand, "fromDate", fromDate);
// todate
AddCmdParam(ref myCommand, "toDate", toDate);
DbDataReader reader = myCommand.ExecuteReader();
return DailyReport.Parse((OracleDataReader)reader);
}
}
catch (Exception ex)
{
log.Error("Error GetDailyReport", ex);
return null;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public List GetTotalReport(DateTime fromDate, DateTime toDate)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlCommand = "SELECT to_char(a.report_date,'dd/mm/yyyy') report_date, sum(a.revenue) revenue," +
" 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 " +
"WHERE report_date >= :fromDate AND report_date <= :toDate GROUP by a.report_date ORDER BY a.report_date";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
// from date
AddCmdParam(ref myCommand, "fromDate", fromDate);
// todate
AddCmdParam(ref myCommand, "toDate", toDate);
DbDataReader reader = myCommand.ExecuteReader();
return DailyReport.Parse((OracleDataReader)reader);
}
}
catch (Exception ex)
{
log.Error("Error GetDailyReport", ex);
return null;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public List GetDailyReport(string serviceCode, DateTime fromDate, DateTime toDate)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
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 " +
"FROM daily_report a " +
"WHERE sv_code = :service_code AND report_date >= :fromDate AND report_date <= :toDate ORDER BY a.report_date desc";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
// service code
AddCmdParam(ref myCommand, "service_code", serviceCode);
// from date
AddCmdParam(ref myCommand, "fromDate", fromDate);
// todate
AddCmdParam(ref myCommand, "toDate", toDate);
DbDataReader reader = myCommand.ExecuteReader();
return DailyReport.Parse((OracleDataReader)reader);
}
}
catch (Exception ex)
{
log.Error("Error GetDailyReport", ex);
return null;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public List GetDailyReportAccu(string serviceCode, DateTime fromDate, DateTime toDate)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
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 " +
"FROM daily_report a " +
"WHERE sv_code = :service_code AND report_date >= :fromDate AND report_date <= :toDate ORDER BY a.report_date desc";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
// service code
AddCmdParam(ref myCommand, "service_code", serviceCode);
// from date
AddCmdParam(ref myCommand, "fromDate", fromDate);
// todate
AddCmdParam(ref myCommand, "toDate", toDate);
DbDataReader reader = myCommand.ExecuteReader();
return DailyReport.Parse((OracleDataReader)reader);
}
}
catch (Exception ex)
{
log.Error("Error GetDailyReport", ex);
return null;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public List GetHourlyReport(string serviceCode, DateTime fromDate, DateTime toDate)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlCommand =
"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 " +
"FROM hourly_report a " +
"WHERE sv_code = :service_code AND report_date >= :fromDate AND report_date <= :toDate + 1 ORDER BY a.report_date desc";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
// service code
AddCmdParam(ref myCommand, "service_code", serviceCode);
// from date
AddCmdParam(ref myCommand, "fromDate", fromDate);
// todate
AddCmdParam(ref myCommand, "toDate", toDate);
DbDataReader reader = myCommand.ExecuteReader();
return DailyReport.Parse((OracleDataReader)reader);
}
}
catch (Exception ex)
{
log.Error("Error GetHourlyReport", ex);
return null;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public List GetTotalHourlyReport(DateTime fromDate, DateTime toDate)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlCommand = "SELECT to_char(a.report_date,'dd/mm/yyyy hh24') report_date, sum(a.revenue) revenue," +
" 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 " +
"WHERE report_date >= trunc(:fromDate) AND report_date < trunc(:toDate) + 1 GROUP by a.report_date ORDER BY a.report_date";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
// from date
AddCmdParam(ref myCommand, "fromDate", fromDate);
// todate
AddCmdParam(ref myCommand, "toDate", toDate);
DbDataReader reader = myCommand.ExecuteReader();
return DailyReport.Parse((OracleDataReader)reader);
}
}
catch (Exception ex)
{
log.Error("Error GetTotalHourlyRerpot", ex);
return null;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public DataTable GetRevenueHourly(string serviceCode, DateTime fromDate, DateTime toDate)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlCommand =
@"select * from (SELECT sv_code, report_date,
SUM(revenue) as TOTAL,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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
FROM(
SELECT trunc(report_date) report_date,
sv_code,
revenue,
report_date report_hour
FROM hourly_report
)
GROUP BY sv_code, report_date
)
WHERE sv_code = :service_code AND report_date >= :fromDate AND report_date <= :toDate ORDER BY report_date desc";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
// service code
AddCmdParam(ref myCommand, "service_code", serviceCode);
// from date
AddCmdParam(ref myCommand, "fromDate", fromDate);
// todate
AddCmdParam(ref myCommand, "toDate", toDate);
DbDataReader reader = myCommand.ExecuteReader();
var tb = new DataTable();
tb.Load(reader);
return tb;
}
}
catch (Exception ex)
{
log.Error("Error GetRevenueHourly", ex);
return null;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public List GetChargeLog(Services sv, String msisdn, DateTime fromDate, DateTime toDate)
{
try
{
String sqlCommand = "SELECT * FROM " + sv.db_name + ".charge_log WHERE msisdn = ? AND insert_time >= ? AND insert_time - 1 <= ? ORDER BY insert_time desc";
SqlStatement stmt = new SqlStatement(sqlCommand, BuildConnectionString(sv));
stmt.SetParameters(msisdn, fromDate, toDate);
return ChargeLog.Parse(stmt.ExecuteReader());
}
catch (Exception ex)
{
log.Error("Error GetChargeLog " + msisdn, ex);
return null;
}
}
public List GetRegisterInfo(Services sv, String msisdn, DateTime fromDate, DateTime toDate)
{
try
{
String sqlCommand = "SELECT * FROM " + sv.db_name + ".reg_info WHERE msisdn = ? AND expire_time >= ? AND register_time - 1 <= ? ORDER BY register_time desc";
SqlStatement stmt = new SqlStatement(sqlCommand, BuildConnectionString(sv));
stmt.SetParameters(msisdn, fromDate, toDate);
return RegInfo.Parse(stmt.ExecuteReader());
}
catch (Exception ex)
{
log.Error("Error Get RegInfo " + msisdn, ex);
return null;
}
}
// lucky spin
public List GetLuckySpin(String msisdn, DateTime fromDate, DateTime toDate)
{
try
{
String sqlCommand = "SELECT * FROM lucky_spin WHERE msisdn = ? AND expire_time >= ? AND insert_time - 1 <= ? ORDER BY expire_time desc";
SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
stmt.SetParameters(msisdn, fromDate, toDate);
return SpinLog.Parse(stmt.ExecuteReader());
}
catch (Exception ex)
{
log.Error("Error Get Spin log " + msisdn, ex);
return null;
}
}
public int CountLuckySpin(String msisdn)
{
SqlStatement stmt = null;
try
{
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 "
+ " where msisdn = ? and expire_time > sysdate";
stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
stmt.SetParameters(msisdn);
using (OracleDataReader reader = (OracleDataReader)stmt.ExecuteReader(connType))
{
while (reader.Read())
{
return int.Parse(reader.GetValue("remain_spin").ToString());
}
return 0;
}
}
catch (Exception ex)
{
log.Error("Error Get Spin log " + msisdn, ex);
return 0;
}
finally
{
try
{
stmt.CloseConnection();
}
catch { }
}
}
public List GetListLuckyCode(String msisdn, String code, String codeType, String period, String redeemStatus, DateTime? fromDate, DateTime? toDate)
{
try
{
String sqlCommand = @"
SELECT *
FROM (SELECT *
FROM (SELECT a.id, a.msisdn, a.code, a.insert_time, a.expire_time, a.period,
a.status, a.confirm_time, a.confirm_channel, a.fee, a.code_type FROM lucky_code a
WHERE 1=1
[ AND insert_time >= trunc(?) ]
[ AND insert_time < trunc(?) + 1 ]
[ AND msisdn like '%' || ? || '%' ]
[ AND code = ? ]
[ AND period = ? ]
[ AND status = ? ]
[ AND code_type = ? ]
)
lc
UNION ALL
(SELECT a.id, a.msisdn, a.code, a.insert_time, a.expire_time, a.period,
a.status, a.confirm_time, a.confirm_channel, a.fee, a.code_type FROM lucky_code_his a
WHERE 1=1
[ AND insert_time >= trunc(?) ]
[ AND insert_time < trunc(?) + 1 ]
[ AND msisdn like '%' || ? || '%' ]
[ AND code = ? ]
[ AND period = ? ]
[ AND status = ? ]
[ AND code_type = ? ]
)
) ";
SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
int numPa = 7;
if (fromDate != null)
{
stmt.SetParameter(0, fromDate);
stmt.SetParameter(0 + numPa, fromDate);
}
if (toDate != null)
{
stmt.SetParameter(1, toDate);
stmt.SetParameter(1 + numPa, toDate);
}
if (msisdn != null && msisdn.Length > 0)
{
stmt.SetParameter(2, msisdn);
stmt.SetParameter(2 + numPa, msisdn);
}
if (code != null && code.Length > 0)
{
stmt.SetParameter(3, code);
stmt.SetParameter(3 + numPa, code);
}
if (period != null && period.Length > 0)
{
stmt.SetParameter(4, period);
stmt.SetParameter(4 + numPa, period);
}
if (redeemStatus != null && redeemStatus != "-1" && redeemStatus.Length > 0)
{
stmt.SetParameter(5, redeemStatus);
stmt.SetParameter(5 + numPa, redeemStatus);
}
if (codeType != null && codeType.Length > 0 && codeType != "-1")
{
stmt.SetParameter(6, codeType);
stmt.SetParameter(6 + numPa, codeType);
}
return LuckyCode.Parse(stmt.ExecuteReader());
}
catch (Exception ex)
{
log.Error("Error GetListLuckyCode " + msisdn, ex);
return null;
}
}
// RANKING
public List GetRankingCoin(String msisdn, String month, int maxRow)
{
try
{
String sqlCommand =
@"SELECT a.* FROM
(SELECT *
FROM ( SELECT rownum rank, a.*
FROM (SELECT c.*, r.product_name
FROM user_coin c
left join (select * from reg_info where status = 1) r on c.msisdn = r.msisdn
where c.start_time <= to_date(?, 'mm/yyyy') and c.end_time >= to_date(?, 'mm/yyyy')
ORDER BY c.total_coin DESC, c.last_update) a )
WHERE 1=1
[ and msisdn = ? ]
[ and rank <= ? ]
) a";
//String sqlCommand = "SELECT * FROM (SELECT * FROM user_coin WHERE start_time <= to_date(?, 'mm/yyyy') and end_time >= to_date(?, 'mm/yyyy') " +
// " [ and msisdn = ? ]" +
// " ORDER BY total_coin desc, last_update) " +
// " where 1=1 " +
// " [and rownum <= ?]";
SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
stmt.SetParameter(0, month);
stmt.SetParameter(1, month);
if (msisdn != null & msisdn.Length > 0)
{
stmt.SetParameter(2, msisdn);
}
else
{
if (maxRow > 0)
{
stmt.SetParameter(3, maxRow);
}
}
return UserCoin.Parse(stmt.ExecuteReader());
}
catch (Exception ex)
{
log.Error("Error Get ranking coin " + msisdn, ex);
return null;
}
}
public List GetListPrizeWinner(String msisdn, String period, DateTime? fromDate, DateTime? toDate)
{
try
{
String sqlCommand = @"
SELECT *
FROM ( SELECT pw.*,
lch.status status,
g.is_auto,
g.times_prize,
lp.description,
lp.prize_name,
lp.is_top
FROM prize_winner pw
LEFT JOIN
list_prize lp
ON pw.prize_id = lp.id
LEFT JOIN
group_prize g
ON lp.sub_group_prize = g.sub_group_id
left join
execute_prize_his lch on lch.prize_winner_id = pw.id
WHERE 1 = 1
ORDER BY code_time DESC)
WHERE 1=1
[ AND code_time >= trunc(?) ]
[ AND code_time < trunc(?) + 1 ]
[ AND msisdn like '%' || ? || '%' ]
[ AND period = ? ]";
SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
if (fromDate != null)
{
stmt.SetParameter(0, fromDate);
}
if (toDate != null)
{
stmt.SetParameter(1, toDate);
}
if (msisdn != null && msisdn.Length > 0)
{
stmt.SetParameter(2, msisdn);
}
if (period != null && period.Length > 0 && period != "-1")
{
stmt.SetParameter(3, period);
}
return PrizeObj.Parse(stmt.ExecuteReader());
}
catch (Exception ex)
{
log.Error("Error GetListPrizeWinner " + msisdn, ex);
return null;
}
}
public PrizeObj GetWinnerById(int id)
{
try
{
String sqlCommand = @"
SELECT * FROM prize_winner where id = ?";
SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
stmt.SetParameters(id);
List list = PrizeObj.Parse(stmt.ExecuteReader());
return list[0];
}
catch (Exception ex)
{
log.Error("Error GetWinnerById " + id, ex);
return null;
}
}
public bool InsertPrizeWinner(String msisdn, int prizeId, String code, DateTime codeTime, int codeType)
{
try
{
String sql = @"INSERT INTO prize_winner (ID,MSISDN,PRIZE_ID,CODE,CODE_TIME,PROCESS_TIME,CODE_TYPE)
VALUES(prize_winner_seq.nextval, ?, ?, ?, ?, NULL, ?)";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(msisdn, prizeId, code, codeTime, codeType);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error InsertService", ex);
return false;
}
}
public bool DeleteWinner(int id)
{
try
{
String sql = "DELETE FROM prize_winner WHERE id= ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(id);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error DeleteWinner", ex);
return false;
}
}
public bool UpdateSendWinner(int id, String user)
{
try
{
String sql = "UPDATE prize_winner set process_time = sysdate, processed_by = ? WHERE id= ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(user, id);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateSendWinner", ex);
return false;
}
}
public bool SendMessage(String messageCode, String msisdn, String channel)
{
try
{
String sql = @"insert into mt values(
mt_seq.nextval, 0, ?, (select distinct(param_value) from config where param_name = ?), sysdate, 0, ?
)";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(msisdn, messageCode, channel);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error InsertService", ex);
return false;
}
}
public List LoadListPrize(int period, int is_auto)
{
try
{
String sqlCommand = @"
SELECT *
FROM ( SELECT lp.id, g.period,
g.channel,
g.is_auto,
lp.description,
lp.prize_name,
lp.is_top
FROM list_prize lp
LEFT JOIN
group_prize g
ON lp.sub_group_prize = g.sub_group_id
WHERE 1 = 1 )
WHERE 1=1 and period = ? and is_auto = ? ";
SqlStatement stmt = new SqlStatement(sqlCommand, SqlConnString.GAMEPORTAL);
stmt.SetParameters(period, is_auto);
return PrizeObj.Parse(stmt.ExecuteReader());
}
catch (Exception ex)
{
log.Error("Error LoadListPrize ", ex);
return null;
}
}
private String BuildConnectionString(Services sv)
{
String desc = sv.connection_string.Split('@')[1];
return "Data Source=" + desc + "; " +
" User ID=" + sv.db_username + ";Password=" + sv.db_password + ";Max Pool Size=3;";
}
public bool InsertService(string svCode, string svName)
{
try
{
String sql = @"INSERT INTO sv (ID,SV_CODE,SV_NAME,STATUS)
VALUES(sv_seq.nextval, ?, ?, 1)";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(svCode, svName);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error InsertService", ex);
return false;
}
}
public bool UpdateServiceInfo(string serviceId, string serviceCode, string serviceName)
{
try
{
String sql = @"Update sv set sv_code = ?, sv_name = ? where id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(serviceCode, serviceName, serviceId);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateServiceInfo", ex);
return false;
}
}
public bool UpdateServiceStatus(string svId, string status)
{
try
{
String sql = @"Update sv set status = ? where id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(status, svId);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateServiceStatus", ex);
return false;
}
}
public bool InsertSvReport(string svCode, string dbName, string connectionString, string dbUsername, string dbPassword, string sqlReportDaily, string sqlReportHourly)
{
try
{
String sql = @"INSERT INTO sv_report (SV_CODE,DB_NAME,CONNECTION_STRING,DB_USERNAME,DB_PASSWORD,SQL_REPORT_DAILY,SQL_REPORT_HOURLY,STATUS)
VALUES(?, ?, ?, ?, ?, ?, ?, 1)";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(svCode, dbName, connectionString, dbUsername, dbPassword, sqlReportDaily, sqlReportHourly);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error InsertSvReport", ex);
return false;
}
}
public bool UpdateServiceRpInfo(string svCode, string dbName, string connectionString, string dbUsername, string dbPassword, string sqlReportDaily, string sqlReportHourly)
{
try
{
String sql = @"Update sv_report set DB_NAME = ?,CONNECTION_STRING = ?,DB_USERNAME = ?,DB_PASSWORD = ?,SQL_REPORT_DAILY = ?,SQL_REPORT_HOURLY = ?
where sv_code = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(dbName, connectionString, dbUsername, dbPassword, sqlReportDaily, sqlReportHourly, svCode);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateServiceRpInfo", ex);
return false;
}
}
public bool UpdateServiceRpStatus(string svCode, string status)
{
try
{
String sql = @"Update sv_report set status = ? where sv_code = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(status, svCode);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateServiceRpStatus", ex);
return false;
}
}
public bool ClearPortDown(string portName)
{
try
{
String sql = @"UPDATE port_down SET end_time = sysdate WHERE port_name = ? AND end_time is null";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(portName);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error ClearPortDown", ex);
return false;
}
}
private void AddCmdParam(ref DbCommand myCommand, string paramName, object paramValue)
{
var parameter1 = myCommand.CreateParameter();
parameter1.ParameterName = ":" + paramName;
parameter1.Value = paramValue;
myCommand.Parameters.Add(parameter1);
}
public List GetBroadcastById(int broadcastId)
{
try
{
String sql =
@"SELECT br.*, a.adv_name, a.id adv_id"
+ " FROM broadcast br JOIN sv_adv a on br.sv_adv_id = a.id "
+ " WHERE br.id = ? "
+ " ORDER BY schedule_time desc";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(broadcastId);
var rs = Broadcast.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error GetBroadcastById", ex);
return null;
}
}
public List LoadListBroadcast(DateTime? fromdate, DateTime? todate)
{
try
{
String sql =
@"SELECT br.*, a.adv_name, a.id adv_id"
+ " FROM broadcast br JOIN sv_adv a on br.sv_adv_id = a.id "
+ " WHERE 1=1 " +
" [ AND br.schedule_time >= ? ] " +
" [ and br.schedule_time <= ? + 1 ]"
+ " ORDER BY schedule_time desc";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
if (fromdate != null)
{
stmt.SetParameter(0, fromdate);
}
if (todate != null)
{
stmt.SetParameter(1, todate);
}
var rs = Broadcast.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error LoadListBroadcast", ex);
return null;
}
}
public bool InsertBroadcast(Broadcast broadcast)
{
try
{
String sql = @"INSERT INTO broadcast (ID,BROADCAST_NAME,IMPORT_FILE,COUNT_SUB,STATUS,SCHEDULE_TIME,FINISH_TIME,SV_ADV_ID,SV_CODE,MSG_ADV,
CHANNEL_ADV,MESSAGE_TYPE,COUNT_SUB_REAL,PROGRESS_SUB)
VALUES(?, ?, ?, ?, 0, ?, NULL, ?, ?, ?, ?, ?, 0, 0)";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(
broadcast.id,
broadcast.broadcast_name,
broadcast.import_file,
broadcast.count_sub,
DateTime.ParseExact(broadcast.schedule_time, "dd/MM/yyyy HH:mm:ss", null),
broadcast.sv_adv_id,
broadcast.sv_code,
broadcast.msg_adv,
broadcast.channel_adv,
broadcast.message_type);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error InsertSvReport", ex);
return false;
}
}
public bool UpdateBroadcast(Broadcast broadcast)
{
try
{
String sql = "UPDATE BROADCAST SET BROADCAST_NAME = ?, IMPORT_FILE = ?, COUNT_SUB = ?, STATUS = ?, SCHEDULE_TIME = ?, SV_ADV_ID = ?,"
+ "SV_CODE = ?, MSG_ADV = ?, CHANNEL_ADV = ?, MESSAGE_TYPE = ? "
+ " WHERE id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(
broadcast.broadcast_name,
broadcast.import_file,
broadcast.count_sub,
broadcast.status,
DateTime.ParseExact(broadcast.schedule_time, "dd/MM/yyyy HH:mm:ss", null),
broadcast.sv_adv_id,
broadcast.sv_code,
broadcast.msg_adv,
broadcast.channel_adv,
broadcast.message_type,
broadcast.id);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateBroadcast", ex);
return false;
}
}
public bool UpdateBroadcastStatus(int id, string status)
{
try
{
String sql = "UPDATE BROADCAST SET STATUS = ? WHERE id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(status, id);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateBroadcastStatus", ex);
return false;
}
}
public int ImportSubBroadcast(Broadcast broadcast, List listMsisdn)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlCommand = "INSERT INTO MT_EXTEND_TEMP (ID,MSISDN,MESSAGE,RECEIVE_TIME,SEND_TIME,RETRY_NUM,CHANNEL,MESSAGE_TYPE,BROADCAST_ID)"
+ " VALUES(MT_EXTEND_seq.nextval, :msisdn, :message, sysdate, :send_time, 0, :channel, :message_type, :broadcast_id)";
int i = 0;
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbTransaction transaction = myConnection.BeginTransaction();
DbCommand myCommand = myConnection.CreateCommand();
myCommand.Transaction = transaction;
myCommand.CommandText = sqlCommand;
for (i = 0; i < listMsisdn.Count; i++)
{
myCommand.Parameters.Clear();
AddCmdParam(ref myCommand, "msisdn", listMsisdn[i]);
AddCmdParam(ref myCommand, "message", broadcast.msg_adv);
AddCmdParam(ref myCommand, "send_time", DateTime.ParseExact(broadcast.schedule_time, "dd/MM/yyyy HH:mm:ss", null));
AddCmdParam(ref myCommand, "channel", broadcast.channel_adv);
AddCmdParam(ref myCommand, "message_type", broadcast.message_type);
AddCmdParam(ref myCommand, "broadcast_id", broadcast.id);
myCommand.ExecuteNonQuery();
if (i % 1000 == 999)
{
transaction.Commit();
transaction = myConnection.BeginTransaction();
myCommand.Transaction = transaction;
}
}
transaction.Commit();
return i;
}
}
catch (Exception ex)
{
log.Error("Error ImportSubBroadcast", ex);
return i;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public bool InsertMtExtendFromTemp(int broadcastId)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlCommand = "broadcast_from_temp";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
AddCmdParam(ref myCommand, "brid", broadcastId);
myCommand.ExecuteNonQuery();
return true;
}
}
catch (Exception ex)
{
log.Error("Error InsertMtExtendFromTemp", ex);
return false;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public bool DeleteMtExtendTemp(int broadcastId)
{
try
{
String sql = "DELETE FROM mt_extend_temp WHERE broadcast_id= ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(broadcastId);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error DeleteMtExtendTemp", ex);
return false;
}
}
public bool DeleteMtExtend(int broadcastId)
{
try
{
String sql = "DELETE FROM mt_extend WHERE broadcast_id= ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(broadcastId);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error DeleteMtExtend", ex);
return false;
}
}
public int GetNextBroadcastId()
{
try
{
String sql = @"select broadcast_seq.nextval seq from dual";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
OracleDataReader reader = (OracleDataReader)stmt.ExecuteReader(connType);
int seq = 0;
while (reader.Read())
{
seq = int.Parse(reader.GetValue(0).ToString());
}
stmt.CloseConnection();
return seq;
}
catch (Exception ex)
{
log.Error("Error GetNextBroadcastId", ex);
return 0;
}
}
public List GetReportDetail(DateTime fromDate, DateTime toDate)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlCommand = @"SELECT a.sv_code, to_char(a.report_date,'dd/mm/yyyy') report_date, a.revenue_others, a.revenue_mocha,
a.revenue_web, a.revenue_buy_others, a.revenue_buy_mocha,
a.revenue_buy_web, a.count_reg_others, a.count_reg_mocha,
a.count_reg_web FROM report_detail a WHERE REPORT_DATE >= :fromDate and REPORT_DATE <= :toDate ORDER BY report_date desc";
// @"select
//'LUCKY_DRAW' SV_CODE,
// to_char(REPORT_DATE,'dd-mm-yyyy') REPORT_DATE,
//nvl(revenue_others,0) REVENUE_OTHERS,
//nvl(revenue_mocha,0) REVENUE_MOCHA,
//nvl(revenue_web,0) revenue_web,
//nvl(revenue_buy_others,0) REVENUE_BUY_OTHERS,
//nvl(revenue_buy_mocha,0) REVENUE_BUY_MOCHA,
//nvl(revenue_buy_web,0) revenue_buy_web,
//nvl(count_reg_others,0) count_reg_others ,
//nvl(count_reg_mocha,0) count_reg_mocha ,
//nvl(count_reg_web,0) count_reg_web
//from
//(
//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
//( select nvl(sum(fee),0) revenue_others, trunc(charge_time) REPORT_DATE from charge_log
// 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')
// group by trunc(charge_time) ) a
// left join
//(select nvl(sum(fee),0) revenue_mocha, trunc(charge_time) REPORT_DATE from charge_log
// where charge_time >= :from_date and charge_time < :to_date + 1 and fee > 0 and product_name = 'Lucky_Draw' and channel = '1'
// group by trunc(charge_time) ) a2 on a.report_date = a2.report_date
//left join
//(select nvl(sum(fee),0) revenue_web, trunc(charge_time) REPORT_DATE from charge_log
// where charge_time >= :from_date and charge_time < :to_date + 1 and fee > 0 and product_name = 'Lucky_Draw' and channel = '4'
// group by trunc(charge_time) ) a3 on a.report_date = a3.report_date
//left join
//(select nvl(sum(fee),0) revenue_buy_others, trunc(charge_time) REPORT_DATE from charge_log
// 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')
// group by trunc(charge_time) ) b on a.report_date = b.report_date
//left join
//(select nvl(sum(fee),0) revenue_buy_mocha, trunc(charge_time) REPORT_DATE from charge_log
// 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'
// group by trunc(charge_time) ) b2 on a.report_date = b2.report_date
//left join
//(select nvl(sum(fee),0) revenue_buy_web, trunc(charge_time) REPORT_DATE from charge_log
// 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'
// group by trunc(charge_time) ) b3 on a.report_date = b3.report_date
//left join
//(select count(*) count_reg_others, trunc(register_time) REPORT_DATE from reg_info
// where register_time >= :from_date and register_time < :to_date+ 1 and channel not in ('1','4')
// group by trunc(register_time) ) c on c.report_date = a.report_date
//left join
//(select count(*) count_reg_mocha, trunc(register_time) REPORT_DATE from reg_info
// where register_time >= :from_date and register_time < :to_date+ 1 and channel = '1'
// group by trunc(register_time) ) c2 on c2.report_date = a.report_date
//left join
//(select count(*) count_reg_web, trunc(register_time) REPORT_DATE from reg_info
// where register_time >= :from_date and register_time < :to_date+ 1 and channel = '4'
// group by trunc(register_time) ) c3 on c3.report_date = a.report_date
// ) a order by a.report_date desc ";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = sqlCommand;
myCommand.Parameters.Clear();
// from date
AddCmdParam(ref myCommand, "fromDate", fromDate);
// todate
AddCmdParam(ref myCommand, "toDate", toDate);
DbDataReader reader = myCommand.ExecuteReader();
return ReportDetail.Parse((OracleDataReader)reader);
}
}
catch (Exception ex)
{
log.Error("Error GetReportDetail", ex);
return null;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public List GetWebserviceById(int wsId)
{
try
{
String sql =
@"SELECT * from webservice where ws_id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(wsId);
var rs = WebserviceObj.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error GetWebserviceById", ex);
return null;
}
}
public List LoadListWebserivce(String wsName)
{
try
{
String sql =
@"SELECT * from webservice WHERE ws_name = ?"
+ " ORDER BY ws_code";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(wsName);
var rs = WebserviceObj.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error LoadListWebserivce", ex);
return null;
}
}
public bool InsertWebservice(WebserviceObj wsObj)
{
try
{
String sql = @"INSERT INTO webservice (WS_ID,WS_NAME,WS_CODE,WSDL,MSG_TEMPLATE,STATUS)
VALUES(webservice_seq.nextval, ?, ?, ?, ?, 1)";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(
wsObj.ws_name,
wsObj.ws_code,
wsObj.wsdl,
wsObj.msg_template);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error InsertWebservice", ex);
return false;
}
}
public bool UpdateWebservice(WebserviceObj wsObj)
{
try
{
String sql = "UPDATE webservice SET WS_NAME = ?, WS_CODE = ?, WSDL = ?, MSG_TEMPLATE = ? "
+ " WHERE WS_ID = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(
wsObj.ws_name,
wsObj.ws_code,
wsObj.wsdl,
wsObj.msg_template,
wsObj.ws_id);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateWebservice", ex);
return false;
}
}
public bool UpdateWebserviceStatus(int id, string status)
{
try
{
String sql = "UPDATE webservice SET STATUS = ? WHERE ws_id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(status, id);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateWebserviceStatus", ex);
return false;
}
}
// SV ADV
public bool InsertSvAdv(string svCode, string msgAdv, string advName, string channelAdv, string messageType, string fromMoney)
{
try
{
String sql = @"INSERT INTO sv_adv (ID, SV_CODE,ADV_NAME,MSG_ADV,MSG_ADV_PUSH,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY,STATUS )
VALUES(sv_adv_seq.nextval, ?, ?, ?, ?, ?, ?, ?, 1)";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(svCode, advName, msgAdv, msgAdv, channelAdv, messageType, fromMoney);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error InsertSvReport", ex);
return false;
}
}
//public bool InsertSvAdvHistory(string svCode, string messageType)
//{
// try
// {
// String sql = @"INSERT INTO sv_adv_history (ID,SV_CODE,START_TIME,END_TIME,COUNT_MSG,MESSAGE_TYPE)
// VALUES(sv_adv_history_seq.nextval, ?, sysdate, NULL, 0, ?)";
// SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
// stmt.SetParameters(svCode, messageType);
// stmt.ExecuteNonQuery(connType);
// stmt.CloseConnection();
// return true;
// }
// catch (Exception ex)
// {
// log.Error("Error InsertSvAdvHistory", ex);
// return false;
// }
//}
public bool UpdateServiceAdvInfo(string svCode, string msgAdv, string advName, string channelAdv, string messageType, string fromMoney, string advId)
{
try
{
String sql = @"Update sv_adv set sv_code = ?, msg_adv = ?,adv_name = ?,channel_adv = ?,message_type = ?,from_money = ?
where id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(svCode, msgAdv, advName, channelAdv, messageType, fromMoney, advId);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateServiceAdvInfo", ex);
return false;
}
}
public bool UpdateServiceAdvStatus(string advId, string status)
{
try
{
String sql = @"Update sv_adv set status = ? where id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(status, advId);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateServiceAdvStatus", ex);
return false;
}
}
//public bool UpdateServiceAdvEndTime(string svCode)
//{
// try
// {
// String sql = @"Update sv_adv_history set end_time = sysdate WHERE sv_code = ? and end_time is null";
// SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
// stmt.SetParameters(svCode);
// stmt.ExecuteNonQuery(connType);
// stmt.CloseConnection();
// return true;
// }
// catch (Exception ex)
// {
// log.Error("Error UpdateServiceAdvStatus", ex);
// return false;
// }
//}
// Service Adv schedule
public SvAdvSchedule GetSvAdvScheduleById(string scheduleId, int codeType)
{
try
{
String sql;
if (codeType == LuckyCardUtils.CodeType.LUCKY_CARD)
{
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,
d.id schedule_detail_id, nvl(d.percent,0) percent
from sv_adv_schedule s
left join sv_adv a on a.status = 1
left join sv_adv_schedule_detail d on s.id = d.schedule_id and d.sv_adv_id = a.id and d.status = 1
where s.id = ?";
}
else
{
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,
d.id schedule_detail_id, nvl(d.percent,0) percent
from sv_adv_schedule_call s
left join sv_adv a on a.status = 1
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
where s.id = ?";
}
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(scheduleId);
var rs = SvAdvSchedule.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
if (rs != null && rs.Count > 0)
{
return rs[0];
}
return null;
}
catch (Exception ex)
{
log.Error("Error GetSvAdvScheduleById", ex);
return null;
}
}
public bool UpdateSvAdvScheduleInfo(SvAdvSchedule svAdvSchedule, int codeType)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlUpdateSchedule = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? "UPDATE sv_adv_schedule SET from_date = :from_date, to_date = :to_date, schedule_name = :schedule_name WHERE id = :id"
: "UPDATE sv_adv_schedule_call SET from_date = :from_date, to_date = :to_date, schedule_name = :schedule_name WHERE id = :id";
String sqlDeleteAdv = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? "UPDATE sv_adv_schedule_detail SET status = 0 WHERE schedule_id = :schedule_id"
: "UPDATE sv_adv_schedule_detail_call SET status = 0 WHERE schedule_id = :schedule_id";
String sqlInsertAdv = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? @"INSERT INTO sv_adv_schedule_detail (ID,SCHEDULE_ID,SV_ADV_ID,PERCENT,SV_CODE,MSG_ADV,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY)
SELECT sv_adv_schedule_detail_seq.nextval,
:schedule_id, id, :percent, sv_code, msg_adv, channel_adv, message_type, from_money FROM sv_adv WHERE id = :sv_adv_id"
: @"INSERT INTO sv_adv_schedule_detail_call (ID,SCHEDULE_ID,SV_ADV_ID,PERCENT,SV_CODE,MSG_ADV,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY)
SELECT sv_adv_schedule_detail_seq.nextval,
:schedule_id, id, :percent, sv_code, msg_adv, channel_adv, message_type, from_money FROM sv_adv WHERE id = :sv_adv_id";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbTransaction transaction = myConnection.BeginTransaction();
DbCommand myCommand = myConnection.CreateCommand();
myCommand.Transaction = transaction;
// update schedule
myCommand.CommandText = sqlUpdateSchedule;
myCommand.Parameters.Clear();
AddCmdParam(ref myCommand, "from_date", svAdvSchedule.from_date);
AddCmdParam(ref myCommand, "to_date", svAdvSchedule.to_date);
AddCmdParam(ref myCommand, "schedule_name", svAdvSchedule.schedule_name);
AddCmdParam(ref myCommand, "id", svAdvSchedule.id);
myCommand.ExecuteNonQuery();
// delete old adv
myCommand.CommandText = sqlDeleteAdv;
myCommand.Parameters.Clear();
AddCmdParam(ref myCommand, "schedule_id", svAdvSchedule.id);
myCommand.ExecuteNonQuery();
// insert new adv
myCommand.CommandText = sqlInsertAdv;
for (int i = 0; i < svAdvSchedule.list_adv.Count; i++)
{
SvAdv adv = svAdvSchedule.list_adv[i];
myCommand.Parameters.Clear();
AddCmdParam(ref myCommand, "schedule_id", svAdvSchedule.id);
AddCmdParam(ref myCommand, "percent", adv.percent);
AddCmdParam(ref myCommand, "sv_adv_id", adv.id);
//AddCmdParam(ref myCommand, "sv_code", adv.sv_code);
//AddCmdParam(ref myCommand, "msg_adv", adv.msg_adv);
//AddCmdParam(ref myCommand, "channel_adv", adv.channel_adv);
//AddCmdParam(ref myCommand, "message_type", adv.message_type);
//AddCmdParam(ref myCommand, "from_money", adv.from_money);
myCommand.ExecuteNonQuery();
}
transaction.Commit();
return true;
}
}
catch (Exception ex)
{
log.Error("Error UpdateSvAdvScheduleInfo", ex);
return false;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
public bool UpdateSvAdvScheduleStatus(string scheduleId, string status, int codeType)
{
try
{
String sql = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? @"Update sv_adv_schedule set status = ? where id = ?"
: @"Update sv_adv_schedule_call set status = ? where id = ?";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
stmt.SetParameters(status, scheduleId);
stmt.ExecuteNonQuery(connType);
stmt.CloseConnection();
return true;
}
catch (Exception ex)
{
log.Error("Error UpdateSvAdvScheduleStatus", ex);
return false;
}
}
public List LoadListServicesAdv()
{
try
{
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
from sv join sv_adv a on sv.sv_code = a.sv_code
where sv.status = 1
and a.status = 1 ORDER BY sv.sv_code ";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
var rs = SvAdv.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error LoadListServicesAdv", ex);
return null;
}
}
public List LoadListSvAdvSchedule(int month, int year, int codeType)
{
try
{
String sql = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? @"select s.*, d.sv_adv_id, d.sv_code, d.msg_adv, d.channel_adv, d.message_type, d.from_money,
d.id schedule_detail_id, nvl(d.percent,0) percent
from sv_adv_schedule s
left join sv_adv_schedule_detail d on s.id = d.schedule_id and d.status = 1
where 1=1
and s.from_date < ? +1
and s.to_date >= ?
ORDER BY s.from_date desc"
: @"select s.*, d.sv_adv_id, d.sv_code, d.msg_adv, d.channel_adv, d.message_type, d.from_money,
d.id schedule_detail_id, nvl(d.percent,0) percent
from sv_adv_schedule_call s
left join sv_adv_schedule_detail_call d on s.id = d.schedule_id and d.status = 1
where 1=1
and s.from_date < ? +1
and s.to_date >= ?
ORDER BY s.from_date desc";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
DateTime max = new DateTime(year, month, DateTime.DaysInMonth(year, month));
DateTime min = new DateTime(year, month, 1);
stmt.SetParameters(max, min);
var rs = SvAdvSchedule.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error LoadListSvAdvSchedule", ex);
return null;
}
}
public List LoadListSvAdvCounter(int month, int year, int codeType)
{
try
{
String sql = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? @"select nvl(c.schedule_detail_id,-1) schedule_detail_id,
nvl(c.counter,0) counter, nvl(c.create_time, s.from_date) start_time, nvl(c.report_date, trunc(s.from_date)) report_date,
nvl(s.to_date, trunc(c.report_date) + 1 - 1/86400) end_time, d.*
from sv_adv_schedule_detail d
full outer join schedule_counter c on d.id = c.schedule_detail_id
left join sv_adv_schedule s on s.id = d.schedule_id
where 1=1
and nvl(c.create_time, s.from_date) < ? + 1
and nvl(c.create_time, s.to_date) >= ?
ORDER BY nvl(c.report_date, trunc(s.from_date)) desc, d.sv_code"
: @"select nvl(c.schedule_detail_id,-1) schedule_detail_id,
nvl(c.counter,0) counter, nvl(c.create_time, s.from_date) start_time, nvl(c.report_date, trunc(s.from_date)) report_date,
nvl(s.to_date, trunc(c.report_date) + 1 - 1/86400) end_time, d.*
from sv_adv_schedule_detail_call d
full outer join schedule_counter_call c on d.id = c.schedule_detail_id
left join sv_adv_schedule_call s on s.id = d.schedule_id
where 1=1
and nvl(c.create_time, s.from_date) < ? + 1
and nvl(c.create_time, s.to_date) >= ?
ORDER BY nvl(c.create_time, s.from_date) desc, d.sv_code";
SqlStatement stmt = SqlStatement.FromString(sql, SqlConnString.GAMEPORTAL);
DateTime max = new DateTime(year, month, DateTime.DaysInMonth(year, month));
DateTime min = new DateTime(year, month, 1);
stmt.SetParameters(max, min);
var rs = SvAdv.Parse((OracleDataReader)stmt.ExecuteReader(connType));
stmt.CloseConnection();
return rs;
}
catch (Exception ex)
{
log.Error("Error LoadListSvAdvCounter", ex);
return null;
}
}
public bool InsertSvAdvSchedule(SvAdvSchedule svAdvSchedule, int codeType)
{
DbConnection myConnection = null;
SqlStatement stmt = new SqlStatement(SqlConnString.GAMEPORTAL);
String sqlGetScheduleId = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? "SELECT sv_adv_schedule_seq.nextval seq FROM DUAL"
: "SELECT sv_adv_schedule_call_seq.nextval seq FROM DUAL";
String sqlUpdateSchedule = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? @"INSERT INTO sv_adv_schedule (ID,FROM_DATE,TO_DATE,SCHEDULE_NAME,STATUS)
VALUES(:schedule_id, :from_date, :to_date, :schedule_name, 1)"
: @"INSERT INTO sv_adv_schedule_call (ID,FROM_DATE,TO_DATE,SCHEDULE_NAME,STATUS)
VALUES(:schedule_id, :from_date, :to_date, :schedule_name, 1)";
String sqlInsertAdv = codeType == LuckyCardUtils.CodeType.LUCKY_CARD
? @"INSERT INTO sv_adv_schedule_detail (ID,SCHEDULE_ID,SV_ADV_ID,PERCENT,SV_CODE,MSG_ADV,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY)
SELECT sv_adv_schedule_detail_seq.nextval,
:schedule_id, id, :percent, sv_code, msg_adv, channel_adv, message_type, from_money FROM sv_adv WHERE id = :sv_adv_id"
: @"INSERT INTO sv_adv_schedule_detail_call (ID,SCHEDULE_ID,SV_ADV_ID,PERCENT,SV_CODE,MSG_ADV,CHANNEL_ADV,MESSAGE_TYPE,FROM_MONEY)
SELECT sv_adv_schedule_detail_seq.nextval,
:schedule_id, id, :percent, sv_code, msg_adv, channel_adv, message_type, from_money FROM sv_adv WHERE id = :sv_adv_id";
// VALUES(sv_adv_schedule_detail_seq.nextval, :schedule_id, :sv_adv_id, :percent, :sv_code, :msg_adv, :channel_adv, :message_type, :from_money)";
try
{
using (myConnection = (DbConnection)stmt.GetConnection(connType))
{
DbTransaction transaction = myConnection.BeginTransaction();
DbCommand myCommand = myConnection.CreateCommand();
myCommand.Transaction = transaction;
// get sequence
myCommand.CommandText = sqlGetScheduleId;
myCommand.Parameters.Clear();
DbDataReader reader = myCommand.ExecuteReader();
if (reader.Read())
{
svAdvSchedule.id = reader.GetInt32(0);
}
// update schedule
myCommand.CommandText = sqlUpdateSchedule;
myCommand.Parameters.Clear();
AddCmdParam(ref myCommand, "schedule_id", svAdvSchedule.id);
AddCmdParam(ref myCommand, "from_date", svAdvSchedule.from_date);
AddCmdParam(ref myCommand, "to_date", svAdvSchedule.to_date);
AddCmdParam(ref myCommand, "schedule_name", svAdvSchedule.schedule_name);
myCommand.ExecuteNonQuery();
// insert new adv
myCommand.CommandText = sqlInsertAdv;
for (int i = 0; i < svAdvSchedule.list_adv.Count; i++)
{
SvAdv adv = svAdvSchedule.list_adv[i];
myCommand.Parameters.Clear();
AddCmdParam(ref myCommand, "schedule_id", svAdvSchedule.id);
AddCmdParam(ref myCommand, "percent", adv.percent);
AddCmdParam(ref myCommand, "sv_adv_id", adv.id);
//AddCmdParam(ref myCommand, "sv_code", adv.sv_code);
//AddCmdParam(ref myCommand, "msg_adv", adv.msg_adv);
//AddCmdParam(ref myCommand, "channel_adv", adv.channel_adv);
//AddCmdParam(ref myCommand, "message_type", adv.message_type);
//AddCmdParam(ref myCommand, "from_money", adv.from_money);
myCommand.ExecuteNonQuery();
}
transaction.Commit();
return true;
}
}
catch (Exception ex)
{
log.Error("Error InsertSvAdvSchedule", ex);
return false;
}
finally
{
try
{
if (myConnection != null)
{
myConnection.Close();
}
}
catch { }
}
}
}
}