Skip to content

Commit

Permalink
Added new endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
larfeq committed Feb 19, 2025
1 parent 6cd9ae9 commit 6090394
Showing 1 changed file with 71 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,20 @@
using System.Threading.Tasks;
using Fusion.Resources.Domain;
using Fusion.Resources.Domain.Queries;
using System.Collections.Generic;


namespace Fusion.Resources.Api.Controllers
{
[ApiVersion("1.0-preview")]
[ApiVersion("1.0")]
[ApiVersion("2.0")]
[ApiVersion("3.0")]
[Authorize]
[ApiController]
public class AnalyticsController : ResourceControllerBase
{

[Obsolete("Endpoint deprecated")]
[HttpGet("/analytics/requests/internal")]
public async Task<ActionResult<ApiCollection<ApiResourceAllocationRequestForAnalytics>>> GetAllRequests([FromQuery] ODataQueryParams query)
{
Expand All @@ -45,6 +47,40 @@ public async Task<ActionResult<ApiCollection<ApiResourceAllocationRequestForAnal
return collection;
}

[MapToApiVersion("2.0")]
[HttpGet("/analytics/requests/internal")]
public async Task<ActionResult<IAsyncEnumerable<ApiResourceAllocationRequestForAnalytics>>> GetAllRequestsV2([FromQuery] ODataQueryParams query)
{
#region Authorization

var authResult = await Request.RequireAuthorizationAsync(r =>
{
r.AlwaysAccessWhen().FullControl().FullControlInternal();
r.AnyOf(or =>
{
or.GlobalRoleAccess("Fusion.Analytics.Requests");
});
});

if (authResult.Unauthorized)
return authResult.CreateForbiddenResponse();

#endregion

var requestQuery = await DispatchAsync(new GetResourceAllocationRequestsForAnalytics(query));

async IAsyncEnumerable<ApiResourceAllocationRequestForAnalytics> StreamResults()
{
foreach (var request in requestQuery)
{
yield return ApiResourceAllocationRequestForAnalytics.ForAnalytics(request);
}
}

return Ok(StreamResults());
}

[Obsolete("Endpoint deprecated")]
[MapToApiVersion("1.0")]
[HttpGet("/analytics/absence/internal")]
public async Task<ActionResult<ApiCollection<ApiPersonAbsenceForAnalytics>>> GetPersonsAbsence([FromQuery] ODataQueryParams query)
Expand Down Expand Up @@ -72,6 +108,7 @@ public async Task<ActionResult<ApiCollection<ApiPersonAbsenceForAnalytics>>> Get
return collection;
}

[Obsolete("Endpoint deprecated")]
[MapToApiVersion("2.0")]
[HttpGet("/analytics/absence/internal")]
public async Task<ActionResult<ApiCollection<ApiPersonAbsenceForAnalyticsV2>>> GetPersonsAbsenceV2([FromQuery] ODataQueryParams query)
Expand Down Expand Up @@ -99,6 +136,39 @@ public async Task<ActionResult<ApiCollection<ApiPersonAbsenceForAnalyticsV2>>> G
return collection;
}

[MapToApiVersion("3.0")]
[HttpGet("/analytics/absence/internal")]
public async Task<ActionResult<IAsyncEnumerable<ApiPersonAbsenceForAnalyticsV2>>> GetPersonsAbsenceV3([FromQuery] ODataQueryParams query)
{
#region Authorization

var authResult = await Request.RequireAuthorizationAsync(r =>
{
r.AlwaysAccessWhen().FullControl().FullControlInternal();
r.AnyOf(or =>
{
or.GlobalRoleAccess("Fusion.Analytics.Absence");
});
});

if (authResult.Unauthorized)
return authResult.CreateForbiddenResponse();

#endregion

var allAbsenceQuery = await DispatchAsync(new GetPersonsAbsenceForAnalytics(query));

async IAsyncEnumerable<ApiPersonAbsenceForAnalyticsV2> StreamResults()
{
foreach (var absence in allAbsenceQuery)
{
yield return ApiPersonAbsenceForAnalyticsV2.CreateWithoutConfidentialTaskInfoForAnalytics(absence);
}
}

return Ok(StreamResults());
}

#region Analytics Api Models
public class ApiPersonAbsenceForAnalytics
{
Expand Down

0 comments on commit 6090394

Please sign in to comment.