| 
									
										
										
										
											2015-08-11 13:22:16 -07:00
										 |  |  | import { defaultProfileImage } from '../../common/utils/constantStrings.json'; | 
					
						
							| 
									
										
										
										
											2018-05-15 06:12:05 +01:00
										 |  |  | import { getRandomQuote } from '../../common/app/utils/quotes'; | 
					
						
							|  |  |  | import { cachedMap } from '../utils/map'; | 
					
						
							|  |  |  | // import NewsFeed from '../rss';
 | 
					
						
							| 
									
										
										
										
											2015-08-11 13:22:16 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-15 06:12:05 +01:00
										 |  |  | // const news = new NewsFeed();
 | 
					
						
							| 
									
										
										
										
											2014-01-13 04:34:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-15 06:12:05 +01:00
										 |  |  | module.exports = function(app, done) { | 
					
						
							|  |  |  |   const { About } = app.models; | 
					
						
							|  |  |  |   const router = app.loopback.Router(); | 
					
						
							|  |  |  |   let challengeCount = 0; | 
					
						
							|  |  |  |   cachedMap(app.models) | 
					
						
							|  |  |  |     .do(({ entities: { challenge } }) => { | 
					
						
							|  |  |  |       challengeCount = Object.keys(challenge).length; | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     .subscribe( | 
					
						
							|  |  |  |       () => {}, | 
					
						
							|  |  |  |       err => {throw new Error(err);}, | 
					
						
							|  |  |  |       () => { | 
					
						
							|  |  |  |         router.get('/', addDefaultImage, index); | 
					
						
							|  |  |  |         app.use(router); | 
					
						
							|  |  |  |         done(); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2015-06-03 16:31:42 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-11 13:22:16 -07:00
										 |  |  |   function addDefaultImage(req, res, next) { | 
					
						
							|  |  |  |     if (!req.user || req.user.picture) { | 
					
						
							|  |  |  |       return next(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-06-17 12:35:10 -07:00
										 |  |  |     return req.user.update$({ picture: defaultProfileImage }) | 
					
						
							| 
									
										
										
										
											2018-05-15 06:12:05 +01:00
										 |  |  |     .subscribe( | 
					
						
							|  |  |  |       () => next(), | 
					
						
							|  |  |  |       next | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2015-08-11 13:22:16 -07:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2015-05-21 11:07:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-15 06:12:05 +01:00
										 |  |  |   function index(req, res) { | 
					
						
							|  |  |  |     const { user } = req; | 
					
						
							|  |  |  |     const homePage = user ? 'userHome' : 'noUserHome'; | 
					
						
							|  |  |  |     const { quote, author} = getRandomQuote(); | 
					
						
							|  |  |  |     const title = user ? | 
					
						
							|  |  |  |       `Welcome back ${user.name ? user.name : 'Camper'}` : | 
					
						
							|  |  |  |       'Learn to Code and Help Nonprofits'; | 
					
						
							|  |  |  |     const completedChallengeCount = user && user.completedChallengeCount || 0; | 
					
						
							|  |  |  |     const completedProjectCount = user && user.completedProjectCount || 0; | 
					
						
							|  |  |  |     const completedCertCount = user && user.completedCertCount || 0; | 
					
						
							|  |  |  |     Promise.all([ | 
					
						
							|  |  |  |       // news.getFeed(),
 | 
					
						
							|  |  |  |       About.getActiveUsersForRendering() | 
					
						
							|  |  |  |     ]) | 
					
						
							|  |  |  |     .then(([ | 
					
						
							|  |  |  |       // feed,
 | 
					
						
							|  |  |  |       activeUsers | 
					
						
							|  |  |  |     ]) => { | 
					
						
							|  |  |  |       return res.render( | 
					
						
							|  |  |  |         homePage, { | 
					
						
							|  |  |  |           activeUsers, | 
					
						
							|  |  |  |           author, | 
					
						
							|  |  |  |           challengeCount, | 
					
						
							|  |  |  |           completedChallengeCount, | 
					
						
							|  |  |  |           completedProjectCount, | 
					
						
							|  |  |  |           completedCertCount, | 
					
						
							|  |  |  |           // feed,
 | 
					
						
							|  |  |  |           quote, | 
					
						
							|  |  |  |           title | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2015-06-03 16:19:23 -07:00
										 |  |  | }; |