Skip to content

Commit b4a502b

Browse files
committed
Fixed duplicate code
1 parent 15f58eb commit b4a502b

File tree

3 files changed

+31
-21
lines changed

3 files changed

+31
-21
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace Dfe.Academies.Academisation.Service.Extensions;
2+
3+
public static class StringExtensions
4+
{
5+
public static (string? firstName, string? lastName) GetFirstAndLastName(this string? fullName)
6+
{
7+
if (string.IsNullOrWhiteSpace(fullName))
8+
return (null, null);
9+
10+
string[] parts = fullName.Split(' ', StringSplitOptions.RemoveEmptyEntries);
11+
12+
string? firstName = parts.Length > 0 ? parts[0] : null;
13+
string? lastName = parts.Length > 1 ? parts[1] : null;
14+
15+
return (firstName, lastName);
16+
}
17+
}

Dfe.Academies.Academisation.Service/Mappers/CompleteProjects/CompleteConversionProjectServiceModelMapper.cs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Dfe.Academies.Academisation.IDomain.ProjectAggregate;
2+
using Dfe.Academies.Academisation.Service.Extensions;
23
using Dfe.Complete.Client.Contracts;
34

45
namespace Dfe.Academies.Academisation.Service.Mappers.CompleteProjects;
@@ -10,9 +11,7 @@ internal static CreateConversionProjectCommand FromDomain(IProject project, stri
1011
var assignedUser = project.Details.AssignedUser;
1112

1213
string? fullName = assignedUser?.FullName;
13-
string[] nameParts = fullName?
14-
.Split(' ', StringSplitOptions.RemoveEmptyEntries)
15-
?? [];
14+
var (firstName, lastName) = fullName.GetFirstAndLastName();
1615

1716
return new CreateConversionProjectCommand
1817
{
@@ -22,8 +21,8 @@ internal static CreateConversionProjectCommand FromDomain(IProject project, stri
2221
ProvisionalConversionDate = project.Details.ProposedConversionDate,
2322
DirectiveAcademyOrder = project.Details.AcademyTypeAndRoute?.Equals("Sponsored") ?? false,
2423
CreatedByEmail = assignedUser?.EmailAddress,
25-
CreatedByFirstName = nameParts.Length > 0 ? nameParts[0] : null,
26-
CreatedByLastName = nameParts.Length > 1 ? nameParts[1] : null,
24+
CreatedByFirstName = firstName,
25+
CreatedByLastName = lastName,
2726
PrepareId = project.Id,
2827
GroupId = groupReferenceNumber,
2928
IncomingTrustUkprn = project.Details.TrustUkprn
@@ -35,9 +34,7 @@ internal static CreateConversionMatProjectCommand FormAMatFromDomain(IProject pr
3534
var assignedUser = project.Details.AssignedUser;
3635

3736
string? fullName = assignedUser?.FullName;
38-
string[] nameParts = fullName?
39-
.Split(' ', StringSplitOptions.RemoveEmptyEntries)
40-
?? [];
37+
var (firstName, lastName) = fullName.GetFirstAndLastName();
4138
return new CreateConversionMatProjectCommand
4239
{
4340
Urn = project.Details.Urn,
@@ -46,8 +43,8 @@ internal static CreateConversionMatProjectCommand FormAMatFromDomain(IProject pr
4643
ProvisionalConversionDate = project.Details.ProposedConversionDate,
4744
DirectiveAcademyOrder = project.Details.AcademyTypeAndRoute?.Equals("Sponsored") ?? false,
4845
CreatedByEmail = assignedUser?.EmailAddress,
49-
CreatedByFirstName = nameParts.Length > 0 ? nameParts[0] : null,
50-
CreatedByLastName = nameParts.Length > 1 ? nameParts[1] : null,
46+
CreatedByFirstName = firstName,
47+
CreatedByLastName = lastName,
5148
PrepareId = project.Id,
5249
NewTrustName = project.Details.NameOfTrust,
5350
NewTrustReferenceNumber = project.Details.TrustReferenceNumber,

Dfe.Academies.Academisation.Service/Mappers/CompleteProjects/CompleteTransferProjectServiceModelMapper.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Dfe.Academies.Academisation.IDomain.TransferProjectAggregate;
2+
using Dfe.Academies.Academisation.Service.Extensions;
23
using Dfe.Complete.Client.Contracts;
34

45
namespace Dfe.Academies.Academisation.Service.Mappers.CompleteProjects;
@@ -22,9 +23,7 @@ internal static CreateTransferProjectCommand FromDomain(ITransferProject project
2223
project.SpecificReasonsForTransfer.Contains("TrustClosed");
2324

2425
string? fullName = project.AssignedUserFullName ?? null;
25-
string[] nameParts = fullName?
26-
.Split(' ', StringSplitOptions.RemoveEmptyEntries)
27-
?? [];
26+
var (firstName, lastName) = fullName.GetFirstAndLastName();
2827

2928
return new CreateTransferProjectCommand
3029
{
@@ -36,8 +35,8 @@ internal static CreateTransferProjectCommand FromDomain(ITransferProject project
3635
FinancialSafeguardingGovernanceIssues = financialSafeGuardingOrGovernanceIssues,
3736
OutgoingTrustToClose = outGoingTrustToClose,
3837
CreatedByEmail = project.AssignedUserEmailAddress,
39-
CreatedByFirstName = nameParts.Length > 0 ? nameParts[0] : null,
40-
CreatedByLastName = nameParts.Length > 1 ? nameParts[1] : null,
38+
CreatedByFirstName = firstName,
39+
CreatedByLastName = lastName,
4140
IncomingTrustUkprn = int.Parse(incomingTrustUkprn),
4241
OutgoingTrustUkprn = int.Parse(project.OutgoingTrustUkprn),
4342
PrepareId = project.Id
@@ -59,10 +58,7 @@ internal static CreateTransferMatProjectCommand FormAMatFromDomain(ITransferProj
5958
project.SpecificReasonsForTransfer.Contains("Safeguarding") ||
6059
project.SpecificReasonsForTransfer.Contains("TrustClosed");
6160

62-
string? fullName = project.AssignedUserFullName ?? null;
63-
string[] nameParts = fullName?
64-
.Split(' ', StringSplitOptions.RemoveEmptyEntries)
65-
?? [];
61+
var (firstName, lastName) = project.AssignedUserFullName.GetFirstAndLastName();
6662

6763
return new CreateTransferMatProjectCommand
6864
{
@@ -74,8 +70,8 @@ internal static CreateTransferMatProjectCommand FormAMatFromDomain(ITransferProj
7470
FinancialSafeguardingGovernanceIssues = financialSafeGuardingOrGovernanceIssues,
7571
OutgoingTrustToClose = outGoingTrustToClose,
7672
CreatedByEmail = project.AssignedUserEmailAddress,
77-
CreatedByFirstName = nameParts.Length > 0 ? nameParts[0] : null,
78-
CreatedByLastName = nameParts.Length > 1 ? nameParts[1] : null,
73+
CreatedByFirstName = firstName,
74+
CreatedByLastName = lastName,
7975
OutgoingTrustUkprn = int.Parse(project.OutgoingTrustUkprn),
8076
PrepareId = project.Id,
8177
NewTrustReferenceNumber = project.IncomingTrustReferenceNumber,

0 commit comments

Comments
 (0)