diff --git a/WorkFlow.sln b/WorkFlow.sln index 84c6f1a..5b0c7e4 100644 --- a/WorkFlow.sln +++ b/WorkFlow.sln @@ -5,6 +5,7 @@ VisualStudioVersion = 17.9.34622.214 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8EC462FD-D22E-90A8-E5CE-7E832BA40C5D}" ProjectSection(SolutionItems) = preProject + scripts\GetProfile.sql = scripts\GetProfile.sql README.md = README.md EndProjectSection EndProject diff --git a/src/WorkFlow.Application/Contracts/Repositories/IProfileRepository.cs b/src/WorkFlow.Application/Contracts/Repositories/IProfileRepository.cs index 2ce6875..b9fb642 100644 --- a/src/WorkFlow.Application/Contracts/Repositories/IProfileRepository.cs +++ b/src/WorkFlow.Application/Contracts/Repositories/IProfileRepository.cs @@ -1,5 +1,8 @@ -namespace WorkFlow.Application.Contracts.Repositories; +using WorkFlow.Domain.Entities; + +namespace WorkFlow.Application.Contracts.Repositories; public interface IProfileRepository { + Task ReadAsync(int userId); } \ No newline at end of file diff --git a/src/WorkFlow.Infrastructure/Repositories/ProfileRepository.cs b/src/WorkFlow.Infrastructure/Repositories/ProfileRepository.cs index c47382e..2ceeed6 100644 --- a/src/WorkFlow.Infrastructure/Repositories/ProfileRepository.cs +++ b/src/WorkFlow.Infrastructure/Repositories/ProfileRepository.cs @@ -1,7 +1,33 @@ -using WorkFlow.Application.Contracts.Repositories; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using WorkFlow.Application.Contracts.Repositories; +using WorkFlow.Domain.Entities; namespace WorkFlow.Infrastructure.Repositories; public class ProfileRepository : IProfileRepository { + private readonly ILogger _logger; + + private readonly WFDBContext _context; + + public ProfileRepository(WFDBContext context, ILogger logger) + { + _logger = logger; + _context = context; + } + + public async Task ReadAsync(int userId) + { + var profiles = await _context.Profiles + .FromSqlRaw("SELECT * FROM FNMWF_GET_PROFILES ({0})", userId) + .ToListAsync(); + + if (profiles == null || profiles.Count == 0) + _logger.LogError("No profile record was found associated with user ID {userId}.", userId); + else if (profiles.Count > 0) + _logger.LogError("Multiple profile records were found for user ID {userId}, which may indicate a data integrity issue.", userId); + + return profiles?.FirstOrDefault(); + } } \ No newline at end of file