Skip to content

Commit

Permalink
Merge branch 'main' into chore/add-authorization-checks-to-transmissions
Browse files Browse the repository at this point in the history
  • Loading branch information
oskogstad authored Aug 12, 2024
2 parents 9a1e7c4 + 9ef5214 commit 14b440f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,13 @@ public async Task<CreateDialogResult> Handle(CreateDialogCommand request, Cancel
_domainContext.AddError(DomainFailure.EntityExists<DialogTransmission>(existingTransmissionIds));
}

var transmissionAttachments = dialog.Transmissions.SelectMany(x => x.Attachments);
var existingTransmissionAttachmentIds = await _db.GetExistingIds(transmissionAttachments, cancellationToken);
if (existingTransmissionAttachmentIds.Count != 0)
{
_domainContext.AddError(DomainFailure.EntityExists<TransmissionAttachment>(existingTransmissionAttachmentIds));
}

await _db.Dialogs.AddAsync(dialog, cancellationToken);

var saveResult = await _unitOfWork.SaveChangesAsync(cancellationToken);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using AutoMapper;
using Digdir.Domain.Dialogporten.Application.Common;
using Digdir.Domain.Dialogporten.Application.Common.Extensions.Enumerables;
using Digdir.Domain.Dialogporten.Application.Common.ResourceRegistry;
using Digdir.Domain.Dialogporten.Application.Common.ReturnTypes;
using Digdir.Domain.Dialogporten.Application.Externals;
using Digdir.Domain.Dialogporten.Domain.Common;
using Digdir.Domain.Dialogporten.Domain.Dialogs.Entities;
using Digdir.Domain.Dialogporten.Domain.Dialogs.Entities.Actions;
using Digdir.Domain.Dialogporten.Domain.Dialogs.Entities.Activities;
Expand All @@ -14,6 +14,7 @@
using Microsoft.EntityFrameworkCore;
using OneOf;
using OneOf.Types;
using ResourceRegistryConstants = Digdir.Domain.Dialogporten.Application.Common.ResourceRegistry.Constants;

namespace Digdir.Domain.Dialogporten.Application.Features.V1.ServiceOwner.Dialogs.Commands.Update;

Expand Down Expand Up @@ -93,7 +94,7 @@ public async Task<UpdateDialogResult> Handle(UpdateDialogCommand request, Cancel
return new Forbidden($"User cannot modify resource type {dialog.ServiceResourceType}.");
}

if (dialog.ServiceResourceType == Constants.Correspondence)
if (dialog.ServiceResourceType == ResourceRegistryConstants.Correspondence)
{
if (request.Dto.Progress is not null)
return new ValidationError(_progressValidationFailure);
Expand Down Expand Up @@ -289,12 +290,20 @@ private async Task AppendTransmission(DialogEntity dialog, UpdateDialogDto dto,
var existingIds = await _db.GetExistingIds(newDialogTransmissions, cancellationToken);
if (existingIds.Count != 0)
{
_domainContext.AddError(
nameof(UpdateDialogDto.Transmissions),
$"Entity '{nameof(DialogTransmission)}' with the following key(s) already exists: ({string.Join(", ", existingIds)}).");
return;
_domainContext.AddError(DomainFailure.EntityExists<DialogTransmission>(existingIds));
}

var transmissionAttachments = newDialogTransmissions.SelectMany(x => x.Attachments);
var existingTransmissionAttachmentIds = await _db.GetExistingIds(transmissionAttachments, cancellationToken);
if (existingTransmissionAttachmentIds.Count != 0)
{
_domainContext.AddError(DomainFailure.EntityExists<TransmissionAttachment>(existingTransmissionAttachmentIds));
}

if (_domainContext.Errors.Count != 0)
{
return;
}
dialog.Transmissions.AddRange(newDialogTransmissions);

// Tell ef explicitly to add transmissions as new to the database.
Expand Down

0 comments on commit 14b440f

Please sign in to comment.