Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(registration) : update dateLastChange companyApplication #307

Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
using Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities;
using Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.Entities;
using Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.Enums;
using System.Security.Cryptography.X509Certificates;

namespace Org.Eclipse.TractusX.Portal.Backend.PortalBackend.DBAccess.Repositories;

Expand Down Expand Up @@ -129,7 +130,7 @@ public void RemoveDocument(Guid documentId) =>
this._dbContext.Documents.SingleOrDefaultAsync(x => x.Id == documentId);

/// <inheritdoc />
public Task<(Guid DocumentId, DocumentStatusId DocumentStatusId, bool IsSameApplicationUser, DocumentTypeId documentTypeId, bool IsQueriedApplicationStatus)> GetDocumentDetailsForApplicationUntrackedAsync(Guid documentId, Guid userCompanyId, IEnumerable<CompanyApplicationStatusId> applicationStatusIds) =>
public Task<(Guid DocumentId, DocumentStatusId DocumentStatusId, bool IsSameApplicationUser, DocumentTypeId documentTypeId, bool IsQueriedApplicationStatus, Guid applicationId)> GetDocumentDetailsForApplicationUntrackedAsync(Guid documentId, Guid userCompanyId, IEnumerable<CompanyApplicationStatusId> applicationStatusIds) =>
_dbContext.Documents
.AsNoTracking()
.Where(x => x.Id == documentId)
Expand All @@ -138,12 +139,13 @@ public void RemoveDocument(Guid documentId) =>
Document = document,
Applications = document.CompanyUser!.Identity!.Company!.CompanyApplications
})
.Select(x => new ValueTuple<Guid, DocumentStatusId, bool, DocumentTypeId, bool>(
.Select(x => new ValueTuple<Guid, DocumentStatusId, bool, DocumentTypeId, bool, Guid>(
x.Document.Id,
x.Document.DocumentStatusId,
x.Applications.Any(companyApplication => companyApplication.CompanyId == userCompanyId),
x.Document.DocumentTypeId,
x.Applications.Any(companyApplication => applicationStatusIds.Contains(companyApplication.ApplicationStatusId))))
x.Applications.Any(companyApplication => applicationStatusIds.Contains(companyApplication.ApplicationStatusId)),
x.Applications.Select(x => x.Id).FirstOrDefault()))
Phil91 marked this conversation as resolved.
Show resolved Hide resolved
.SingleOrDefaultAsync();

/// <inheritdoc />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,8 @@ public interface IDocumentRepository
/// <param name="documentId"></param>
/// <param name="userCompanyId"></param>
/// <param name="applicationStatusIds"></param>
Task<(Guid DocumentId, DocumentStatusId DocumentStatusId, bool IsSameApplicationUser, DocumentTypeId documentTypeId, bool IsQueriedApplicationStatus)> GetDocumentDetailsForApplicationUntrackedAsync(Guid documentId, Guid userCompanyId, IEnumerable<CompanyApplicationStatusId> applicationStatusIds);
/// <param name="applicationId"></param>
Task<(Guid DocumentId, DocumentStatusId DocumentStatusId, bool IsSameApplicationUser, DocumentTypeId documentTypeId, bool IsQueriedApplicationStatus, Guid applicationId)> GetDocumentDetailsForApplicationUntrackedAsync(Guid documentId, Guid userCompanyId, IEnumerable<CompanyApplicationStatusId> applicationStatusIds);

/// <summary>
/// Attaches the document and sets the optional parameters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,10 @@ public async Task<int> UploadDocumentAsync(Guid applicationId, IFormFile documen
{
throw new ForbiddenException($"The users company is not assigned with application {applicationId}");
}

_portalRepositories.GetInstance<IApplicationRepository>().AttachAndModifyCompanyApplication(applicationId, application =>
{
application.DateLastChanged = DateTimeOffset.UtcNow;
Phil91 marked this conversation as resolved.
Show resolved Hide resolved
});
var mediaTypeId = document.ContentType.ParseMediaTypeId();
var (content, hash) = await document.GetContentAndHash(cancellationToken).ConfigureAwait(false);

Expand Down Expand Up @@ -434,6 +437,10 @@ private async Task<int> InviteNewUserInternalAsync(Guid applicationId, UserCreat
}

