11var response = require ( __dirname + '/../response' )
22 , settings = require ( __dirname + '/../../config/settings' )
33 , checks = require ( __dirname + '/../middleware/checks' )
4- , moment = require ( 'moment ')
4+ , header_parser = require ( __dirname + '/../middleware/header-parser ')
55 , Fleet = require ( __dirname + '/../models/fleet' )
66 , Event = require ( __dirname + '/../models/event' )
77 , Member = require ( __dirname + '/../models/member' )
8+ , Hostile = require ( __dirname + '/../models/hostile' )
9+ , Scan = require ( __dirname + '/../models/scan' )
10+
11+ var moment = require ( 'moment' )
12+ , Q = require ( 'q' )
13+ , _ = require ( 'lodash' )
814
915exports . join = function ( req , res , next ) {
1016 response . success ( res , [ ] ) ;
@@ -14,8 +20,56 @@ exports.leave = function(req, res, next){
1420 response . success ( res , [ ] ) ;
1521} ;
1622
17- exports . status = function ( req , res , next ) {
18- response . success ( res , [ ] ) ;
23+ exports . status = function ( req , res , next ) {
24+ if ( ! req . session . fleetKey || ! req . session . memberKey ) {
25+ var self = Member . prepare ( 'none' , header_parser ( req ) )
26+ var event = Event . prepare ( 'statusSelf' , 'none' , self )
27+
28+ return response . success ( res , [ event ] ) ;
29+ }
30+
31+ Member . findOneQ ( { key : req . session . memberKey } )
32+ . then ( function ( member ) {
33+ // TODO
34+ // SessionService.checkIfValid ?
35+ var events = [ ] ;
36+ events . push ( Event . prepare ( 'statusSelf' , member . fleetKey , member ) ) ;
37+
38+ var tasks = [
39+ Fleet . findOne ( { key : member . fleetKey } ) . execQ ( ) . then ( function ( fleet ) {
40+ return Event . prepare ( 'statusFleet' , member . fleetKey , fleet ) ;
41+ } ) ,
42+ Event . find ( { fleetKey : member . fleetKey } ) . execQ ( ) . then ( function ( events ) {
43+ return Event . prepare ( 'statusEvents' , member . fleetKey , events ) ;
44+ } ) ,
45+ Member . find ( { fleetKey : member . fleetKey } ) . execQ ( ) . then ( function ( members ) {
46+ return Event . prepare ( 'statusMembers' , member . fleetKey , members ) ;
47+ } ) ,
48+ Hostile . find ( { fleetKey : member . fleetKey } ) . execQ ( ) . then ( function ( hostiles ) {
49+ return Event . prepare ( 'statusHostiles' , member . fleetKey , hostiles ) ;
50+ } ) ,
51+ Scan . find ( { fleetKey : member . fleetKey } ) . execQ ( ) . then ( function ( scans ) {
52+ return Event . prepare ( 'statusScans' , member . fleetKey , scans ) ;
53+ } )
54+ ] ;
55+
56+ Q . all ( tasks )
57+ . then ( function ( results ) {
58+ _ . each ( results , function ( result ) { events . push ( result ) ; } ) ;
59+ return response . success ( res , events ) ;
60+ } )
61+ . catch ( function ( error ) {
62+ console . log ( error )
63+ return response . error ( res , 'state' , 'Error fetching fleet tasks.' ) ;
64+ } )
65+ . done ( ) ;
66+ } )
67+ . catch ( function ( error ) {
68+ console . log ( error )
69+ return response . error ( res , 'state' , 'Error fetching fleet status.' ) ;
70+ } )
71+ . done ( ) ;
72+
1973} ;
2074
2175exports . poll = function ( req , res , next ) {
0 commit comments