@@ -138,15 +138,15 @@ export class ApplicationService {
138138 if ( query . statusCheck === "alert" ) {
139139 queryBuilder . andWhere (
140140 new Brackets ( qb => {
141- qb . where ( "dataTargets.id IS NULL" ) . orWhere ( "latestMessage.sentTime < NOW() - INTERVAL '24 HOURS'" ) ;
141+ qb . andWhere ( "dataTargets.id IS NULL" ) . orWhere ( "latestMessage.sentTime < NOW() - INTERVAL '24 HOURS'" ) ;
142142 } )
143143 ) ;
144144 }
145145
146146 if ( query . statusCheck === "stable" ) {
147147 queryBuilder . andWhere (
148148 new Brackets ( qb => {
149- qb . where ( "dataTargets.id IS NOT NULL" ) . orWhere ( "latestMessage.sentTime > NOW() - INTERVAL '24 HOURS'" ) ;
149+ qb . where ( "dataTargets.id IS NOT NULL" ) . andWhere ( "latestMessage.sentTime > NOW() - INTERVAL '24 HOURS'" ) ;
150150 } )
151151 ) ;
152152 }
@@ -186,31 +186,16 @@ export class ApplicationService {
186186 queryBuilder . andWhere ( "app.owner = :owner" , { owner : query . owner } ) ;
187187 }
188188
189- if ( query . statusCheck === "alert" ) {
190- queryBuilder . andWhere (
191- new Brackets ( qb => {
192- qb . where ( "dataTargets.id IS NULL" ) . orWhere ( "latestMessage.sentTime < NOW() - INTERVAL '24 HOURS'" ) ;
193- } )
194- ) ;
195- }
196-
197- if ( query . statusCheck === "stable" ) {
198- queryBuilder . andWhere (
199- new Brackets ( qb => {
200- qb . where ( "dataTargets.id IS NOT NULL" ) . orWhere ( "latestMessage.sentTime > NOW() - INTERVAL '24 HOURS'" ) ;
201- } )
202- ) ;
203- }
204-
205189 queryBuilder . orderBy ( sorting ) ;
206190 queryBuilder . take ( query . limit ) . skip ( query . offset ) ;
207191
208192 try {
209193 const [ result , total ] = await queryBuilder . getManyAndCount ( ) ;
210- const mappedResult = result . map ( app => {
194+ let mappedResult = result . map ( app => {
211195 const latestMessage = app . iotDevices
212196 ?. map ( device => device . latestReceivedMessage )
213- . find ( msg => msg !== undefined ) ;
197+ . sort ( ( a , b ) => ( a ?. sentTime > b ?. sentTime ? 1 : - 1 ) )
198+ . find ( msg => msg != undefined ) ;
214199 const hasDataTargets = app . dataTargets && app . dataTargets . length > 0 ;
215200 const isLatestMessageOld = latestMessage
216201 ? new Date ( latestMessage . sentTime ) < new Date ( Date . now ( ) - 24 * 60 * 60 * 1000 )
@@ -228,6 +213,12 @@ export class ApplicationService {
228213 } ;
229214 } ) ;
230215
216+ if ( query . statusCheck === "stable" ) {
217+ mappedResult = mappedResult . filter ( a => a . statusCheck === "stable" ) ;
218+ } else if ( query . statusCheck === "alert" ) {
219+ mappedResult = mappedResult . filter ( a => a . statusCheck === "alert" ) ;
220+ }
221+
231222 this . externalSortResult ( query , mappedResult ) ;
232223
233224 return {
@@ -558,7 +549,11 @@ export class ApplicationService {
558549 ) as LoRaWANDeviceWithChirpstackDataDto [ ] ;
559550
560551 for ( const device of loraDevices ) {
561- await this . chirpstackDeviceService . enrichLoRaWANDevice ( device ) ;
552+ try {
553+ await this . chirpstackDeviceService . enrichLoRaWANDevice ( device ) ;
554+ } catch {
555+ // ignored
556+ }
562557 }
563558
564559 return {
0 commit comments