Created ExpiredOOOStatusWorker

This commit is contained in:
Chase Tucker 2024-03-25 12:22:26 -07:00
parent 27f78da969
commit 69fdd98ab3
46 changed files with 549 additions and 5118 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
.vs
bin
obj
TestResults

View File

@ -11,16 +11,21 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Staging|Any CPU = Staging|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5A7AB539-1A6F-4903-AB52-62BCD0BFD7B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5A7AB539-1A6F-4903-AB52-62BCD0BFD7B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5A7AB539-1A6F-4903-AB52-62BCD0BFD7B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A7AB539-1A6F-4903-AB52-62BCD0BFD7B9}.Release|Any CPU.Build.0 = Release|Any CPU
{5A7AB539-1A6F-4903-AB52-62BCD0BFD7B9}.Staging|Any CPU.ActiveCfg = Staging|Any CPU
{5A7AB539-1A6F-4903-AB52-62BCD0BFD7B9}.Staging|Any CPU.Build.0 = Staging|Any CPU
{26BB32C6-36B9-4E02-B8DE-4262250F29E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{26BB32C6-36B9-4E02-B8DE-4262250F29E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{26BB32C6-36B9-4E02-B8DE-4262250F29E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{26BB32C6-36B9-4E02-B8DE-4262250F29E5}.Release|Any CPU.Build.0 = Release|Any CPU
{26BB32C6-36B9-4E02-B8DE-4262250F29E5}.Staging|Any CPU.ActiveCfg = Debug|Any CPU
{26BB32C6-36B9-4E02-B8DE-4262250F29E5}.Staging|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "8.0.3",
"commands": [
"dotnet-ef"
]
}
}
}

View File

@ -7,20 +7,28 @@
<UserSecretsId>dotnet-FabApprovalWorkerService-e76dda63-1df3-422a-b758-1c057e5b1e25</UserSecretsId>
<ServerGarbageCollection>true</ServerGarbageCollection>
<EnforceCodeStyleInBuild>True</EnforceCodeStyleInBuild>
<Configurations>Debug;Release;Staging</Configurations>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<Optimize>False</Optimize>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Staging|AnyCPU'">
<Optimize>True</Optimize>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<Optimize>True</Optimize>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CsvHelper" Version="31.0.0" />
<PackageReference Include="Dapper" Version="2.1.28" />
<PackageReference Include="Dapper.Contrib" Version="2.0.78" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
<NameOfLastUsedPublishProfile>C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerService\Properties\PublishProfiles\Staging.pubxml</NameOfLastUsedPublishProfile>
</PropertyGroup>
</Project>

View File

