Added tooling
This commit is contained in:
@@ -5,6 +5,7 @@ using PostFundManagement.Domain.Errors;
|
||||
using PostFundManagement.Domain.Extensions;
|
||||
using PostFundManagement.Domain.Models;
|
||||
using PostFundManagement.Infrastructure.Database;
|
||||
using PostFundManagement.Application.Extensions;
|
||||
|
||||
namespace PostFundManagement.Application.Services.Governance;
|
||||
|
||||
@@ -131,14 +132,16 @@ public sealed class GovernanceService(IDbContextFactory<ApplicationDbContext> co
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
|
||||
if (await context.Organisations.AnyAsync(o => o.RegistrationNo == request.RegistrationNo, cancellationToken))
|
||||
var registrationNo = request.RegistrationNo.Clean();
|
||||
|
||||
if (await context.Organisations.AnyAsync(o => o.RegistrationNo == registrationNo, cancellationToken))
|
||||
return Result.Fail(CreateError.Create("Organisation with the same registration number already exists"));
|
||||
|
||||
context.Organisations.Add(new Domain.Entities.Organisation
|
||||
{
|
||||
Name = request.Name,
|
||||
RegistrationNo = request.RegistrationNo,
|
||||
Email = request.Email,
|
||||
Name = request.Name.Humanize(LetterCasing.Title).Trim(),
|
||||
RegistrationNo = registrationNo,
|
||||
Email = request.Email.ToLower(CultureInfo.InvariantCulture).Clean(),
|
||||
Type = request.Type,
|
||||
Status = ActivityStatus.Active,
|
||||
CreatedBy = userId,
|
||||
@@ -156,9 +159,9 @@ public sealed class GovernanceService(IDbContextFactory<ApplicationDbContext> co
|
||||
var changedTotal = await context.Organisations
|
||||
.Where(f => f.Id == request.OrganisationId)
|
||||
.ExecuteUpdateAsync(f => f
|
||||
.SetProperty(u => u.Name, request.Name)
|
||||
.SetProperty(u => u.RegistrationNo, request.RegistrationNo)
|
||||
.SetProperty(u => u.Email, request.Email)
|
||||
.SetProperty(u => u.Name, request.Name.Humanize(LetterCasing.Title).Trim())
|
||||
.SetProperty(u => u.RegistrationNo, request.RegistrationNo.Clean())
|
||||
.SetProperty(u => u.Email, request.Email.ToLower(CultureInfo.InvariantCulture).Clean())
|
||||
.SetProperty(u => u.Type, request.Type), cancellationToken);
|
||||
|
||||
return Result.FailIf(changedTotal <= 0, UpdateError.New);
|
||||
@@ -175,16 +178,19 @@ public sealed class GovernanceService(IDbContextFactory<ApplicationDbContext> co
|
||||
if (!await context.Organisations.AnyAsync(u => u.Id == request.OrganisationId, cancellationToken))
|
||||
return Result.Fail(NotFoundError.Create("Organisation not found"));
|
||||
|
||||
if (await context.Portfolios.AnyAsync(p => p.Name == request.Name && p.OrganisationId == request.OrganisationId, cancellationToken))
|
||||
var name = request.Name.Humanize(LetterCasing.Title).Trim();
|
||||
|
||||
if (await context.Portfolios.AnyAsync(p => p.Name == name && p.OrganisationId == request.OrganisationId, cancellationToken))
|
||||
return Result.Fail(ValidationError.Create("A portfolio with the same name exists in this organisation"));
|
||||
|
||||
context.Portfolios.Add(new Domain.Entities.Portfolio
|
||||
{
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
CreatedBy = userId,
|
||||
OrganisationId = request.OrganisationId,
|
||||
OwnedBy = request.OwnerId,
|
||||
Name = request.Name,
|
||||
Description = request.Description
|
||||
Name = name,
|
||||
Description = request.Description.Humanize(LetterCasing.Sentence).Trim()
|
||||
});
|
||||
|
||||
return Result.FailIf(await context.SaveChangesAsync(cancellationToken) <= 0, CreateError.New);
|
||||
@@ -201,11 +207,11 @@ public sealed class GovernanceService(IDbContextFactory<ApplicationDbContext> co
|
||||
var changedTotal = await context.Portfolios
|
||||
.Where(p => p.Id == request.PortfolioId)
|
||||
.ExecuteUpdateAsync(f => f
|
||||
.SetProperty(u => u.Name, request.Name)
|
||||
.SetProperty(u => u.Name, request.Name.Humanize(LetterCasing.Title).Trim())
|
||||
.SetProperty(u => u.OwnedBy, request.OwnerId)
|
||||
.SetProperty(u => u.Description, request.Description), cancellationToken);
|
||||
.SetProperty(u => u.Description, request.Description.Humanize(LetterCasing.Sentence).Trim()), cancellationToken);
|
||||
|
||||
return Result.FailIf(changedTotal <= 0, UpdateError.New);
|
||||
return Result.FailIf(changedTotal <= 0, UpdateError.Create("Nothing was saved, no change detected."));
|
||||
}));
|
||||
|
||||
public async ValueTask<Result<Programme[]>> GetPortfolioProgrammesAsync(string portfolioIdHash, CancellationToken cancellationToken = default) =>
|
||||
|
||||
Reference in New Issue
Block a user