Endpoints #3

Merged
khwezi merged 2 commits from endpoints into main 2026-08-30 14:54:59 +02:00
77 changed files with 118 additions and 118 deletions
@@ -1,11 +1,11 @@
using PostFundManagement.Application.Communications;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Communications;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models;
using static PostFundManagement.Domain.Extensions.General;
using static PostFundManagement.Application.Extensions.General;
namespace PostFundManagement.Api.Endpoints.Communications;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Communications;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Communications;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Communications.Events;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Communications.Events;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Evidence;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Evidence;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Evidence;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Evidence;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Evidence;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Evidence;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Evidence;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Evidence;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Evidence;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Evidence;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
@@ -1,9 +1,9 @@
using PostFundManagement.Application.Evidence;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Models;
using PostFundManagement.Domain.Extensions;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Evidence;
namespace PostFundManagement.Api.Endpoints.Evidence;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Evidence;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Evidence;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Evidence;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Evidence;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Execution;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Execution;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Execution;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Execution;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Execution;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Execution;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,10 +1,10 @@
using PostFundManagement.Application.Execution;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Models;
using PostFundManagement.Domain.Extensions;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Execution;
namespace PostFundManagement.Api.Endpoints.Execution;
@@ -1,9 +1,9 @@
using PostFundManagement.Application.Execution;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Models;
using PostFundManagement.Domain.Extensions;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Execution;
namespace PostFundManagement.Api.Endpoints.Execution;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Execution;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Execution;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Governance;
using PostFundManagement.Application.Services.Governance;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Governance;
using PostFundManagement.Application.Services.Governance;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,4 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Governance;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -11,7 +12,7 @@ public class GetInstrumentsEndpoint : IEndpoint
{
public void Map(IEndpointRouteBuilder builder)
{
builder.MapGet("api/governance/instruments", async (Application.Governance.GovernanceService service,
builder.MapGet("api/governance/instruments", async (GovernanceService service,
CancellationToken cancellationToken = default) =>
{
var result = await service.GetInstrumentsAsync(cancellationToken);
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Governance;
using PostFundManagement.Application.Services.Governance;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Governance;
using PostFundManagement.Application.Services.Governance;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Governance;
using PostFundManagement.Application.Services.Governance;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Governance;
using PostFundManagement.Application.Services.Governance;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Grants;
using PostFundManagement.Application.Services.Grants;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Grants;
using PostFundManagement.Application.Services.Grants;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Grants;
using PostFundManagement.Application.Services.Grants;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Grants;
using PostFundManagement.Application.Services.Grants;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Grants;
using PostFundManagement.Application.Services.Grants;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,10 +1,10 @@
using PostFundManagement.Application.Grants;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Models;
using PostFundManagement.Domain.Extensions;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Grants;
namespace PostFundManagement.Api.Endpoints.Grants;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Grants;
using PostFundManagement.Application.Services.Grants;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,10 +1,10 @@
using PostFundManagement.Application.Grants;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Models;
using PostFundManagement.Domain.Extensions;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Services.Grants;
namespace PostFundManagement.Api.Endpoints.Grants;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Grants;
using PostFundManagement.Application.Services.Grants;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Grants;
using PostFundManagement.Application.Services.Grants;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Projects;
using PostFundManagement.Application.Services.Projects;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Projects;
using PostFundManagement.Application.Services.Projects;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Projects;
using PostFundManagement.Application.Services.Projects;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Projects;
using PostFundManagement.Application.Services.Projects;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Projects;
using PostFundManagement.Application.Services.Projects;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Projects;
using PostFundManagement.Application.Services.Projects;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Users;
using PostFundManagement.Application.Services.Users;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Users;
using PostFundManagement.Application.Services.Users;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Api;
using PostFundManagement.Domain.Extensions;
-1
View File
@@ -1,4 +1,3 @@
using PostFundManagement.Api.Extensions;
using PostFundManagement.Application.Api.Filters;
using PostFundManagement.Application.Extensions;
using PostFundManagement.Domain.Extensions;
@@ -1,5 +1,5 @@
using PostFundManagement.Application.Shared;
using static PostFundManagement.Domain.Extensions.General;
using PostFundManagement.Application.Services.Shared;
using static PostFundManagement.Application.Extensions.General;
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Application.Api.Filters;
@@ -1,9 +0,0 @@
using PostFundManagement.Application.Abstractions;
using PostFundManagement.Domain.Abstractions;
namespace PostFundManagement.Application.Communications.Events;
public class SyncUserEvent : EventBase, IEvent
{
public string Name { get; set; } = nameof(SyncUserEvent);
}
@@ -1,4 +1,4 @@
using PostFundManagement.Application.Shared;
using PostFundManagement.Application.Services.Shared;
using PostFundManagement.Domain.Configuration.Email;
namespace PostFundManagement.Application.Extensions;
@@ -16,4 +16,33 @@ public static class General
return services;
}
public static Guid GetUserId(this HttpContext context) => (Guid)context.Items[Domain.Extensions.Constants.UserIdItemKey]!;
public static string GetUserEmail(this HttpContext context) => (string)context.Items[Domain.Extensions.Constants.EmaiItemKey]!;
public static (bool Decoded, Guid userId) GetUserId(this ClaimsPrincipal principal)
{
var sidClaim = principal.FindFirst("sid")?.Value ?? principal.FindFirst(ClaimTypes.Sid)?.Value;
var decoded = Guid.TryParse(sidClaim, out var userId);
return (decoded, userId);
}
public static (bool Decoded, Guid email) GetUserEmail(this ClaimsPrincipal principal)
{
var emailClaim = principal.FindFirst("email")?.Value ?? principal.FindFirst(ClaimTypes.Email)?.Value;
var decoded = Guid.TryParse(emailClaim, out var email);
return (decoded, email);
}
public static Microsoft.AspNetCore.Mvc.ProblemDetails ToProblems(this IReadOnlyList<IError> errors) => new()
{
Detail = string.Join(',', errors.Select(e => e.Message)),
Status = StatusCodes.Status400BadRequest,
Title = errors[0]?.Message,
};
}
@@ -1,4 +1,10 @@
namespace PostFundManagement.Domain.Extensions;
using OpenTelemetry.Exporter;
using OpenTelemetry.Logs;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using OpenTelemetry.Metrics;
namespace PostFundManagement.Application.Extensions;
public static class Otel
{
@@ -1,7 +1,7 @@
using PostFundManagement.Infrastructure.Database;
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Api.Extensions;
namespace PostFundManagement.Application.Extensions;
public static class Postgres
{
@@ -1,4 +1,4 @@
using PostFundManagement.Application.Shared;
using PostFundManagement.Application.Services.Shared;
using PostFundManagement.Domain.Abstractions;
using static PostFundManagement.Domain.Extensions.Constants;
@@ -1,10 +1,9 @@
using PostFundManagement.Application.Extensions;
using PostFundManagement.Application.Shared;
using PostFundManagement.Application.Services.Shared;
using PostFundManagement.Domain.Api.Configuration;
using PostFundManagement.Domain.Sdk;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Api.Extensions;
namespace PostFundManagement.Application.Extensions;
public static class Security
{
@@ -4,7 +4,7 @@ using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Communications;
namespace PostFundManagement.Application.Services.Communications;
public sealed class CommunicationsService(IDbContextFactory<ApplicationDbContext> contextFactory) : IService
{
@@ -1,4 +1,12 @@
namespace PostFundManagement.Application.Communications.Events;
using PostFundManagement.Application.Abstractions;
using PostFundManagement.Domain.Abstractions;
namespace PostFundManagement.Application.Services.Communications.Events;
public class SyncUserEvent : EventBase, IEvent
{
public string Name { get; set; } = nameof(SyncUserEvent);
}
public class SyncUserEventHandler(ILogger<SyncUserEvent> logger) : INotificationHandler<SyncUserEvent>
{
@@ -1,5 +1,5 @@
using PostFundManagement.Domain;
namespace PostFundManagement.Application.Communications;
namespace PostFundManagement.Application.Services.Communications;
public record InviteRequest(long OrganisationId, long InvitedOrganisationId, long AwardId, long ContractId, Guid Recipient, string Message, NotificationPlatform Platform);
@@ -5,7 +5,7 @@ using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Evidence;
namespace PostFundManagement.Application.Services.Evidence;
public sealed class EvidenceService(IDbContextFactory<ApplicationDbContext> contextFactory, HashService hashService,
[FromKeyedServices(Constants.EvidenceBucketName)] IS3Service s3Service) : IService
@@ -1,6 +1,6 @@
using PostFundManagement.Domain;
namespace PostFundManagement.Application.Evidence;
namespace PostFundManagement.Application.Services.Evidence;
public record RecordActualRequest(decimal ActualAmount);
@@ -5,7 +5,7 @@ using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Execution;
namespace PostFundManagement.Application.Services.Execution;
public sealed class ExecutionService(IDbContextFactory<ApplicationDbContext> contextFactory, HashService hashService) : IService
{
@@ -1,6 +1,6 @@
using PostFundManagement.Domain;
namespace PostFundManagement.Application.Execution;
namespace PostFundManagement.Application.Services.Execution;
public record CreateDisbursementRequest(long ProjectId, long? MilestoneId, decimal Amount);
@@ -5,7 +5,7 @@ using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Governance;
namespace PostFundManagement.Application.Services.Governance;
public sealed class GovernanceService(IDbContextFactory<ApplicationDbContext> contextFactory, HashService hashService) : IService
{
@@ -1,6 +1,6 @@
using PostFundManagement.Domain;
namespace PostFundManagement.Application.Governance;
namespace PostFundManagement.Application.Services.Governance;
public record CreateOrganisationRequest(string Name, string RegistrationNo, string Email, OrganisationType Type);
@@ -5,7 +5,7 @@ using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Grants;
namespace PostFundManagement.Application.Services.Grants;
public sealed class GrantsService(IDbContextFactory<ApplicationDbContext> contextFactory, HashService hashService) : IService
{
@@ -1,4 +1,4 @@
namespace PostFundManagement.Application.Grants;
namespace PostFundManagement.Application.Services.Grants;
public record CreateAwardRequest(long OrganisationId, long ProgrammeId, decimal Amount);
@@ -5,7 +5,7 @@ using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Projects;
namespace PostFundManagement.Application.Services.Projects;
public sealed class ProjectService(IDbContextFactory<ApplicationDbContext> contextFactory, HashService hashService) : IService
{
@@ -1,6 +1,6 @@
using PostFundManagement.Domain;
namespace PostFundManagement.Application.Projects;
namespace PostFundManagement.Application.Services.Projects;
public record UpdateProjectStatusRequest(long ProjectId, ApprovalStatus Status);
@@ -1,4 +1,4 @@
namespace PostFundManagement.Application.Shared;
namespace PostFundManagement.Application.Services.Shared;
public sealed class BrowserLocalStorageService(ProtectedLocalStorage storage)
{
@@ -2,7 +2,7 @@ using PostFundManagement.Application.Abstractions;
using PostFundManagement.Domain.Abstractions;
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Application.Shared;
namespace PostFundManagement.Application.Services.Shared;
public sealed class ContractS3Service(IConfiguration configuration, [FromKeyedServices(ContractBucketName)] IAmazonS3 amazonS3) :
S3ServiceBase(amazonS3), IS3Service
@@ -3,7 +3,7 @@ using PostFundManagement.Domain.Configuration.Email;
using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models.Email;
namespace PostFundManagement.Application.Shared;
namespace PostFundManagement.Application.Services.Shared;
public sealed class EmailService(IOptions<SmtpSettings> options) : IDisposable
{
@@ -2,7 +2,7 @@ using PostFundManagement.Application.Abstractions;
using PostFundManagement.Domain.Abstractions;
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Application.Shared;
namespace PostFundManagement.Application.Services.Shared;
public sealed class EvidenceS3Service(IConfiguration configuration, [FromKeyedServices(EvidenceBucketName)] IAmazonS3 amazonS3) :
S3ServiceBase(amazonS3), IS3Service
@@ -2,7 +2,7 @@ using PostFundManagement.Application.Abstractions;
using PostFundManagement.Domain.Abstractions;
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Application.Shared;
namespace PostFundManagement.Application.Services.Shared;
public sealed class GeneralS3Service(IConfiguration configuration, [FromKeyedServices(GeneralBucketName)] IAmazonS3 amazonS3) :
S3ServiceBase(amazonS3), IS3Service
@@ -2,7 +2,7 @@
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Shared;
namespace PostFundManagement.Application.Services.Shared;
public sealed class IdentityService(IDbContextFactory<ApplicationDbContext> contextFactory) : IService
{
@@ -3,7 +3,7 @@ using PostFundManagement.Domain.Api.Configuration;
using PostFundManagement.Domain.Api.Models;
using PostFundManagement.Domain.Sdk;
namespace PostFundManagement.Application.Shared;
namespace PostFundManagement.Application.Services.Shared;
public sealed class TokenService(ISecurityConnectApi connectApi, IOptions<SecurityClientSettings> clientOptions)
{
@@ -1,5 +1,5 @@
using PostFundManagement.Domain;
namespace PostFundManagement.Application.Users;
namespace PostFundManagement.Application.Services.Users;
public record UserFilterRequest(ActivityStatus? Status = null, string? Email = null, string? SortBy = null, bool SortDescending = false);
@@ -4,7 +4,7 @@ using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Models;
using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Users;
namespace PostFundManagement.Application.Services.Users;
public sealed class UserService(IDbContextFactory<ApplicationDbContext> contextFactory) : IService
{
@@ -1,4 +1,4 @@
namespace PostFundManagement.Infrastructure.Configuration;
namespace PostFundManagement.Domain.Api.Configuration;
public sealed class MachineIdentity
{
@@ -1,33 +0,0 @@
namespace PostFundManagement.Domain.Extensions;
public static class General
{
public static Guid GetUserId(this HttpContext context) => (Guid)context.Items[Constants.UserIdItemKey]!;
public static string GetUserEmail(this HttpContext context) => (string)context.Items[Constants.EmaiItemKey]!;
public static (bool Decoded, Guid userId) GetUserId(this ClaimsPrincipal principal)
{
var sidClaim = principal.FindFirst("sid")?.Value ?? principal.FindFirst(ClaimTypes.Sid)?.Value;
var decoded = Guid.TryParse(sidClaim, out var userId);
return (decoded, userId);
}
public static (bool Decoded, Guid email) GetUserEmail(this ClaimsPrincipal principal)
{
var emailClaim = principal.FindFirst("email")?.Value ?? principal.FindFirst(ClaimTypes.Email)?.Value;
var decoded = Guid.TryParse(emailClaim, out var email);
return (decoded, email);
}
public static Microsoft.AspNetCore.Mvc.ProblemDetails ToProblems(this IReadOnlyList<IError> errors) => new()
{
Detail = string.Join(',', errors.Select(e => e.Message)),
Status = StatusCodes.Status400BadRequest,
Title = errors[0]?.Message,
};
}