99using Altinn . AccessMgmt . Core . Audit ;
1010using Altinn . AccessMgmt . Core . Services ;
1111using Altinn . AccessMgmt . Core . Services . Contracts ;
12- using Altinn . AccessMgmt . Core . Utils ;
1312using Altinn . AccessMgmt . PersistenceEF . Constants ;
1413using Altinn . AccessMgmt . PersistenceEF . Queries . Connection ;
1514using Altinn . AccessMgmt . PersistenceEF . Utils ;
@@ -33,7 +32,6 @@ public class RequestController(
3332 IConnectionService connectionService ,
3433 ConnectionQuery connectionQuery ,
3534 IResourceService resourceService ,
36- IPackageService packageService ,
3735 IEntityService entityService
3836 ) : ControllerBase
3937{
@@ -56,19 +54,20 @@ IEntityService entityService
5654 [ ProducesResponseType ( StatusCodes . Status401Unauthorized ) ]
5755 [ ProducesResponseType ( StatusCodes . Status403Forbidden ) ]
5856 public async Task < IActionResult > GetSentRequests (
59- [ FromQuery ] [ Required ] Guid party ,
57+ [ FromQuery ] [ Required ] Guid party ,
6058 [ FromQuery ] Guid ? to ,
6159 [ FromQuery ] RequestStatus [ ] ? status ,
6260 [ FromQuery ] string type ,
63- [ FromQuery , FromHeader ] PagingInput paging ,
61+ [ FromQuery , FromHeader ] PagingInput paging ,
6462 CancellationToken ct = default
6563 )
6664 {
6765 var statusFilter = status == null || ! status . Any ( )
6866 ? new List < RequestStatus > ( ) { RequestStatus . Draft , RequestStatus . Pending , RequestStatus . Approved , RequestStatus . Rejected , RequestStatus . Withdrawn }
6967 : status . ToList ( ) ;
7068
71- var result = await requestService . GetRequests ( fromId : to , toId : party , status : statusFilter , type , ct ) ;
69+ var result = await requestService . GetSentRequests ( party , to , statusFilter , type , ct ) ;
70+
7271 return result . IsSuccess ? Ok ( PaginatedResult . Create ( result . Value , null ) ) : result . Problem . ToActionResult ( ) ;
7372 }
7473
@@ -85,15 +84,15 @@ public async Task<IActionResult> GetReceivedRequests(
8584 [ FromQuery ] Guid ? from ,
8685 [ FromQuery ] RequestStatus [ ] ? status ,
8786 [ FromQuery ] string type ,
88- [ FromQuery , FromHeader ] PagingInput paging ,
87+ [ FromQuery , FromHeader ] PagingInput paging ,
8988 CancellationToken ct = default
9089 )
9190 {
9291 var statusFilter = status == null || ! status . Any ( )
9392 ? new List < RequestStatus > ( ) { RequestStatus . Draft , RequestStatus . Pending , RequestStatus . Approved , RequestStatus . Rejected , RequestStatus . Withdrawn }
9493 : status . ToList ( ) ;
9594
96- var result = await requestService . GetRequests ( fromId : party , toId : from , status : statusFilter , type , ct ) ;
95+ var result = await requestService . GetReceivedRequests ( party , from , statusFilter , type , ct ) ;
9796 return result . IsSuccess ? Ok ( PaginatedResult . Create ( result . Value , null ) ) : result . Problem . ToActionResult ( ) ;
9897 }
9998
@@ -106,9 +105,9 @@ public async Task<IActionResult> GetReceivedRequests(
106105 [ ProducesResponseType ( StatusCodes . Status401Unauthorized ) ]
107106 [ ProducesResponseType ( StatusCodes . Status403Forbidden ) ]
108107 public async Task < IActionResult > GetRequest (
109- [ FromQuery ] [ Required ] Guid party ,
108+ [ FromQuery ] [ Required ] Guid party ,
110109 [ FromQuery ] [ Required ] Guid id ,
111- [ FromQuery , FromHeader ] PagingInput paging ,
110+ [ FromQuery , FromHeader ] PagingInput paging ,
112111 CancellationToken ct = default
113112 )
114113 {
@@ -133,48 +132,46 @@ public async Task<IActionResult> GetRequest(
133132 [ ProducesResponseType ( StatusCodes . Status401Unauthorized ) ]
134133 [ ProducesResponseType ( StatusCodes . Status403Forbidden ) ]
135134 public async Task < IActionResult > CreateResourceRequest (
136- [ FromQuery ] [ Required ] Guid party ,
137- [ FromQuery ] [ Required ] Guid to ,
138- [ FromQuery ] [ Required ] string resource ,
139- [ FromBody ] string [ ] ? rightKeys ,
135+ [ FromQuery ] [ Required ] Guid party ,
136+ [ FromQuery ] [ Required ] Guid to ,
137+ [ FromQuery ] [ Required ] string resource ,
138+ [ FromBody ] string [ ] ? rightKeys ,
140139 CancellationToken ct = default
141140 )
142141 {
143142 ValidationErrorBuilder errorBuilder = default ;
144143
145- /*
146- Person1 vil be FirmaA om en rettighet, derfor er to = FirmaA i queryparam.
147- Men da blir Assignment.From = FirmaA og Assignment.To = Party (Person1)
148- GLHF
149- */
150-
151144 var authUserUuid = AuthenticationHelper . GetPartyUuid ( HttpContext ) ;
152- var connections = await connectionQuery . HasConnection ( to , authUserUuid ) ;
153- if ( ! connections . Result )
145+ var ( hasConnections , _ ) = await connectionQuery . HasConnection ( to , authUserUuid ) ;
146+ if ( ! hasConnections )
154147 {
155148 errorBuilder . Add ( ValidationErrors . RequestConnectionNotFound , "$QUERY/to" , [ new ( "to" , $ "No connection between party:'{ party } ' and to:'{ to } '") ] ) ;
156- errorBuilder . TryBuild ( out var problem ) ;
157- return problem . ToActionResult ( ) ;
158149 }
159150
160151 var resourceObj = await resourceService . GetResource ( resource , ct ) ;
161152 if ( resourceObj is not { } )
162153 {
163154 errorBuilder . Add ( ValidationErrors . ResourceNotExists , "$QUERY/resource" , [ new ( "resource" , $ "Unable to get resource '{ resource } '") ] ) ;
164- errorBuilder . TryBuild ( out var problem ) ;
155+ }
156+
157+ if ( errorBuilder . TryBuild ( out var problem ) )
158+ {
165159 return problem . ToActionResult ( ) ;
166160 }
167161
168- var result = await requestService . CreateRequest (
169- new CreateRequestDto ( )
170- {
171- From = to , // YES, this is correct
172- To = party ,
173- Role = RoleConstants . Rightholder . Id ,
174- Status = RequestStatus . Pending ,
175- Resource = resourceObj . Id ,
176- } ,
177- ct
162+ /*
163+ Per (authUserUuid) ber om tilgang for Kari (party) til App (resource) hos Org (to).
164+ ==
165+ Per (by) ber om tilgang for Kari (for) til App (resource) hos Org (at).
166+ */
167+ var result = await requestService . CreateResourceRequest (
168+ toId : to ,
169+ fromId : party ,
170+ byId : authUserUuid ,
171+ roleId : RoleConstants . Rightholder . Id ,
172+ resourceId : resourceObj . Id ,
173+ status : RequestStatus . Pending ,
174+ ct : ct
178175 ) ;
179176
180177 if ( result . IsProblem )
@@ -197,52 +194,44 @@ public async Task<IActionResult> CreateResourceRequest(
197194 [ ProducesResponseType ( StatusCodes . Status401Unauthorized ) ]
198195 [ ProducesResponseType ( StatusCodes . Status403Forbidden ) ]
199196 public async Task < IActionResult > CreatePackageRequest (
200- [ FromQuery ] [ Required ] Guid party ,
201- [ FromQuery ] [ Required ] Guid to ,
202- [ FromQuery ] Guid ? packageId ,
203- [ FromQuery ] string ? package ,
197+ [ FromQuery ] [ Required ] Guid party ,
198+ [ FromQuery ] [ Required ] Guid to ,
199+ [ FromQuery ] [ Required ] string package ,
204200 CancellationToken ct = default
205201 )
206202 {
207203 ValidationErrorBuilder errorBuilder = default ;
208204
209- /*
210- Person1 vil be FirmaA om en rettighet, derfor er to = FirmaA i queryparam.
211- Men da blir Assignment.From = FirmaA og Assignment.To = Party (Person1)
212- GLHF
213- */
214-
215205 var authUserUuid = AuthenticationHelper . GetPartyUuid ( HttpContext ) ;
216- var connections = await connectionQuery . HasConnection ( to , authUserUuid ) ;
206+ var ( hasConnections , _) = await connectionQuery . HasConnection ( to , authUserUuid ) ;
207+ if ( ! hasConnections )
208+ {
209+ errorBuilder . Add ( ValidationErrors . RequestConnectionNotFound , "$QUERY/to" , [ new ( "to" , $ "No connection exists between the authenticated user and party '{ to } '.") ] ) ;
210+ }
217211
218- if ( ! connections . Result )
212+ if ( ! PackageConstants . TryGetByAll ( package , out var packageObj ) )
219213 {
220- errorBuilder . Add ( ValidationErrors . RequestConnectionNotFound , "$QUERY/to" , [ new ( "to" , $ "No connection between party:'{ party } ' and to:'{ to } '") ] ) ;
221- errorBuilder . TryBuild ( out var problem ) ;
222- return problem . ToActionResult ( ) ;
214+ errorBuilder . Add ( ValidationErrors . PackageNotExists , "$QUERY/package" , [ new ( "package" , $ "No package was found with value '{ package } '.") ] ) ;
223215 }
224216
225- var packageObj = packageId . HasValue ? await packageService . GetPackage ( packageId . Value , ct ) : await packageService . GetPackageByUrnValue ( package , ct ) ;
226- if ( packageObj is not { } )
217+ if ( errorBuilder . TryBuild ( out var problem ) )
227218 {
228- var paramName = packageId . HasValue ? "packageId" : "package" ;
229- var paramValue = packageId . HasValue ? packageId . ToString ( ) : package ;
230- errorBuilder . Add ( ValidationErrors . PackageNotExists , $ "$QUERY/{ paramName } ", [ new ( paramName , $ "Unable to get package '{ paramValue } '") ] ) ;
231- errorBuilder . TryBuild ( out var problem ) ;
232219 return problem . ToActionResult ( ) ;
233220 }
234221
235- var result = await requestService . CreateRequest (
236- new CreateRequestDto ( )
237- {
238- From = to , // YES, this is correct
239- To = party ,
240- Role = RoleConstants . Rightholder . Id ,
241- Status = RequestStatus . Pending ,
242- Package = packageObj ? . Id ,
243- } ,
244- ct
245- ) ;
222+ /*
223+ A Request from Kari by NAV to BakerAS for AppResource01.
224+ Will create an Assignment from BakerAS to Kari with an AssignmentResource for AppResource01.
225+ */
226+ var result = await requestService . CreatePackageRequest (
227+ toId : to ,
228+ fromId : party ,
229+ byId : authUserUuid ,
230+ roleId : RoleConstants . Rightholder . Id ,
231+ packageId : packageObj . Id ,
232+ status : RequestStatus . Pending ,
233+ ct : ct
234+ ) ;
246235
247236 if ( result . IsProblem )
248237 {
@@ -262,8 +251,8 @@ public async Task<IActionResult> CreatePackageRequest(
262251 [ ProducesResponseType < RequestDto > ( StatusCodes . Status200OK ) ]
263252 [ ProducesResponseType ( StatusCodes . Status404NotFound ) ]
264253 public async Task < IActionResult > ConfirmRequest (
265- [ FromQuery ] [ Required ] Guid party ,
266- [ FromQuery ] [ Required ] Guid id ,
254+ [ FromQuery ] [ Required ] Guid party ,
255+ [ FromQuery ] [ Required ] Guid id ,
267256 CancellationToken ct = default
268257 )
269258 {
@@ -280,8 +269,8 @@ public async Task<IActionResult> ConfirmRequest(
280269 [ ProducesResponseType < RequestDto > ( StatusCodes . Status200OK ) ]
281270 [ ProducesResponseType ( StatusCodes . Status404NotFound ) ]
282271 public async Task < IActionResult > WithdrawRequest (
283- [ FromQuery ] [ Required ] Guid party ,
284- [ FromQuery ] [ Required ] Guid id ,
272+ [ FromQuery ] [ Required ] Guid party ,
273+ [ FromQuery ] [ Required ] Guid id ,
285274 CancellationToken ct = default
286275 )
287276 {
@@ -301,8 +290,8 @@ public async Task<IActionResult> WithdrawRequest(
301290 [ ProducesResponseType ( StatusCodes . Status403Forbidden ) ]
302291 [ ProducesResponseType ( StatusCodes . Status404NotFound ) ]
303292 public async Task < IActionResult > RejectRequest (
304- [ FromQuery ] [ Required ] Guid party ,
305- [ FromQuery ] [ Required ] Guid id ,
293+ [ FromQuery ] [ Required ] Guid party ,
294+ [ FromQuery ] [ Required ] Guid id ,
306295 CancellationToken ct = default
307296 )
308297 {
@@ -322,9 +311,9 @@ public async Task<IActionResult> RejectRequest(
322311 [ ProducesResponseType ( StatusCodes . Status403Forbidden ) ]
323312 [ ProducesResponseType ( StatusCodes . Status404NotFound ) ]
324313 public async Task < IActionResult > ApproveRequest (
325- [ FromQuery ] [ Required ] Guid party ,
326- [ FromQuery ] [ Required ] Guid id ,
327- [ FromBody ] string [ ] ? rightKeys ,
314+ [ FromQuery ] [ Required ] Guid party ,
315+ [ FromQuery ] [ Required ] Guid id ,
316+ [ FromBody ] string [ ] ? rightKeys ,
328317 CancellationToken ct = default
329318 )
330319 {
@@ -358,7 +347,10 @@ private async Task<IActionResult> ApprovePackageRequest(Guid partyUuid, RequestD
358347 if ( assignment is null )
359348 {
360349 errorBuilder . Add ( ValidationErrors . RequestFailedToApprove , "Approve" , [ new ( "Approve" , $ "Unable to get or create rightholder assignment") ] ) ;
361- errorBuilder . TryBuild ( out var problem ) ;
350+ }
351+
352+ if ( errorBuilder . TryBuild ( out var problem ) )
353+ {
362354 return problem . ToActionResult ( ) ;
363355 }
364356
0 commit comments