_portalRepositories.GetInstance<IApplicationRepository>().CreateInvitation(applicationId, newCompanyUserId);
_portalRepositories.GetInstance<IApplicationRepository>().AttachAndModifyCompanyApplication(applicationId, application =>
{
application.DateLastChanged = DateTimeOffset.UtcNow;
});

var modified = await _portalRepositories.SaveAsync().ConfigureAwait(false);

Expand Down Expand Up @@ -598,6 +605,7 @@ public async Task<bool> SubmitRegistrationAsync(Guid applicationId)
{
application.ApplicationStatusId = CompanyApplicationStatusId.SUBMITTED;
application.ChecklistProcessId = process.Id;
application.DateLastChanged = DateTimeOffset.UtcNow;
});

await _portalRepositories.SaveAsync().ConfigureAwait(false);
Expand Down Expand Up @@ -717,7 +725,10 @@ public async Task<int> SetInvitationStatusAsync()
{
invitationData.InvitationStatusId = InvitationStatusId.ACCEPTED;
}

_portalRepositories.GetInstance<IApplicationRepository>().AttachAndModifyCompanyApplication(invitationData.CompanyApplicationId, application =>
{
application.DateLastChanged = DateTimeOffset.UtcNow;
});
return await _portalRepositories.SaveAsync().ConfigureAwait(false);
}

Expand Down Expand Up @@ -819,6 +830,7 @@ private static void ValidateCompanyApplicationStatus(Guid applicationId,
applicationRepository.AttachAndModifyCompanyApplication(applicationId, a =>
{
a.ApplicationStatusId = status;
a.DateLastChanged = DateTimeOffset.UtcNow;
});
}

Expand All @@ -830,6 +842,7 @@ private static void UpdateApplicationStatus(Guid applicationId, CompanyApplicati
applicationRepository.AttachAndModifyCompanyApplication(applicationId, ca =>
{
ca.ApplicationStatusId = updateStatus;
ca.DateLastChanged = DateTimeOffset.UtcNow;
});
}
}
Expand Down Expand Up @@ -897,6 +910,10 @@ public async Task<bool> DeleteRegistrationDocumentAsync(Guid documentId)

documentRepository.RemoveDocument(details.DocumentId);

_portalRepositories.GetInstance<IApplicationRepository>().AttachAndModifyCompanyApplication(details.applicationId, application =>
Phil91 marked this conversation as resolved.
Show resolved Hide resolved
{
application.DateLastChanged = DateTimeOffset.UtcNow;
});
await this._portalRepositories.SaveAsync().ConfigureAwait(false);
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public RegistrationSettings()
/// SubmitDocument Type Id
/// </summary>
/// <value></value>
[Required]
//[Required]
Phil91 marked this conversation as resolved.
Show resolved Hide resolved
[DistinctValues]
public IEnumerable<DocumentTypeId> SubmitDocumentTypeIds { get; set; } = null!;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,34 @@ public async Task GetRegistrationDocumentAsync__ReturnsExpectedResult()
result.MediaTypeId.Should().Be(MediaTypeId.PDF);
}

[Fact]
public async Task GetDocumentDetailsForApplicationUntrackedAsync_ReturnsExpected()
{
// Arrange
var applicationStatusIds = new[]{
CompanyApplicationStatusId.SUBMITTED,
CompanyApplicationStatusId.CONFIRMED,
CompanyApplicationStatusId.DECLINED
};
var (sut, _) = await CreateSut().ConfigureAwait(false);

// Act
var result = await sut.GetDocumentDetailsForApplicationUntrackedAsync(
new Guid("9685f744-9d90-4102-a949-fcd0bb86f954"),
new Guid("41fd2ab8-71cd-4546-9bef-a388d91b2542"),
applicationStatusIds).ConfigureAwait(false);

// Assert
result.Should().NotBeNull();
result.DocumentId.Should().Be(new Guid("9685f744-9d90-4102-a949-fcd0bb86f954"));
result.documentTypeId.Should().Be(DocumentTypeId.CX_FRAME_CONTRACT);
result.DocumentStatusId.Should().Be(DocumentStatusId.LOCKED);
result.applicationId.Should().Be(new Guid("6b2d1263-c073-4a48-bfaf-704dc154ca9e"));
result.IsQueriedApplicationStatus.Should().BeTrue();
result.IsSameApplicationUser.Should().BeTrue();

}

#region Setup

private async Task<(DocumentRepository, PortalDbContext)> CreateSut()
Expand Down
Loading
Loading