fix(data-access): correct self-referential SQL in WorkCenter filter
The WHERE clause was comparing Code to itself instead of the aliased table reference, which would always be true.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
using JdeScoping.Core.ApiContracts;
|
||||
using JdeScoping.Core.ApiContracts.Results;
|
||||
using JdeScoping.Core.Models;
|
||||
using JdeScoping.Core.Models.Auth;
|
||||
|
||||
namespace JdeScoping.Client.Services;
|
||||
|
||||
/// <summary>
|
||||
/// HTTP client implementation of IAuthApiClient.
|
||||
/// </summary>
|
||||
public class AuthApiClient : ApiClientBase, IAuthApiClient
|
||||
{
|
||||
public AuthApiClient(HttpClient httpClient) : base(httpClient) { }
|
||||
|
||||
public Task<ApiResult<PublicKeyResponse>> GetPublicKeyAsync(CancellationToken ct = default)
|
||||
=> GetAsync<PublicKeyResponse>(ApiRoutes.Auth.PublicKey, ct);
|
||||
|
||||
public Task<ApiResult<LoginResultModel>> LoginAsync(EncryptedLoginRequest request, CancellationToken ct = default)
|
||||
=> PostAsync<LoginResultModel, EncryptedLoginRequest>(ApiRoutes.Auth.Login, request, ct);
|
||||
|
||||
public Task<ApiResult<Unit>> LogoutAsync(CancellationToken ct = default)
|
||||
=> PostAsync<Unit>(ApiRoutes.Auth.Logout, ct);
|
||||
|
||||
public Task<ApiResult<UserInfo>> GetCurrentUserAsync(CancellationToken ct = default)
|
||||
=> GetAsync<UserInfo>(ApiRoutes.Auth.Me, ct);
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
using JdeScoping.Core.ApiContracts;
|
||||
using JdeScoping.Core.ApiContracts.Results;
|
||||
using JdeScoping.Core.ViewModels;
|
||||
|
||||
namespace JdeScoping.Client.Services;
|
||||
|
||||
/// <summary>
|
||||
/// HTTP client implementation of IFileApiClient.
|
||||
/// </summary>
|
||||
public class FileApiClient : ApiClientBase, IFileApiClient
|
||||
{
|
||||
public FileApiClient(HttpClient httpClient) : base(httpClient) { }
|
||||
|
||||
// Downloads
|
||||
|
||||
public Task<ApiResult<byte[]>> DownloadWorkOrdersTemplateAsync(IReadOnlyList<WorkOrderViewModel>? existingData = null, CancellationToken ct = default)
|
||||
=> PostForBytesAsync(ApiRoutes.FileIO.DownloadWorkOrders, existingData, ct);
|
||||
|
||||
public Task<ApiResult<byte[]>> DownloadItemsTemplateAsync(IReadOnlyList<ItemViewModel>? existingData = null, CancellationToken ct = default)
|
||||
=> PostForBytesAsync(ApiRoutes.FileIO.DownloadItems, existingData, ct);
|
||||
|
||||
public Task<ApiResult<byte[]>> DownloadComponentLotsTemplateAsync(IReadOnlyList<LotViewModel>? existingData = null, CancellationToken ct = default)
|
||||
=> PostForBytesAsync(ApiRoutes.FileIO.DownloadComponentLots, existingData, ct);
|
||||
|
||||
public Task<ApiResult<byte[]>> DownloadPartOperationsTemplateAsync(IReadOnlyList<PartOperationViewModel>? existingData = null, CancellationToken ct = default)
|
||||
=> PostForBytesAsync(ApiRoutes.FileIO.DownloadPartOperations, existingData, ct);
|
||||
|
||||
// Uploads
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<WorkOrderViewModel>>> UploadWorkOrdersAsync(Stream fileStream, string fileName, CancellationToken ct = default)
|
||||
=> PostMultipartAsync<IReadOnlyList<WorkOrderViewModel>>(ApiRoutes.FileIO.UploadWorkOrders, fileStream, fileName, ct);
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<ItemViewModel>>> UploadItemsAsync(Stream fileStream, string fileName, CancellationToken ct = default)
|
||||
=> PostMultipartAsync<IReadOnlyList<ItemViewModel>>(ApiRoutes.FileIO.UploadItems, fileStream, fileName, ct);
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<LotViewModel>>> UploadComponentLotsAsync(Stream fileStream, string fileName, CancellationToken ct = default)
|
||||
=> PostMultipartAsync<IReadOnlyList<LotViewModel>>(ApiRoutes.FileIO.UploadComponentLots, fileStream, fileName, ct);
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<PartOperationViewModel>>> UploadPartOperationsAsync(Stream fileStream, string fileName, CancellationToken ct = default)
|
||||
=> PostMultipartAsync<IReadOnlyList<PartOperationViewModel>>(ApiRoutes.FileIO.UploadPartOperations, fileStream, fileName, ct);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using JdeScoping.Core.ApiContracts;
|
||||
using JdeScoping.Core.ApiContracts.Results;
|
||||
using JdeScoping.Core.ViewModels;
|
||||
|
||||
namespace JdeScoping.Client.Services;
|
||||
|
||||
/// <summary>
|
||||
/// HTTP client implementation of ILookupApiClient.
|
||||
/// </summary>
|
||||
public class LookupApiClient : ApiClientBase, ILookupApiClient
|
||||
{
|
||||
public LookupApiClient(HttpClient httpClient) : base(httpClient) { }
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<ItemViewModel>>> FindItemsAsync(string query, CancellationToken ct = default)
|
||||
=> GetAsync<IReadOnlyList<ItemViewModel>>(ApiRoutes.Lookup.FindItems(query), ct);
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<ProfitCenterViewModel>>> FindProfitCentersAsync(string query, CancellationToken ct = default)
|
||||
=> GetAsync<IReadOnlyList<ProfitCenterViewModel>>(ApiRoutes.Lookup.FindProfitCenters(query), ct);
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<WorkCenterViewModel>>> FindWorkCentersAsync(string query, CancellationToken ct = default)
|
||||
=> GetAsync<IReadOnlyList<WorkCenterViewModel>>(ApiRoutes.Lookup.FindWorkCenters(query), ct);
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<JdeUserViewModel>>> FindOperatorsAsync(string query, CancellationToken ct = default)
|
||||
=> GetAsync<IReadOnlyList<JdeUserViewModel>>(ApiRoutes.Lookup.FindOperators(query), ct);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using JdeScoping.Core.ApiContracts;
|
||||
using JdeScoping.Core.ApiContracts.Results;
|
||||
using JdeScoping.Core.ViewModels;
|
||||
|
||||
namespace JdeScoping.Client.Services;
|
||||
|
||||
/// <summary>
|
||||
/// HTTP client implementation of ISearchApiClient.
|
||||
/// </summary>
|
||||
public class SearchApiClient : ApiClientBase, ISearchApiClient
|
||||
{
|
||||
public SearchApiClient(HttpClient httpClient) : base(httpClient) { }
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<SearchViewModel>>> GetUserSearchesAsync(CancellationToken ct = default)
|
||||
=> GetAsync<IReadOnlyList<SearchViewModel>>(ApiRoutes.Search.Base, ct);
|
||||
|
||||
public Task<ApiResult<IReadOnlyList<SearchViewModel>>> GetQueuedSearchesAsync(CancellationToken ct = default)
|
||||
=> GetAsync<IReadOnlyList<SearchViewModel>>(ApiRoutes.Search.Queue, ct);
|
||||
|
||||
public Task<ApiResult<SearchViewModel>> GetSearchAsync(int id, CancellationToken ct = default)
|
||||
=> GetAsync<SearchViewModel>(ApiRoutes.Search.GetById(id), ct);
|
||||
|
||||
public Task<ApiResult<SearchViewModel>> CopySearchAsync(int id, CancellationToken ct = default)
|
||||
=> GetAsync<SearchViewModel>(ApiRoutes.Search.GetCopy(id), ct);
|
||||
|
||||
public Task<ApiResult<int>> CreateSearchAsync(SearchViewModel search, CancellationToken ct = default)
|
||||
=> PostAsync<int, SearchViewModel>(ApiRoutes.Search.Base, search, ct);
|
||||
|
||||
public Task<ApiResult<byte[]>> GetResultsAsync(int id, CancellationToken ct = default)
|
||||
=> GetBytesAsync(ApiRoutes.Search.GetResults(id), ct);
|
||||
}
|
||||
Reference in New Issue
Block a user