@ -8,6 +8,7 @@ using NLog.Extensions.Logging;
using Quartz;
using System.Data;
using Microsoft.Data.SqlClient;
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
@ -17,25 +18,18 @@ builder.Logging.AddNLog();
builder.Services.AddHttpClient();
#if DEBUG
builder.Services.AddScoped<IDbConnection>(db => new SqliteConnection(
builder.Configuration.GetConnectionString("Default")));
#else
builder.Services.AddScoped<IDbConnection>(db => new SqlConnection(
builder.Configuration.GetConnectionString("Default")));
#endif
builder.Services.AddScoped<IDbConnectionService, DbConnectionService>();
builder.Services.AddScoped<IMonInWorkerClient, MonInWorkerClient>();
builder.Services.AddScoped<IDalService, DalService>();
builder.Services.AddScoped<IUserService, UserService>();
builder.Services.AddQuartz(q => {
JobKey updateCertDataJobKey = new JobKey("Pending OOO status job");
JobKey pendingOOOStatusJob = new JobKey("Pending OOO status job");
q.AddJob<PendingOOOStatusWorker>(opts => opts
.WithIdentity(updateCertDataJobKey)
.WithIdentity(pendingOOOStatusJob)
);
q.AddTrigger(opts => opts
.ForJob(updateCertDataJobKey)
.ForJob(pendingOOOStatusJob)
.WithIdentity("Pending OOO status trigger")
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(10)
@ -43,6 +37,20 @@ builder.Services.AddQuartz(q => {
)
.StartNow()
);
JobKey expiredOOOStatusJob = new JobKey("Expired OOO status job");
q.AddJob<ExpiredOOOStatusWorker>(opts => opts
.WithIdentity(expiredOOOStatusJob)
);
q.AddTrigger(opts => opts
.ForJob(expiredOOOStatusJob)
.WithIdentity("Expired OOO status trigger")
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(10)
.RepeatForever()
)
.StartNow()
);
});
builder.Services.AddQuartzHostedService(opt => {
@ -50,4 +58,5 @@ builder.Services.AddQuartzHostedService(opt => {
});
WebApplication app = builder.Build();
app.Run();

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<DeleteExistingFiles>false</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Staging</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerService\bin\Staging\net8.0\win-x64\publish</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
<SiteUrlToLaunchAfterPublish />
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<ProjectGuid>5a7ab539-1a6f-4903-ab52-62bcd0bfd7b9</ProjectGuid>
<SelfContained>false</SelfContained>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<_PublishTargetUrl>C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerService\bin\Staging\net8.0\win-x64\publish</_PublishTargetUrl>
<History>True|2024-03-21T23:38:09.4228384Z;True|2024-03-21T16:26:02.7031397-07:00;True|2024-03-21T16:23:46.2132963-07:00;True|2024-03-21T16:20:02.0161963-07:00;True|2024-03-21T15:31:17.0705590-07:00;True|2024-03-21T15:29:34.9689685-07:00;True|2024-03-21T14:40:14.0617291-07:00;True|2024-03-21T14:35:10.2219988-07:00;True|2024-03-21T14:33:07.2736782-07:00;True|2024-03-21T11:42:09.3198117-07:00;True|2024-03-21T11:23:29.1905112-07:00;True|2024-03-21T11:09:26.6417724-07:00;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

View File

@ -1,7 +1,4 @@
using Dapper;
using Dapper.Contrib.Extensions;
using FabApprovalWorkerService.Models;
using System.Data;
@ -16,14 +13,14 @@ public class DalService : IDalService {
private static readonly int RETRIES = 3;
private static readonly int BACKOFF_SECONDS_INTERVAL = 30;
private readonly IDbConnection _dbConnection;
private readonly IDbConnectionService _connectionPoolService;
private readonly ILogger<DalService> _logger;
public DalService(IDbConnection dbConnection, ILogger<DalService> logger) {
_dbConnection = dbConnection;
if (_dbConnection is null) throw new ArgumentNullException("IDbConnection not injected");
_logger = logger;
if (_logger is null) throw new ArgumentNullException("ILogger not injected");
public DalService(IDbConnectionService connectionPoolService, ILogger<DalService> logger) {
_connectionPoolService = connectionPoolService ??
throw new ArgumentNullException("IConnectionPoolService not injected");
_logger = logger ??
throw new ArgumentNullException("ILogger not injected");
}
public async Task<IEnumerable<T>> QueryAsync<T>(string sql) {
@ -38,19 +35,15 @@ public class DalService : IDalService {
Task.Delay(backoffSeconds * 1000).Wait();
try {
_logger.LogInformation("Attempting to perform query with {sql}. Remaining retries: {remainingRetries}",
sql,
remainingRetries);
_logger.LogInformation($"Attempting to perform query with {sql}. Remaining retries: {remainingRetries}");
using (_dbConnection) {
result = await _dbConnection.QueryAsync<T>(sql);
using (IDbConnection conn = _connectionPoolService.GetConnection()) {
result = await conn.QueryAsync<T>(sql);
}
queryWasSuccessful = true;
} catch (Exception ex) {
_logger.LogError("An exception occurred while attempting to perform a query. Exception: {ex}",
ex.Message);
_logger.LogError($"An exception occurred while attempting to perform a query. Exception: {ex.Message}");
exception = ex;
}
}
@ -74,19 +67,15 @@ public class DalService : IDalService {
Task.Delay(backoffSeconds * 1000).Wait();
try {
_logger.LogInformation("Attempting to execute {sql}. Remaining retries: {remainingRetries}",
sql,
remainingRetries);
_logger.LogInformation($"Attempting to execute {sql}. Remaining retries: {remainingRetries}");
using (_dbConnection) {
rowsAffected = await _dbConnection.ExecuteAsync(sql);
using (IDbConnection conn = _connectionPoolService.GetConnection()) {
rowsAffected = await conn.ExecuteAsync(sql);
}
queryWasSuccessful = true;
} catch (Exception ex) {
_logger.LogError("An exception occurred while attempting to execute a query. Exception: {ex}",
ex.Message);
_logger.LogError($"An exception occurred while attempting to execute a query. Exception: {ex.Message}");
exception = ex;
}
}

View File

@ -0,0 +1,30 @@
using Microsoft.Data.SqlClient;
using Microsoft.Data.Sqlite;
using System.Data;
namespace FabApprovalWorkerService.Services;
public interface IDbConnectionService {
IDbConnection GetConnection();
}
public class DbConnectionService : IDbConnectionService {
private readonly string _envName;
private readonly string _dbConnectionString;
public DbConnectionService() {
_envName = Environment.GetEnvironmentVariable("FabApprovalEnvironmentName") ??
throw new ArgumentNullException("FabApprovalEnvironmentName environment variable not found");
_dbConnectionString = Environment.GetEnvironmentVariable("FabApprovalDbConnectionString") ??
throw new ArgumentNullException("FabApprovalDbConnectionString environment variable not found");
}
public IDbConnection GetConnection() {
if (_envName.ToLower().Equals("development")) {
return new SqliteConnection(_dbConnectionString);
} else {
return new SqlConnection(_dbConnectionString);
}
}
}

View File

@ -1,3 +0,0 @@
using FabApprovalWorkerService.Models;
namespace FabApprovalWorkerService.Services;

View File

@ -31,23 +31,23 @@ public class MonInWorkerClient : IMonInWorkerClient {
_httpClientFactory = httpClientFactory;
if (_httpClientFactory is null) throw new ArgumentNullException("IHttpClientFactory not injected");
_config = config;
if (_config is null) throw new ArgumentNullException("IConfiguration not injected");
_config = config ??
throw new ArgumentNullException("IConfiguration not injected");
_logger = logger;
if (_logger is null) throw new ArgumentNullException("ILogger not injected");
_logger = logger ??
throw new ArgumentNullException("ILogger not injected");
_baseUrl = _config["MonIn:workerUrl"];
if (_baseUrl is null) throw new ArgumentNullException("MonIn:workerUrl not found in config");
_baseUrl = Environment.GetEnvironmentVariable("MonInWorkerUrl") ??
throw new ArgumentNullException("MonInWorkerUrl environment variable not found");
Int32.TryParse(_config["MonIn:retries"], out _retryLimit);
if (_retryLimit == -1) throw new ArgumentNullException("MonIn:retries not found in config");
if (!Int32.TryParse(Environment.GetEnvironmentVariable("MonInRetries"), out _retryLimit))
throw new ArgumentNullException("Valid MonInRetries environment variable not found");
Int32.TryParse(_config["MonIn:backoffInSeconds"], out _backoffInSeconds);
if (_backoffInSeconds == -1) throw new ArgumentNullException("MonIn:backoffInSeconds not found in config");
if (!Int32.TryParse(Environment.GetEnvironmentVariable("MonInBackoffSeconds"), out _backoffInSeconds))
throw new ArgumentNullException("Valid MonInBackoffSeconds environment varialbe not found");
_resource = _config["MonIn:resource"];
if (_resource is null) throw new ArgumentNullException("MonIn:resource not found in config");
_resource = Environment.GetEnvironmentVariable("FabApprovalWorkerServiceMonInResource") ??
throw new ArgumentNullException("FabApprovalWorkerServiceMonInResource environment variable not found");
}
public async void PostStatus(string statusName, StatusValue statusValue) {

View File

@ -1,5 +1,7 @@
using FabApprovalWorkerService.Models;
using NLog.Filters;
using System.Text;
namespace FabApprovalWorkerService.Services;
@ -9,11 +11,15 @@ public interface IUserService {
Task<bool> IsUserAlreadyOOO(int userId);
Task<bool> IsDelegatorAlreadyDelegatedTo(int userId);
Task<bool> InsertDelegatedRoles(int userId);
Task<bool> UpdateUserSubRoles(int userId, int delegatedUserId);
Task<bool> RemoveDelegatedRoles(int userId);
Task<bool> DelegateUserSubRoles(int userId, int delegatedUserId);
Task<bool> RemoveDelegatedUserSubRoles(int userId, int delegatedUserId);
Task<bool> DelegateApprovalsForUser(int userId, int delegatedUserId);
Task<bool> RemoveDelegatedApprovalsForUser(int userId, int delegatedUserId);
Task<bool> FlagUserAsOOO(OOOTemp oooTemp);
Task<bool> RemoveOOOFlagForUser(int userId);
Task<bool> SetOOOTempProcessed(OOOTemp oOOTemp);
Task<List<User>> GetAllActiveOOOUsersAsync();
Task<List<User>> GetAllExpiredOOOUsersAsync();
}
public class UserService : IUserService {
@ -33,16 +39,18 @@ public class UserService : IUserService {
throw new ArgumentNullException("IDalService not injected");
}
public async Task<List<User>> GetAllActiveOOOUsersAsync() {
public async Task<List<User>> GetAllExpiredOOOUsersAsync() {
try {
_logger.LogInformation("Attempting to get all active OOO users.");
string sql = "select * from Users where OOO = 1;";
StringBuilder queryBuilder = new();
queryBuilder.Append("select * from Users where OOO = 1 and IsActive = 1 and ");
queryBuilder.Append($"OOOExpirationDate <= '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}';");
return (await _dalService.QueryAsync<User>(sql)).ToList();
return (await _dalService.QueryAsync<User>(queryBuilder.ToString())).ToList();
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to get all active OOO users. Exception: {0}",
ex.Message);
string errMsg = $"An exception occurred when attempting to get all active OOO users. Exception: {ex.Message}";
_logger.LogError(errMsg);
throw;
}
}
@ -51,72 +59,76 @@ public class UserService : IUserService {
try {
_logger.LogInformation("Attempting to get all pending OOO users.");
string sql = string.Format("select * from OOOTemp where Processed = 0 and OOOStartDate <= '{0}';", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
StringBuilder queryBuilder = new();
queryBuilder.Append("select * from OOOTemp where Processed = 0 and ");
queryBuilder.Append($"OOOStartDate <= '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}';");
return (await _dalService.QueryAsync<OOOTemp>(sql)).ToList();
return (await _dalService.QueryAsync<OOOTemp>(queryBuilder.ToString())).ToList();
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to get all pending OOO users. Exception: {0}",
ex.Message);
string errMsg = $"An exception occurred when attempting to get all pending OOO users. Exception: {ex.Message}";
_logger.LogError(errMsg);
throw;
}
}
public async Task<bool> IsUserAlreadyOOO(int userId) {
try {
_logger.LogInformation("Attempting to determine if user {userId} is already OOO", userId);
_logger.LogInformation($"Attempting to determine if user {userId} is already OOO");
if (userId <= 0) {
throw new ArgumentException(string.Format("User Id {0} is not a valid user Id", userId));
throw new ArgumentException($"User Id {userId} is not a valid user Id");
} else {
string sql = string.Format("select * from Users where OOO = 1 and UserID = {0}", userId);
string sql = $"select * from Users where OOO = 1 and UserID = {userId}";
return (await _dalService.QueryAsync<User>(sql)).Count() > 0;
}
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to determine if user {userId} is already OOO. Exception: {ex}",
userId,
ex.Message);
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append("An exception occurred when attempting to determine if user ");
errMsgBuilder.Append($"{userId} is already OOO. Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
throw;
}
}
public async Task<bool> IsDelegatorAlreadyDelegatedTo(int userId) {
try {
_logger.LogInformation("Attempting to determine if user {userId} is already OOO.", userId);
_logger.LogInformation($"Attempting to determine if user {userId} is already OOO.");
if (userId <= 0) {
_logger.LogInformation("DelegatedTo is {id}, which is not an active user Id", userId);
_logger.LogInformation($"DelegatedTo is {userId}, which is not an active user Id");
return false;
} else {
string sql = string.Format("select * from Users where DelegatedTo = {0}", userId);
string sql = $"select * from Users where DelegatedTo = {userId}";
return (await _dalService.QueryAsync<User>(sql)).Count() > 0;
}
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to determine if user {userId} is already delegated to. Exception: {ex}",
userId,
ex.Message);
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append("An exception occurred when attempting to determine if user ");
errMsgBuilder.Append($"{userId} is already delegated to. Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
throw;
}
}
public async Task<bool> InsertDelegatedRoles(int userId) {
try {
_logger.LogInformation("Attempting to add delegated roles for OOO user {id}", userId);
_logger.LogInformation($"Attempting to add delegated roles for OOO user {userId}");
if (userId <= 0) {
throw new ArgumentException(string.Format("User Id {0} is not a valid user Id", userId));
throw new ArgumentException($"User Id {userId} is not a valid user Id");
} else {
StringBuilder queryBuilder = new StringBuilder();
string sql = string.Format("select * from UserSubRole where UserID = {0}", userId);
string sql = $"select * from UserSubRole where UserID = {userId}";
List<UserSubRole> userSubRoles = (await _dalService.QueryAsync<UserSubRole>(sql)).ToList();
foreach (UserSubRole role in userSubRoles) {
queryBuilder.Clear();
queryBuilder.Append("insert into OOODelegatedRoles (UserID, DelegatedSubRoleID, InsertTimeStamp, Active) ");
queryBuilder.AppendFormat("values ({0}, {1}, '{2}', 1);", userId, role.SubRoleID, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
queryBuilder.Append($"values ({userId}, {role.SubRoleID}, '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', 1);");
await _dalService.ExecuteAsync(queryBuilder.ToString());
}
@ -124,63 +136,155 @@ public class UserService : IUserService {
return true;
}
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to add delegated roles for OOO user {userId}. Exception: {ex}",
userId,
ex.Message);
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append($"An exception occurred when attempting to add delegated roles for OOO user {userId}. ");
errMsgBuilder.Append($"Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
throw;
}
}
public async Task<bool> UpdateUserSubRoles(int userId, int delegatedUserId) {
public async Task<bool> RemoveDelegatedRoles(int userId) {
try {
_logger.LogInformation("Attempting to update sub roles for user {userId} to delegated user {delegatedUserId}",
userId,
delegatedUserId);
_logger.LogInformation($"Attempting to remove delegated roles for OOO user {userId}");
if (userId <= 0) {
throw new ArgumentException(string.Format("User Id {0} is not a valid user Id", userId));
} else if (delegatedUserId <= 0) {
throw new ArgumentException(string.Format("Delegated user Id {0} is not a valid user Id", delegatedUserId));
throw new ArgumentException($"User Id {userId} is not a valid user Id");
} else {
string sql = String.Format("update UserSubRole set UserID = {0}, Delegated = 1 where UserID = {1}", delegatedUserId, userId);
string sql = $"update OOODelegatedRoles set Active = 0 where UserID = {userId} and Active = 1;";
await _dalService.ExecuteAsync(sql);
return true;
}
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to update sub roles for user {userId} to delegated user {delegatedUserId}. Exception: {ex}",
userId,
delegatedUserId,
ex.Message);
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append($"An exception occurred when attempting to remove delegated roles for OOO user {userId}. ");
errMsgBuilder.Append($"Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
throw;
}
}
public async Task<bool> DelegateUserSubRoles(int userId, int delegatedUserId) {
try {
StringBuilder logMsgBuilder = new();
logMsgBuilder.Append($"Attempting to update sub roles for user {userId} ");
logMsgBuilder.Append($"to delegated user {delegatedUserId}");
_logger.LogInformation(logMsgBuilder.ToString());
if (userId <= 0) {
throw new ArgumentException($"User Id {userId} is not a valid user Id");
} else if (delegatedUserId <= 0) {
throw new ArgumentException($"Delegated user Id {delegatedUserId} is not a valid user Id");
} else {
string sql = $"update UserSubRole set UserID = {delegatedUserId}, Delegated = 1 where UserID = {userId}";
await _dalService.ExecuteAsync(sql);
return true;
}
} catch (Exception ex) {
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append($"An exception occurred when attempting to update sub roles for user {userId} ");
errMsgBuilder.Append($"to delegated user {delegatedUserId}. Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
throw;
}
}
public async Task<bool> RemoveDelegatedUserSubRoles(int userId, int delegatedUserId) {
try {
_logger.LogInformation($"Attempting to remove delegated roles for OOO user {userId}");
if (userId <= 0) {
throw new ArgumentException($"User Id {userId} is not a valid user Id");
} else {
StringBuilder queryBuilder = new StringBuilder();
queryBuilder.Append("select SubRoleID from OOODelegatedRoles O inner join UserSubRole U ");
queryBuilder.Append("on O.DelegatedSubRoleID = U.UserSubRoleID ");
queryBuilder.Append($"where O.UserID = {userId} and Active = 1");
List<int> userSubRoleIds = (await _dalService.QueryAsync<int>(queryBuilder.ToString())).ToList();
foreach (int id in userSubRoleIds) {
queryBuilder.Clear();
queryBuilder.Append($"update UserSubRole set UserID = {userId}, Delegated = 0 ");
queryBuilder.Append($"where UserID = {delegatedUserId} and Delegated = 1 ");
queryBuilder.Append($"and SubRoleID in ({string.Join(',', userSubRoleIds)})");
await _dalService.ExecuteAsync(queryBuilder.ToString());
}
return true;
}
} catch (Exception ex) {
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append("An exception occurred when attempting to remove delegated roles for ");
errMsgBuilder.Append($"OOO user {userId}. Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
throw;
}
}
public async Task<bool> DelegateApprovalsForUser(int userId, int delegatedUserId) {
try {
_logger.LogInformation("Attempting to delegate approvals for user {userId} to delegated user {delegatedUserId}",
userId,
delegatedUserId);
_logger.LogInformation($"Attempting to delegate approvals for user {userId} to delegated user {delegatedUserId}");
if (userId <= 0) {
throw new ArgumentException(string.Format("User Id {0} is not a valid user Id", userId));
throw new ArgumentException($"User Id {userId} is not a valid user Id");
} else if (delegatedUserId <= 0) {
throw new ArgumentException(string.Format("Delegated user Id {0} is not a valid user Id", delegatedUserId));
throw new ArgumentException($"Delegated user Id {delegatedUserId} is not a valid user Id");
} else {
string sql = String.Format("update Approval set UserID = {0}, Delegated = 1 where UserID = {1} and (ItemStatus = {2} or ItemStatus = {3})",
delegatedUserId,
userId,
PENDING_ITEM_STATUS,
DENITED_ITEM_STATUS);
StringBuilder queryBuilder = new();
queryBuilder.Append($"update Approval set UserID = {delegatedUserId}, ");
queryBuilder.Append($"Delegated = 1 where UserID = {userId} ");
queryBuilder.Append($"and (ItemStatus = {PENDING_ITEM_STATUS} or ItemStatus = {DENITED_ITEM_STATUS})");
await _dalService.ExecuteAsync(sql);
await _dalService.ExecuteAsync(queryBuilder.ToString());
return true;
}
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to delegate approvals for user {userId} to delegated user {delegatedUserId}. Exception: {ex}",
userId,
delegatedUserId,
ex.Message);
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append($"An exception occurred when attempting to delegate approvals for user {userId} ");
errMsgBuilder.Append($"to delegated user {delegatedUserId}. Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
throw;
}
}
public async Task<bool> RemoveDelegatedApprovalsForUser(int userId, int delegatedUserId) {
try {
_logger.LogInformation($"Attempting to remove delegated roles for OOO user {userId}");
if (userId <= 0) {
throw new ArgumentException($"User Id {userId} is not a valid user Id");
} else {
StringBuilder queryBuilder = new StringBuilder();
queryBuilder.Append("select SubRoleID from OOODelegatedRoles O inner join UserSubRole U ");
queryBuilder.Append("on O.DelegatedSubRoleID = U.UserSubRoleID ");
queryBuilder.Append($"where O.UserID = {userId} and Active = 1");
List<int> userSubRoleIds = (await _dalService.QueryAsync<int>(queryBuilder.ToString())).ToList();
foreach (int id in userSubRoleIds) {
queryBuilder.Clear();
queryBuilder.Append($"update Approval set UserID = {userId}, Delegated = 0 ");
queryBuilder.Append($"where UserID = {delegatedUserId} and Delegated = 1 and ");
queryBuilder.Append($"(ItemStatus = {PENDING_ITEM_STATUS} or ItemStatus = {DENITED_ITEM_STATUS}) ");
queryBuilder.Append($"and SubRoleID in ({string.Join(',', userSubRoleIds)})");
await _dalService.ExecuteAsync(queryBuilder.ToString());
}
return true;
}
} catch (Exception ex) {
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append("An exception occurred when attempting to remove delegated roles ");
errMsgBuilder.Append($"for OOO user {userId}. Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
throw;
}
}
@ -189,19 +293,37 @@ public class UserService : IUserService {
try {
if (oooTemp is null) throw new ArgumentNullException("oooTemp cannot be null");
_logger.LogInformation("Attempting to flag user {id} as OOO", oooTemp.OOOUserID);
_logger.LogInformation($"Attempting to flag user {oooTemp.OOOUserID} as OOO");
StringBuilder queryBuilder = new StringBuilder();
queryBuilder.Append("update Users set OOO = 1, ");
queryBuilder.AppendFormat("OOOStartDate = '{0}', ", oooTemp.OOOStartDate);
queryBuilder.AppendFormat("OOOExpirationDate = '{0}', ", oooTemp.OOOExpirationDate);
queryBuilder.AppendFormat("DelegatedTo = {0} ", oooTemp.DelegatedTo);
queryBuilder.AppendFormat("where UserID = {0}", oooTemp.OOOUserID);
queryBuilder.Append($"OOOStartDate = '{oooTemp.OOOStartDate}', ");
queryBuilder.Append($"OOOExpirationDate = '{oooTemp.OOOExpirationDate}', ");
queryBuilder.Append($"DelegatedTo = {oooTemp.DelegatedTo} ");
queryBuilder.Append($"where UserID = {oooTemp.OOOUserID}");
return (await _dalService.ExecuteAsync(queryBuilder.ToString())) > 0;
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to flag user as OOO. Exception: {ex}",
ex.Message);
_logger.LogError($"An exception occurred when attempting to flag user as OOO. Exception: {ex.Message}");
throw;
}
}
public async Task<bool> RemoveOOOFlagForUser(int userId) {
try {
if (userId <= 0) throw new ArgumentException($"User Id {userId} is not a valid user Id");
_logger.LogInformation($"Attempting to remove OOO flag for user {userId}");
StringBuilder queryBuilder = new StringBuilder();
queryBuilder.Append("update Users set OOO = 0, ");
queryBuilder.Append("OOOStartDate = NULL, OOOExpirationDate = NULL, ");
queryBuilder.Append("DelegatedTo = NULL ");
queryBuilder.Append($"where UserID = {userId}");
return (await _dalService.ExecuteAsync(queryBuilder.ToString())) > 0;
} catch (Exception ex) {
_logger.LogError($"An exception occurred when attempting to flag user as OOO. Exception: {ex.Message}");
throw;
}
}
@ -210,14 +332,13 @@ public class UserService : IUserService {
try {
if (oooTemp is null) throw new ArgumentNullException("oooTemp cannot be null");
_logger.LogInformation("Attempting to set OOOTemp {id} Processed to {processed}", oooTemp.ID, oooTemp.Processed);
_logger.LogInformation($"Attempting to set OOOTemp {oooTemp.ID} Processed to {oooTemp.Processed}");
string sql = string.Format("update OOOTemp set Processed = {0} where ID = {1}", oooTemp.Processed, oooTemp.ID);
string sql = $"update OOOTemp set Processed = {oooTemp.Processed} where ID = {oooTemp.ID}";
return (await _dalService.ExecuteAsync(sql)) > 0;
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to flag user as OOO. Exception: {ex}",
ex.Message);
_logger.LogError($"An exception occurred when attempting to flag user as OOO. Exception: {ex.Message}");
throw;
}
}

View File

@ -5,11 +5,14 @@ create table Approval (
IssueID integer not null,
UserID integer not null,
ItemStatus integer default 0,
Delegated integer default 0
Delegated integer default 0,
SubRoleId integer not null
);
insert into Approval (IssueID, UserID)
values (1, 15),
(2, 34),
(3, 2),
(4, 19);
insert into Approval (IssueID, UserID, Delegated, SubRoleId)
values (1, 15, 0, 0),
(2, 34, 0, 0),
(3, 2, 0, 0),
(4, 19, 0, 0),
(5, 3, 1, 5),
(6, 4, 1, 2);

View File

@ -6,4 +6,8 @@ create table OOODelegatedRoles (
DelegatedSubRoleID integer not null,
InsertTimeStamp text not null,
Active integer default 0
);
);
insert into OOODelegatedRoles (UserID, DelegatedSubRoleID, InsertTimeStamp, Active)
values (1, 5, '2024-03-20 04:01:00', 1),
(2, 2, '2024-03-20 04:00:00', 1);

View File

@ -7,8 +7,10 @@ create table UserSubRole (
Delegated integer default 0
);
insert into UserSubRole (UserID, SubRoleID)
values (15, 1),
(34, 19),
(2, 5),
(19, 3);
insert into UserSubRole (UserID, SubRoleID, Delegated)
values (15, 1, 0),
(34, 19, 0),
(2, 5, 0),
(19, 3, 0),
(3, 5, 1),
(4, 2, 1);

View File

@ -23,51 +23,51 @@ create table Users (
IsActive INTEGER default 1
);
insert into Users (LoginID, FirstName, LastName, Email)
values ('AsRa', 'Ra', 'As', 'email'),
('AuTr', 'Tr', 'Au', 'email'),
('AyNi', 'Ni', 'Ay', 'email'),
('BaGr', 'Gr', 'Ba', 'email'),
('BaGu', 'Gu', 'Ba', 'email'),
('BeTo', 'To', 'Be', 'email'),
('BeBr', 'Br', 'Be', 'email'),
('BrKy', 'Ky', 'Br', 'email'),
('CaSh', 'Sh', 'Ca', 'email'),
('CaRe', 'Re', 'Ca', 'email'),
('CaSt', 'St', 'Ca', 'email'),
('ClNi', 'Ni', 'Cl', 'email'),
('DaMi', 'Mi', 'Da', 'email'),
('FuJe', 'Je', 'Fu', 'email'),
('GaAl', 'Al', 'Ga', 'email'),
('GoAs', 'As', 'Go', 'email'),
('GoRu', 'Ru', 'Go', 'email'),
('GoOr', 'Or', 'Go', 'email'),
('HaAn', 'An', 'Ha', 'email'),
('HaPa', 'Pa', 'Ha', 'email'),
('HoJu', 'Ju', 'Ho', 'email'),
('HoDe', 'De', 'Ho', 'email'),
('HoVi', 'Vi', 'Ho', 'email'),
('InCa', 'Ca', 'In', 'email'),
('JaMi', 'Mi', 'Ja', 'email'),
('LeTh', 'Th', 'Le', 'email'),
('LeHa', 'Ha', 'Le', 'email'),
('LoAn', 'An', 'Lo', 'email'),
('LoCh', 'Ch', 'Lo', 'email'),
('LuDa', 'Da', 'Lu', 'email'),
('MaBr', 'Br', 'Ma', 'email'),
('MaDa', 'Da', 'Ma', 'email'),
('MaDo', 'Do', 'Ma', 'email'),
('McJu', 'Ju', 'Mc', 'email'),
('MeGi', 'Gi', 'Me', 'email'),
('MiSh', 'Sh', 'Mi', 'email'),
('MoBa', 'Ba', 'Mo', 'email'),
('MuTi', 'Ti', 'Mu', 'email'),
('OtMa', 'Ma', 'Ot', 'email'),
('PeAl', 'Al', 'Pe', 'email'),
('RiCy', 'Cy', 'Ri', 'email'),
('RoAp', 'Ap', 'Ro', 'email'),
('SoAb', 'Ab', 'So', 'email'),
('VaMi', 'Mi', 'Va', 'email'),
('VuTh', 'Th', 'Va', 'email'),
('WeWi', 'Wi', 'We', 'email'),
('ZaNi', 'Ni', 'Za', 'email');
insert into Users (LoginID, FirstName, LastName, Email, OOO, OOOStartDate, OOOExpirationDate, DelegatedTo)
values ('AsRa', 'Ra', 'As', 'email', 1, '2024-01-01 00:00:00', '2024-02-01 00:00:00', 3),
('AuTr', 'Tr', 'Au', 'email', 1, '2024-01-01 00:00:00', '2024-02-01 00:00:00', 4),
('AyNi', 'Ni', 'Ay', 'email', 0, '', '', 0),
('BaGr', 'Gr', 'Ba', 'email', 0, '', '', 0),
('BaGu', 'Gu', 'Ba', 'email', 0, '', '', 0),
('BeTo', 'To', 'Be', 'email', 0, '', '', 0),
('BeBr', 'Br', 'Be', 'email', 0, '', '', 0),
('BrKy', 'Ky', 'Br', 'email', 0, '', '', 0),
('CaSh', 'Sh', 'Ca', 'email', 0, '', '', 0),
('CaRe', 'Re', 'Ca', 'email', 0, '', '', 0),
('CaSt', 'St', 'Ca', 'email', 0, '', '', 0),
('ClNi', 'Ni', 'Cl', 'email', 0, '', '', 0),
('DaMi', 'Mi', 'Da', 'email', 0, '', '', 0),
('FuJe', 'Je', 'Fu', 'email', 0, '', '', 0),
('GaAl', 'Al', 'Ga', 'email', 0, '', '', 0),
('GoAs', 'As', 'Go', 'email', 0, '', '', 0),
('GoRu', 'Ru', 'Go', 'email', 0, '', '', 0),
('GoOr', 'Or', 'Go', 'email', 0, '', '', 0),
('HaAn', 'An', 'Ha', 'email', 0, '', '', 0),
('HaPa', 'Pa', 'Ha', 'email', 0, '', '', 0),
('HoJu', 'Ju', 'Ho', 'email', 0, '', '', 0),
('HoDe', 'De', 'Ho', 'email', 0, '', '', 0),
('HoVi', 'Vi', 'Ho', 'email', 0, '', '', 0),
('InCa', 'Ca', 'In', 'email', 0, '', '', 0),
('JaMi', 'Mi', 'Ja', 'email', 0, '', '', 0),
('LeTh', 'Th', 'Le', 'email', 0, '', '', 0),
('LeHa', 'Ha', 'Le', 'email', 0, '', '', 0),
('LoAn', 'An', 'Lo', 'email', 0, '', '', 0),
('LoCh', 'Ch', 'Lo', 'email', 0, '', '', 0),
('LuDa', 'Da', 'Lu', 'email', 0, '', '', 0),
('MaBr', 'Br', 'Ma', 'email', 0, '', '', 0),
('MaDa', 'Da', 'Ma', 'email', 0, '', '', 0),
('MaDo', 'Do', 'Ma', 'email', 0, '', '', 0),
('McJu', 'Ju', 'Mc', 'email', 0, '', '', 0),
('MeGi', 'Gi', 'Me', 'email', 0, '', '', 0),
('MiSh', 'Sh', 'Mi', 'email', 0, '', '', 0),
('MoBa', 'Ba', 'Mo', 'email', 0, '', '', 0),
('MuTi', 'Ti', 'Mu', 'email', 0, '', '', 0),
('OtMa', 'Ma', 'Ot', 'email', 0, '', '', 0),
('PeAl', 'Al', 'Pe', 'email', 0, '', '', 0),
('RiCy', 'Cy', 'Ri', 'email', 0, '', '', 0),
('RoAp', 'Ap', 'Ro', 'email', 0, '', '', 0),
('SoAb', 'Ab', 'So', 'email', 0, '', '', 0),
('VaMi', 'Mi', 'Va', 'email', 0, '', '', 0),
('VuTh', 'Th', 'Va', 'email', 0, '', '', 0),
('WeWi', 'Wi', 'We', 'email', 0, '', '', 0),
('ZaNi', 'Ni', 'Za', 'email', 0, '', '', 0);

View File

@ -0,0 +1,79 @@
using FabApprovalWorkerService.Models;
using FabApprovalWorkerService.Services;
using Quartz;
using System.Text;
namespace FabApprovalWorkerService.Workers;
public sealed class ExpiredOOOStatusWorker : IJob {
private readonly ILogger<ExpiredOOOStatusWorker> _logger;
private readonly IMonInWorkerClient _monInClient;
private readonly IUserService _userService;
public ExpiredOOOStatusWorker(ILogger<ExpiredOOOStatusWorker> logger,
IMonInWorkerClient monInClient,
IUserService userService) {
_logger = logger;
if (_logger is null)
throw new ArgumentNullException("ILogger not injected");
_monInClient = monInClient;
if (_monInClient is null) {
throw new ArgumentNullException("IMonInWorkerClient not injected");
}
_userService = userService;
if (_userService is null)
throw new ArgumentNullException("IUserService not injected");
}
public async Task Execute(IJobExecutionContext context) {
DateTime start = DateTime.Now;
bool isInternalError = false;
StringBuilder errorMessage = new();
string metricName = "ExpiredOOOStatusWorker";
try {
_logger.LogInformation("Attempting to remove OOO status for users with OOO expired earlier than now");
List<User> expiredOOOUsers = await _userService.GetAllExpiredOOOUsersAsync();
foreach (User user in expiredOOOUsers) {
bool approvalsRemoved = await _userService.RemoveDelegatedApprovalsForUser(user.UserID, user.DelegatedTo);
bool subRolesRemoved = await _userService.RemoveDelegatedUserSubRoles(user.UserID, user.DelegatedTo);
bool rolesRemoved = await _userService.RemoveDelegatedRoles(user.UserID);
bool oooFlagRemoved = await _userService.RemoveOOOFlagForUser(user.UserID);
if (approvalsRemoved && subRolesRemoved && rolesRemoved && oooFlagRemoved) {
_logger.LogInformation("Successfully removed OOO status for users {id}", user.UserID);
} else {
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append($"An error occurred when attempting to remove OOO status for user {user.UserID}. ");
errMsgBuilder.Append($"Approvals removed: {approvalsRemoved}, ");
errMsgBuilder.Append($"sub roles removed: {subRolesRemoved}, ");
errMsgBuilder.Append($"roles removed: {rolesRemoved}, ");
errMsgBuilder.Append($"OOO flag removed: {oooFlagRemoved}");
throw new Exception(errMsgBuilder.ToString());
}
}
} catch (Exception ex) {
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append("An exception occurred when attempting to remove OOO status for users with OOO expired ");
errMsgBuilder.Append($"earlier than now. Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
isInternalError = true;
} finally {
DateTime end = DateTime.Now;
double latencyInMS = (end - start).TotalMilliseconds;
_monInClient.PostAverage(metricName + "Latency", latencyInMS);
if (isInternalError) {
_monInClient.PostStatus(metricName, StatusValue.Critical);
} else {
_monInClient.PostStatus(metricName, StatusValue.Ok);
}
}
}
}

View File

@ -47,7 +47,7 @@ public sealed class PendingOOOStatusWorker : IJob {
if (!userAlreadyOOO.Result && !delegateAlreadyADelegate.Result) {
List<Task> enableOOOTasks = new();
enableOOOTasks.Add(_userService.InsertDelegatedRoles(oooTemp.OOOUserID));
enableOOOTasks.Add(_userService.UpdateUserSubRoles(oooTemp.OOOUserID, oooTemp.DelegatedTo));
enableOOOTasks.Add(_userService.DelegateUserSubRoles(oooTemp.OOOUserID, oooTemp.DelegatedTo));
enableOOOTasks.Add(_userService.DelegateApprovalsForUser(oooTemp.OOOUserID, oooTemp.DelegatedTo));
Task enableOOOTasksResult = Task.WhenAll(enableOOOTasks);
@ -63,8 +63,10 @@ public sealed class PendingOOOStatusWorker : IJob {
_logger.LogInformation("Successfully set OOO status for users pending earlier than now");
} catch (Exception ex) {
_logger.LogError("An exception occurred when attempting to set OOO status for users pending earlier than now. Exception: {ex}",
ex.StackTrace);
StringBuilder errMsgBuilder = new();
errMsgBuilder.Append("An exception occurred when attempting to set OOO status for users ");
errMsgBuilder.Append($"pending earlier than now. Exception: {ex.Message}");
_logger.LogError(errMsgBuilder.ToString());
isInternalError = true;
} finally {
DateTime end = DateTime.Now;

View File

@ -1,12 +1,6 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionStrings": {
"Default": "Data Source=D:\\FabApprovalWorkerService\\LocalDb.db"
"Default": "Data Source=MESTSV02EC.infineon.com\\TEST1,50572;Integrated Security=False;Initial Catalog=FabApprovalSystem;User ID=fab_approval_admin_test;Password=Fab_approval_admin_test2023!;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False; Min Pool Size=15"
},
"MonIn": {
"resource": "FAB_APPROVAL_WORKER_SERVICE_MES_OP_FE_TEST",

View File

@ -1,11 +1,6 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionStrings": {
"Development": "Data Source=D:\\FabApprovalWorkerService\\LocalDb.db",
"Default": "Data Source=MESTSV02EC.infineon.com\\TEST1,50572;Integrated Security=False;Initial Catalog=FabApprovalSystem;User ID=fab_approval_admin_test;Password=Fab_approval_admin_test2023!;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False; Min Pool Size=15"
},
"MonIn": {

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<targets>
<target name="asyncFile" xsi:type="AsyncWrapper">
<target
name="appLog"
xsi:type="File"
fileName="d:\logs\FabApprovalWorkerService\log.txt"
archiveFilename="d:\logs\FabApprovalWorkerService\archive\log-${shortdate}.txt"
maxArchiveFiles="15"
archiveEvery="Day"
/>
<target
name="consoleLog"
xsi:type="Console"
/>
</target>
</targets>
<rules>
<logger name="Microsoft.*" finalMinLevel="Warn" />
<logger name="System.Net.Http.HttpClient.*" finalMinLevel="Warn" />
<logger name="*" minlevel="Debug" writeTo="consoleLog, appLog"/>
</rules>
</nlog>

View File

@ -7,6 +7,7 @@
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<Configurations>Debug;Release;Staging</Configurations>
</PropertyGroup>
<ItemGroup>

View File

@ -75,12 +75,15 @@ public class UserServiceTests {
[Test]
public async Task GetAllActiveOOOUsersShouldReturnMockUsers() {
//Arrange
_mockDalService.Setup(d => d.QueryAsync<User>(It.IsAny<string>())).Returns(Task.FromResult(MOCK_USERS));
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
List<User> users = await _userService.GetAllActiveOOOUsersAsync();
//Act
List<User> users = await _userService.GetAllExpiredOOOUsersAsync();
//Assert
Assert.True(users.Count() == 2);
}
@ -190,6 +193,8 @@ public class UserServiceTests {
bool actual = await _userService.InsertDelegatedRoles(2);
_mockDalService.Verify(d => d.ExecuteAsync(It.IsAny<string>()));
Assert.True(actual);
}
@ -197,14 +202,14 @@ public class UserServiceTests {
public async Task UpdateUserSubRolesWithInvalidUserIdShouldThrowException() {
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
Assert.ThrowsAsync<ArgumentException>(async Task () => await _userService.UpdateUserSubRoles(0, 2));
Assert.ThrowsAsync<ArgumentException>(async Task () => await _userService.DelegateUserSubRoles(0, 2));
}
[Test]
public async Task UpdateUserSubRolesWithInvalidDelegateIdShouldThrowException() {
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
Assert.ThrowsAsync<ArgumentException>(async Task () => await _userService.UpdateUserSubRoles(2, 0));
Assert.ThrowsAsync<ArgumentException>(async Task () => await _userService.DelegateUserSubRoles(2, 0));
}
[Test]
@ -213,7 +218,7 @@ public class UserServiceTests {
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
bool actual = await _userService.UpdateUserSubRoles(2, 2);
bool actual = await _userService.DelegateUserSubRoles(2, 2);
Assert.True(actual);
}

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -1,22 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("FabApprovalWorkerServiceTests")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+41a01fcf14d722e213eaf2f4276dc51abf548523")]
[assembly: System.Reflection.AssemblyProductAttribute("FabApprovalWorkerServiceTests")]
[assembly: System.Reflection.AssemblyTitleAttribute("FabApprovalWorkerServiceTests")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -1 +0,0 @@
75c2b1097039cb546952d31c667a6f7219b3389964d9ef7507f196c66b285367

View File

@ -1,13 +0,0 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = FabApprovalWorkerServiceTests
build_property.ProjectDir = C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -1,9 +0,0 @@
// <auto-generated/>
global using global::NUnit.Framework;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -1 +0,0 @@
f3f2243a4e208f9325cb6f491f2a25378b92b0b3ac41a00362bcb25b6464d732

View File

@ -1,162 +0,0 @@
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\CoverletSourceRootsMapping_FabApprovalWorkerServiceTests
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\testhost.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerService.deps.json
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerService.runtimeconfig.json
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\nLog.config
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\nLog.Development.config
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\appsettings.Development.json
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\appsettings.json
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerService.exe
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\testhost.exe
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\NUnit3.TestAdapter.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\NUnit3.TestAdapter.pdb
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\nunit.engine.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\nunit.engine.api.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\nunit.engine.core.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\testcentric.engine.metadata.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerServiceTests.deps.json
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerServiceTests.runtimeconfig.json
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerServiceTests.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerServiceTests.pdb
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Castle.Core.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\CsvHelper.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Dapper.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Dapper.Contrib.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.VisualStudio.CodeCoverage.Shim.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.Data.Sqlite.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.TestPlatform.CoreUtilities.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.TestPlatform.PlatformAbstractions.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.TestPlatform.CommunicationUtilities.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.TestPlatform.CrossPlatEngine.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.TestPlatform.Utilities.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.Common.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Microsoft.Win32.SystemEvents.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Moq.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Moq.Dapper.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Newtonsoft.Json.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\NLog.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\NLog.Extensions.Logging.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\NuGet.Frameworks.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\nunit.framework.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Quartz.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Quartz.Extensions.DependencyInjection.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\Quartz.Extensions.Hosting.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\SQLitePCLRaw.batteries_v2.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\SQLitePCLRaw.core.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\SQLitePCLRaw.provider.e_sqlite3.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\System.Configuration.ConfigurationManager.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\System.Data.SqlClient.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\System.Drawing.Common.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\System.Linq.Async.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\System.Security.Cryptography.ProtectedData.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\System.Security.Permissions.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\System.Windows.Extensions.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\de\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\es\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\it\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\de\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\de\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\es\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\es\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\it\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\it\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win\lib\net6.0\Microsoft.Win32.SystemEvents.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win-arm64\native\sni.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win-x64\native\sni.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win-x86\native\sni.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\browser-wasm\nativeassets\net8.0\e_sqlite3.a
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-arm\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-arm64\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-armel\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-mips64\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-musl-arm\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-musl-arm64\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-musl-x64\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-ppc64le\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-s390x\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-x64\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\linux-x86\native\libe_sqlite3.so
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\maccatalyst-arm64\native\libe_sqlite3.dylib
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\maccatalyst-x64\native\libe_sqlite3.dylib
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\osx-arm64\native\libe_sqlite3.dylib
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\osx-x64\native\libe_sqlite3.dylib
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win-arm\native\e_sqlite3.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win-arm64\native\e_sqlite3.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win-x64\native\e_sqlite3.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win-x86\native\e_sqlite3.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\unix\lib\netcoreapp2.1\System.Data.SqlClient.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\unix\lib\net6.0\System.Drawing.Common.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win\lib\net6.0\System.Drawing.Common.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win\lib\net6.0\System.Security.Cryptography.ProtectedData.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\runtimes\win\lib\net6.0\System.Windows.Extensions.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerService.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\bin\Debug\net8.0\FabApprovalWorkerService.pdb
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabApprovalWorkerServiceTests.csproj.AssemblyReference.cache
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabApprovalWorkerServiceTests.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabApprovalWorkerServiceTests.AssemblyInfoInputs.cache
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabApprovalWorkerServiceTests.AssemblyInfo.cs
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabApprovalWorkerServiceTests.csproj.CoreCompileInputs.cache
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabAppro.91826E7A.Up2Date
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabApprovalWorkerServiceTests.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\refint\FabApprovalWorkerServiceTests.dll
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabApprovalWorkerServiceTests.pdb
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\FabApprovalWorkerServiceTests.genruntimeconfig.cache
C:\Users\tuckerc\FabApprovalWorkerService\FabApprovalWorkerServiceTests\obj\Debug\net8.0\ref\FabApprovalWorkerServiceTests.dll

View File

@ -1 +0,0 @@
f6c7e1d55e38677710702cf08dbc3f87f0249ecc799ba1a4741f66dcc101f14e

View File

@ -1,219 +0,0 @@
{
"format": 1,
"restore": {
"C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerServiceTests\\FabApprovalWorkerServiceTests.csproj": {}
},
"projects": {
"C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerServiceTests\\FabApprovalWorkerServiceTests.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerServiceTests\\FabApprovalWorkerServiceTests.csproj",
"projectName": "FabApprovalWorkerServiceTests",
"projectPath": "C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerServiceTests\\FabApprovalWorkerServiceTests.csproj",
"packagesPath": "C:\\Users\\tuckerc\\.nuget\\packages\\",
"outputPath": "C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerServiceTests\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\tuckerc\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {},
"https://eaf-dev-reporting.mes.infineon.com/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerService\\FabApprovalWorkerService.csproj": {
"projectPath": "C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerService\\FabApprovalWorkerService.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.NET.Test.Sdk": {
"target": "Package",
"version": "[17.8.0, )"
},
"Moq": {
"target": "Package",
"version": "[4.20.70, )"
},
"Moq.Dapper": {
"target": "Package",
"version": "[1.0.7, )"
},
"NUnit": {
"target": "Package",
"version": "[3.14.0, )"
},
"NUnit.Analyzers": {
"target": "Package",
"version": "[3.9.0, )"
},
"NUnit3TestAdapter": {
"target": "Package",
"version": "[4.5.0, )"
},
"coverlet.collector": {
"target": "Package",
"version": "[6.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.201/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerService\\FabApprovalWorkerService.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerService\\FabApprovalWorkerService.csproj",
"projectName": "FabApprovalWorkerService",
"projectPath": "C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerService\\FabApprovalWorkerService.csproj",
"packagesPath": "C:\\Users\\tuckerc\\.nuget\\packages\\",
"outputPath": "C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerService\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\tuckerc\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {},
"https://eaf-dev-reporting.mes.infineon.com/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"CsvHelper": {
"target": "Package",
"version": "[31.0.0, )"
},
"Dapper": {
"target": "Package",
"version": "[2.1.28, )"
},
"Dapper.Contrib": {
"target": "Package",
"version": "[2.0.78, )"
},
"Microsoft.Data.Sqlite": {
"target": "Package",
"version": "[8.0.2, )"
},
"Microsoft.Extensions.DependencyInjection": {
"target": "Package",
"version": "[8.0.0, )"
},
"Microsoft.Extensions.Hosting": {
"target": "Package",
"version": "[8.0.0, )"
},
"NLog": {
"target": "Package",
"version": "[5.2.8, )"
},
"NLog.Extensions.Logging": {
"target": "Package",
"version": "[5.3.8, )"
},
"Quartz": {
"target": "Package",
"version": "[3.8.1, )"
},
"Quartz.Extensions.Hosting": {
"target": "Package",
"version": "[3.8.1, )"
},
"System.Data.SqlClient": {
"target": "Package",
"version": "[4.8.6, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.AspNetCore.App": {
"privateAssets": "none"
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.201/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\tuckerc\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.9.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\tuckerc\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)nunit3testadapter\4.5.0\build\netcoreapp3.1\NUnit3TestAdapter.props" Condition="Exists('$(NuGetPackageRoot)nunit3testadapter\4.5.0\build\netcoreapp3.1\NUnit3TestAdapter.props')" />
<Import Project="$(NuGetPackageRoot)nunit\3.14.0\build\NUnit.props" Condition="Exists('$(NuGetPackageRoot)nunit\3.14.0\build\NUnit.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.testplatform.testhost\17.8.0\build\netcoreapp3.1\Microsoft.TestPlatform.TestHost.props" Condition="Exists('$(NuGetPackageRoot)microsoft.testplatform.testhost\17.8.0\build\netcoreapp3.1\Microsoft.TestPlatform.TestHost.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.codecoverage\17.8.0\build\netstandard2.0\Microsoft.CodeCoverage.props" Condition="Exists('$(NuGetPackageRoot)microsoft.codecoverage\17.8.0\build\netstandard2.0\Microsoft.CodeCoverage.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.net.test.sdk\17.8.0\build\netcoreapp3.1\Microsoft.NET.Test.Sdk.props" Condition="Exists('$(NuGetPackageRoot)microsoft.net.test.sdk\17.8.0\build\netcoreapp3.1\Microsoft.NET.Test.Sdk.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Configuration.UserSecrets.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Configuration.UserSecrets.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgNUnit_Analyzers Condition=" '$(PkgNUnit_Analyzers)' == '' ">C:\Users\tuckerc\.nuget\packages\nunit.analyzers\3.9.0</PkgNUnit_Analyzers>
</PropertyGroup>
</Project>

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
<Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net8.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net8.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Options.targets')" />
<Import Project="$(NuGetPackageRoot)netstandard.library\2.0.0\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('$(NuGetPackageRoot)netstandard.library\2.0.0\build\netstandard2.0\NETStandard.Library.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.codecoverage\17.8.0\build\netstandard2.0\Microsoft.CodeCoverage.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codecoverage\17.8.0\build\netstandard2.0\Microsoft.CodeCoverage.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.net.test.sdk\17.8.0\build\netcoreapp3.1\Microsoft.NET.Test.Sdk.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.net.test.sdk\17.8.0\build\netcoreapp3.1\Microsoft.NET.Test.Sdk.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder\8.0.0\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder\8.0.0\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Configuration.UserSecrets.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets\8.0.0\buildTransitive\net6.0\Microsoft.Extensions.Configuration.UserSecrets.targets')" />
<Import Project="$(NuGetPackageRoot)coverlet.collector\6.0.0\build\netstandard1.0\coverlet.collector.targets" Condition="Exists('$(NuGetPackageRoot)coverlet.collector\6.0.0\build\netstandard1.0\coverlet.collector.targets')" />
</ImportGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -1,86 +0,0 @@
{
"version": 2,
"dgSpecHash": "EU1DVMVQy12vM/F7rMeJ+2FKrct8Jy96TsG3lJhOhMYq+h1EGhtKc5F4bowBmQptMKbBbhmhKtSmsM8n+o42cQ==",
"success": true,
"projectFilePath": "C:\\Users\\tuckerc\\FabApprovalWorkerService\\FabApprovalWorkerServiceTests\\FabApprovalWorkerServiceTests.csproj",
"expectedPackageFiles": [
"C:\\Users\\tuckerc\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\coverlet.collector\\6.0.0\\coverlet.collector.6.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\csvhelper\\31.0.0\\csvhelper.31.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\dapper\\2.1.28\\dapper.2.1.28.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\dapper.contrib\\2.0.78\\dapper.contrib.2.0.78.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.codecoverage\\17.8.0\\microsoft.codecoverage.17.8.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.data.sqlite\\8.0.2\\microsoft.data.sqlite.8.0.2.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.data.sqlite.core\\8.0.2\\microsoft.data.sqlite.core.8.0.2.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.configuration\\8.0.0\\microsoft.extensions.configuration.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.configuration.binder\\8.0.0\\microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.configuration.commandline\\8.0.0\\microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.configuration.environmentvariables\\8.0.0\\microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\8.0.0\\microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.configuration.json\\8.0.0\\microsoft.extensions.configuration.json.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\8.0.0\\microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.0\\microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.0\\microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.diagnostics\\8.0.0\\microsoft.extensions.diagnostics.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.0\\microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\8.0.0\\microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\8.0.0\\microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\8.0.0\\microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.hosting\\8.0.0\\microsoft.extensions.hosting.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\8.0.0\\microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.logging\\8.0.0\\microsoft.extensions.logging.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.0\\microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.logging.configuration\\8.0.0\\microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.logging.console\\8.0.0\\microsoft.extensions.logging.console.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.logging.debug\\8.0.0\\microsoft.extensions.logging.debug.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.logging.eventlog\\8.0.0\\microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.logging.eventsource\\8.0.0\\microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.options\\8.0.0\\microsoft.extensions.options.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.net.test.sdk\\17.8.0\\microsoft.net.test.sdk.17.8.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.8.0\\microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.testplatform.testhost\\17.8.0\\microsoft.testplatform.testhost.17.8.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.win32.registry\\4.7.0\\microsoft.win32.registry.4.7.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\microsoft.win32.systemevents\\6.0.0\\microsoft.win32.systemevents.6.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\moq\\4.20.70\\moq.4.20.70.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\moq.dapper\\1.0.7\\moq.dapper.1.0.7.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\netstandard.library\\2.0.0\\netstandard.library.2.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\nlog\\5.2.8\\nlog.5.2.8.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\nlog.extensions.logging\\5.3.8\\nlog.extensions.logging.5.3.8.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\nuget.frameworks\\6.5.0\\nuget.frameworks.6.5.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\nunit\\3.14.0\\nunit.3.14.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\nunit.analyzers\\3.9.0\\nunit.analyzers.3.9.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\nunit3testadapter\\4.5.0\\nunit3testadapter.4.5.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\quartz\\3.8.1\\quartz.3.8.1.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\quartz.extensions.dependencyinjection\\3.8.1\\quartz.extensions.dependencyinjection.3.8.1.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\quartz.extensions.hosting\\3.8.1\\quartz.extensions.hosting.3.8.1.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\runtime.native.system.data.sqlclient.sni\\4.7.0\\runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\runtime.win-x64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\runtime.win-x86.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlite3\\2.1.6\\sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\sqlitepclraw.core\\2.1.6\\sqlitepclraw.core.2.1.6.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\sqlitepclraw.lib.e_sqlite3\\2.1.6\\sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\sqlitepclraw.provider.e_sqlite3\\2.1.6\\sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.configuration.configurationmanager\\6.0.1\\system.configuration.configurationmanager.6.0.1.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.data.sqlclient\\4.8.6\\system.data.sqlclient.4.8.6.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.diagnostics.diagnosticsource\\8.0.0\\system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.0\\system.diagnostics.eventlog.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.drawing.common\\6.0.0\\system.drawing.common.6.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.linq.async\\4.0.0\\system.linq.async.4.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.reflection.metadata\\1.6.0\\system.reflection.metadata.1.6.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.security.accesscontrol\\6.0.0\\system.security.accesscontrol.6.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.security.cryptography.protecteddata\\6.0.0\\system.security.cryptography.protecteddata.6.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.security.permissions\\6.0.0\\system.security.permissions.6.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.security.principal.windows\\4.7.0\\system.security.principal.windows.4.7.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.text.json\\8.0.0\\system.text.json.8.0.0.nupkg.sha512",
"C:\\Users\\tuckerc\\.nuget\\packages\\system.windows.extensions\\6.0.0\\system.windows.extensions.6.0.0.nupkg.sha512"
],
"logs": []
}

View File

@ -1,20 +1,20 @@
# Introduction
TODO: Give a short introduction of your project. Let this section explain the objectives or the motivation behind this project.
# Getting Started
TODO: Guide users through getting your code up and running on their own system. In this section you can talk about:
1. Installation process
2. Software dependencies
3. Latest releases
4. API references
# Build and Test
TODO: Describe and show how to build your code and run the tests.
# Contribute
TODO: Explain how other users and developers can contribute to make your code better.
If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files:
- [ASP.NET Core](https://github.com/aspnet/Home)
- [Visual Studio Code](https://github.com/Microsoft/vscode)
# Introduction
TODO: Give a short introduction of your project. Let this section explain the objectives or the motivation behind this project.
# Getting Started
TODO: Guide users through getting your code up and running on their own system. In this section you can talk about:
1. Installation process
2. Software dependencies
3. Latest releases
4. API references
# Build and Test
TODO: Describe and show how to build your code and run the tests.
# Contribute
TODO: Explain how other users and developers can contribute to make your code better.
If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files:
- [ASP.NET Core](https://github.com/aspnet/Home)
- [Visual Studio Code](https://github.com/Microsoft/vscode)
- [Chakra Core](https://github.com/Microsoft/ChakraCore)