sportsbet-mobile
Version:
Sportsbet mobile
121 lines (92 loc) • 3.13 kB
text/typescript
///<reference path=".#ts/client.d.ts" />
interface Templates {
lotteryInfo: Template;
}
var winnersDep: {dep: Tracker.Dependency} = {
dep: new Tracker.Dependency()
};
Template.lotteryInfo.helpers({
showEventDescription: function(){
counterApi.dep.depend();
return !(<Lotteries.LotteryInstance>this).drawn && moment((<Lotteries.LotteryInstance>this).drawDate).diff(moment(), 'seconds') <= 0;
},
prevInstances: function(){
if(Session.get('lotteryInstance')) return;
return Lotteries.LotteryInstance.db.find({handle: Session.get('lotteryHandle'), active: false}, {limit: 6});
},
lottery: function(){
var lotteryInstance;
if(Session.get('lotteryInstance')){
lotteryInstance = Lotteries.LotteryInstance.db.findOne({_id: Session.get('lotteryInstance')});
}else {
lotteryInstance = Lotteries.LotteryInstance.db.findOne({handle: Session.get('lotteryHandle')});
}
return lotteryInstance;
},
showResult: function(){
return (<Lotteries.LotteryInstance>this).isLotto() && Session.get('lotteryInstance');
},
prizes: function(){
if((<Lotteries.LotteryInstance>this).prizePoolType == Lotteries.PrizePoolType.FIXED) {
var pp = (<Lotteries.LotteryInstance>this).prizePool;
_.each((<Lotteries.LotteryInstance>this).prize, function (p:Lotteries.Prize) {
if (p.type == Lotteries.PrizeType.MONETARY) {
var prize = pp * p.percentage / 100;
p.amount = <any>prize.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
}
})
}
return (<Lotteries.LotteryInstance>this).prize;
},
winners: function(){
winnersDep.dep.depend();
return (<any>Template.instance()).winners
},
ticketsOwned: function(){
return Lotteries.Ticket.db.find({lotteryInstance: (<Lotteries.LotteryInstance>this)._id}).count();
},
totalTickets: function(){
var self = <Lotteries.LotteryInstance>this;
Meteor.call('lotteries-admin/Tickets/total', {lotteryInstance: self._id}, function (err, res) {
Session.set('totalTickets'+self._id, res);
});
return Session.get('totalTickets'+self._id);
}
});
Template.lotteryInfo.events({
});
Template.lotteryInfo.created = function () {
var selector = <any>{
handle: Session.get('lotteryHandle')
};
if(Session.get('lotteryInstance')){
selector._id = Session.get('lotteryInstance');
}
var options = {sort: {drawDate: -1}, limit: 7};
this.subscribe('Lotteries.LotteryInstance', selector, options);
this.autorun(() => {
var lotteryInstanceId;
if(Session.get('lotteryInstance')) lotteryInstanceId = Session.get('lotteryInstance');
else lotteryInstanceId = Lotteries.LotteryInstance.db.findOne() ? Lotteries.LotteryInstance.db.findOne()._id : false;
if (lotteryInstanceId) {
var tSelector = {
lotteryInstance: lotteryInstanceId
};
var tOptions = {
sort: {'acquired': -1},
limit: 10
};
this.subscribe('Lotteries.Ticket', tSelector, tOptions);
var self = this;
Meteor.call('Lotteries/winners', lotteryInstanceId, function (err, res) {
if (err) {
Logger.error("lotteryInfo.ts: 50", err);
}
else {
winnersDep.dep.changed();
self.winners = res;
}
});
}
})
};