@@ -46,6 +46,26 @@ module.exports = function (api) {
4646 } ;
4747 } ) ) ;
4848
49+ api . get ( "/visit/:id" , verifyJWT , wagner . invoke ( function ( Visit ) {
50+ return function ( req , res ) {
51+ var query = { "_id" : req . params . id } ;
52+ Visit . find ( query , function ( error , visit ) {
53+ if ( error ) {
54+ return res .
55+ status ( status . INTERNAL_SERVER_ERROR ) .
56+ json ( { error : error . toString ( ) } ) ;
57+ }
58+ if ( visit . length <= 0 ) {
59+ return res .
60+ status ( status . NOT_FOUND ) .
61+ json ( { error : "Not Found" } ) ;
62+ }
63+
64+ res . json ( { visit : visit } ) ;
65+ } ) ;
66+ } ;
67+ } ) ) ;
68+
4969 api . post ( "/visit" , verifyJWT , wagner . invoke ( function ( Visit ) {
5070 return function ( req , res ) {
5171 Visit . create ( req . body , function ( error , visit ) {
@@ -120,5 +140,36 @@ module.exports = function (api) {
120140 } ;
121141 } ) ) ;
122142
143+ api . get ( "/visit/group/area" , verifyJWT , wagner . invoke ( function ( Visit ) {
144+ return function ( req , res ) {
145+ var query = { 'client.area._id' : req . params . id } ;
146+ Visit . aggregate ( [
147+ { $sort : { visit_date : - 1 } } ,
148+ { $group : {
149+ _id : "$client.name" ,
150+ visit : { $first : "$$ROOT" }
151+ } } ,
152+ { $group : {
153+ _id : "$visit.client.area._id" ,
154+ visits : { $push : "$$ROOT" }
155+ } }
156+ ] ,
157+ function ( error , visits ) {
158+ if ( error ) {
159+ return res .
160+ status ( status . INTERNAL_SERVER_ERROR ) .
161+ json ( { error : error . toString ( ) } ) ;
162+ }
163+ if ( visits . length <= 0 ) {
164+ return res .
165+ status ( status . NOT_FOUND ) .
166+ json ( { error : "Not Found" } ) ;
167+ }
168+
169+ return res . json ( { visits : visits } ) ;
170+ } ) ;
171+ } ;
172+ } ) ) ;
173+
123174 return api ;
124175} ;
0 commit comments