1- import clientPromise from " @/utils/newdb" ;
1+ import clientPromise from ' @/utils/newdb'
22
3-
4- type RoomCodeRouteContext = {
5- params : {
6- roomcode : string ,
7- }
3+ type RoomCodeRouteContext = {
4+ params : {
5+ roomcode : string
6+ }
87}
98
10- export async function GET ( request :Request , context : RoomCodeRouteContext ) {
9+ export async function GET ( request : Request , context : RoomCodeRouteContext ) {
1110 try {
12- const client = await clientPromise ;
13- const db = client . db ( "get_interval" ) ;
14- let result : any [ ] = [ ] ;
11+ const client = await clientPromise
12+ const db = client . db ( 'get_interval' )
13+ let result : any [ ] = [ ]
14+
15+ const rooms = await db
16+ . collection ( 'rooms' )
17+ . find ( { roomcode : context . params . roomcode } )
18+ . limit ( 15 )
19+ . toArray ( )
1520
16- const rooms = await db . collection ( "rooms" ) . find ( { roomcode :context . params . roomcode } ) . limit ( 15 ) . toArray ( ) ;
17-
1821 //to get all the intervals in a single array
19- let intervals :any [ ] = [ [ ] ] ;
20- let counter = 0 ;
21- for ( let i = 0 ; i < rooms . length ; i ++ ) {
22- var room = rooms [ i ] . timeRanges ;
23- for ( let j = 0 ; j < room . length ; j ++ ) {
24- intervals [ counter ] = room [ j ] ;
25- counter ++ ;
26- }
22+ let intervals : any [ ] = [ [ ] ]
23+ let counter = 0
24+ for ( let i = 0 ; i < rooms . length ; i ++ ) {
25+ var room = rooms [ i ] . timeRanges
26+ for ( let j = 0 ; j < room . length ; j ++ ) {
27+ intervals [ counter ] = room [ j ]
28+ counter ++
29+ }
2730 }
2831
29- //to sort the array
30- for ( let i = 0 ; i < intervals . length - 1 ; i ++ ) {
31- for ( let j = 0 ; j < intervals . length - 1 - i ; j ++ ) {
32- if ( intervals [ j ] [ 0 ] > intervals [ j + 1 ] [ 0 ] ) {
33- let t = intervals [ j ] ;
34- intervals [ j ] = intervals [ j + 1 ] ;
35- intervals [ j + 1 ] = t ;
36- }
37- }
38- }
39-
40- //to merge the intervals
41- let finalintervals : any [ ] ;
42- finalintervals = [ [ intervals [ 0 ] [ 0 ] , intervals [ 0 ] [ 1 ] ] ]
43- for ( let i = 0 ; i < intervals . length ; i ++ ) {
44- if ( finalintervals [ finalintervals . length - 1 ] [ 1 ] >= intervals [ i ] [ 0 ] ) {
45- finalintervals [ finalintervals . length - 1 ] [ 1 ] = Math . max ( finalintervals [ finalintervals . length - 1 ] [ 1 ] , intervals [ i ] [ 1 ] ) ;
32+ //to sort the array
33+ for ( let i = 0 ; i < intervals . length - 1 ; i ++ ) {
34+ for ( let j = 0 ; j < intervals . length - 1 - i ; j ++ ) {
35+ if ( intervals [ j ] [ 0 ] > intervals [ j + 1 ] [ 0 ] ) {
36+ let t = intervals [ j ]
37+ intervals [ j ] = intervals [ j + 1 ]
38+ intervals [ j + 1 ] = t
39+ }
4640 }
47- else {
48- finalintervals . push ( intervals [ i ] ) ;
41+ }
42+
43+ //to merge the intervals
44+ let finalintervals : any [ ]
45+ finalintervals = [ [ intervals [ 0 ] [ 0 ] , intervals [ 0 ] [ 1 ] ] ]
46+ for ( let i = 0 ; i < intervals . length ; i ++ ) {
47+ if (
48+ finalintervals [ finalintervals . length - 1 ] [ 1 ] >= intervals [ i ] [ 0 ]
49+ ) {
50+ finalintervals [ finalintervals . length - 1 ] [ 1 ] = Math . max (
51+ finalintervals [ finalintervals . length - 1 ] [ 1 ] ,
52+ intervals [ i ] [ 1 ]
53+ )
54+ } else {
55+ finalintervals . push ( intervals [ i ] )
4956 }
50- }
57+ }
5158
5259 //to get the free intervals
53- let j = 0 ;
54- if ( finalintervals [ 0 ] [ 0 ] !== 0 ) {
55- result [ 0 ] = [ 0 , finalintervals [ 0 ] [ 0 ] - 1 ] ;
56- ++ j ;
57- }
58- for ( let i = 1 ; i < finalintervals . length ; i ++ ) {
59- result [ j ] = [ finalintervals [ i - 1 ] [ 1 ] + 1 , finalintervals [ i ] [ 0 ] - 1 ] ;
60- j ++ ;
60+ let j = 0
61+ if ( finalintervals [ 0 ] [ 0 ] !== 0 ) {
62+ result [ 0 ] = [ 0 , finalintervals [ 0 ] [ 0 ] - 1 ]
63+ ++ j
6164 }
62- if ( finalintervals [ finalintervals . length - 1 ] [ 1 ] < 1439 ) {
63- result [ result . length ] = [ finalintervals [ finalintervals . length - 1 ] [ 1 ] + 1 , 1439 ] ;
65+ for ( let i = 1 ; i < finalintervals . length ; i ++ ) {
66+ result [ j ] = [ finalintervals [ i - 1 ] [ 1 ] + 1 , finalintervals [ i ] [ 0 ] - 1 ]
67+ j ++
68+ }
69+ if ( finalintervals [ finalintervals . length - 1 ] [ 1 ] < 1439 ) {
70+ result [ result . length ] = [
71+ finalintervals [ finalintervals . length - 1 ] [ 1 ] + 1 ,
72+ 1439 ,
73+ ]
6474 }
6575
66- return new Response ( JSON . stringify ( result ) , { status :200 } ) ;
76+ return new Response ( JSON . stringify ( result ) , { status : 200 } )
6777 } catch ( error ) {
68- return new Response ( "Failed to fetch the data, Try again later!!" , { status :500 } ) ;
78+ return new Response ( 'Failed to fetch the data, Try again later!!' , {
79+ status : 500 ,
80+ } )
6981 }
70- }
82+ }
0 commit comments