@@ -351,11 +351,17 @@ func (a *PatronRequestApiHandler) PostPatronRequests(w http.ResponseWriter, r *h
351351 api .AddInternalError (ctx , w , err )
352352 return
353353 }
354- actionMapping , err := a .actionMappingService .GetActionMapping (illRequest )
354+ stateModelName , err := a .actionMappingService .GetStateModelNameForRequest (illRequest )
355355 if err != nil {
356356 api .AddInternalError (ctx , w , err )
357357 return
358358 }
359+ stateModel , err := a .actionMappingService .GetStateModel (stateModelName )
360+ if err != nil {
361+ api .AddInternalError (ctx , w , err )
362+ return
363+ }
364+ actionMapping := prservice .NewActionMapping (stateModel )
359365 borrowerInitialState , ok := actionMapping .GetInitialState (prservice .SideBorrowing )
360366 if ! ok {
361367 api .AddInternalError (ctx , w , fmt .Errorf ("no initial state defined for borrower side" ))
@@ -385,7 +391,7 @@ func (a *PatronRequestApiHandler) PostPatronRequests(w http.ResponseWriter, r *h
385391 }
386392 }
387393
388- dbreq := buildDbPatronRequest (& newPr , params .XOkapiTenant , creationTime , requesterReqId , illRequest , borrowerInitialState )
394+ dbreq := buildDbPatronRequest (& newPr , params .XOkapiTenant , creationTime , requesterReqId , illRequest , borrowerInitialState , stateModelName )
389395 pr , err := a .prRepo .CreatePatronRequest (ctx , pr_db .CreatePatronRequestParams (dbreq ))
390396 if err != nil {
391397 var pgErr * pgconn.PgError
@@ -604,9 +610,15 @@ func (a *PatronRequestApiHandler) PutPatronRequestsId(w http.ResponseWriter, r *
604610 api .AddInternalError (ctx , w , err )
605611 return
606612 }
613+ stateModelName , err := a .actionMappingService .GetStateModelNameForRequest (illRequest )
614+ if err != nil {
615+ api .AddInternalError (ctx , w , err )
616+ return
617+ }
607618
608619 existingPr .RequesterReqID = getDbText (& requesterReqId )
609620 existingPr .IllRequest = illRequest
621+ existingPr .StateModel = stateModelName
610622 existingPr .Patron = getDbText (newPr .Patron )
611623 if newPr .InternalNote != nil {
612624 var note pgtype.Text
@@ -1351,6 +1363,7 @@ func toApiPatronRequest(r *http.Request, request pr_db.PatronRequestSearchView)
13511363 Id : request .ID ,
13521364 CreatedAt : request .CreatedAt .Time ,
13531365 State : string (request .State ),
1366+ StateModel : request .StateModel ,
13541367 Side : string (request .Side ),
13551368 Patron : toString (request .Patron ),
13561369 RequesterSymbol : toString (request .RequesterSymbol ),
@@ -1501,6 +1514,7 @@ func buildDbPatronRequest(
15011514 requesterReqId string ,
15021515 illRequest iso18626.Request ,
15031516 initialState pr_db.PatronRequestState ,
1517+ stateModel string ,
15041518) pr_db.PatronRequest {
15051519 return pr_db.PatronRequest {
15061520 ID : requesterReqId ,
@@ -1518,6 +1532,7 @@ func buildDbPatronRequest(
15181532 Items : []pr_db.PrItem {},
15191533 TerminalState : false ,
15201534 NeedsAttention : true ,
1535+ StateModel : stateModel ,
15211536 // LastAction, LastActionOutcome and LastActionResult are not set on creation
15221537 // they will be updated when the first action is executed.
15231538 }
0 commit comments