@@ -247,13 +247,8 @@ func (a *PatronRequestApiHandler) DeletePatronRequestsId(w http.ResponseWriter,
247247 addBadRequestError (ctx , w , err )
248248 return
249249 }
250- pr , err := a .getPatronRequestById (ctx , id , params .Side , symbol )
251- if err != nil {
252- addInternalError (ctx , w , err )
253- return
254- }
250+ pr := a .getPatronRequestById (w , ctx , id , params .Side , symbol )
255251 if pr == nil {
256- addNotFoundError (w )
257252 return
258253 }
259254 err = a .prRepo .WithTxFunc (ctx , func (repo pr_db.PrRepo ) error {
@@ -266,18 +261,21 @@ func (a *PatronRequestApiHandler) DeletePatronRequestsId(w http.ResponseWriter,
266261 w .WriteHeader (http .StatusNoContent )
267262}
268263
269- func (a * PatronRequestApiHandler ) getPatronRequestById (ctx common.ExtendedContext , id string , side * string , symbol string ) ( * pr_db.PatronRequest , error ) {
264+ func (a * PatronRequestApiHandler ) getPatronRequestById (w http. ResponseWriter , ctx common.ExtendedContext , id string , side * string , symbol string ) * pr_db.PatronRequest {
270265 pr , err := a .prRepo .GetPatronRequestById (ctx , id )
271266 if err != nil {
272267 if errors .Is (err , pgx .ErrNoRows ) {
273- return nil , nil
268+ addNotFoundError (w )
269+ return nil
274270 }
275- return nil , err
271+ addInternalError (ctx , w , err )
272+ return nil
276273 }
277274 if isOwner (pr , symbol ) && (! isSideParamValid (side ) || string (pr .Side ) == * side ) {
278- return & pr , nil
275+ return & pr
279276 }
280- return nil , nil
277+ addNotFoundError (w )
278+ return nil
281279}
282280
283281func isSideParamValid (side * string ) bool {
@@ -301,13 +299,8 @@ func (a *PatronRequestApiHandler) GetPatronRequestsId(w http.ResponseWriter, r *
301299 addBadRequestError (ctx , w , err )
302300 return
303301 }
304- pr , err := a .getPatronRequestById (ctx , id , params .Side , symbol )
305- if err != nil {
306- addInternalError (ctx , w , err )
307- return
308- }
302+ pr := a .getPatronRequestById (w , ctx , id , params .Side , symbol )
309303 if pr == nil {
310- addNotFoundError (w )
311304 return
312305 }
313306 var illRequest iso18626.Request
@@ -331,13 +324,8 @@ func (a *PatronRequestApiHandler) GetPatronRequestsIdActions(w http.ResponseWrit
331324 addBadRequestError (ctx , w , err )
332325 return
333326 }
334- pr , err := a .getPatronRequestById (ctx , id , params .Side , symbol )
335- if err != nil {
336- addInternalError (ctx , w , err )
337- return
338- }
327+ pr := a .getPatronRequestById (w , ctx , id , params .Side , symbol )
339328 if pr == nil {
340- addNotFoundError (w )
341329 return
342330 }
343331 actionMapping , err := a .actionMappingService .GetActionMapping (* pr )
@@ -361,13 +349,8 @@ func (a *PatronRequestApiHandler) PostPatronRequestsIdAction(w http.ResponseWrit
361349 addBadRequestError (ctx , w , err )
362350 return
363351 }
364- pr , err := a .getPatronRequestById (ctx , id , params .Side , symbol )
365- if err != nil {
366- addInternalError (ctx , w , err )
367- return
368- }
352+ pr := a .getPatronRequestById (w , ctx , id , params .Side , symbol )
369353 if pr == nil {
370- addNotFoundError (w )
371354 return
372355 }
373356 var action proapi.ExecuteAction
@@ -422,6 +405,7 @@ func (a *PatronRequestApiHandler) PostPatronRequestsIdAction(w http.ResponseWrit
422405func (a * PatronRequestApiHandler ) GetPatronRequestsIdEvents (w http.ResponseWriter , r * http.Request , id string , params proapi.GetPatronRequestsIdEventsParams ) {
423406 symbol , err := api .GetSymbolForRequest (r , a .tenant , params .XOkapiTenant , params .Symbol )
424407 logParams := map [string ]string {"method" : "GetPatronRequestsIdEvents" , "id" : id , "symbol" : symbol }
408+
425409 if params .Side != nil {
426410 logParams ["side" ] = * params .Side
427411 }
@@ -431,24 +415,49 @@ func (a *PatronRequestApiHandler) GetPatronRequestsIdEvents(w http.ResponseWrite
431415 addBadRequestError (ctx , w , err )
432416 return
433417 }
434- pr , err := a .getPatronRequestById (ctx , id , params .Side , symbol )
418+ pr := a .getPatronRequestById (w , ctx , id , params .Side , symbol )
419+ if pr == nil {
420+ return
421+ }
422+ eventsList , err := a .eventRepo .GetPatronRequestEvents (ctx , pr .ID )
435423 if err != nil {
436424 addInternalError (ctx , w , err )
437425 return
438426 }
427+
428+ var responseItems []oapi.Event
429+ for _ , event := range eventsList {
430+ responseItems = append (responseItems , api .ToApiEvent (event , "" , & event .PatronRequestID ))
431+ }
432+ writeJsonResponse (w , responseItems )
433+ }
434+
435+ func (a * PatronRequestApiHandler ) GetPatronRequestsIdItems (w http.ResponseWriter , r * http.Request , id string , params proapi.GetPatronRequestsIdItemsParams ) {
436+ symbol , err := api .GetSymbolForRequest (r , a .tenant , params .XOkapiTenant , params .Symbol )
437+ logParams := map [string ]string {"method" : "GetPatronRequestsIdItems" , "id" : id , "symbol" : symbol }
438+
439+ if params .Side != nil {
440+ logParams ["side" ] = * params .Side
441+ }
442+ ctx := common .CreateExtCtxWithArgs (context .Background (), & common.LoggerArgs {Other : logParams })
443+
444+ if err != nil {
445+ addBadRequestError (ctx , w , err )
446+ return
447+ }
448+ pr := a .getPatronRequestById (w , ctx , id , params .Side , symbol )
439449 if pr == nil {
440- addNotFoundError (w )
441450 return
442451 }
443- events , err := a .eventRepo . GetPatronRequestEvents (ctx , pr .ID )
452+ itemsList , err := a .prRepo . GetItemsByPrId (ctx , pr .ID )
444453 if err != nil {
445454 addInternalError (ctx , w , err )
446455 return
447456 }
448457
449- var responseItems []oapi. Event
450- for _ , event := range events {
451- responseItems = append (responseItems , api . ToApiEvent ( event , "" , & event . PatronRequestID ))
458+ var responseItems []proapi. PrItem
459+ for _ , item := range itemsList {
460+ responseItems = append (responseItems , toApiItem ( item ))
452461 }
453462 writeJsonResponse (w , responseItems )
454463}
@@ -568,3 +577,14 @@ func getDbText(value *string) pgtype.Text {
568577 String : * value ,
569578 }
570579}
580+
581+ func toApiItem (item pr_db.Item ) proapi.PrItem {
582+ return proapi.PrItem {
583+ Id : item .ID ,
584+ Barcode : item .Barcode ,
585+ CallNumber : toString (item .CallNumber ),
586+ ItemId : toString (item .ItemID ),
587+ Title : toString (item .Title ),
588+ CreatedAt : item .CreatedAt .Time ,
589+ }
590+ }
0 commit comments