Skip to content

Commit 5149177

Browse files
authored
Merge pull request #1612 from bcgov/dev
Dev
2 parents 13730dd + 3b59a1b commit 5149177

13 files changed

Lines changed: 127 additions & 14 deletions

File tree

applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Application/Templates/TemplatesService.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Linq;
34
using System.Threading.Tasks;
45
using Volo.Abp.Application.Services;
56
using Volo.Abp.DependencyInjection;
@@ -81,7 +82,7 @@ public async Task DeleteTemplate(Guid id)
8182

8283
public async Task<List<TemplateVariable>> GetTemplateVariables()
8384
{
84-
var data = await _templateVariablesRepository.GetListAsync();
85-
return data;
85+
var templateVariables = await _templateVariablesRepository.GetQueryableAsync();
86+
return templateVariables.OrderBy(x => x.Name).ToList();
8687
}
87-
}
88+
}

applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Domain/NotificationsDataSeedContributor.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ public async Task SeedAsync(DataSeedContext context)
4848
new EmailTempateVariableDto { Name = "Project Summary", Token = "project_summary", MapTo = "projectSummary" },
4949
new EmailTempateVariableDto { Name = "Signing Authority Full Name", Token = "signing_authority_full_name", MapTo = "signingAuthorityFullName" },
5050
new EmailTempateVariableDto { Name = "Signing Authority Title", Token = "signing_authority_title", MapTo = "signingAuthorityTitle" },
51-
new EmailTempateVariableDto { Name = "Applicant ID", Token = "applicant_id", MapTo = "applicant.unityApplicantId" }
51+
new EmailTempateVariableDto { Name = "Applicant ID", Token = "applicant_id", MapTo = "applicant.unityApplicantId" },
52+
new EmailTempateVariableDto { Name = "Requested Amount", Token = "requested_amount", MapTo = "requestedAmount" }
5253
};
5354

5455
try
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
3+
namespace Unity.GrantManager.ApplicationForms;
4+
5+
public class ApplicationFormDetailsDto
6+
{
7+
public Guid ApplicationId { get; set; }
8+
public Guid ApplicationFormId { get; set; }
9+
public string ApplicationFormName { get; set; } = string.Empty;
10+
public string ApplicationFormDescription { get; set; } = string.Empty;
11+
public string ApplicationFormCategory { get; set; } = string.Empty;
12+
public Guid ApplicationFormVersionId { get; set; }
13+
public int ApplicationFormVersion { get; set; }
14+
}

applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormAppService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ public interface IApplicationFormAppService : ICrudAppService<
2020
Task PatchOtherConfig(Guid id, OtherConfigDto config);
2121
Task<decimal?> GetFormPaymentApprovalThresholdByApplicationIdAsync(Guid applicationId);
2222
Task<bool> GetFormPreventPaymentStatusByApplicationId(Guid applicationId);
23+
Task<ApplicationFormDetailsDto> GetFormDetailsByApplicationIdAsync(Guid applicationId);
2324
}
2425
}

applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantApplications/GrantApplicationDto.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
namespace Unity.GrantManager.GrantApplications;
77

8+
// NOTE: Removing properties from this class will impact Email Notification Templates
89
public class GrantApplicationDto : AuditedEntityDto<Guid>
910
{
1011
public int RowCount { get; set; } = 0;

applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormAppService.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@ public class ApplicationFormAppService :
3434
private readonly IApplicationFormVersionRepository _applicationFormVersionRepository;
3535
private readonly IGrantApplicationAppService _applicationService;
3636
private readonly IRepository<ApplicationForm, Guid> _applicationFormRepository;
37+
private readonly IApplicationFormSubmissionRepository _applicationFormSubmissionRepository;
3738

3839
public ApplicationFormAppService(IRepository<ApplicationForm, Guid> repository,
3940
IStringEncryptionService stringEncryptionService,
4041
IApplicationFormVersionAppService applicationFormVersionAppService,
4142
IApplicationFormVersionRepository applicationFormVersionRepository,
4243
IGrantApplicationAppService applicationService,
43-
IFormsApiService formsApiService)
44+
IFormsApiService formsApiService,
45+
IApplicationFormSubmissionRepository applicationFormSubmissionRepository)
4446
: base(repository)
4547
{
4648
_stringEncryptionService = stringEncryptionService;
@@ -49,6 +51,7 @@ public ApplicationFormAppService(IRepository<ApplicationForm, Guid> repository,
4951
_applicationFormVersionRepository = applicationFormVersionRepository;
5052
_applicationFormRepository = repository;
5153
_applicationService = applicationService;
54+
_applicationFormSubmissionRepository = applicationFormSubmissionRepository;
5255
}
5356

5457
[Authorize(GrantManagerPermissions.ApplicationForms.Default)]
@@ -189,4 +192,20 @@ public async Task SavePaymentConfiguration(FormPaymentConfigurationDto dto)
189192
ApplicationForm appForm = await _applicationFormRepository.GetAsync(formId);
190193
return appForm.PaymentApprovalThreshold;
191194
}
195+
196+
public async Task<ApplicationFormDetailsDto> GetFormDetailsByApplicationIdAsync(Guid applicationId)
197+
{
198+
var formDetails = await _applicationFormSubmissionRepository.GetFormDetailsByApplicationIdAsync(applicationId);
199+
200+
return new ApplicationFormDetailsDto
201+
{
202+
ApplicationId = formDetails.ApplicationId,
203+
ApplicationFormId = formDetails.ApplicationFormId,
204+
ApplicationFormName = formDetails.ApplicationFormName,
205+
ApplicationFormDescription = formDetails.ApplicationFormDescription,
206+
ApplicationFormCategory = formDetails.ApplicationFormCategory,
207+
ApplicationFormVersionId = formDetails.ApplicationFormVersionId,
208+
ApplicationFormVersion = formDetails.ApplicationFormVersion
209+
};
210+
}
192211
}

