Compare commits
No commits in common. "22f7a9363de2b62ecec94d93022284a4d857d329" and "279d9af22c5ddb5f3ddf4cad063383be4e17b27f" have entirely different histories.
22f7a9363d
...
279d9af22c
@ -1,7 +0,0 @@
|
|||||||
ActiveAllocator__Database__Host=database
|
|
||||||
ActiveAllocator__Database__Port=5432
|
|
||||||
|
|
||||||
|
|
||||||
POSTGRES_PASSWORD=nqA3UV3CliLLHpLL
|
|
||||||
PGADMIN_DEFAULT_EMAIL=admin@admin.com
|
|
||||||
PGADMIN_DEFAULT_PASSWORD=3254
|
|
232
AAIntegration.SimmonsBank.API/.gitignore
vendored
232
AAIntegration.SimmonsBank.API/.gitignore
vendored
@ -1,232 +0,0 @@
|
|||||||
## Ignore Visual Studio temporary files, build results, and
|
|
||||||
## files generated by popular Visual Studio add-ons.
|
|
||||||
|
|
||||||
# User-specific files
|
|
||||||
*.suo
|
|
||||||
*.user
|
|
||||||
*.userosscache
|
|
||||||
*.sln.docstates
|
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
|
||||||
*.userprefs
|
|
||||||
|
|
||||||
# Build results
|
|
||||||
[Dd]ebug/
|
|
||||||
[Dd]ebugPublic/
|
|
||||||
[Rr]elease/
|
|
||||||
[Rr]eleases/
|
|
||||||
x64/
|
|
||||||
x86/
|
|
||||||
build/
|
|
||||||
bld/
|
|
||||||
bin/
|
|
||||||
Bin/
|
|
||||||
obj/
|
|
||||||
Obj/
|
|
||||||
|
|
||||||
# Visual Studio 2015 cache/options directory
|
|
||||||
.vs/
|
|
||||||
/wwwroot/dist/
|
|
||||||
|
|
||||||
# MSTest test Results
|
|
||||||
[Tt]est[Rr]esult*/
|
|
||||||
[Bb]uild[Ll]og.*
|
|
||||||
|
|
||||||
# NUNIT
|
|
||||||
*.VisualState.xml
|
|
||||||
TestResult.xml
|
|
||||||
|
|
||||||
# Build Results of an ATL Project
|
|
||||||
[Dd]ebugPS/
|
|
||||||
[Rr]eleasePS/
|
|
||||||
dlldata.c
|
|
||||||
|
|
||||||
*_i.c
|
|
||||||
*_p.c
|
|
||||||
*_i.h
|
|
||||||
*.ilk
|
|
||||||
*.meta
|
|
||||||
*.obj
|
|
||||||
*.pch
|
|
||||||
*.pdb
|
|
||||||
*.pgc
|
|
||||||
*.pgd
|
|
||||||
*.rsp
|
|
||||||
*.sbr
|
|
||||||
*.tlb
|
|
||||||
*.tli
|
|
||||||
*.tlh
|
|
||||||
*.tmp
|
|
||||||
*.tmp_proj
|
|
||||||
*.log
|
|
||||||
*.vspscc
|
|
||||||
*.vssscc
|
|
||||||
.builds
|
|
||||||
*.pidb
|
|
||||||
*.svclog
|
|
||||||
*.scc
|
|
||||||
|
|
||||||
# Chutzpah Test files
|
|
||||||
_Chutzpah*
|
|
||||||
|
|
||||||
# Visual C++ cache files
|
|
||||||
ipch/
|
|
||||||
*.aps
|
|
||||||
*.ncb
|
|
||||||
*.opendb
|
|
||||||
*.opensdf
|
|
||||||
*.sdf
|
|
||||||
*.cachefile
|
|
||||||
|
|
||||||
# Visual Studio profiler
|
|
||||||
*.psess
|
|
||||||
*.vsp
|
|
||||||
*.vspx
|
|
||||||
*.sap
|
|
||||||
|
|
||||||
# TFS 2012 Local Workspace
|
|
||||||
$tf/
|
|
||||||
|
|
||||||
# Guidance Automation Toolkit
|
|
||||||
*.gpState
|
|
||||||
|
|
||||||
# ReSharper is a .NET coding add-in
|
|
||||||
_ReSharper*/
|
|
||||||
*.[Rr]e[Ss]harper
|
|
||||||
*.DotSettings.user
|
|
||||||
|
|
||||||
# JustCode is a .NET coding add-in
|
|
||||||
.JustCode
|
|
||||||
|
|
||||||
# TeamCity is a build add-in
|
|
||||||
_TeamCity*
|
|
||||||
|
|
||||||
# DotCover is a Code Coverage Tool
|
|
||||||
*.dotCover
|
|
||||||
|
|
||||||
# NCrunch
|
|
||||||
_NCrunch_*
|
|
||||||
.*crunch*.local.xml
|
|
||||||
nCrunchTemp_*
|
|
||||||
|
|
||||||
# MightyMoose
|
|
||||||
*.mm.*
|
|
||||||
AutoTest.Net/
|
|
||||||
|
|
||||||
# Web workbench (sass)
|
|
||||||
.sass-cache/
|
|
||||||
|
|
||||||
# Installshield output folder
|
|
||||||
[Ee]xpress/
|
|
||||||
|
|
||||||
# DocProject is a documentation generator add-in
|
|
||||||
DocProject/buildhelp/
|
|
||||||
DocProject/Help/*.HxT
|
|
||||||
DocProject/Help/*.HxC
|
|
||||||
DocProject/Help/*.hhc
|
|
||||||
DocProject/Help/*.hhk
|
|
||||||
DocProject/Help/*.hhp
|
|
||||||
DocProject/Help/Html2
|
|
||||||
DocProject/Help/html
|
|
||||||
|
|
||||||
# Click-Once directory
|
|
||||||
publish/
|
|
||||||
|
|
||||||
# Publish Web Output
|
|
||||||
*.[Pp]ublish.xml
|
|
||||||
*.azurePubxml
|
|
||||||
# TODO: Comment the next line if you want to checkin your web deploy settings
|
|
||||||
# but database connection strings (with potential passwords) will be unencrypted
|
|
||||||
*.pubxml
|
|
||||||
*.publishproj
|
|
||||||
|
|
||||||
# NuGet Packages
|
|
||||||
*.nupkg
|
|
||||||
# The packages folder can be ignored because of Package Restore
|
|
||||||
**/packages/*
|
|
||||||
# except build/, which is used as an MSBuild target.
|
|
||||||
!**/packages/build/
|
|
||||||
# Uncomment if necessary however generally it will be regenerated when needed
|
|
||||||
#!**/packages/repositories.config
|
|
||||||
|
|
||||||
# Microsoft Azure Build Output
|
|
||||||
csx/
|
|
||||||
*.build.csdef
|
|
||||||
|
|
||||||
# Microsoft Azure Emulator
|
|
||||||
ecf/
|
|
||||||
rcf/
|
|
||||||
|
|
||||||
# Microsoft Azure ApplicationInsights config file
|
|
||||||
ApplicationInsights.config
|
|
||||||
|
|
||||||
# Windows Store app package directory
|
|
||||||
AppPackages/
|
|
||||||
BundleArtifacts/
|
|
||||||
|
|
||||||
# Visual Studio cache files
|
|
||||||
# files ending in .cache can be ignored
|
|
||||||
*.[Cc]ache
|
|
||||||
# but keep track of directories ending in .cache
|
|
||||||
!*.[Cc]ache/
|
|
||||||
|
|
||||||
# Others
|
|
||||||
ClientBin/
|
|
||||||
~$*
|
|
||||||
*~
|
|
||||||
*.dbmdl
|
|
||||||
*.dbproj.schemaview
|
|
||||||
*.pfx
|
|
||||||
*.publishsettings
|
|
||||||
orleans.codegen.cs
|
|
||||||
|
|
||||||
/node_modules
|
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
|
||||||
Generated_Code/
|
|
||||||
|
|
||||||
# Backup & report files from converting an old project file
|
|
||||||
# to a newer Visual Studio version. Backup files are not needed,
|
|
||||||
# because we have git ;-)
|
|
||||||
_UpgradeReport_Files/
|
|
||||||
Backup*/
|
|
||||||
UpgradeLog*.XML
|
|
||||||
UpgradeLog*.htm
|
|
||||||
|
|
||||||
# SQL Server files
|
|
||||||
*.mdf
|
|
||||||
*.ldf
|
|
||||||
|
|
||||||
# Business Intelligence projects
|
|
||||||
*.rdl.data
|
|
||||||
*.bim.layout
|
|
||||||
*.bim_*.settings
|
|
||||||
|
|
||||||
# Microsoft Fakes
|
|
||||||
FakesAssemblies/
|
|
||||||
|
|
||||||
# GhostDoc plugin setting file
|
|
||||||
*.GhostDoc.xml
|
|
||||||
|
|
||||||
# Node.js Tools for Visual Studio
|
|
||||||
.ntvs_analysis.dat
|
|
||||||
|
|
||||||
# Visual Studio 6 build log
|
|
||||||
*.plg
|
|
||||||
|
|
||||||
# Visual Studio 6 workspace options file
|
|
||||||
*.opt
|
|
||||||
|
|
||||||
# Visual Studio LightSwitch build output
|
|
||||||
**/*.HTMLClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/ModelManifest.xml
|
|
||||||
**/*.Server/GeneratedArtifacts
|
|
||||||
**/*.Server/ModelManifest.xml
|
|
||||||
_Pvt_Extensions
|
|
||||||
|
|
||||||
# Paket dependency manager
|
|
||||||
.paket/paket.exe
|
|
||||||
|
|
||||||
# FAKE - F# Make
|
|
||||||
.fake/
|
|
@ -3,35 +3,20 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<RootNamespace>AAIntegration.SimmonsBank.API</RootNamespace>
|
|
||||||
<IsPackable>false</IsPackable>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<ContainerImageName>ActiveAllocator-Integration-SimmonsBank</ContainerImageName>
|
|
||||||
<PublishProfile>DefaultContainer</PublishProfile>
|
|
||||||
<ContainerImageTags>1.0.0;latest</ContainerImageTags>
|
|
||||||
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="12.0.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Authorization" Version="7" />
|
||||||
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.15" />
|
||||||
<PackageReference Include="BCrypt.Net" Version="0.1.0" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.16" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7">
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
|
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.35.0" />
|
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="7" />
|
||||||
<PackageReference Include="Microsoft.NET.Build.Containers" Version="7.0.400" />
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7" />
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.8" />
|
|
||||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.4" />
|
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SpaProxy" Version="7.0.13" />
|
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.35.0" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Configs;
|
|
||||||
|
|
||||||
public class ActiveAllocatorConfig
|
|
||||||
{
|
|
||||||
DatabaseConfig Database { get; set; }
|
|
||||||
List<string> AllowedHosts { get; set; }
|
|
||||||
string APIUrl { get; set; }
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Config;
|
namespace AAIntegration.SimmonsBank.API.Configs;
|
||||||
|
|
||||||
public class AppSettings
|
public class AppSettings
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,6 @@ public class DatabaseConfig
|
|||||||
|
|
||||||
public string GetConnectionString()
|
public string GetConnectionString()
|
||||||
{
|
{
|
||||||
//Server=localhost;Port=15432;Database=aadb;User Id=postgres;Password=nqA3UV3CliLLHpLL"
|
|
||||||
return $"Server={Host};Port={Port};Database={Name};User Id={User};Password={Password}";
|
return $"Server={Host};Port={Port};Database={Name};User Id={User};Password={Password}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Configs;
|
|
||||||
|
|
||||||
public class EnvelopeFundConfig
|
|
||||||
{
|
|
||||||
public int CheckIntervalInMinutes { get; set; }
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Controllers;
|
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Accounts;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
|
|
||||||
[Authorize]
|
|
||||||
[ApiController]
|
|
||||||
[Route("[controller]")]
|
|
||||||
public class AccountsController : ControllerBase
|
|
||||||
{
|
|
||||||
private IAccountService _accountService;
|
|
||||||
private IMapper _mapper;
|
|
||||||
private readonly AppSettings _appSettings;
|
|
||||||
|
|
||||||
public AccountsController(
|
|
||||||
IAccountService accountService,
|
|
||||||
IMapper mapper,
|
|
||||||
IOptions<AppSettings> appSettings)
|
|
||||||
{
|
|
||||||
_accountService = accountService;
|
|
||||||
_mapper = mapper;
|
|
||||||
_appSettings = appSettings.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
public IActionResult GetAll()
|
|
||||||
{
|
|
||||||
List<AccountDTO> accountDtos = new List<AccountDTO>();
|
|
||||||
|
|
||||||
foreach (Account acc in _accountService.GetAll())
|
|
||||||
accountDtos.Add(_mapper.Map<Account, AccountDTO>(acc));
|
|
||||||
|
|
||||||
return Ok(accountDtos);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("{id}")]
|
|
||||||
public IActionResult GetById(int id)
|
|
||||||
{
|
|
||||||
Account account = _accountService.GetById(id);
|
|
||||||
return Ok(_mapper.Map<Account, AccountDTO>(account));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public IActionResult Create([FromBody]AccountCreateRequest model)
|
|
||||||
{
|
|
||||||
_accountService.Create(model);
|
|
||||||
return Ok(new { message = "account created" });
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPut("{id}")]
|
|
||||||
public IActionResult Update(int id, [FromBody]AccountUpdateRequest model)
|
|
||||||
{
|
|
||||||
_accountService.Update(id, model);
|
|
||||||
return Ok(new { message = "account updated" });
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpDelete("{id}")]
|
|
||||||
public IActionResult Delete(int id)
|
|
||||||
{
|
|
||||||
_accountService.Delete(id);
|
|
||||||
return Ok(new { message = "account deleted" });
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Controllers;
|
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Users;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using System;
|
|
||||||
using System.Security.Claims;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
|
|
||||||
[ApiController]
|
|
||||||
[Route("[controller]")]
|
|
||||||
public class AppInfoController : ControllerBase
|
|
||||||
{
|
|
||||||
private IVersionService _versionService;
|
|
||||||
|
|
||||||
public AppInfoController(
|
|
||||||
IVersionService versionService)
|
|
||||||
{
|
|
||||||
_versionService = versionService;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("ApplicationVersion")]
|
|
||||||
public IActionResult GetApplicationVersion()
|
|
||||||
{
|
|
||||||
string appVersion = _versionService.GetVersion();
|
|
||||||
|
|
||||||
return Ok(new { version = appVersion });
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,88 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Controllers;
|
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Transactions;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
|
|
||||||
[Authorize]
|
|
||||||
[ApiController]
|
|
||||||
[Route("[controller]")]
|
|
||||||
public class TransactionsController : ControllerBase
|
|
||||||
{
|
|
||||||
private ITransactionService _transactionService;
|
|
||||||
private IMapper _mapper;
|
|
||||||
private readonly AppSettings _appSettings;
|
|
||||||
|
|
||||||
public TransactionsController(
|
|
||||||
ITransactionService transactionService,
|
|
||||||
IMapper mapper,
|
|
||||||
IOptions<AppSettings> appSettings)
|
|
||||||
{
|
|
||||||
_transactionService = transactionService;
|
|
||||||
_mapper = mapper;
|
|
||||||
_appSettings = appSettings.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
public IActionResult GetAll(int? accountId = null)
|
|
||||||
{
|
|
||||||
List<TransactionDto> transactionDtos = new List<TransactionDto>();
|
|
||||||
|
|
||||||
foreach (Transaction tran in _transactionService.GetAll())
|
|
||||||
{
|
|
||||||
if (accountId.HasValue
|
|
||||||
&& (tran.DebitAccount == null || tran.DebitAccount.Id != accountId)
|
|
||||||
&& (tran.CreditAccount == null || tran.CreditAccount.Id != accountId))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
transactionDtos.Add(_mapper.Map<Transaction, TransactionDto>(tran));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sort by Date
|
|
||||||
transactionDtos.Sort((t1, t2) => t2.Date.CompareTo(t1.Date));
|
|
||||||
|
|
||||||
return Ok(transactionDtos);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("{id}")]
|
|
||||||
public IActionResult GetById(int id)
|
|
||||||
{
|
|
||||||
Transaction tran = _transactionService.GetById(id);
|
|
||||||
return Ok(_mapper.Map<Transaction, TransactionDto>(tran));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("BulkAdd")]
|
|
||||||
public IActionResult BulkCreate([FromBody]List<TransactionCreate> model)
|
|
||||||
{
|
|
||||||
List<Transaction> trans = _transactionService.BulkCreate(model).ToList();
|
|
||||||
return Ok(new { message = $"{trans.Count()} transaction(s) created." });
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public IActionResult Create([FromBody]TransactionCreate model)
|
|
||||||
{
|
|
||||||
Transaction tran = _transactionService.Create(model);
|
|
||||||
return Ok(new { message = $"transaction '{tran.Description}' created with id '{tran.Id}'." });
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPut("{id}")]
|
|
||||||
public IActionResult Update(int id, [FromBody]TransactionUpdateRequest model)
|
|
||||||
{
|
|
||||||
_transactionService.Update(id, model);
|
|
||||||
return Ok(new { message = $"transaction with id '{id}' updated" });
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpDelete("{id}")]
|
|
||||||
public IActionResult Delete(int id)
|
|
||||||
{
|
|
||||||
_transactionService.Delete(id);
|
|
||||||
return Ok(new { message = "transaction deleted" });
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Controllers;
|
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Users;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using System;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using System.Security.Claims;
|
|
||||||
|
|
||||||
[ApiController]
|
|
||||||
[Route("[controller]")]
|
|
||||||
public class UsersController : ControllerBase
|
|
||||||
{
|
|
||||||
private IUserService _userService;
|
|
||||||
private IMapper _mapper;
|
|
||||||
private readonly AppSettings _appSettings;
|
|
||||||
private readonly ILogger<UsersController> _logger;
|
|
||||||
|
|
||||||
public UsersController(
|
|
||||||
IUserService userService,
|
|
||||||
IMapper mapper,
|
|
||||||
IOptions<AppSettings> appSettings,
|
|
||||||
ILogger<UsersController> logger)
|
|
||||||
{
|
|
||||||
_userService = userService;
|
|
||||||
_mapper = mapper;
|
|
||||||
_appSettings = appSettings.Value;
|
|
||||||
_logger = logger;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("register")]
|
|
||||||
public IActionResult Register(UserCreateRequest model)
|
|
||||||
{
|
|
||||||
string apiKey = _userService.Create(model);
|
|
||||||
return Ok(new { ApiKey = apiKey });
|
|
||||||
}
|
|
||||||
|
|
||||||
[Authorize]
|
|
||||||
[HttpPut("{id}")]
|
|
||||||
public IActionResult Update([FromBody]UserUpdateRequest model)
|
|
||||||
{
|
|
||||||
_userService.Update(this.GetCurrentUserApiKey(), model);
|
|
||||||
return Ok(new { message = "User updated" });
|
|
||||||
}
|
|
||||||
|
|
||||||
[Authorize]
|
|
||||||
[HttpDelete("{id}")]
|
|
||||||
public IActionResult Delete(int id)
|
|
||||||
{
|
|
||||||
_userService.Delete(this.GetCurrentUserApiKey());
|
|
||||||
return Ok(new { message = "User deleted" });
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helpers
|
|
||||||
|
|
||||||
private string GetCurrentUserApiKey()
|
|
||||||
{
|
|
||||||
string apiKey = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
||||||
|
|
||||||
if (apiKey is null)
|
|
||||||
_logger.LogInformation($"ApiKey: is null");
|
|
||||||
|
|
||||||
_logger.LogInformation($"apiKey: {apiKey}");
|
|
||||||
Console.WriteLine($"User Id: " + apiKey);
|
|
||||||
|
|
||||||
return apiKey;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,32 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
namespace AAIntegration.SimmonsBank.API.Controllers;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("[controller]")]
|
||||||
|
public class WeatherForecastController : ControllerBase
|
||||||
|
{
|
||||||
|
private static readonly string[] Summaries = new[]
|
||||||
|
{
|
||||||
|
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly ILogger<WeatherForecastController> _logger;
|
||||||
|
|
||||||
|
public WeatherForecastController(ILogger<WeatherForecastController> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet(Name = "GetWeatherForecast")]
|
||||||
|
public IEnumerable<WeatherForecast> Get()
|
||||||
|
{
|
||||||
|
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
||||||
|
{
|
||||||
|
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
|
||||||
|
TemperatureC = Random.Shared.Next(-20, 55),
|
||||||
|
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
|
||||||
|
})
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +0,0 @@
|
|||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
|
|
||||||
public class Account
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
public string Name { get; set; }
|
|
||||||
public decimal Balance { get; set; }
|
|
||||||
public string ExternalAccountNumber { get; set; }
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
|
|
||||||
public class Transaction
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
public DateTime Date { get; set; }
|
|
||||||
public DateTime CreatedOn { get; set; }
|
|
||||||
public DateTime UpdatedOn { get; set; }
|
|
||||||
public string ExternalId { get; set; }
|
|
||||||
public string Description { get; set; }
|
|
||||||
public Account? DebitAccount { get; set; }
|
|
||||||
public Account? CreditAccount { get; set; }
|
|
||||||
public decimal Amount { get; set; }
|
|
||||||
public bool IsPending { get; set; }
|
|
||||||
}
|
|
@ -1,5 +1,3 @@
|
|||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Entities;
|
namespace AAIntegration.SimmonsBank.API.Entities;
|
||||||
|
|
||||||
public class User
|
public class User
|
||||||
@ -9,5 +7,4 @@ public class User
|
|||||||
public string SimmonsBankUsername { get; set; }
|
public string SimmonsBankUsername { get; set; }
|
||||||
public string SimmonsBankPassword { get; set; }
|
public string SimmonsBankPassword { get; set; }
|
||||||
public string MFAKey { get; set; }
|
public string MFAKey { get; set; }
|
||||||
|
|
||||||
}
|
}
|
@ -1,12 +0,0 @@
|
|||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Enums;
|
|
||||||
|
|
||||||
public enum HistoricStatistic
|
|
||||||
{
|
|
||||||
Mean,
|
|
||||||
Median,
|
|
||||||
Mode,
|
|
||||||
Minimum,
|
|
||||||
Maximum,
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Enums;
|
|
||||||
|
|
||||||
public enum OperationMode
|
|
||||||
{
|
|
||||||
Historic,
|
|
||||||
Absolute,
|
|
||||||
Percentage,
|
|
||||||
}
|
|
@ -2,10 +2,10 @@ namespace AAIntegration.SimmonsBank.API.Handlers;
|
|||||||
|
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
using System.Text.Encodings.Web;
|
using System.Text.Encodings.Web;
|
||||||
using AAIntegration.SimmonsBank.API.Configs;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using AAIntegration.SimmonsBank.API.Services;
|
||||||
|
using AAIntegration.SimmonsBank.API.Configs;
|
||||||
|
|
||||||
public class ApiKeyAuthenticationHandler : AuthenticationHandler<ApiKeyAuthenticationOptions>
|
public class ApiKeyAuthenticationHandler : AuthenticationHandler<ApiKeyAuthenticationOptions>
|
||||||
{
|
{
|
||||||
@ -42,8 +42,9 @@ public class ApiKeyAuthenticationHandler : AuthenticationHandler<ApiKeyAuthentic
|
|||||||
}
|
}
|
||||||
|
|
||||||
_logger.BeginScope("{ClientId}", clientId);
|
_logger.BeginScope("{ClientId}", clientId);
|
||||||
|
_logger.LogInformation($"Client '{clientId}' authenticated with API Key");
|
||||||
|
|
||||||
var claims = new[] { new Claim(ClaimTypes.NameIdentifier, apiKey.ToString()) };
|
var claims = new[] { new Claim(ClaimTypes.Name, clientId.ToString()) };
|
||||||
var identity = new ClaimsIdentity(claims, ApiKeyAuthenticationOptions.DefaultScheme);
|
var identity = new ClaimsIdentity(claims, ApiKeyAuthenticationOptions.DefaultScheme);
|
||||||
var identities = new List<ClaimsIdentity> { identity };
|
var identities = new List<ClaimsIdentity> { identity };
|
||||||
var principal = new ClaimsPrincipal(identities);
|
var principal = new ClaimsPrincipal(identities);
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Config;
|
|
||||||
|
|
||||||
using System.Globalization;
|
|
||||||
|
|
||||||
// custom exception class for throwing application specific exceptions (e.g. for validation)
|
|
||||||
// that can be caught and handled within the application
|
|
||||||
public class AppException : Exception
|
|
||||||
{
|
|
||||||
public AppException() : base() {}
|
|
||||||
|
|
||||||
public AppException(string message) : base(message) { }
|
|
||||||
|
|
||||||
public AppException(string message, params object[] args)
|
|
||||||
: base(String.Format(CultureInfo.CurrentCulture, message, args))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Config;
|
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Users;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Accounts;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
using System.Runtime.Serialization;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Transactions;
|
|
||||||
|
|
||||||
public class AutoMapperProfile : Profile
|
|
||||||
{
|
|
||||||
|
|
||||||
public AutoMapperProfile()
|
|
||||||
{ // UserUpdateRequest -> User
|
|
||||||
CreateMap<UserUpdateRequest, User>()
|
|
||||||
.ForAllMembers(x => x.Condition(
|
|
||||||
(src, dest, prop) =>
|
|
||||||
{
|
|
||||||
// ignore both null & empty string properties
|
|
||||||
if (prop == null) return false;
|
|
||||||
if (prop.GetType() == typeof(string) && string.IsNullOrEmpty((string)prop)) return false;
|
|
||||||
// ignore null password
|
|
||||||
if (x.DestinationMember.Name == "Password" && src.Password == null) return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
// AccountUpdateRequest -> Account
|
|
||||||
CreateMap<AccountUpdateRequest, Account>();
|
|
||||||
|
|
||||||
// AccountCreateRequest -> Account
|
|
||||||
CreateMap<AccountCreateRequest, Account>();
|
|
||||||
/*.ForMember(
|
|
||||||
dest => dest.OwnerId,
|
|
||||||
opt => opt.MapFrom(src => src.Owner)
|
|
||||||
);
|
|
||||||
/*.ForAllMembers(x => x.Condition(
|
|
||||||
(src, dest, prop) =>
|
|
||||||
{
|
|
||||||
// ignore both null & empty string properties
|
|
||||||
if (prop == null) return false;
|
|
||||||
if (prop.GetType() == typeof(string) && string.IsNullOrEmpty((string)prop)) return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
))*/
|
|
||||||
|
|
||||||
// Account -> AccountGet
|
|
||||||
CreateMap<Account, AccountDTO>()
|
|
||||||
.ForAllMembers(x => x.Condition(
|
|
||||||
(src, dest, prop) =>
|
|
||||||
{
|
|
||||||
// ignore both null & empty string properties
|
|
||||||
if (prop == null) return false;
|
|
||||||
if (prop.GetType() == typeof(string) && string.IsNullOrEmpty((string)prop)) return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
|
|
||||||
// Transaction -> TransactionDto
|
|
||||||
CreateMap<Transaction, TransactionDto>()
|
|
||||||
.ForMember(dest => dest.DebitAccountId, opt => opt.MapFrom(src => src.DebitAccount.Id))
|
|
||||||
.ForMember(dest => dest.CreditAccountId, opt => opt.MapFrom(src => src.CreditAccount.Id))
|
|
||||||
.ForAllMembers(x => x.Condition(
|
|
||||||
(src, dest, prop) =>
|
|
||||||
{
|
|
||||||
// ignore both null & empty string properties
|
|
||||||
if (prop == null) return false;
|
|
||||||
if (prop.GetType() == typeof(string) && string.IsNullOrEmpty((string)prop)) return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +1,10 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Config;
|
namespace AAIntegration.SimmonsBank.API.Helpers;
|
||||||
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
using AAIntegration.SimmonsBank.API.Entities;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Internal;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
@ -31,6 +30,4 @@ public class DataContext : DbContext
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
public DbSet<User> Users { get; set; }
|
public DbSet<User> Users { get; set; }
|
||||||
public DbSet<Account> Accounts { get; set; }
|
|
||||||
public DbSet<Transaction> Transactions { get; set; }
|
|
||||||
}
|
}
|
@ -1,54 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Config;
|
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Http;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Net;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
public class ErrorHandlerMiddleware
|
|
||||||
{
|
|
||||||
private readonly RequestDelegate _next;
|
|
||||||
private readonly ILogger _logger;
|
|
||||||
|
|
||||||
public ErrorHandlerMiddleware(RequestDelegate next, ILogger<ErrorHandlerMiddleware> logger)
|
|
||||||
{
|
|
||||||
_next = next;
|
|
||||||
_logger = logger;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task Invoke(HttpContext context)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await _next(context);
|
|
||||||
}
|
|
||||||
catch (Exception error)
|
|
||||||
{
|
|
||||||
var response = context.Response;
|
|
||||||
response.ContentType = "application/json";
|
|
||||||
|
|
||||||
switch (error)
|
|
||||||
{
|
|
||||||
case AppException e:
|
|
||||||
// custom application error
|
|
||||||
response.StatusCode = (int)HttpStatusCode.BadRequest;
|
|
||||||
break;
|
|
||||||
case KeyNotFoundException e:
|
|
||||||
// not found error
|
|
||||||
response.StatusCode = (int)HttpStatusCode.NotFound;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// unhandled error
|
|
||||||
_logger.LogError(error, error.Message);
|
|
||||||
response.StatusCode = (int)HttpStatusCode.InternalServerError;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
var result = JsonSerializer.Serialize(new { message = error?.Message });
|
|
||||||
await response.WriteAsync(result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,144 +0,0 @@
|
|||||||
// <auto-generated />
|
|
||||||
using System;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
|
||||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Migrations
|
|
||||||
{
|
|
||||||
[DbContext(typeof(DataContext))]
|
|
||||||
[Migration("20240320021418_InitialCreate")]
|
|
||||||
partial class InitialCreate
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
|
||||||
{
|
|
||||||
#pragma warning disable 612, 618
|
|
||||||
modelBuilder
|
|
||||||
.HasAnnotation("ProductVersion", "7.0.9")
|
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
|
||||||
|
|
||||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
|
||||||
|
|
||||||
modelBuilder.Entity("AAIntegration.SimmonsBank.API.Entities.Account", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<decimal>("Balance")
|
|
||||||
.HasColumnType("numeric");
|
|
||||||
|
|
||||||
b.Property<string>("ExternalAccountNumber")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("Name")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("Accounts");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("AAIntegration.SimmonsBank.API.Entities.Transaction", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<decimal>("Amount")
|
|
||||||
.HasColumnType("numeric");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreatedOn")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.Property<int?>("CreditAccountId")
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
b.Property<DateTime>("Date")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.Property<int?>("DebitAccountId")
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
b.Property<string>("Description")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("ExternalId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<bool>("IsPending")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.Property<DateTime>("UpdatedOn")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("CreditAccountId");
|
|
||||||
|
|
||||||
b.HasIndex("DebitAccountId");
|
|
||||||
|
|
||||||
b.ToTable("Transactions");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("AAIntegration.SimmonsBank.API.Entities.User", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<string>("ApiKey")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("MFAKey")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("SimmonsBankPassword")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("SimmonsBankUsername")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("Users");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("AAIntegration.SimmonsBank.API.Entities.Transaction", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("AAIntegration.SimmonsBank.API.Entities.Account", "CreditAccount")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("CreditAccountId");
|
|
||||||
|
|
||||||
b.HasOne("AAIntegration.SimmonsBank.API.Entities.Account", "DebitAccount")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("DebitAccountId");
|
|
||||||
|
|
||||||
b.Navigation("CreditAccount");
|
|
||||||
|
|
||||||
b.Navigation("DebitAccount");
|
|
||||||
});
|
|
||||||
#pragma warning restore 612, 618
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,101 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class InitialCreate : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "Accounts",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<int>(type: "integer", nullable: false)
|
|
||||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
||||||
Name = table.Column<string>(type: "text", nullable: false),
|
|
||||||
Balance = table.Column<decimal>(type: "numeric", nullable: false),
|
|
||||||
ExternalAccountNumber = table.Column<string>(type: "text", nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_Accounts", x => x.Id);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "Users",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<int>(type: "integer", nullable: false)
|
|
||||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
||||||
ApiKey = table.Column<string>(type: "text", nullable: false),
|
|
||||||
SimmonsBankUsername = table.Column<string>(type: "text", nullable: false),
|
|
||||||
SimmonsBankPassword = table.Column<string>(type: "text", nullable: false),
|
|
||||||
MFAKey = table.Column<string>(type: "text", nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_Users", x => x.Id);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "Transactions",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<int>(type: "integer", nullable: false)
|
|
||||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
||||||
Date = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
||||||
CreatedOn = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
||||||
UpdatedOn = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
||||||
ExternalId = table.Column<string>(type: "text", nullable: false),
|
|
||||||
Description = table.Column<string>(type: "text", nullable: false),
|
|
||||||
DebitAccountId = table.Column<int>(type: "integer", nullable: true),
|
|
||||||
CreditAccountId = table.Column<int>(type: "integer", nullable: true),
|
|
||||||
Amount = table.Column<decimal>(type: "numeric", nullable: false),
|
|
||||||
IsPending = table.Column<bool>(type: "boolean", nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_Transactions", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_Transactions_Accounts_CreditAccountId",
|
|
||||||
column: x => x.CreditAccountId,
|
|
||||||
principalTable: "Accounts",
|
|
||||||
principalColumn: "Id");
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_Transactions_Accounts_DebitAccountId",
|
|
||||||
column: x => x.DebitAccountId,
|
|
||||||
principalTable: "Accounts",
|
|
||||||
principalColumn: "Id");
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Transactions_CreditAccountId",
|
|
||||||
table: "Transactions",
|
|
||||||
column: "CreditAccountId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Transactions_DebitAccountId",
|
|
||||||
table: "Transactions",
|
|
||||||
column: "DebitAccountId");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "Transactions");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "Users");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "Accounts");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,141 +0,0 @@
|
|||||||
// <auto-generated />
|
|
||||||
using System;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
||||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
|
||||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Migrations
|
|
||||||
{
|
|
||||||
[DbContext(typeof(DataContext))]
|
|
||||||
partial class DataContextModelSnapshot : ModelSnapshot
|
|
||||||
{
|
|
||||||
protected override void BuildModel(ModelBuilder modelBuilder)
|
|
||||||
{
|
|
||||||
#pragma warning disable 612, 618
|
|
||||||
modelBuilder
|
|
||||||
.HasAnnotation("ProductVersion", "7.0.9")
|
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
|
||||||
|
|
||||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
|
||||||
|
|
||||||
modelBuilder.Entity("AAIntegration.SimmonsBank.API.Entities.Account", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<decimal>("Balance")
|
|
||||||
.HasColumnType("numeric");
|
|
||||||
|
|
||||||
b.Property<string>("ExternalAccountNumber")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("Name")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("Accounts");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("AAIntegration.SimmonsBank.API.Entities.Transaction", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<decimal>("Amount")
|
|
||||||
.HasColumnType("numeric");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreatedOn")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.Property<int?>("CreditAccountId")
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
b.Property<DateTime>("Date")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.Property<int?>("DebitAccountId")
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
b.Property<string>("Description")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("ExternalId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<bool>("IsPending")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.Property<DateTime>("UpdatedOn")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("CreditAccountId");
|
|
||||||
|
|
||||||
b.HasIndex("DebitAccountId");
|
|
||||||
|
|
||||||
b.ToTable("Transactions");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("AAIntegration.SimmonsBank.API.Entities.User", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<string>("ApiKey")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("MFAKey")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("SimmonsBankPassword")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.Property<string>("SimmonsBankUsername")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("Users");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("AAIntegration.SimmonsBank.API.Entities.Transaction", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("AAIntegration.SimmonsBank.API.Entities.Account", "CreditAccount")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("CreditAccountId");
|
|
||||||
|
|
||||||
b.HasOne("AAIntegration.SimmonsBank.API.Entities.Account", "DebitAccount")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("DebitAccountId");
|
|
||||||
|
|
||||||
b.Navigation("CreditAccount");
|
|
||||||
|
|
||||||
b.Navigation("DebitAccount");
|
|
||||||
});
|
|
||||||
#pragma warning restore 612, 618
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Models.Accounts;
|
|
||||||
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
|
|
||||||
public class AccountCreateRequest
|
|
||||||
{
|
|
||||||
public string Name { get; set; }
|
|
||||||
public string InitialBalance { get; set; }
|
|
||||||
public int Currency { get; set; }
|
|
||||||
public string ExternalAccountNumber { get; set; }
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Models.Accounts;
|
|
||||||
|
|
||||||
public class AccountDTO
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
public string Name { get; set; }
|
|
||||||
public decimal Balance { get; set; }
|
|
||||||
public string ExternalAccountNumber { get; set; }
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Models.Accounts;
|
|
||||||
|
|
||||||
public class AccountUpdateRequest
|
|
||||||
{
|
|
||||||
public string? Name { get; set; } = null;
|
|
||||||
public string? Balance { get; set; } = null;
|
|
||||||
public string? ExternalAccountNumber { get; set; } = null;
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Runtime;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Models.Transactions;
|
|
||||||
|
|
||||||
public class TransactionCreate
|
|
||||||
{
|
|
||||||
public DateTime Date { get; set; }
|
|
||||||
public string ExternalId { get; set; }
|
|
||||||
public string Description { get; set; }
|
|
||||||
public int? DebitAccount { get; set; }
|
|
||||||
public int? CreditAccount { get; set; }
|
|
||||||
public decimal Amount { get; set; }
|
|
||||||
public bool IsPending { get; set; }
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Runtime;
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Models.Transactions;
|
|
||||||
|
|
||||||
public class TransactionDto
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
public DateTime Date { get; set; }
|
|
||||||
public DateTime CreatedOn { get; set; }
|
|
||||||
public DateTime UpdatedOn { get; set; }
|
|
||||||
public string ExternalId { get; set; }
|
|
||||||
public string Description { get; set; }
|
|
||||||
public int DebitAccountId { get; set; }
|
|
||||||
public int CreditAccountId { get; set; }
|
|
||||||
public decimal Amount { get; set; }
|
|
||||||
public bool IsPending { get; set; }
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
|
|
||||||
namespace AAIntegration.SimmonsBank.API.Models.Transactions;
|
|
||||||
|
|
||||||
public class TransactionUpdateRequest
|
|
||||||
{
|
|
||||||
public DateTime? Date { get; set; } = null;
|
|
||||||
public string? ExternalId { get; set; } = null;
|
|
||||||
public string? Description { get; set; } = null;
|
|
||||||
public int? DebitAccount { get; set; } = null;
|
|
||||||
public int? CreditAccount { get; set; } = null;
|
|
||||||
public decimal? Amount { get; set; } = null;
|
|
||||||
public bool? IsPending { get; set; } = null;
|
|
||||||
}
|
|
@ -5,5 +5,4 @@ public class UserUpdateRequest
|
|||||||
public string? Username { get; set; } = null;
|
public string? Username { get; set; } = null;
|
||||||
public string? Password { get; set; } = null;
|
public string? Password { get; set; } = null;
|
||||||
public string? MFAKey { get; set; } = null;
|
public string? MFAKey { get; set; } = null;
|
||||||
|
|
||||||
}
|
}
|
@ -1,16 +1,9 @@
|
|||||||
//using AAIntegration.SimmonsBank.API.Authorization;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
|
|
||||||
using AAIntegration.SimmonsBank.API.Services;
|
|
||||||
using Microsoft.OpenApi.Models;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
using AAIntegration.SimmonsBank.API.Configs;
|
using AAIntegration.SimmonsBank.API.Configs;
|
||||||
using AAIntegration.SimmonsBank.API.Handlers;
|
using AAIntegration.SimmonsBank.API.Handlers;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using AAIntegration.SimmonsBank.API.Helpers;
|
||||||
using System.Text;
|
using AAIntegration.SimmonsBank.API.Services;
|
||||||
//using Microsoft.Build.Framework;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
internal class Program
|
internal class Program
|
||||||
{
|
{
|
||||||
@ -19,23 +12,6 @@ internal class Program
|
|||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
|
|
||||||
|
|
||||||
builder.Services.AddCors(options =>
|
|
||||||
{
|
|
||||||
options.AddPolicy("ClientPermission", policy =>
|
|
||||||
{
|
|
||||||
policy.AllowAnyHeader()
|
|
||||||
.AllowAnyMethod()
|
|
||||||
.SetIsOriginAllowed(_ => true)
|
|
||||||
.AllowCredentials();
|
|
||||||
});
|
|
||||||
|
|
||||||
options.AddPolicy(name: MyAllowSpecificOrigins, policy =>
|
|
||||||
{
|
|
||||||
policy.WithOrigins(builder.Configuration.GetSection("ActiveAllocator:AllowedHosts").Get<string[]>());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Authentication
|
// Authentication
|
||||||
builder.Services.AddAuthentication()
|
builder.Services.AddAuthentication()
|
||||||
@ -51,74 +27,39 @@ internal class Program
|
|||||||
options.DefaultPolicy = defaultAuthorizationPolicyBuilder.Build();
|
options.DefaultPolicy = defaultAuthorizationPolicyBuilder.Build();
|
||||||
});
|
});
|
||||||
|
|
||||||
builder.Services.AddControllersWithViews().AddJsonOptions(x =>
|
|
||||||
{
|
|
||||||
// serialize enums as strings in api responses (e.g. Role)
|
|
||||||
x.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
|
|
||||||
|
|
||||||
// ignore omitted parameters on models to enable optional params (e.g. User update)
|
builder.Services.AddControllers();
|
||||||
x.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
|
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||||
});
|
|
||||||
|
|
||||||
builder.Services.AddEndpointsApiExplorer();
|
builder.Services.AddEndpointsApiExplorer();
|
||||||
builder.Services.AddSwaggerGen(c =>
|
builder.Services.AddSwaggerGen();
|
||||||
{
|
|
||||||
c.SwaggerDoc("v1", new OpenApiInfo { Title = "AA API", Version = "v1" });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Configure strongly typed settings object
|
|
||||||
builder.Services.Configure<AppSettings>(builder.Configuration.GetSection("AppSettings"));
|
builder.Services.Configure<AppSettings>(builder.Configuration.GetSection("AppSettings"));
|
||||||
builder.Services.Configure<EnvelopeFundConfig>(builder.Configuration.GetSection("EnvelopeFund"));
|
|
||||||
builder.Services.Configure<DatabaseConfig>(builder.Configuration.GetSection("ActiveAllocator:Database"));
|
|
||||||
|
|
||||||
DatabaseConfig dbConfig = builder.Configuration.GetSection("ActiveAllocator:Database").Get<DatabaseConfig>();
|
DatabaseConfig dbConfig = builder.Configuration.GetSection("Database").Get<DatabaseConfig>();
|
||||||
|
|
||||||
builder.Services.AddAutoMapper(typeof(Program));
|
|
||||||
builder.Services.AddDbContext<DataContext>(opt =>
|
builder.Services.AddDbContext<DataContext>(opt =>
|
||||||
opt.UseNpgsql(dbConfig.GetConnectionString()));
|
opt.UseNpgsql(dbConfig.GetConnectionString()));
|
||||||
|
|
||||||
builder.Services.AddScoped<IUserService, UserService>();
|
builder.Services.AddScoped<IUserService, UserService>();
|
||||||
builder.Services.AddScoped<IAccountService, AccountService>();
|
|
||||||
builder.Services.AddScoped<ITransactionService, TransactionService>();
|
|
||||||
builder.Services.AddScoped<ICacheService, CacheService>();
|
builder.Services.AddScoped<ICacheService, CacheService>();
|
||||||
builder.Services.AddScoped<IVersionService, VersionService>();
|
|
||||||
|
|
||||||
builder.Services.AddScoped<ApiKeyAuthenticationHandler>();
|
builder.Services.AddScoped<ApiKeyAuthenticationHandler>();
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
// Apply Database Migrations - This is NOT recommended for multi-node deployment!!!
|
|
||||||
using var scope = app.Services.CreateScope();
|
|
||||||
using var dbContext = scope.ServiceProvider.GetRequiredService<DataContext>();
|
|
||||||
dbContext.Database.Migrate();
|
|
||||||
|
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
if (!app.Environment.IsDevelopment())
|
if (app.Environment.IsDevelopment())
|
||||||
{
|
{
|
||||||
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
app.UseSwagger();
|
||||||
app.UseHsts();
|
app.UseSwaggerUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
app.UseCors("ClientPermission");
|
|
||||||
app.UseHttpsRedirection();
|
app.UseHttpsRedirection();
|
||||||
app.UseStaticFiles();
|
|
||||||
app.UseSwagger();
|
|
||||||
app.UseSwaggerUI();
|
|
||||||
app.UseRouting();
|
|
||||||
app.UseCors(MyAllowSpecificOrigins);
|
|
||||||
|
|
||||||
app.UseAuthentication();
|
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|
||||||
// global error handler
|
app.MapControllers();
|
||||||
app.UseMiddleware<ErrorHandlerMiddleware>();
|
|
||||||
|
|
||||||
app.MapControllerRoute(
|
|
||||||
name: "default",
|
|
||||||
pattern: "{controller}/{action=Index}/{id?}");
|
|
||||||
|
|
||||||
app.MapFallbackToFile("index.html");
|
|
||||||
|
|
||||||
app.Run();
|
app.Run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Services;
|
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using BCrypt.Net;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Accounts;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System;
|
|
||||||
using Internal;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
|
|
||||||
public interface IAccountService
|
|
||||||
{
|
|
||||||
IEnumerable<Account> GetAll();
|
|
||||||
Account GetById(int accountId);
|
|
||||||
void Create(AccountCreateRequest model);
|
|
||||||
void Update(int accountId, AccountUpdateRequest model);
|
|
||||||
void Delete(int accountId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AccountService : IAccountService
|
|
||||||
{
|
|
||||||
private DataContext _context;
|
|
||||||
private readonly IMapper _mapper;
|
|
||||||
private IUserService _userService;
|
|
||||||
|
|
||||||
public AccountService(
|
|
||||||
DataContext context,
|
|
||||||
IMapper mapper,
|
|
||||||
IUserService userService)
|
|
||||||
{
|
|
||||||
_context = context;
|
|
||||||
_mapper = mapper;
|
|
||||||
_userService = userService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<Account> GetAll()
|
|
||||||
{
|
|
||||||
return _context.Accounts;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Account GetById(int accountId)
|
|
||||||
{
|
|
||||||
return getAccount(accountId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Create(AccountCreateRequest model)
|
|
||||||
{
|
|
||||||
// Check that account with same name or same external number doesn't exist
|
|
||||||
IEnumerable<Account> accountsWithSameName = _context.Accounts.Where(a => a.Name.ToUpper() == model.Name.ToUpper());
|
|
||||||
|
|
||||||
if (accountsWithSameName.Count() > 0)
|
|
||||||
throw new AppException("Account with name '" + model.Name + "' already exists");
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(model.ExternalAccountNumber))
|
|
||||||
{
|
|
||||||
IEnumerable<Account> matches = _context.Accounts.Where(a => a.ExternalAccountNumber == model.ExternalAccountNumber);
|
|
||||||
|
|
||||||
if (matches.Count() > 0)
|
|
||||||
throw new AppException("Account with external account number '" + model.ExternalAccountNumber + "' already exists under account named '" + matches.First().Name + "'");
|
|
||||||
}
|
|
||||||
|
|
||||||
// map model to new account object
|
|
||||||
//var account = _mapper.Map<Account>(model);
|
|
||||||
|
|
||||||
Account account = new Account {
|
|
||||||
Name = model.Name,
|
|
||||||
Balance = Convert.ToDecimal(model.InitialBalance),
|
|
||||||
ExternalAccountNumber = model.ExternalAccountNumber
|
|
||||||
};
|
|
||||||
|
|
||||||
_context.Accounts.Add(account);
|
|
||||||
_context.SaveChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Update(int accountId, AccountUpdateRequest model)
|
|
||||||
{
|
|
||||||
Account account = getAccount(accountId);
|
|
||||||
|
|
||||||
// validate
|
|
||||||
if (model.Name != account.Name && _context.Accounts.Any(x => x.Name == model.Name))
|
|
||||||
throw new AppException("Account with the name '" + model.Name + "' already exists");
|
|
||||||
|
|
||||||
// Name
|
|
||||||
if (!string.IsNullOrWhiteSpace(model.Name))
|
|
||||||
account.Name = model.Name;
|
|
||||||
|
|
||||||
// External Account Number
|
|
||||||
if (!string.IsNullOrWhiteSpace(model.ExternalAccountNumber))
|
|
||||||
account.ExternalAccountNumber = model.ExternalAccountNumber;
|
|
||||||
|
|
||||||
_context.Accounts.Update(account);
|
|
||||||
_context.SaveChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Delete(int accountId)
|
|
||||||
{
|
|
||||||
var account = getAccount(accountId);
|
|
||||||
_context.Accounts.Remove(account);
|
|
||||||
_context.SaveChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
// helper methods
|
|
||||||
|
|
||||||
private Account getAccount(int id)
|
|
||||||
{
|
|
||||||
var account = _context.Accounts.Find(id);
|
|
||||||
if (account == null) throw new KeyNotFoundException("Account not found");
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,217 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Services;
|
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using BCrypt.Net;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Transactions;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Internal;
|
|
||||||
using System.Collections.Immutable;
|
|
||||||
|
|
||||||
public interface ITransactionService
|
|
||||||
{
|
|
||||||
IEnumerable<Transaction> GetAll();
|
|
||||||
Transaction GetById(int id);
|
|
||||||
IEnumerable<Transaction> BulkCreate(List<TransactionCreate> model);
|
|
||||||
Transaction Create(TransactionCreate model, bool errorOnFail = true);
|
|
||||||
void Update(int id, TransactionUpdateRequest model);
|
|
||||||
void Delete(int id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class TransactionService : ITransactionService
|
|
||||||
{
|
|
||||||
private DataContext _context;
|
|
||||||
private readonly IMapper _mapper;
|
|
||||||
private readonly ILogger<TransactionService> _logger;
|
|
||||||
|
|
||||||
public TransactionService(
|
|
||||||
DataContext context,
|
|
||||||
IMapper mapper,
|
|
||||||
ILogger<TransactionService> logger)
|
|
||||||
{
|
|
||||||
_context = context;
|
|
||||||
_mapper = mapper;
|
|
||||||
_logger = logger;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<Transaction> GetAll()
|
|
||||||
{
|
|
||||||
return _context.Transactions
|
|
||||||
.Include(t => t.DebitAccount)
|
|
||||||
.Include(t => t.CreditAccount)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Transaction GetById(int id)
|
|
||||||
{
|
|
||||||
return getTransaction(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Account prepareAccount(int? accountId)
|
|
||||||
{
|
|
||||||
if (accountId == null || accountId.Value == 0)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Account account = _context.Accounts.Find(accountId.Value);
|
|
||||||
if (account == null)
|
|
||||||
throw new AppException("Could not find account with ID of '" + accountId.Value + "'.");
|
|
||||||
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<Transaction> BulkCreate(List<TransactionCreate> model)
|
|
||||||
{
|
|
||||||
List<Transaction> transactions = new List<Transaction>();
|
|
||||||
|
|
||||||
foreach (TransactionCreate tr in model)
|
|
||||||
{
|
|
||||||
var tran = this.Create(tr, false);
|
|
||||||
if (tran != null)
|
|
||||||
transactions.Add(tran);
|
|
||||||
}
|
|
||||||
|
|
||||||
return transactions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Transaction Create(TransactionCreate model, bool errorOnFail = true)
|
|
||||||
{
|
|
||||||
Transaction transaction = new Transaction {
|
|
||||||
Description = model.Description,
|
|
||||||
Date = model.Date.Date.ToUniversalTime(),
|
|
||||||
CreatedOn = DateTime.UtcNow,
|
|
||||||
UpdatedOn = DateTime.UtcNow,
|
|
||||||
ExternalId = string.IsNullOrWhiteSpace(model.ExternalId) ? "" : model.ExternalId,
|
|
||||||
DebitAccount = prepareAccount(model.DebitAccount),
|
|
||||||
CreditAccount = prepareAccount(model.CreditAccount),
|
|
||||||
Amount = Convert.ToDecimal(model.Amount),
|
|
||||||
IsPending = model.IsPending
|
|
||||||
};
|
|
||||||
|
|
||||||
if (this.ValidateTransaction(transaction, errorOnFail) == false)
|
|
||||||
{
|
|
||||||
_logger.LogInformation($"Aborted adding transaction '{transaction.Description}'.");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// At this point transaction itself is valid
|
|
||||||
|
|
||||||
_context.Transactions.Add(transaction);
|
|
||||||
_context.SaveChanges();
|
|
||||||
|
|
||||||
_logger.LogInformation("New transaction successfully created.");
|
|
||||||
|
|
||||||
return transaction;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Update(int id, TransactionUpdateRequest model)
|
|
||||||
{
|
|
||||||
Transaction transaction = getTransaction(id);
|
|
||||||
|
|
||||||
// Transaction.Date
|
|
||||||
if (model.Date.HasValue)
|
|
||||||
transaction.Date = model.Date.Value;
|
|
||||||
|
|
||||||
// Transaction.ExternalId
|
|
||||||
if (model.ExternalId != null)
|
|
||||||
transaction.ExternalId = model.ExternalId;
|
|
||||||
|
|
||||||
// Transaction.Description
|
|
||||||
if (model.Description != null)
|
|
||||||
transaction.Description = model.Description;
|
|
||||||
|
|
||||||
// Transaction.DebitAccount
|
|
||||||
if (model.DebitAccount.HasValue)
|
|
||||||
transaction.DebitAccount = prepareAccount(model.DebitAccount);
|
|
||||||
|
|
||||||
// Transaction.CreditAccount
|
|
||||||
if (model.CreditAccount.HasValue)
|
|
||||||
transaction.CreditAccount = prepareAccount(model.CreditAccount.Value);
|
|
||||||
|
|
||||||
// Transaction.Amount
|
|
||||||
if (model.Amount.HasValue)
|
|
||||||
transaction.Amount = model.Amount.Value;
|
|
||||||
|
|
||||||
// Transaction.IsPending
|
|
||||||
if (model.IsPending.HasValue)
|
|
||||||
transaction.IsPending = model.IsPending.Value;
|
|
||||||
|
|
||||||
this.ValidateTransaction(transaction);
|
|
||||||
|
|
||||||
transaction.UpdatedOn = DateTime.UtcNow;
|
|
||||||
|
|
||||||
_context.Transactions.Update(transaction);
|
|
||||||
_context.SaveChanges();
|
|
||||||
|
|
||||||
_logger.LogInformation($"Transaction '{id}' successfully updated.");
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool ValidateTransaction(int transactionId)
|
|
||||||
{
|
|
||||||
return this.ValidateTransaction(getTransaction(transactionId));
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool ErrorOrFalse(bool error, string errorMessage)
|
|
||||||
{
|
|
||||||
if (error)
|
|
||||||
throw new AppException(errorMessage);
|
|
||||||
|
|
||||||
_logger.LogWarning(errorMessage);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool ValidateTransaction(Transaction transaction, bool errorOnFail = true)
|
|
||||||
{
|
|
||||||
// There has to be at least 1 specified account
|
|
||||||
if (transaction.DebitAccount == null && transaction.CreditAccount == null)
|
|
||||||
return ErrorOrFalse(errorOnFail, "There must be an envelope or account chosen for a transaction.");
|
|
||||||
|
|
||||||
// Accounts cannot be the same
|
|
||||||
if (transaction.DebitAccount != null && transaction.CreditAccount != null &&
|
|
||||||
transaction.DebitAccount.Id == transaction.CreditAccount.Id)
|
|
||||||
return ErrorOrFalse(errorOnFail, "The debit and credit accounts of a transaction cannot be the same.");
|
|
||||||
|
|
||||||
// Transaction Duplication Check - External ID
|
|
||||||
if (!string.IsNullOrWhiteSpace(transaction.ExternalId) && _context.Transactions.Any(x => x.ExternalId == transaction.ExternalId))
|
|
||||||
return ErrorOrFalse(errorOnFail, "Transaction with the external ID '" + transaction.ExternalId + "' already exists");
|
|
||||||
|
|
||||||
// Transaction Duplication Check - All other fields
|
|
||||||
/*if (_context.Transactions.Any(x =>
|
|
||||||
x.Description == transaction.Description
|
|
||||||
&& x.Date == transaction.Date
|
|
||||||
&& x.DebitAccount == transaction.DebitAccount
|
|
||||||
&& x.CreditAccount == transaction.CreditAccount
|
|
||||||
&& x.Amount == transaction.Amount))
|
|
||||||
{
|
|
||||||
return ErrorOrFalse(errorOnFail, "Transaction with the same fields already exists");
|
|
||||||
}*/
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Delete(int id)
|
|
||||||
{
|
|
||||||
var transaction = getTransaction(id);
|
|
||||||
_context.Transactions.Remove(transaction);
|
|
||||||
_context.SaveChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Transaction getTransaction(int id)
|
|
||||||
{
|
|
||||||
var transaction = _context.Transactions
|
|
||||||
.Include(t => t.DebitAccount)
|
|
||||||
.Include(t => t.CreditAccount)
|
|
||||||
.FirstOrDefault(t => t.Id == id);
|
|
||||||
|
|
||||||
if (transaction == null)
|
|
||||||
throw new KeyNotFoundException("Transaction not found");
|
|
||||||
|
|
||||||
return transaction;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,57 +1,43 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Services;
|
namespace AAIntegration.SimmonsBank.API.Services;
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using BCrypt.Net;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Users;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Microsoft.EntityFrameworkCore.Internal;
|
using Microsoft.EntityFrameworkCore.Internal;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IdentityModel.Tokens.Jwt;
|
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using AAIntegration.SimmonsBank.API.Entities;
|
||||||
|
using AAIntegration.SimmonsBank.API.Models.Users;
|
||||||
|
using AAIntegration.SimmonsBank.API.Helpers;
|
||||||
|
using AAIntegration.SimmonsBank.API.Configs;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
public interface IUserService
|
public interface IUserService
|
||||||
{
|
{
|
||||||
// New Based way
|
|
||||||
string Create(UserCreateRequest model);
|
string Create(UserCreateRequest model);
|
||||||
|
//IEnumerable<User> GetAll();
|
||||||
|
//User GetById(int id);
|
||||||
void Update(string apiKey, UserUpdateRequest model);
|
void Update(string apiKey, UserUpdateRequest model);
|
||||||
void Delete(string apiKey);
|
void Delete(string apiKey);
|
||||||
Dictionary<string, int> GetAllApiKeys();
|
Dictionary<string, int> GetAllApiKeys();
|
||||||
|
//string GetUserApiKey(int id);
|
||||||
/* Other cringe way
|
//void InvalidateApiKey(string apiKey);
|
||||||
AuthenticateResponse Authenticate(AuthenticateRequest model);
|
//string CreateUserApiKey(int id);
|
||||||
void Register(RegisterRequest model);
|
|
||||||
IEnumerable<User> GetAll();
|
|
||||||
User GetById(int id);
|
|
||||||
void Update(int id, UserUpdateRequest model);
|
|
||||||
void Delete(int id);
|
|
||||||
Dictionary<string, int> GetAllApiKeys();
|
|
||||||
string GetUserApiKey(int id);
|
|
||||||
void InvalidateApiKey(string apiKey);
|
|
||||||
string CreateUserApiKey(int id);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UserService : IUserService
|
public class UserService : IUserService
|
||||||
{
|
{
|
||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
private readonly IMapper _mapper;
|
private readonly AppSettings _appSettings;
|
||||||
private readonly IOptions<AppSettings> _appSettings;
|
|
||||||
|
|
||||||
public UserService(
|
public UserService(
|
||||||
DataContext context,
|
DataContext context,
|
||||||
IMapper mapper,
|
|
||||||
IOptions<AppSettings> appSettings)
|
IOptions<AppSettings> appSettings)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_mapper = mapper;
|
_appSettings = appSettings.Value;
|
||||||
_appSettings = appSettings;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Create(UserCreateRequest model)
|
public string Create(UserCreateRequest model)
|
||||||
@ -72,6 +58,16 @@ public class UserService : IUserService
|
|||||||
return user.ApiKey;
|
return user.ApiKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*public IEnumerable<User> GetAll()
|
||||||
|
{
|
||||||
|
return _context.Users;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*public User GetById(int id)
|
||||||
|
{
|
||||||
|
return getUser(id);
|
||||||
|
}*/
|
||||||
|
|
||||||
public void Update(string apiKey, UserUpdateRequest model)
|
public void Update(string apiKey, UserUpdateRequest model)
|
||||||
{
|
{
|
||||||
var user = getUser(apiKey);
|
var user = getUser(apiKey);
|
||||||
@ -106,6 +102,18 @@ public class UserService : IUserService
|
|||||||
.ToDictionary(u => u.ApiKey, u => u.Id);
|
.ToDictionary(u => u.ApiKey, u => u.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*public string GetUserApiKey(int id)
|
||||||
|
{
|
||||||
|
return this.getUser(id).ApiKey;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*public void InvalidateApiKey(string apiKey)
|
||||||
|
{
|
||||||
|
User? user = _context.Users.FirstOrDefault(u => u.ApiKey == apiKey);
|
||||||
|
|
||||||
|
if (user is not null)
|
||||||
|
user.ApiKey = null;
|
||||||
|
}*/
|
||||||
|
|
||||||
// helper methods
|
// helper methods
|
||||||
|
|
||||||
@ -142,5 +150,4 @@ public class UserService : IUserService
|
|||||||
|
|
||||||
return _prefix + base64String[..keyLength];
|
return _prefix + base64String[..keyLength];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,35 +0,0 @@
|
|||||||
namespace AAIntegration.SimmonsBank.API.Services;
|
|
||||||
|
|
||||||
using AutoMapper;
|
|
||||||
using AAIntegration.SimmonsBank.API.Entities;
|
|
||||||
using AAIntegration.SimmonsBank.API.Config;
|
|
||||||
using AAIntegration.SimmonsBank.API.Models.Accounts;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System;
|
|
||||||
using System.Security.Policy;
|
|
||||||
|
|
||||||
public interface IVersionService
|
|
||||||
{
|
|
||||||
string GetVersion();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class VersionService : IVersionService
|
|
||||||
{
|
|
||||||
const string APP_VERSION = "1.0.0";
|
|
||||||
|
|
||||||
ILogger<VersionService> _logger;
|
|
||||||
|
|
||||||
public VersionService(
|
|
||||||
ILogger<VersionService> logger)
|
|
||||||
{
|
|
||||||
_logger = logger;
|
|
||||||
|
|
||||||
_logger.LogInformation("App Version: " + APP_VERSION);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetVersion()
|
|
||||||
{
|
|
||||||
return APP_VERSION;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +1,8 @@
|
|||||||
{
|
{
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Information",
|
"Default": "Information",
|
||||||
"Microsoft": "Warning",
|
"Microsoft.AspNetCore": "Warning"
|
||||||
"Microsoft.AspNetCore.SpaProxy": "Information",
|
}
|
||||||
"Microsoft.Hosting.Lifetime": "Information"
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,31 +1,20 @@
|
|||||||
{
|
{
|
||||||
"ActiveAllocator": {
|
|
||||||
"Database": {
|
|
||||||
"Host": "localhost",
|
|
||||||
"Name": "AAISB_DB",
|
|
||||||
"User": "postgres",
|
|
||||||
"Password": "nqA3UV3CliLLHpLL",
|
|
||||||
"Port": "25432"
|
|
||||||
},
|
|
||||||
"AllowedHosts": [
|
|
||||||
"*"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ConnectionStrings": {
|
|
||||||
"PSQLConnection": "Server=localhost;Port=15432;Database=aadb;User Id=postgres;Password=nqA3UV3CliLLHpLL"
|
|
||||||
},
|
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Information",
|
"Default": "Information",
|
||||||
"Microsoft": "Warning",
|
"Microsoft.AspNetCore": "Warning"
|
||||||
"Microsoft.Hosting.Lifetime": "Information"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"AllowedHosts": "*",
|
||||||
"AppSettings": {
|
"AppSettings": {
|
||||||
"Secret": "5de80277015f9fd564c4d1cc2cf827dbb1774cd66e7d79aa258d9c35a9f67f32fc6cf0dc24244242bd9501288e0fd69e315b",
|
"Secret": "5de80277015f9fd564c4d1cc2cf827dbb1774cd66e7d79aa258d9c35a9f67f32fc6cf0dc24244242bd9501288e0fd69e315b",
|
||||||
"APIUrl": "https://localhost:7260"
|
"APIUrl": "https://localhost:5279"
|
||||||
},
|
},
|
||||||
"EnvelopeFund": {
|
"Database": {
|
||||||
"CheckIntervalInMinutes": 10
|
"Host": "localhost",
|
||||||
}
|
"Name": "AAISB_DB",
|
||||||
|
"User": "postgres",
|
||||||
|
"Password": "nqA3UV3CliLLHpLL",
|
||||||
|
"Port": "15432"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
version: '3.4'
|
|
||||||
|
|
||||||
services:
|
|
||||||
activeallocator-site:
|
|
||||||
image: activeallocator:1.0.0
|
|
||||||
container_name: activeallocator
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
# environment:
|
|
||||||
# - ActiveAllocator__Database__Port=15432
|
|
||||||
#build:
|
|
||||||
#context: .
|
|
||||||
#dockerfile: MoviesAPI/Dockerfile
|
|
||||||
ports:
|
|
||||||
- 80:80
|
|
||||||
- 7555:7260
|
|
||||||
depends_on:
|
|
||||||
- database
|
|
||||||
|
|
||||||
database:
|
|
||||||
container_name: activeallocator-db
|
|
||||||
image: 'postgres:15'
|
|
||||||
#ports:
|
|
||||||
# - 15432:5432
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
#networks:
|
|
||||||
# - postgres-network
|
|
||||||
volumes:
|
|
||||||
- ./pg-db_data/:/var/lib/postgresql/data/
|
|
@ -38,59 +38,35 @@
|
|||||||
"net7.0": {
|
"net7.0": {
|
||||||
"targetAlias": "net7.0",
|
"targetAlias": "net7.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"AutoMapper": {
|
"Microsoft.AspNetCore.Authorization": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[12.0.1, )"
|
"version": "[7.0.0, )"
|
||||||
},
|
},
|
||||||
"AutoMapper.Extensions.Microsoft.DependencyInjection": {
|
"Microsoft.AspNetCore.OpenApi": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[12.0.1, )"
|
"version": "[7.0.15, )"
|
||||||
},
|
|
||||||
"BCrypt.Net": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[0.1.0, )"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.Authentication.JwtBearer": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[7.0.16, )"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.SpaProxy": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[7.0.13, )"
|
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore": {
|
"Microsoft.EntityFrameworkCore": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[7.0.9, )"
|
"version": "[7.0.0, )"
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore.Design": {
|
"Microsoft.EntityFrameworkCore.Design": {
|
||||||
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
|
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
|
||||||
"suppressParent": "All",
|
"suppressParent": "All",
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[7.0.9, )"
|
"version": "[7.0.0, )"
|
||||||
},
|
},
|
||||||
"Microsoft.IdentityModel.Tokens": {
|
"Microsoft.IdentityModel.Tokens": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[6.35.0, )"
|
"version": "[7.0.0, )"
|
||||||
},
|
|
||||||
"Microsoft.NET.Build.Containers": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[7.0.400, )"
|
|
||||||
},
|
|
||||||
"Microsoft.VisualStudio.Web.CodeGeneration.Design": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[7.0.8, )"
|
|
||||||
},
|
},
|
||||||
"Npgsql.EntityFrameworkCore.PostgreSQL": {
|
"Npgsql.EntityFrameworkCore.PostgreSQL": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[7.0.4, )"
|
"version": "[7.0.0, )"
|
||||||
},
|
},
|
||||||
"Swashbuckle.AspNetCore": {
|
"Swashbuckle.AspNetCore": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[6.5.0, )"
|
"version": "[6.5.0, )"
|
||||||
},
|
|
||||||
"System.IdentityModel.Tokens.Jwt": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[6.35.0, )"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
@ -108,18 +84,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Microsoft.AspNetCore.App.Ref",
|
"name": "Microsoft.AspNetCore.App.Ref",
|
||||||
"version": "[7.0.15, 7.0.15]"
|
"version": "[7.0.15, 7.0.15]"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Microsoft.AspNetCore.App.Runtime.linux-x64",
|
|
||||||
"version": "[7.0.15, 7.0.15]"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Microsoft.NETCore.App.Host.linux-x64",
|
|
||||||
"version": "[7.0.15, 7.0.15]"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Microsoft.NETCore.App.Runtime.linux-x64",
|
|
||||||
"version": "[7.0.15, 7.0.15]"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"frameworkReferences": {
|
"frameworkReferences": {
|
||||||
@ -132,11 +96,6 @@
|
|||||||
},
|
},
|
||||||
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/7.0.115/RuntimeIdentifierGraph.json"
|
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/7.0.115/RuntimeIdentifierGraph.json"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"runtimes": {
|
|
||||||
"linux-x64": {
|
|
||||||
"#import": []
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,13 +15,10 @@
|
|||||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.props')" />
|
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.props')" />
|
||||||
<Import Project="$(NuGetPackageRoot)swashbuckle.aspnetcore/6.5.0/build/Swashbuckle.AspNetCore.props" Condition="Exists('$(NuGetPackageRoot)swashbuckle.aspnetcore/6.5.0/build/Swashbuckle.AspNetCore.props')" />
|
<Import Project="$(NuGetPackageRoot)swashbuckle.aspnetcore/6.5.0/build/Swashbuckle.AspNetCore.props" Condition="Exists('$(NuGetPackageRoot)swashbuckle.aspnetcore/6.5.0/build/Swashbuckle.AspNetCore.props')" />
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore/7.0.9/buildTransitive/net6.0/Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore/7.0.9/buildTransitive/net6.0/Microsoft.EntityFrameworkCore.props')" />
|
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore/7.0.0/buildTransitive/net6.0/Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore/7.0.0/buildTransitive/net6.0/Microsoft.EntityFrameworkCore.props')" />
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.net.build.containers/7.0.400/build/Microsoft.NET.Build.Containers.props" Condition="Exists('$(NuGetPackageRoot)microsoft.net.build.containers/7.0.400/build/Microsoft.NET.Build.Containers.props')" />
|
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design/7.0.0/build/net6.0/Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design/7.0.0/build/net6.0/Microsoft.EntityFrameworkCore.Design.props')" />
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design/7.0.9/build/net6.0/Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design/7.0.9/build/net6.0/Microsoft.EntityFrameworkCore.Design.props')" />
|
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">/home/william/.nuget/packages/microsoft.extensions.apidescription.server/6.0.5</PkgMicrosoft_Extensions_ApiDescription_Server>
|
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">/home/william/.nuget/packages/microsoft.extensions.apidescription.server/6.0.5</PkgMicrosoft_Extensions_ApiDescription_Server>
|
||||||
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">/home/william/.nuget/packages/microsoft.codeanalysis.analyzers/3.3.3</PkgMicrosoft_CodeAnalysis_Analyzers>
|
|
||||||
<PkgMicrosoft_CodeAnalysis_AnalyzerUtilities Condition=" '$(PkgMicrosoft_CodeAnalysis_AnalyzerUtilities)' == '' ">/home/william/.nuget/packages/microsoft.codeanalysis.analyzerutilities/3.3.0</PkgMicrosoft_CodeAnalysis_AnalyzerUtilities>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
@ -4,7 +4,5 @@
|
|||||||
<Import Project="$(NuGetPackageRoot)system.text.json/7.0.0/buildTransitive/net6.0/System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json/7.0.0/buildTransitive/net6.0/System.Text.Json.targets')" />
|
<Import Project="$(NuGetPackageRoot)system.text.json/7.0.0/buildTransitive/net6.0/System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json/7.0.0/buildTransitive/net6.0/System.Text.Json.targets')" />
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.targets')" />
|
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.targets')" />
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/7.0.0/buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/7.0.0/buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
|
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/7.0.0/buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/7.0.0/buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.net.build.containers/7.0.400/build/Microsoft.NET.Build.Containers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.net.build.containers/7.0.400/build/Microsoft.NET.Build.Containers.targets')" />
|
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.spaproxy/7.0.13/build/Microsoft.AspNetCore.SpaProxy.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.spaproxy/7.0.13/build/Microsoft.AspNetCore.SpaProxy.targets')" />
|
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
File diff suppressed because it is too large
Load Diff
@ -1,87 +1,18 @@
|
|||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"dgSpecHash": "pU4IZjFuw6ck49MYsMS+1UuAOx/hMvpbrwRe+YEG/+yMX3k4+UAMntT6PNgrQmrU6kLvRLvNkyt8WlX1uYoEtw==",
|
"dgSpecHash": "+YzPVm6dCqls1vMVNzEq7Me1vMtNZci2DFK/dzhgGd7F3oUcG2jW1uWdu7yR4roqWl4E1HzertAKQW8S2e71Yw==",
|
||||||
"success": true,
|
"success": true,
|
||||||
"projectFilePath": "/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/AAIntegration.SimmonsBank.API.csproj",
|
"projectFilePath": "/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/AAIntegration.SimmonsBank.API.csproj",
|
||||||
"expectedPackageFiles": [
|
"expectedPackageFiles": [
|
||||||
"/home/william/.nuget/packages/automapper/12.0.1/automapper.12.0.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/automapper.extensions.microsoft.dependencyinjection/12.0.1/automapper.extensions.microsoft.dependencyinjection.12.0.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/bcrypt.net/0.1.0/bcrypt.net.0.1.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer/2.14.1/humanizer.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core/2.14.1/humanizer.core.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/humanizer.core/2.14.1/humanizer.core.2.14.1.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.af/2.14.1/humanizer.core.af.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.aspnetcore.authorization/7.0.0/microsoft.aspnetcore.authorization.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.ar/2.14.1/humanizer.core.ar.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.aspnetcore.metadata/7.0.0/microsoft.aspnetcore.metadata.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.az/2.14.1/humanizer.core.az.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.aspnetcore.openapi/7.0.15/microsoft.aspnetcore.openapi.7.0.15.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.bg/2.14.1/humanizer.core.bg.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.entityframeworkcore/7.0.0/microsoft.entityframeworkcore.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.bn-bd/2.14.1/humanizer.core.bn-bd.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.entityframeworkcore.abstractions/7.0.0/microsoft.entityframeworkcore.abstractions.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.cs/2.14.1/humanizer.core.cs.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.entityframeworkcore.analyzers/7.0.0/microsoft.entityframeworkcore.analyzers.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.da/2.14.1/humanizer.core.da.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.entityframeworkcore.design/7.0.0/microsoft.entityframeworkcore.design.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.de/2.14.1/humanizer.core.de.2.14.1.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.entityframeworkcore.relational/7.0.0/microsoft.entityframeworkcore.relational.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/humanizer.core.el/2.14.1/humanizer.core.el.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.es/2.14.1/humanizer.core.es.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.fa/2.14.1/humanizer.core.fa.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.fi-fi/2.14.1/humanizer.core.fi-fi.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.fr/2.14.1/humanizer.core.fr.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.fr-be/2.14.1/humanizer.core.fr-be.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.he/2.14.1/humanizer.core.he.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.hr/2.14.1/humanizer.core.hr.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.hu/2.14.1/humanizer.core.hu.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.hy/2.14.1/humanizer.core.hy.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.id/2.14.1/humanizer.core.id.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.is/2.14.1/humanizer.core.is.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.it/2.14.1/humanizer.core.it.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.ja/2.14.1/humanizer.core.ja.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.ko-kr/2.14.1/humanizer.core.ko-kr.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.ku/2.14.1/humanizer.core.ku.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.lv/2.14.1/humanizer.core.lv.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.ms-my/2.14.1/humanizer.core.ms-my.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.mt/2.14.1/humanizer.core.mt.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.nb/2.14.1/humanizer.core.nb.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.nb-no/2.14.1/humanizer.core.nb-no.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.nl/2.14.1/humanizer.core.nl.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.pl/2.14.1/humanizer.core.pl.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.pt/2.14.1/humanizer.core.pt.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.ro/2.14.1/humanizer.core.ro.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.ru/2.14.1/humanizer.core.ru.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.sk/2.14.1/humanizer.core.sk.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.sl/2.14.1/humanizer.core.sl.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.sr/2.14.1/humanizer.core.sr.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.sr-latn/2.14.1/humanizer.core.sr-latn.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.sv/2.14.1/humanizer.core.sv.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.th-th/2.14.1/humanizer.core.th-th.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.tr/2.14.1/humanizer.core.tr.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.uk/2.14.1/humanizer.core.uk.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.uz-cyrl-uz/2.14.1/humanizer.core.uz-cyrl-uz.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.uz-latn-uz/2.14.1/humanizer.core.uz-latn-uz.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.vi/2.14.1/humanizer.core.vi.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.zh-cn/2.14.1/humanizer.core.zh-cn.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.zh-hans/2.14.1/humanizer.core.zh-hans.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/humanizer.core.zh-hant/2.14.1/humanizer.core.zh-hant.2.14.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.aspnetcore.authentication.jwtbearer/7.0.16/microsoft.aspnetcore.authentication.jwtbearer.7.0.16.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.aspnetcore.razor.language/6.0.11/microsoft.aspnetcore.razor.language.6.0.11.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.aspnetcore.spaproxy/7.0.13/microsoft.aspnetcore.spaproxy.7.0.13.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.bcl.asyncinterfaces/6.0.0/microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.build/17.3.2/microsoft.build.17.3.2.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.build.framework/17.3.2/microsoft.build.framework.17.3.2.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.analyzers/3.3.3/microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.analyzerutilities/3.3.0/microsoft.codeanalysis.analyzerutilities.3.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.common/4.4.0/microsoft.codeanalysis.common.4.4.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.csharp/4.4.0/microsoft.codeanalysis.csharp.4.4.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.csharp.features/4.4.0/microsoft.codeanalysis.csharp.features.4.4.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.csharp.workspaces/4.4.0/microsoft.codeanalysis.csharp.workspaces.4.4.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.elfie/1.0.0/microsoft.codeanalysis.elfie.1.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.features/4.4.0/microsoft.codeanalysis.features.4.4.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.razor/6.0.11/microsoft.codeanalysis.razor.6.0.11.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.scripting.common/4.4.0/microsoft.codeanalysis.scripting.common.4.4.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.codeanalysis.workspaces.common/4.4.0/microsoft.codeanalysis.workspaces.common.4.4.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.csharp/4.7.0/microsoft.csharp.4.7.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.diasymreader/1.4.0/microsoft.diasymreader.1.4.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.dotnet.scaffolding.shared/7.0.8/microsoft.dotnet.scaffolding.shared.7.0.8.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.entityframeworkcore/7.0.9/microsoft.entityframeworkcore.7.0.9.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.entityframeworkcore.abstractions/7.0.9/microsoft.entityframeworkcore.abstractions.7.0.9.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.entityframeworkcore.analyzers/7.0.9/microsoft.entityframeworkcore.analyzers.7.0.9.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.entityframeworkcore.design/7.0.9/microsoft.entityframeworkcore.design.7.0.9.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.entityframeworkcore.relational/7.0.9/microsoft.entityframeworkcore.relational.7.0.9.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.extensions.apidescription.server/6.0.5/microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.extensions.apidescription.server/6.0.5/microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.extensions.caching.abstractions/7.0.0/microsoft.extensions.caching.abstractions.7.0.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.extensions.caching.abstractions/7.0.0/microsoft.extensions.caching.abstractions.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.extensions.caching.memory/7.0.0/microsoft.extensions.caching.memory.7.0.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.extensions.caching.memory/7.0.0/microsoft.extensions.caching.memory.7.0.0.nupkg.sha512",
|
||||||
@ -93,184 +24,22 @@
|
|||||||
"/home/william/.nuget/packages/microsoft.extensions.logging.abstractions/7.0.0/microsoft.extensions.logging.abstractions.7.0.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.extensions.logging.abstractions/7.0.0/microsoft.extensions.logging.abstractions.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.extensions.options/7.0.0/microsoft.extensions.options.7.0.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.extensions.options/7.0.0/microsoft.extensions.options.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.extensions.primitives/7.0.0/microsoft.extensions.primitives.7.0.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.extensions.primitives/7.0.0/microsoft.extensions.primitives.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.identitymodel.abstractions/6.35.0/microsoft.identitymodel.abstractions.6.35.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.identitymodel.abstractions/7.0.0/microsoft.identitymodel.abstractions.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.identitymodel.jsonwebtokens/6.35.0/microsoft.identitymodel.jsonwebtokens.6.35.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.identitymodel.logging/7.0.0/microsoft.identitymodel.logging.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.identitymodel.logging/6.35.0/microsoft.identitymodel.logging.6.35.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.identitymodel.tokens/7.0.0/microsoft.identitymodel.tokens.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.identitymodel.protocols/6.35.0/microsoft.identitymodel.protocols.6.35.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.openapi/1.4.3/microsoft.openapi.1.4.3.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/microsoft.identitymodel.protocols.openidconnect/6.35.0/microsoft.identitymodel.protocols.openidconnect.6.35.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.identitymodel.tokens/6.35.0/microsoft.identitymodel.tokens.6.35.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.net.build.containers/7.0.400/microsoft.net.build.containers.7.0.400.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.net.stringtools/17.3.2/microsoft.net.stringtools.17.3.2.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.netcore.platforms/1.1.0/microsoft.netcore.platforms.1.1.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.netcore.targets/1.1.0/microsoft.netcore.targets.1.1.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.openapi/1.2.3/microsoft.openapi.1.2.3.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.visualstudio.web.codegeneration/7.0.8/microsoft.visualstudio.web.codegeneration.7.0.8.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.visualstudio.web.codegeneration.core/7.0.8/microsoft.visualstudio.web.codegeneration.core.7.0.8.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.visualstudio.web.codegeneration.design/7.0.8/microsoft.visualstudio.web.codegeneration.design.7.0.8.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.visualstudio.web.codegeneration.entityframeworkcore/7.0.8/microsoft.visualstudio.web.codegeneration.entityframeworkcore.7.0.8.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.visualstudio.web.codegeneration.templating/7.0.8/microsoft.visualstudio.web.codegeneration.templating.7.0.8.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.visualstudio.web.codegeneration.utils/7.0.8/microsoft.visualstudio.web.codegeneration.utils.7.0.8.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.visualstudio.web.codegenerators.mvc/7.0.8/microsoft.visualstudio.web.codegenerators.mvc.7.0.8.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.win32.primitives/4.3.0/microsoft.win32.primitives.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.win32.systemevents/6.0.0/microsoft.win32.systemevents.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/mono.texttemplating/2.2.1/mono.texttemplating.2.2.1.nupkg.sha512",
|
"/home/william/.nuget/packages/mono.texttemplating/2.2.1/mono.texttemplating.2.2.1.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/netstandard.library/1.6.1/netstandard.library.1.6.1.nupkg.sha512",
|
"/home/william/.nuget/packages/npgsql/7.0.0/npgsql.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/newtonsoft.json/13.0.1/newtonsoft.json.13.0.1.nupkg.sha512",
|
"/home/william/.nuget/packages/npgsql.entityframeworkcore.postgresql/7.0.0/npgsql.entityframeworkcore.postgresql.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/npgsql/7.0.4/npgsql.7.0.4.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/npgsql.entityframeworkcore.postgresql/7.0.4/npgsql.entityframeworkcore.postgresql.7.0.4.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.common/6.3.1/nuget.common.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.configuration/6.3.1/nuget.configuration.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.dependencyresolver.core/6.3.1/nuget.dependencyresolver.core.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.frameworks/6.3.1/nuget.frameworks.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.librarymodel/6.3.1/nuget.librarymodel.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.packaging/6.3.1/nuget.packaging.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.projectmodel/6.3.1/nuget.projectmodel.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.protocol/6.3.1/nuget.protocol.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/nuget.versioning/6.3.1/nuget.versioning.6.3.1.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.collections/4.3.0/runtime.any.system.collections.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.diagnostics.tools/4.3.0/runtime.any.system.diagnostics.tools.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.diagnostics.tracing/4.3.0/runtime.any.system.diagnostics.tracing.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.globalization/4.3.0/runtime.any.system.globalization.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.globalization.calendars/4.3.0/runtime.any.system.globalization.calendars.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.io/4.3.0/runtime.any.system.io.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.reflection/4.3.0/runtime.any.system.reflection.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.reflection.extensions/4.3.0/runtime.any.system.reflection.extensions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.reflection.primitives/4.3.0/runtime.any.system.reflection.primitives.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.resources.resourcemanager/4.3.0/runtime.any.system.resources.resourcemanager.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.runtime/4.3.0/runtime.any.system.runtime.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.runtime.handles/4.3.0/runtime.any.system.runtime.handles.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.runtime.interopservices/4.3.0/runtime.any.system.runtime.interopservices.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.text.encoding/4.3.0/runtime.any.system.text.encoding.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.text.encoding.extensions/4.3.0/runtime.any.system.text.encoding.extensions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.threading.tasks/4.3.0/runtime.any.system.threading.tasks.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.any.system.threading.timer/4.3.0/runtime.any.system.threading.timer.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.native.system/4.3.0/runtime.native.system.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.native.system.io.compression/4.3.0/runtime.native.system.io.compression.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.native.system.net.http/4.3.0/runtime.native.system.net.http.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.native.system.security.cryptography.apple/4.3.0/runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.native.system.security.cryptography.openssl/4.3.0/runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.unix.microsoft.win32.primitives/4.3.0/runtime.unix.microsoft.win32.primitives.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.unix.system.console/4.3.0/runtime.unix.system.console.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.unix.system.diagnostics.debug/4.3.0/runtime.unix.system.diagnostics.debug.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.unix.system.io.filesystem/4.3.0/runtime.unix.system.io.filesystem.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.unix.system.net.primitives/4.3.0/runtime.unix.system.net.primitives.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.unix.system.net.sockets/4.3.0/runtime.unix.system.net.sockets.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.unix.system.private.uri/4.3.0/runtime.unix.system.private.uri.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/runtime.unix.system.runtime.extensions/4.3.0/runtime.unix.system.runtime.extensions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/swashbuckle.aspnetcore/6.5.0/swashbuckle.aspnetcore.6.5.0.nupkg.sha512",
|
"/home/william/.nuget/packages/swashbuckle.aspnetcore/6.5.0/swashbuckle.aspnetcore.6.5.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swagger/6.5.0/swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512",
|
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swagger/6.5.0/swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swaggergen/6.5.0/swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512",
|
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swaggergen/6.5.0/swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swaggerui/6.5.0/swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512",
|
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swaggerui/6.5.0/swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/system.appcontext/4.3.0/system.appcontext.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.buffers/4.3.0/system.buffers.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.codedom/4.4.0/system.codedom.4.4.0.nupkg.sha512",
|
"/home/william/.nuget/packages/system.codedom/4.4.0/system.codedom.4.4.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/system.collections/4.3.0/system.collections.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.collections.concurrent/4.3.0/system.collections.concurrent.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.collections.immutable/6.0.0/system.collections.immutable.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.composition/6.0.0/system.composition.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.composition.attributedmodel/6.0.0/system.composition.attributedmodel.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.composition.convention/6.0.0/system.composition.convention.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.composition.hosting/6.0.0/system.composition.hosting.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.composition.runtime/6.0.0/system.composition.runtime.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.composition.typedparts/6.0.0/system.composition.typedparts.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.configuration.configurationmanager/6.0.0/system.configuration.configurationmanager.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.console/4.3.0/system.console.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.data.datasetextensions/4.5.0/system.data.datasetextensions.4.5.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.diagnostics.debug/4.3.0/system.diagnostics.debug.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.diagnostics.diagnosticsource/4.3.0/system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.diagnostics.tools/4.3.0/system.diagnostics.tools.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.diagnostics.tracing/4.3.0/system.diagnostics.tracing.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.drawing.common/6.0.0/system.drawing.common.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.formats.asn1/5.0.0/system.formats.asn1.5.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.globalization/4.3.0/system.globalization.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.globalization.calendars/4.3.0/system.globalization.calendars.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.globalization.extensions/4.3.0/system.globalization.extensions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.identitymodel.tokens.jwt/6.35.0/system.identitymodel.tokens.jwt.6.35.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.io/4.3.0/system.io.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.io.compression/4.3.0/system.io.compression.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.io.compression.zipfile/4.3.0/system.io.compression.zipfile.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.io.filesystem/4.3.0/system.io.filesystem.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.io.filesystem.primitives/4.3.0/system.io.filesystem.primitives.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.io.pipelines/6.0.3/system.io.pipelines.6.0.3.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.linq/4.3.0/system.linq.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.linq.expressions/4.3.0/system.linq.expressions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.memory/4.5.5/system.memory.4.5.5.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.net.http/4.3.0/system.net.http.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.net.nameresolution/4.3.0/system.net.nameresolution.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.net.primitives/4.3.0/system.net.primitives.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.net.sockets/4.3.0/system.net.sockets.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.objectmodel/4.3.0/system.objectmodel.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.private.uri/4.3.0/system.private.uri.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection/4.3.0/system.reflection.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection.emit/4.3.0/system.reflection.emit.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection.emit.ilgeneration/4.3.0/system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection.emit.lightweight/4.3.0/system.reflection.emit.lightweight.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection.extensions/4.3.0/system.reflection.extensions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection.metadata/6.0.0/system.reflection.metadata.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection.metadataloadcontext/6.0.0/system.reflection.metadataloadcontext.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection.primitives/4.3.0/system.reflection.primitives.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.reflection.typeextensions/4.3.0/system.reflection.typeextensions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.resources.resourcemanager/4.3.0/system.resources.resourcemanager.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.runtime/4.3.0/system.runtime.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
|
"/home/william/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/system.runtime.extensions/4.3.0/system.runtime.extensions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.runtime.handles/4.3.0/system.runtime.handles.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.runtime.interopservices/4.3.0/system.runtime.interopservices.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.runtime.interopservices.runtimeinformation/4.3.0/system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.runtime.numerics/4.3.0/system.runtime.numerics.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.accesscontrol/6.0.0/system.security.accesscontrol.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.algorithms/4.3.0/system.security.cryptography.algorithms.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.cng/5.0.0/system.security.cryptography.cng.5.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.csp/4.3.0/system.security.cryptography.csp.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.encoding/4.3.0/system.security.cryptography.encoding.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.openssl/4.3.0/system.security.cryptography.openssl.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.pkcs/5.0.0/system.security.cryptography.pkcs.5.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.primitives/4.3.0/system.security.cryptography.primitives.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.protecteddata/6.0.0/system.security.cryptography.protecteddata.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.cryptography.x509certificates/4.3.0/system.security.cryptography.x509certificates.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.permissions/6.0.0/system.security.permissions.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.security.principal.windows/5.0.0/system.security.principal.windows.5.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.text.encoding/4.3.0/system.text.encoding.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.text.encoding.codepages/6.0.0/system.text.encoding.codepages.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.text.encoding.extensions/4.3.0/system.text.encoding.extensions.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.text.encodings.web/7.0.0/system.text.encodings.web.7.0.0.nupkg.sha512",
|
"/home/william/.nuget/packages/system.text.encodings.web/7.0.0/system.text.encodings.web.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/system.text.json/7.0.0/system.text.json.7.0.0.nupkg.sha512",
|
"/home/william/.nuget/packages/system.text.json/7.0.0/system.text.json.7.0.0.nupkg.sha512",
|
||||||
"/home/william/.nuget/packages/system.text.regularexpressions/4.3.0/system.text.regularexpressions.4.3.0.nupkg.sha512",
|
"/home/william/.nuget/packages/microsoft.aspnetcore.app.ref/7.0.15/microsoft.aspnetcore.app.ref.7.0.15.nupkg.sha512"
|
||||||
"/home/william/.nuget/packages/system.threading/4.3.0/system.threading.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.threading.tasks/4.3.0/system.threading.tasks.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.threading.tasks.dataflow/6.0.0/system.threading.tasks.dataflow.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.threading.tasks.extensions/4.5.4/system.threading.tasks.extensions.4.5.4.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.threading.threadpool/4.3.0/system.threading.threadpool.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.threading.timer/4.3.0/system.threading.timer.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.windows.extensions/6.0.0/system.windows.extensions.6.0.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.xml.readerwriter/4.3.0/system.xml.readerwriter.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/system.xml.xdocument/4.3.0/system.xml.xdocument.4.3.0.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.netcore.app.runtime.linux-x64/7.0.15/microsoft.netcore.app.runtime.linux-x64.7.0.15.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.aspnetcore.app.ref/7.0.15/microsoft.aspnetcore.app.ref.7.0.15.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x64/7.0.15/microsoft.aspnetcore.app.runtime.linux-x64.7.0.15.nupkg.sha512",
|
|
||||||
"/home/william/.nuget/packages/microsoft.netcore.app.host.linux-x64/7.0.15/microsoft.netcore.app.host.linux-x64.7.0.15.nupkg.sha512"
|
|
||||||
],
|
],
|
||||||
"logs": [
|
"logs": []
|
||||||
{
|
|
||||||
"code": "NU1701",
|
|
||||||
"level": "Warning",
|
|
||||||
"warningLevel": 1,
|
|
||||||
"message": "Package 'BCrypt.Net 0.1.0' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework 'net7.0'. This package may not be fully compatible with your project.",
|
|
||||||
"libraryId": "BCrypt.Net",
|
|
||||||
"targetGraphs": [
|
|
||||||
"net7.0"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
@ -5,7 +5,7 @@ services:
|
|||||||
container_name: aa-integration-simmonsbank-pg-db
|
container_name: aa-integration-simmonsbank-pg-db
|
||||||
image: 'postgres:15'
|
image: 'postgres:15'
|
||||||
ports:
|
ports:
|
||||||
- 25432:5432
|
- 15432:5432
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
networks:
|
networks:
|
||||||
@ -18,7 +18,7 @@ services:
|
|||||||
container_name: aa-integration-simmonsbank-pg-admin
|
container_name: aa-integration-simmonsbank-pg-admin
|
||||||
image: 'dpage/pgadmin4:7.1'
|
image: 'dpage/pgadmin4:7.1'
|
||||||
ports:
|
ports:
|
||||||
- 25433:80
|
- 15433:80
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
depends_on:
|
depends_on:
|
||||||
@ -30,4 +30,4 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
postgres-network:
|
postgres-network:
|
||||||
driver: bridge
|
driver: bridge
|
Loading…
x
Reference in New Issue
Block a user