<script>
$( document ).ready(function() {
{% if env == 'game' %}
loginCallback();
{% else %}
prompt("cmhk://epg/login?return=loginCallback");
{% endif %}
})
var missionData = [];
var monthlyRemind = true;
function loginCallback(res){
{% if env == 'game' %}
res = {
"code": 200,
"message":"登录成功",
"info":{
"userId":"xxx",
"userToken":"test",
"userName":"xxx",
"userHeadImg":"xxx",
"userTel":"66627172",
"platformCode":"xxx",
"mac":"xxx"
}
}
{% endif %}
console.log("login call back");
console.log(res)
let data;
if (res && res.info)
{
$('#entryRequirements .userPhone span').html(res.info.userTel);
$.post("{{ path('api_get_user', {'language': app.request.locale}) }}", { "data": res.info },
function (data, status) {
if (data.code == '200') {
jwt = data.jwt;
localStorage.setItem('{{ localStorage_name }}', jwt);
// enable/disable entryRequirement
if(data.validUser){
$('.validUser').show();
$('#entryRequirements .success').show();
$('#entryRequirements .fail').hide();
if(data.startGame){
$('#entryRequirements .success').css('background-image', "url('{{ asset('images/entry_bg_success_start.png') }}')");
if(!data.firstLogin){
var expirationDateTop = $('#expirationDate').offset().top;
var headerOffset = 0; // Adjust this value based on your header height
$('html, body').animate({
scrollTop: expirationDateTop - headerOffset
}, 1000);
}
monthlyRemind = data.monthlyRemind;
getCurrentMonthMission();
}else{
$('#entryRequirements .success').css('background-image', "url('{{ asset('images/entry_bg_success_nonstart.png') }}')");
$('#mission').hide();
$('#missionStatus').hide();
$('.bgbox').css('height','auto');
if ($(window).width() >= 700) {
$('header').css('height', '195vw');
} else {
$('header').css('height', '260vw'); // 或根據需要設置其他值
}
}
const currentDate = new Date();
// Get the current year and month
const currentYear = currentDate.getFullYear();
const currentMonth = currentDate.getMonth();
// Create a new date object for the first day of the next month
const firstDayNextMonth = new Date(currentYear, currentMonth + 1, 1);
// Subtract one day to get the last day of the current month
const lastDateOfCurrentMonth = new Date(firstDayNextMonth - 1);
$('div.missionDuration span').html(`${lastDateOfCurrentMonth.getMonth() + 1} 月 1 至 ${lastDateOfCurrentMonth.getDate()} 日`);
$('#expirationDate p').html(`2026 年 ${data.userExpirationMonth} 月 ${data.userExpirationDate} 日`);
}else{
if ($(window).width() >= 700) {
$('header').css('height', '195vw');
} else {
$('header').css('height', '260vw'); // 或根據需要設置其他值
}
$('.bgbox').css('height','auto');
$('#entryRequirements .fail').show();
$('#entryRequirements .success').hide();
}
}
else if (data.code == '400') {
$("#modal_message_success").html(data.message);
$('#myModal_success').modal('show');
}
});
}
else
{
$("#modal_message_success").html('{{ "error.user" | trans }}');
$('#myModal_success').modal('show');
}
}
function getCurrentMonthMission(){
let jwt = localStorage.getItem('{{ localStorage_name }}');
$.post("{{ path('api_get_current_month_mission', {'language': app.request.locale}) }}", { "jwt": jwt },
function (data, status){
data.weekly_mission.forEach(function(dates) {
let jsonParams = {
pageIndex: 0,
pageSize: 10,
startTime: dates[0],
endTime: dates[1],
};
{% if env == 'game' %}
historyCallback();
{% else %}
prompt("cmhk://epg/history?jsonParam=" + encodeURIComponent(JSON.stringify(jsonParams)) + "&return=historyCallback");
{% endif %}
});
setTimeout(function () {
$.post("{{ path('api_get_mission_status', {'language': app.request.locale}) }}", { "data": JSON.stringify(missionData), 'jwt': jwt },
function (data, status){
let totalMissionCount = Object.values(data.data).length;
let nonFinishMissionCount = 0;
let finishMissionCount = 0;
let statusData = data.data;
$('#expirationDate p').html(data.exp_date);
Object.keys(statusData).forEach((key,index) => {
if(statusData[key] =="Done"){
finishMissionCount++;
}else if(statusData[key] == "fail"){
nonFinishMissionCount++;
}
const container = document.getElementById('missionList');
const containerBouns = document.getElementById('missionBonus');
let missionHTML = renderMissionTemplate(key, statusData[key],index);
if(key == 'bonus'){
containerBouns.insertAdjacentHTML('beforeend', missionHTML);
}else{
container.insertAdjacentHTML('beforeend', missionHTML);
}
});
if(finishMissionCount >= 3){
if(!data.has_redeem){
$('#myModal_mission_success').modal('show');
}
$('#missionStatus').css('background-image',"url('{{ asset('images/mission_status_done.png') }}')")
}else if(totalMissionCount - nonFinishMissionCount < 3){
$('#missionStatus').css('background-image',"url('{{ asset('images/mission_status_fail.png') }}')")
}else{
$('#missionStatus').css('background-image',"url('{{ asset('images/mission_status_wait.png') }}')")
}
}
)
}, 1000);
}
);
}
function historyCallback(res) {
{% if env == 'game' %}
res = {
"code": 200,
"message":"获取成功",
"info":{
"data":[
{
"historyId":"1",
"historyName":"xxx1",
"historyTime":"1767339023000",
},
{
"historyId":"2",
"historyName":"xxx2",
"historyTime":"1767857423000",
},
{
"historyId":"3",
"historyName":"xxx2",
"historyTime":"1768375823",
}
]
}
}
{% endif %}
//console.log("history call back");
//console.log(res);
if (res && res.info && res.info.data){
res.info.data.forEach(function(data) {
missionData.push(data);
})
}
}
function renderMissionTemplate(date, status, index) {
let imgSrc;
switch(status){
case 'fail':
imgSrc = 'images/fail_btn.png';
break;
case 'non-start':
imgSrc = 'images/non_start_btn.png';
break;
case 'non-finish':
imgSrc = 'images/goto_btn.png';
break;
case 'CanSign':
imgSrc = 'images/goto_btn.png';
break;
case 'Done':
imgSrc = 'images/done_btn.png';
break;
case 'notQualified':
imgSrc = 'images/notQualified_btn.png';
break;
default:
imgSrc = 'images/goto_login.png';
break;
}
return `
<div class="missionItem">
${date === "bonus" ? `
<p class="col-3 bonus-date" >補簽機會</p>
<p class="col-5 bonus-body" >完整觀看指定影片即完成 1 次補簽</p>
<div class="col-3 bonus-btn" ${status == 'Done' ? 'style="pointer-events: none;"' : "id='bonusBtn' data-toggle='modal' data-target='#myModal_video' onclick='embedVideo()'"}>
<img class='missionBtn' src="{{ asset('${imgSrc}') }}">
</div>
` : `
<p class="col-3 mission-date">第 ${index} 周</p>
<p class="col-5 mission-body">${date}</p>
<button class="col-3 mission-btn" ${monthlyRemind == false ? 'onclick="monthlyReMind()"':'onclick="gotoPage()"'} ${status !== 'non-finish' ? 'style="pointer-events: none;"' : ''}>
<img class='missionBtn' src="{{ asset('${imgSrc}') }}">
</button>
`}
</div>
`;
}
</script>