@@ -108,6 +108,14 @@ class BookingService {
108108 const toId = pcId . includes ( '/' ) ? pcId : `Computers/${ pcId } ` ;
109109
110110 return withTransaction ( { write : [ 'Bookings' ] , read : [ 'Computers' ] } , async ( transaction ) => {
111+ // Проверяем, не забронировал ли пользователь уже ПК на этот урок
112+ const userExisting = await BookingDao . findActiveByUser ( userId , interval . start , transaction ) ;
113+ if ( userExisting . length > 0 ) {
114+ const e = new Error ( "У вас уже есть бронь на этот урок" ) ;
115+ e . status = 409 ;
116+ throw e ;
117+ }
118+
111119 const existing = await BookingDao . findActiveByPC ( toId , interval . start , transaction ) ;
112120 if ( existing . length > 0 ) {
113121 const e = new Error ( "Это место уже забронировано" ) ;
@@ -187,6 +195,14 @@ class BookingService {
187195 const fromId = `Users/${ userId } ` ;
188196
189197 return withTransaction ( { read : [ 'Computers' ] , write : [ 'Bookings' ] } , async ( transaction ) => {
198+ // Проверяем, не забронировал ли пользователь уже место на этот урок
199+ const userExisting = await BookingDao . findActiveByUser ( userId , interval . start , transaction ) ;
200+ if ( userExisting . length > 0 ) {
201+ const e = new Error ( "У вас уже есть бронь на этот урок" ) ;
202+ e . status = 409 ;
203+ throw e ;
204+ }
205+
190206 const freePC = await BookingDao . findFreePC ( { startTime : interval . start , tagList } , transaction ) ;
191207 if ( ! freePC ) {
192208 const e = new Error ( "Нет свободных ПК по вашему запросу" ) ;
0 commit comments