UNPKG

sportsbet-mobile

Version:
121 lines (92 loc) 3.13 kB
///<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; } }); } }) };