-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcompetitors_controller.coffee
More file actions
77 lines (66 loc) · 3.01 KB
/
competitors_controller.coffee
File metadata and controls
77 lines (66 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
BaseController = require './base_controller'
Competitor = require '../../models/competitor'
CompetitorHelpers = require '../../helpers/competitor_helpers'
User = require '../../models/user'
Vote = require '../../models/vote'
class CompetitorsController extends BaseController
setParam: (request, response, next, id) ->
Competitor.findById(id).populate("user").populate("team").exec (err, competitor) ->
return next(err) if err
request.competitor = competitor
next()
redirect = (request) ->
if request.user.is_admin then '/users' else '/competitor/dash'
index: (request, response) ->
Competitor.find(event: request.currentEvent.id).populate("user","fname lname username picture twitter company").populate("team").exec (err, competitors) ->
throw err if err
if request.params.format is 'json'
response.contentType 'application/json'
response.send JSON.stringify(competitors)
else
response.render 'competitors/index',
title: 'Competitors'
competitors: competitors
show: (request, response) ->
Vote.find(competitor: request.competitor.id).populate("team").populate("round").sort("round.number","ascending").exec (err, votes) ->
#console.log votes
response.render 'competitors/dash',
title: 'Competitor Dashboard'
competitor: request.competitor
currentRound: request.currentRound
votes: votes
dash: (request, response) ->
#find if this user
Competitor.findOne(event: request.currentEvent.id, user: request.user.id).populate("user").populate("team").exec (err, competitor) =>
if competitor
request.competitor = competitor
return @show(request, response)
response.render 'competitors/dash',
title: 'Competitor Dashboard'
event: request.currentEvent
create: (request, response) ->
uid = if request.user.is_admin and request.body.theUser then request.body.theUser.id else request.user.id
User.findById(uid).exec (err, user) =>
#console.log err if err
user.joinAsCompetitor request.currentEvent, (err) =>
return @error(request, response, "cannot join event.", redirect(request)) if err
request.flash 'notice', 'Joined the event.'
response.redirect redirect(request)
edit: (request, response) ->
response.render 'competitors/edit',
title: 'Edit Competitor'
theCompetitor: request.competitor
update: (request, response) ->
competitor = request.competitor
if request.body.competitor.team isnt '' then competitor.addToTeam request.body.competitor.team
@updateIfChanged ["team"], competitor, request.body.competitor
competitor.save (error, doc) ->
throw error if error
request.flash 'notice', 'Updated successfully'
response.redirect '/competitors'
delete: (request, response) ->
competitor = request.competitor
competitor.remove (error) ->
request.flash 'notice', 'competitor Deleted'
response.redirect '/competitors'
module.exports = CompetitorsController