applications/Unity.GrantManager/src/Unity.GrantManager.Application/GrantApplications/GrantApplicationAppService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ private static GrantApplicationAssigneeDto BuildApplicationOwner(Person? applica
222222

223223
public async Task<GrantApplicationDto> GetAsync(Guid id)
224224
{
225+
// NOTE: Changes to this method can impact Email Notification Templates
225226
var application = await _applicationRepository.GetWithFullDetailsByIdAsync(id);
226227

227228
if (application == null) return new GrantApplicationDto();
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
3+
namespace Unity.GrantManager.Applications;
4+
5+
[Serializable]
6+
public class ApplicationFormDetails
7+
{
8+
public Guid ApplicationId { get; set; }
9+
public Guid ApplicationFormId { get; set; }
10+
public string ApplicationFormName { get; set; } = string.Empty;
11+
public string ApplicationFormDescription { get; set; } = string.Empty;
12+
public string ApplicationFormCategory { get; set; } = string.Empty;
13+
public Guid ApplicationFormVersionId { get; set; }
14+
public int ApplicationFormVersion { get; set; }
15+
}

applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/IApplicationFormSubmissionRepository.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ namespace Unity.GrantManager.Applications;
77
public interface IApplicationFormSubmissionRepository : IRepository<ApplicationFormSubmission, Guid>
88
{
99
Task<ApplicationFormSubmission> GetByApplicationAsync(Guid applicationId);
10+
Task<ApplicationFormDetails> GetFormDetailsByApplicationIdAsync(Guid applicationId);
1011
}

applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Repositories/ApplicationFormSubmissionRepository.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.EntityFrameworkCore;
22
using System;
3+
using System.Linq;
34
using System.Threading.Tasks;
45
using Unity.GrantManager.Applications;
56
using Unity.GrantManager.EntityFrameworkCore;
@@ -23,5 +24,37 @@ public async Task<ApplicationFormSubmission> GetByApplicationAsync(Guid applicat
2324
return await dbContext.ApplicationFormSubmissions
2425
.FirstAsync(s => s.ApplicationId == applicationId);
2526
}
27+
28+
public async Task<ApplicationFormDetails> GetFormDetailsByApplicationIdAsync(Guid applicationId)
29+
{
30+
var dbContext = await GetDbContextAsync();
31+
32+
// Join ApplicationFormSubmission with ApplicationForm and ApplicationFormVersion
33+
// to get all required data in a single query
34+
return await dbContext.ApplicationFormSubmissions
35+
.Where(s => s.ApplicationId == applicationId)
36+
.Join(
37+
dbContext.ApplicationFormVersions,
38+
submission => submission.ApplicationFormVersionId,
39+
version => version.Id,
40+
(submission, version) => new { submission, version }
41+
)
42+
.Join(
43+
dbContext.ApplicationForms,
44+
formVersion => formVersion.version.ApplicationFormId,
45+
form => form.Id,
46+
(formVersion, form) => new ApplicationFormDetails
47+
{
48+
ApplicationId = applicationId,
49+
ApplicationFormId = form.Id,
50+
ApplicationFormName = form.ApplicationFormName ?? string.Empty,
51+
ApplicationFormDescription = form.ApplicationFormDescription ?? string.Empty,
52+
ApplicationFormCategory = form.Category ?? string.Empty,
53+
ApplicationFormVersionId = formVersion.version.Id,
54+
ApplicationFormVersion = formVersion.version.Version ?? 0
55+
}
56+
)
57+
.FirstOrDefaultAsync() ?? new ApplicationFormDetails { ApplicationId = applicationId };
58+
}
2659
}
2760
}

0 commit comments

Comments
 (0)