|
@@ -121,12 +121,18 @@ namespace Kitty_Fall.Apis.Business.Game
|
|
|
var items = attempts.Select(attempt =>
|
|
var items = attempts.Select(attempt =>
|
|
|
{
|
|
{
|
|
|
var eventTime = attempt.SubmitTime ?? attempt.StartTime;
|
|
var eventTime = attempt.SubmitTime ?? attempt.StartTime;
|
|
|
- var rewardLog = attempt.GameRewardLog != null && attempt.GameRewardLog.Status == 2
|
|
|
|
|
- ? attempt.GameRewardLog
|
|
|
|
|
- : null;
|
|
|
|
|
- var rewardType = rewardLog?.RewardType ?? attempt.RewardType ?? "";
|
|
|
|
|
- var rewardValue = rewardLog?.RewardValue ?? attempt.RewardValue ?? 0;
|
|
|
|
|
- var rewardUnit = rewardLog?.RewardUnit ?? attempt.RewardUnit ?? "";
|
|
|
|
|
|
|
+ // Ket qua random tren ATTEMPT la nguon su that. Reward log chi la
|
|
|
|
|
+ // trang thai payout, worker khong duoc lam thay doi loai da trung.
|
|
|
|
|
+ var hasAttemptReward = !string.IsNullOrWhiteSpace(attempt.RewardType);
|
|
|
|
|
+ var rewardType = hasAttemptReward
|
|
|
|
|
+ ? attempt.RewardType!
|
|
|
|
|
+ : attempt.GameRewardLog?.RewardType ?? "";
|
|
|
|
|
+ var rewardValue = hasAttemptReward
|
|
|
|
|
+ ? attempt.RewardValue ?? 0
|
|
|
|
|
+ : attempt.GameRewardLog?.RewardValue ?? 0;
|
|
|
|
|
+ var rewardUnit = hasAttemptReward
|
|
|
|
|
+ ? attempt.RewardUnit ?? ""
|
|
|
|
|
+ : attempt.GameRewardLog?.RewardUnit ?? "";
|
|
|
if (string.IsNullOrWhiteSpace(rewardType) && attempt.AwardedScore > 0)
|
|
if (string.IsNullOrWhiteSpace(rewardType) && attempt.AwardedScore > 0)
|
|
|
{
|
|
{
|
|
|
// Level thuong khong random reward option van phai hien thi
|
|
// Level thuong khong random reward option van phai hien thi
|
|
@@ -388,41 +394,47 @@ namespace Kitty_Fall.Apis.Business.Game
|
|
|
&& x.StartTime < startOfMonth.AddMonths(1))
|
|
&& x.StartTime < startOfMonth.AddMonths(1))
|
|
|
.SumAsync(x => (long?)x.TotalScore) ?? 0;
|
|
.SumAsync(x => (long?)x.TotalScore) ?? 0;
|
|
|
|
|
|
|
|
- // Lay thue bao trung DATA/LOYALTY trong ngay da chon.
|
|
|
|
|
- // SCORE la diem noi bo nen khong hien thi o man danh sach trung ngay.
|
|
|
|
|
- var winnerQuery = dbContext.GameRewardLogs.AsNoTracking()
|
|
|
|
|
|
|
+ // Daily Winners la ket qua choi trung thuong cua tat ca thue bao.
|
|
|
|
|
+ // Lay tu ATTEMPT (ket qua random goc), khong cho worker payout thanh cong
|
|
|
|
|
+ // moi hien thi. SCORE la diem noi bo nen khong nam trong danh sach nay.
|
|
|
|
|
+ var winnerQuery = dbContext.GameLevelAttempts.AsNoTracking()
|
|
|
.Where(x => x.Status == 2
|
|
.Where(x => x.Status == 2
|
|
|
&& (x.RewardType == "DATA" || x.RewardType == "LOYALTY")
|
|
&& (x.RewardType == "DATA" || x.RewardType == "LOYALTY")
|
|
|
- && ((x.ResponseTime ?? x.CreatedTime) >= selectedDate)
|
|
|
|
|
- && ((x.ResponseTime ?? x.CreatedTime) < toExclusive))
|
|
|
|
|
- .OrderByDescending(x => x.ResponseTime ?? x.CreatedTime)
|
|
|
|
|
- .ThenByDescending(x => x.RewardLogId);
|
|
|
|
|
|
|
+ && x.RewardValue != null
|
|
|
|
|
+ && x.RewardValue > 0
|
|
|
|
|
+ && ((x.SubmitTime ?? x.CreatedTime) >= selectedDate)
|
|
|
|
|
+ && ((x.SubmitTime ?? x.CreatedTime) < toExclusive))
|
|
|
|
|
+ .OrderByDescending(x => x.SubmitTime ?? x.CreatedTime)
|
|
|
|
|
+ .ThenByDescending(x => x.AttemptId);
|
|
|
|
|
|
|
|
var totalRow = await winnerQuery.CountAsync();
|
|
var totalRow = await winnerQuery.CountAsync();
|
|
|
|
|
|
|
|
// Lay so dong can hien thi tren bang thiet ke.
|
|
// Lay so dong can hien thi tren bang thiet ke.
|
|
|
- var rewardLogs = await winnerQuery
|
|
|
|
|
|
|
+ var winnerAttempts = await winnerQuery
|
|
|
.Take(pageSize)
|
|
.Take(pageSize)
|
|
|
.ToListAsync();
|
|
.ToListAsync();
|
|
|
|
|
|
|
|
- // Chuyen log thuong sang dinh dang web dang dung.
|
|
|
|
|
- var items = rewardLogs.Select((rewardLog, index) =>
|
|
|
|
|
|
|
+ // Chuyen ket qua random trung thuong sang dinh dang web dang dung.
|
|
|
|
|
+ var items = winnerAttempts.Select((attempt, index) =>
|
|
|
{
|
|
{
|
|
|
- var rewardTime = rewardLog.ResponseTime ?? rewardLog.CreatedTime;
|
|
|
|
|
|
|
+ var rewardTime = attempt.SubmitTime ?? attempt.CreatedTime;
|
|
|
|
|
+ var rewardType = attempt.RewardType ?? "";
|
|
|
|
|
+ var rewardValue = attempt.RewardValue ?? 0;
|
|
|
|
|
+ var rewardUnit = attempt.RewardUnit ?? "";
|
|
|
|
|
|
|
|
return new UserDailyWinnerItem
|
|
return new UserDailyWinnerItem
|
|
|
{
|
|
{
|
|
|
no = index + 1,
|
|
no = index + 1,
|
|
|
- msisdn = rewardLog.Msisdn,
|
|
|
|
|
- phoneText = MaskMiddleFiveMsisdn(rewardLog.Msisdn),
|
|
|
|
|
|
|
+ msisdn = attempt.Msisdn,
|
|
|
|
|
+ phoneText = MaskMiddleFiveMsisdn(attempt.Msisdn),
|
|
|
timeText = rewardTime.ToString("HH:mm:ss", CultureInfo.InvariantCulture),
|
|
timeText = rewardTime.ToString("HH:mm:ss", CultureInfo.InvariantCulture),
|
|
|
- rewardType = rewardLog.RewardType,
|
|
|
|
|
- rewardValue = rewardLog.RewardValue,
|
|
|
|
|
- rewardValueText = FormatRewardValue(rewardLog.RewardValue),
|
|
|
|
|
- rewardUnit = rewardLog.RewardUnit,
|
|
|
|
|
- rewardUnitText = ToRewardUnitText(rewardLog.RewardType, rewardLog.RewardUnit),
|
|
|
|
|
- rewardCssClass = ToRewardCssClass(rewardLog.RewardType),
|
|
|
|
|
- rewardIcon = ToRewardIcon(rewardLog.RewardType)
|
|
|
|
|
|
|
+ rewardType = rewardType,
|
|
|
|
|
+ rewardValue = rewardValue,
|
|
|
|
|
+ rewardValueText = FormatRewardValue(rewardValue),
|
|
|
|
|
+ rewardUnit = rewardUnit,
|
|
|
|
|
+ rewardUnitText = ToRewardUnitText(rewardType, rewardUnit),
|
|
|
|
|
+ rewardCssClass = ToRewardCssClass(rewardType),
|
|
|
|
|
+ rewardIcon = ToRewardIcon(rewardType)
|
|
|
};
|
|
};
|
|
|
}).ToList();
|
|
}).ToList();
|
|
|
|
|
|
|
@@ -767,12 +779,19 @@ namespace Kitty_Fall.Apis.Business.Game
|
|
|
// DATA/LOYALTY/SCORE. Khong cong them score client tai level moc.
|
|
// DATA/LOYALTY/SCORE. Khong cong them score client tai level moc.
|
|
|
awardedScore = 0;
|
|
awardedScore = 0;
|
|
|
var rewardOptions = await dbContext.GameLevelRewardOptions.AsNoTracking()
|
|
var rewardOptions = await dbContext.GameLevelRewardOptions.AsNoTracking()
|
|
|
- .Where(x => x.ModeId == mode.ModeId && x.LevelNo == levelNo.Value && x.Status != false)
|
|
|
|
|
|
|
+ .Where(x => x.ModeId == mode.ModeId
|
|
|
|
|
+ && x.LevelNo == levelNo.Value
|
|
|
|
|
+ && x.Status != false
|
|
|
|
|
+ && (x.RewardType == "DATA" || x.RewardType == "LOYALTY" || x.RewardType == "SCORE"))
|
|
|
.OrderByDescending(x => x.IsDefault == true)
|
|
.OrderByDescending(x => x.IsDefault == true)
|
|
|
.ThenByDescending(x => x.Weight)
|
|
.ThenByDescending(x => x.Weight)
|
|
|
.ThenBy(x => x.RewardOptionId)
|
|
.ThenBy(x => x.RewardOptionId)
|
|
|
.ToListAsync();
|
|
.ToListAsync();
|
|
|
rewardOption = SelectRewardOption(rewardOptions);
|
|
rewardOption = SelectRewardOption(rewardOptions);
|
|
|
|
|
+ if (rewardOption != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ log.Info($"Milestone reward selected. msisdn={msisdn}, transId={request.transId}, modeId={mode.ModeId}, level={levelNo.Value}, optionId={rewardOption.RewardOptionId}, rewardType={rewardOption.RewardType}, rewardValue={rewardOption.RewardValue}, rewardUnit={rewardOption.RewardUnit}");
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
var attemptNo = ((await dbContext.GameLevelAttempts.AsNoTracking()
|
|
var attemptNo = ((await dbContext.GameLevelAttempts.AsNoTracking()
|
|
@@ -832,8 +851,8 @@ namespace Kitty_Fall.Apis.Business.Game
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
var responseData = "";
|
|
var responseData = "";
|
|
|
- // Basic score cua level chi duoc phan anh trong score. Point va thong tin
|
|
|
|
|
- // reward chi co gia tri khi level milestone thuc su random ra phan thuong.
|
|
|
|
|
|
|
+ // score la tong SCORE game. point chi la gia tri LOYALTY de popup
|
|
|
|
|
+ // hien thi, khong duoc cong vao score/ranking.
|
|
|
var responsePoint = "0";
|
|
var responsePoint = "0";
|
|
|
var responseRewardType = "";
|
|
var responseRewardType = "";
|
|
|
decimal responseRewardValue = 0;
|
|
decimal responseRewardValue = 0;
|
|
@@ -878,6 +897,7 @@ namespace Kitty_Fall.Apis.Business.Game
|
|
|
{
|
|
{
|
|
|
// LOYALTY la point cua he thong ngoai game. Chi tao reward log
|
|
// LOYALTY la point cua he thong ngoai game. Chi tao reward log
|
|
|
// de worker cong ben ngoai va luu lich su, khong cong vao score/ranking.
|
|
// de worker cong ben ngoai va luu lich su, khong cong vao score/ranking.
|
|
|
|
|
+ responsePoint = FormatPrizeValue(rewardOption.RewardValue);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
var waitWorkerPayout = string.Equals(rewardOption.RewardType, "DATA", StringComparison.OrdinalIgnoreCase)
|
|
var waitWorkerPayout = string.Equals(rewardOption.RewardType, "DATA", StringComparison.OrdinalIgnoreCase)
|