1- import { RoomCodeRouteContext } from '@/lib/types'
2- import clientPromise from '@/utils/newdb'
1+ import clientPromise from "@/utils/newdb" ;
32
4- export async function GET ( _request : Request , context : RoomCodeRouteContext ) {
5- try {
6- const client = await clientPromise
7- const db = client . db ( 'get_interval' )
8- let result : any [ ] = [ ]
93
10- const results = await db
11- . collection ( 'result' )
12- . find ( { roomcode : context . params . roomcode } )
13- . limit ( 1 )
14- . toArray ( )
4+ type RoomCodeRouteContext = {
5+ params : {
6+ roomcode : string ,
7+ }
8+ }
159
16- if ( results . length === 0 ) {
17- const rooms = await db
18- . collection ( 'rooms' )
19- . find ( { roomcode : context . params . roomcode } )
20- . limit ( 15 )
21- . toArray ( )
10+ export async function GET ( request :Request , context : RoomCodeRouteContext ) {
11+ try {
12+ const client = await clientPromise ;
13+ const db = client . db ( "get_interval" ) ;
14+ let result : any [ ] = [ ] ;
2215
23- // console.log(rooms)
16+ const rooms = await db . collection ( "rooms" ) . find ( { roomcode :context . params . roomcode } ) . limit ( 15 ) . toArray ( ) ;
17+
18+ //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+ }
27+ }
2428
25- //to get all the intervals in a single array
26- let intervals : any [ ] = [ [ ] ]
27- let counter = 0
28- for ( let i = 0 ; i < rooms . length ; i ++ ) {
29- var room = rooms [ i ] . timeRanges
30- for ( let j = 0 ; j < room . length ; j ++ ) {
31- intervals [ counter ] = room [ j ]
32- counter ++
33- }
34- }
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+ }
3539
36- //to sort the array
37- for ( let i = 0 ; i < intervals . length - 1 ; i ++ ) {
38- for ( let j = 0 ; j < intervals . length - 1 - i ; j ++ ) {
39- if ( intervals [ j ] [ 0 ] > intervals [ j + 1 ] [ 0 ] ) {
40- let t = intervals [ j ]
41- intervals [ j ] = intervals [ j + 1 ]
42- intervals [ j + 1 ] = t
43- }
44- }
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 ] ) ;
4546 }
46-
47- //to merge the intervals
48- let finalintervals : any [ ]
49- finalintervals = [ [ intervals [ 0 ] [ 0 ] , intervals [ 0 ] [ 1 ] ] ]
50- for ( let i = 0 ; i < intervals . length ; i ++ ) {
51- if (
52- finalintervals [ finalintervals . length - 1 ] [ 1 ] >=
53- intervals [ i ] [ 0 ]
54- ) {
55- finalintervals [ finalintervals . length - 1 ] [ 1 ] = Math . max (
56- finalintervals [ finalintervals . length - 1 ] [ 1 ] ,
57- intervals [ i ] [ 1 ]
58- )
59- } else {
60- finalintervals . push ( intervals [ i ] )
61- }
47+ else {
48+ finalintervals . push ( intervals [ i ] ) ;
6249 }
50+ }
6351
64- // console.log(finalintervals);
65-
66- //to get the free intervals
67- result = [ [ 0 , finalintervals [ 0 ] [ 0 ] ] ]
68- for ( let i = 1 ; i < finalintervals . length ; i ++ ) {
69- result [ i ] = [
70- finalintervals [ i - 1 ] [ 1 ] + 1 ,
71- finalintervals [ i ] [ 0 ] - 1 ,
72- ]
73- }
74- result [ result . length ] = [
75- finalintervals [ finalintervals . length - 1 ] [ 1 ] + 1 ,
76- 1439 ,
77- ]
78- // console.log(result);
79-
80- await db . collection ( 'result' ) . insertOne ( {
81- roomcode : context . params . roomcode ,
82- result : result ,
83- } )
84- console . log ( 'Saved Successfully!' )
85- } else {
86- result = await results [ 0 ] . result
87- // console.log(result)
52+ //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 ++ ;
61+ }
62+ if ( finalintervals [ finalintervals . length - 1 ] [ 1 ] < 1439 ) {
63+ result [ result . length ] = [ finalintervals [ finalintervals . length - 1 ] [ 1 ] + 1 , 1439 ] ;
8864 }
8965
90- return new Response ( JSON . stringify ( result ) , { status : 200 } )
66+ return new Response ( JSON . stringify ( result ) , { status :200 } ) ;
9167 } catch ( error ) {
92- return new Response ( 'Failed to fetch the data, Try again later!!' , {
93- status : 500 ,
94- } )
68+ return new Response ( "Failed to fetch the data, Try again later!!" , { status :500 } ) ;
9569 }
96- }
70+ }
0 commit comments