All but DataTable Deserialize
This commit is contained in:
parent
6cbcad2a5d
commit
0468c8d42d
@ -21,7 +21,7 @@ public class AwaitingDispoController : Controller
|
|||||||
{
|
{
|
||||||
var r = new
|
var r = new
|
||||||
{
|
{
|
||||||
Results = _MetrologyRepository.GetAwaitingDispo()
|
Results = _MetrologyRepository.GetAwaitingDisposition()
|
||||||
};
|
};
|
||||||
return Json(r, new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
|
return Json(r, new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
|
||||||
}
|
}
|
||||||
|
@ -763,10 +763,10 @@ public class MetrologyRepository : IMetrologyRepository
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<AwaitingDispo> GetAwaitingDispo()
|
public IEnumerable<AwaitingDisposition> GetAwaitingDisposition()
|
||||||
{
|
{
|
||||||
using DbConnection conn = GetDbConnection();
|
using DbConnection conn = GetDbConnection();
|
||||||
return conn.Query<AwaitingDispo>("GetAwaitingDispo", commandType: CommandType.StoredProcedure);
|
return conn.Query<AwaitingDisposition>("GetAwaitingDispo", commandType: CommandType.StoredProcedure);
|
||||||
}
|
}
|
||||||
// Jonathan changed this to remove the reviewDate update on the database.
|
// Jonathan changed this to remove the reviewDate update on the database.
|
||||||
public int UpdateReviewDate(int toolTypeId, long headerId, bool clearDate)
|
public int UpdateReviewDate(int toolTypeId, long headerId, bool clearDate)
|
||||||
|
48
Client/Pages/AwaitingDisposition.razor
Normal file
48
Client/Pages/AwaitingDisposition.razor
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
@page "/AwaitingDisposition"
|
||||||
|
@using OI.Metrology.Shared.DataModels
|
||||||
|
|
||||||
|
<PageTitle>Awaiting Disposition</PageTitle>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h4" GutterBottom="true">Awaiting Disposition</MudText>
|
||||||
|
@if (_Records == null)
|
||||||
|
{
|
||||||
|
<MudProgressCircular Color="Color.Default" Indeterminate="true" />
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<MudTable Items="_Records" Hover="true" SortLabel="Sort By" Elevation="0">
|
||||||
|
<HeaderContent>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.ToolType)">ToolType</MudTableSortLabel></MudTh>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.Tool)">Tool</MudTableSortLabel></MudTh>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.Reactor)">Reactor</MudTableSortLabel></MudTh>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.RDS)">RDS</MudTableSortLabel></MudTh>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.PSN)">PSN</MudTableSortLabel></MudTh>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.Layer)">Layer</MudTableSortLabel></MudTh>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.Zone)">Zone</MudTableSortLabel></MudTh>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, object>(x=>x.InsertDate)">InsertDate</MudTableSortLabel></MudTh>
|
||||||
|
<MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, object>(x=>x.Expiration)">Expiration</MudTableSortLabel></MudTh>
|
||||||
|
</HeaderContent>
|
||||||
|
<RowTemplate>
|
||||||
|
<MudTd DataLabel="ToolType">@context.ToolType</MudTd>
|
||||||
|
<MudTd DataLabel="Tool">@context.Tool</MudTd>
|
||||||
|
<MudTd DataLabel="Reactor">@context.Reactor</MudTd>
|
||||||
|
<MudTd DataLabel="RDS">@context.RDS</MudTd>
|
||||||
|
<MudTd DataLabel="PSN">@context.PSN</MudTd>
|
||||||
|
<MudTd DataLabel="Layer">@context.Layer</MudTd>
|
||||||
|
<MudTd DataLabel="Zone">@context.Zone</MudTd>
|
||||||
|
<MudTd DataLabel="InsertDate">@context.InsertDate</MudTd>
|
||||||
|
<MudTd DataLabel="Expiration">@context.Expiration</MudTd>
|
||||||
|
</RowTemplate>
|
||||||
|
<PagerContent>
|
||||||
|
<MudTablePager PageSizeOptions="new int[]{50, 100}" />
|
||||||
|
</PagerContent>
|
||||||
|
</MudTable>
|
||||||
|
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
|
||||||
|
<div class="col-xs-1">
|
||||||
|
<input type="button" id="OpenButton" value="Open" />
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-1">
|
||||||
|
<input type="button" id="RefreshButton" value="Refresh" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
30
Client/Pages/AwaitingDisposition.razor.cs
Normal file
30
Client/Pages/AwaitingDisposition.razor.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using OI.Metrology.Shared.Models.Stateless;
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using System.Net.Http.Json;
|
||||||
|
|
||||||
|
namespace OI.Metrology.Client.Pages;
|
||||||
|
|
||||||
|
public partial class AwaitingDisposition
|
||||||
|
{
|
||||||
|
|
||||||
|
[Inject] protected HttpClient? HttpClient { get; set; }
|
||||||
|
[Inject] protected ILogger<AwaitingDisposition>? Logger { get; set; }
|
||||||
|
|
||||||
|
private Metrology.Shared.DataModels.AwaitingDisposition[]? _Records;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
if (Logger is null)
|
||||||
|
throw new NullReferenceException(nameof(Logger));
|
||||||
|
if (HttpClient is null)
|
||||||
|
throw new NullReferenceException(nameof(HttpClient));
|
||||||
|
string controllerName = IAwaitingDispoController<object>.GetRouteName();
|
||||||
|
try
|
||||||
|
{ _Records = await HttpClient.GetFromJsonAsync<Metrology.Shared.DataModels.AwaitingDisposition[]>($"api/{controllerName}"); }
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
string json = await HttpClient.GetStringAsync($"api/{controllerName}");
|
||||||
|
Logger.LogInformation(message: json);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
48
Client/Pages/RunHeaders.razor
Normal file
48
Client/Pages/RunHeaders.razor
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
@page "/RunHeaders"
|
||||||
|
@using OI.Metrology.Shared.DataModels
|
||||||
|
|
||||||
|
<PageTitle>Run Headers</PageTitle>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h4" GutterBottom="true">Run Headers</MudText>
|
||||||
|
@if (_ToolTypeNameIdCollection is null || !_ToolTypeNameIdCollection.Any())
|
||||||
|
{
|
||||||
|
<MudProgressCircular Color="Color.Default" Indeterminate="true" />
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<MudSelect Margin="Margin.Dense" T="string" Label="Coffee" Variant="Variant.Outlined">
|
||||||
|
@foreach (ToolTypeNameId toolTypeNameId in _ToolTypeNameIdCollection)
|
||||||
|
{
|
||||||
|
<MudSelectItem Value="@toolTypeNameId.ID">@toolTypeNameId.ToolTypeName</MudSelectItem>
|
||||||
|
}
|
||||||
|
</MudSelect>
|
||||||
|
<MudTable Items="_Records" Hover="true" SortLabel="Sort By" Elevation="0">
|
||||||
|
<HeaderContent>
|
||||||
|
<MudTh>
|
||||||
|
<MudTableSortLabel
|
||||||
|
SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.ToolType)">ToolType
|
||||||
|
</MudTableSortLabel>
|
||||||
|
</MudTh>
|
||||||
|
<MudTh>
|
||||||
|
<MudTableSortLabel
|
||||||
|
SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, object>(x=>x.Expiration)">
|
||||||
|
Expiration</MudTableSortLabel>
|
||||||
|
</MudTh>
|
||||||
|
</HeaderContent>
|
||||||
|
<RowTemplate>
|
||||||
|
<MudTd DataLabel="ToolType">@context.ToolType</MudTd>
|
||||||
|
<MudTd DataLabel="Expiration">@context.Expiration</MudTd>
|
||||||
|
</RowTemplate>
|
||||||
|
<PagerContent>
|
||||||
|
<MudTablePager PageSizeOptions="new int[]{50, 100}" />
|
||||||
|
</PagerContent>
|
||||||
|
</MudTable>
|
||||||
|
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
|
||||||
|
<div class="col-xs-1">
|
||||||
|
<input type="button" id="OpenButton" value="Open" />
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-1">
|
||||||
|
<input type="button" id="RefreshButton" value="Refresh" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
42
Client/Pages/RunHeaders.razor.cs
Normal file
42
Client/Pages/RunHeaders.razor.cs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using OI.Metrology.Shared.DataModels;
|
||||||
|
using OI.Metrology.Shared.Models.Stateless;
|
||||||
|
using System.Net.Http.Json;
|
||||||
|
|
||||||
|
namespace OI.Metrology.Client.Pages;
|
||||||
|
|
||||||
|
public partial class RunHeaders
|
||||||
|
{
|
||||||
|
|
||||||
|
[Inject] protected HttpClient? HttpClient { get; set; }
|
||||||
|
[Inject] protected ILogger<RunHeaders>? Logger { get; set; }
|
||||||
|
|
||||||
|
private List<ToolTypeNameId>? _ToolTypeNameIdCollection;
|
||||||
|
private Metrology.Shared.DataModels.AwaitingDisposition[]? _Records;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
if (Logger is null)
|
||||||
|
throw new NullReferenceException(nameof(Logger));
|
||||||
|
if (HttpClient is null)
|
||||||
|
throw new NullReferenceException(nameof(HttpClient));
|
||||||
|
_ToolTypeNameIdCollection = new();
|
||||||
|
string toolTypeController = IToolTypesController<object>.GetRouteName();
|
||||||
|
// string controllerName = IMetrologyRepository<object>.GetRouteName();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Result<ToolTypeNameId[]>? result = await HttpClient.GetFromJsonAsync<Result<ToolTypeNameId[]>>($"api/{toolTypeController}");
|
||||||
|
if (result?.Results is not null)
|
||||||
|
{
|
||||||
|
_ToolTypeNameIdCollection.AddRange(result.Results);
|
||||||
|
if (_ToolTypeNameIdCollection is not null && _ToolTypeNameIdCollection.Any())
|
||||||
|
_Records = await HttpClient.GetFromJsonAsync<Metrology.Shared.DataModels.AwaitingDisposition[]>($"api/controllerName");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
string json = await HttpClient.GetStringAsync($"api/{toolTypeController}");
|
||||||
|
Logger.LogInformation(message: json);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,10 @@
|
|||||||
<MudNavMenu>
|
<MudNavMenu>
|
||||||
<MudNavLink Href="" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Home">Home</MudNavLink>
|
<MudNavLink Href="" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Home">Home</MudNavLink>
|
||||||
<MudNavLink Href="counter" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Add">Counter</MudNavLink>
|
<MudNavLink Href="counter" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Add">Counter</MudNavLink>
|
||||||
<MudNavLink Href="fetchserviceshoporders" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.List">Fetch Service Shop Orders</MudNavLink>
|
<MudNavLink Href="fetchserviceshoporders" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CollectionsBookmark">Fetch Service Shop Orders</MudNavLink>
|
||||||
|
<MudNavLink Href="AwaitingDisposition" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.QueuePlayNext">Awaiting Disposition</MudNavLink>
|
||||||
|
<MudNavLink Href="AwaitingDisposition" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Info">Run Information</MudNavLink>
|
||||||
|
<MudNavLink Href="AwaitingDisposition" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.ViewHeadline">Run Headers</MudNavLink>
|
||||||
|
<MudNavLink Href="AwaitingDisposition" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.ImportExport">Export</MudNavLink>
|
||||||
|
<MudNavLink Href="AwaitingDisposition" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Archive">Archive</MudNavLink>
|
||||||
</MudNavMenu>
|
</MudNavMenu>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||||
<title>Expose-MyIT</title>
|
<title>OI Metrology Viewer</title>
|
||||||
<base href="/" />
|
<base href="/" />
|
||||||
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
|
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
|
||||||
<link href="css/app.css" rel="stylesheet" />
|
<link href="css/app.css" rel="stylesheet" />
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Expose-MyIT",
|
"name": "OI-Metrology-Viewer",
|
||||||
"short_name": "Expose-MyIT",
|
"short_name": "OI-Metrology-Viewer",
|
||||||
"start_url": "./",
|
"start_url": "./",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"background_color": "#ffffff",
|
"background_color": "#ffffff",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
namespace OI.Metrology.Shared.DataModels;
|
namespace OI.Metrology.Shared.DataModels;
|
||||||
|
|
||||||
public class AwaitingDispo
|
public class AwaitingDisposition
|
||||||
{
|
{
|
||||||
public string? PK { get; set; }
|
public string? PK { get; set; }
|
||||||
public string? Title { get; set; }
|
public string? Title { get; set; }
|
9
Shared/DataModels/ColumnValue.cs
Normal file
9
Shared/DataModels/ColumnValue.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace OI.Metrology.Shared.DataModels;
|
||||||
|
|
||||||
|
public class ColumnValue
|
||||||
|
{
|
||||||
|
|
||||||
|
public string? Column { get; set; }
|
||||||
|
public string? Value { get; set; }
|
||||||
|
|
||||||
|
}
|
7
Shared/DataModels/Result.cs
Normal file
7
Shared/DataModels/Result.cs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
namespace OI.Metrology.Shared.DataModels;
|
||||||
|
|
||||||
|
public class Result<T>
|
||||||
|
{
|
||||||
|
public T? Results { get; set; }
|
||||||
|
public long TotalRows { get; set; }
|
||||||
|
}
|
18
Shared/DataModels/ToolTypeMetadataResult.cs
Normal file
18
Shared/DataModels/ToolTypeMetadataResult.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
namespace OI.Metrology.Shared.DataModels;
|
||||||
|
|
||||||
|
public class ToolTypeMetadataResult
|
||||||
|
{
|
||||||
|
|
||||||
|
public ToolType? ToolType { get; set; }
|
||||||
|
public ToolTypeMetadata[]? Metadata { get; set; }
|
||||||
|
|
||||||
|
public ToolTypeMetadataResult()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
public ToolTypeMetadataResult(ToolType? toolType, ToolTypeMetadata[]? metadata)
|
||||||
|
{
|
||||||
|
ToolType = toolType;
|
||||||
|
Metadata = metadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
9
Shared/DataModels/ToolTypeNameId.cs
Normal file
9
Shared/DataModels/ToolTypeNameId.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace OI.Metrology.Shared.DataModels;
|
||||||
|
|
||||||
|
public class ToolTypeNameId
|
||||||
|
{
|
||||||
|
|
||||||
|
public string? ToolTypeName { get; set; }
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
}
|
18
Shared/Models/Stateless/IAwaitingDispoController.cs
Normal file
18
Shared/Models/Stateless/IAwaitingDispoController.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
namespace OI.Metrology.Shared.Models.Stateless;
|
||||||
|
|
||||||
|
public interface IAwaitingDispoController<T>
|
||||||
|
{
|
||||||
|
|
||||||
|
enum Action : int
|
||||||
|
{
|
||||||
|
Index = 0,
|
||||||
|
MarkAsReviewed = 1,
|
||||||
|
MarkAsAwaiting = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
static string GetRouteName() => nameof(IAwaitingDispoController<T>)[1..^10];
|
||||||
|
T Index();
|
||||||
|
T MarkAsReviewed(long headerid, int tooltypeid);
|
||||||
|
T MarkAsAwaiting(long headerid, int tooltypeid);
|
||||||
|
|
||||||
|
}
|
@ -44,7 +44,7 @@ public interface IMetrologyRepository
|
|||||||
|
|
||||||
IEnumerable<KeyValuePair<string, string>> GetHeaderFields(int toolTypeId, long headerid);
|
IEnumerable<KeyValuePair<string, string>> GetHeaderFields(int toolTypeId, long headerid);
|
||||||
|
|
||||||
IEnumerable<AwaitingDispo> GetAwaitingDispo();
|
IEnumerable<AwaitingDisposition> GetAwaitingDisposition();
|
||||||
|
|
||||||
int UpdateReviewDate(int toolTypeId, long headerId, bool clearDate);
|
int UpdateReviewDate(int toolTypeId, long headerId, bool clearDate);
|
||||||
|
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
|
using OI.Metrology.Shared.DataModels;
|
||||||
using OI.Metrology.Shared.Services;
|
using OI.Metrology.Shared.Services;
|
||||||
|
using System.Data;
|
||||||
|
|
||||||
namespace OI.Metrology.Shared.Models.Stateless;
|
namespace OI.Metrology.Shared.Models.Stateless;
|
||||||
|
|
||||||
public interface IToolTypesRepository
|
public interface IToolTypesRepository
|
||||||
{
|
{
|
||||||
|
|
||||||
object Index(IMetrologyRepository metrologyRepository);
|
Result<ToolTypeNameId[]> Index(IMetrologyRepository metrologyRepository);
|
||||||
object GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby = "");
|
Result<ToolTypeMetadataResult> GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby = "");
|
||||||
string GetHeaders(IMetrologyRepository metrologyRepository, int id, DateTime? datebegin, DateTime? dateend, int? page, int? pagesize, long? headerid);
|
Result<DataTable> GetHeaders(IMetrologyRepository metrologyRepository, int id, DateTime? datebegin, DateTime? dateend, int? page, int? pagesize, long? headerid);
|
||||||
string GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize);
|
Result<HeaderCommon[]> GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize);
|
||||||
string GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid);
|
Result<ColumnValue[]> GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid);
|
||||||
string GetData(IMetrologyRepository metrologyRepository, int id, long headerid);
|
Result<DataTable> GetData(IMetrologyRepository metrologyRepository, int id, long headerid);
|
||||||
(string?, string?, Stream?) GetAttachment(IMetrologyRepository metrologyRepository, IAttachmentsService attachmentsService, int toolTypeId, string tabletype, string attachmentId, string filename);
|
(string?, string?, Stream?) GetAttachment(IMetrologyRepository metrologyRepository, IAttachmentsService attachmentsService, int toolTypeId, string tabletype, string attachmentId, string filename);
|
||||||
Exception? OIExport(IMetrologyRepository metrologyRepository, string oiExportPath, int toolTypeId, long headerid);
|
Exception? OIExport(IMetrologyRepository metrologyRepository, string oiExportPath, int toolTypeId, long headerid);
|
||||||
|
|
||||||
|
@ -26,14 +26,14 @@ public class UnitAwaitingDispoController
|
|||||||
_TestContext = testContext;
|
_TestContext = testContext;
|
||||||
_Logger = Log.ForContext<UnitAwaitingDispoController>();
|
_Logger = Log.ForContext<UnitAwaitingDispoController>();
|
||||||
_WebApplicationFactory = new WebApplicationFactory<Viewer.Program>();
|
_WebApplicationFactory = new WebApplicationFactory<Viewer.Program>();
|
||||||
_ControllerName = nameof(Viewer.ApiControllers.ToolTypesController)[..^10];
|
_ControllerName = nameof(Viewer.ApiControllers.AwaitingDispoController)[..^10];
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void TestControllerName()
|
public void TestControllerName()
|
||||||
{
|
{
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
Assert.AreEqual(IToolTypesController<string>.GetRouteName(), _ControllerName);
|
Assert.AreEqual(IAwaitingDispoController<string>.GetRouteName(), _ControllerName);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,8 +43,8 @@ public class UnitAwaitingDispoController
|
|||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
||||||
IEnumerable<AwaitingDispo> awaitingDispos = metrologyRepository.GetAwaitingDispo();
|
IEnumerable<AwaitingDisposition> awaitingDispositions = metrologyRepository.GetAwaitingDisposition();
|
||||||
Assert.IsTrue(awaitingDispos is not null);
|
Assert.IsTrue(awaitingDispositions is not null);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,14 +23,14 @@ public class UnitInboundController
|
|||||||
_TestContext = testContext;
|
_TestContext = testContext;
|
||||||
_Logger = Log.ForContext<UnitInboundController>();
|
_Logger = Log.ForContext<UnitInboundController>();
|
||||||
_WebApplicationFactory = new WebApplicationFactory<Viewer.Program>();
|
_WebApplicationFactory = new WebApplicationFactory<Viewer.Program>();
|
||||||
_ControllerName = nameof(Viewer.ApiControllers.ToolTypesController)[..^10];
|
_ControllerName = nameof(Viewer.ApiControllers.InboundController)[..^10];
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void TestControllerName()
|
public void TestControllerName()
|
||||||
{
|
{
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
Assert.AreEqual(IToolTypesController<string>.GetRouteName(), _ControllerName);
|
Assert.AreEqual(IInboundController<string>.GetRouteName(), _ControllerName);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using OI.Metrology.Shared.DataModels;
|
||||||
using OI.Metrology.Shared.Models.Stateless;
|
using OI.Metrology.Shared.Models.Stateless;
|
||||||
using OI.Metrology.Shared.Services;
|
using OI.Metrology.Shared.Services;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
|
using System.Data;
|
||||||
using System.Net.Http.Json;
|
using System.Net.Http.Json;
|
||||||
|
|
||||||
namespace OI.Metrology.Tests;
|
namespace OI.Metrology.Tests;
|
||||||
@ -44,8 +46,10 @@ public class UnitTestToolTypesController
|
|||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
||||||
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
||||||
object @object = toolTypesRepository.Index(metrologyRepository);
|
Result<ToolTypeNameId[]> result = toolTypesRepository.Index(metrologyRepository);
|
||||||
Assert.IsTrue(@object is not null);
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsTrue(result.Results.Any());
|
||||||
|
Assert.IsFalse(result.Results.All(l => l.ID == 0));
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +58,10 @@ public class UnitTestToolTypesController
|
|||||||
{
|
{
|
||||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}");
|
Result<ToolTypeNameId[]>? result = await httpClient.GetFromJsonAsync<Result<ToolTypeNameId[]>>($"api/{_ControllerName}");
|
||||||
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsTrue(result.Results.Any());
|
||||||
|
Assert.IsFalse(result.Results.All(l => l.ID == 0));
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,8 +72,11 @@ public class UnitTestToolTypesController
|
|||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
||||||
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
||||||
object @object = toolTypesRepository.GetToolTypeMetadata(metrologyRepository, id: 1, sortby: string.Empty);
|
Result<ToolTypeMetadataResult> result = toolTypesRepository.GetToolTypeMetadata(metrologyRepository, id: 1, sortby: string.Empty);
|
||||||
Assert.IsTrue(@object is not null);
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsNotNull(result.Results.Metadata);
|
||||||
|
Assert.IsTrue(result.Results.Metadata.Any());
|
||||||
|
Assert.IsFalse(result.Results.Metadata.All(l => l.ToolTypeID == 0));
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +85,11 @@ public class UnitTestToolTypesController
|
|||||||
{
|
{
|
||||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1");
|
Result<ToolTypeMetadataResult>? result = await httpClient.GetFromJsonAsync<Result<ToolTypeMetadataResult>>($"api/{_ControllerName}/1");
|
||||||
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsNotNull(result.Results.Metadata);
|
||||||
|
Assert.IsTrue(result.Results.Metadata.Any());
|
||||||
|
Assert.IsFalse(result.Results.Metadata.All(l => l.ToolTypeID == 0));
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,8 +100,9 @@ public class UnitTestToolTypesController
|
|||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
||||||
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
||||||
string json = toolTypesRepository.GetHeaders(metrologyRepository, id: 1, datebegin: null, dateend: null, page: null, pagesize: null, headerid: null);
|
Result<DataTable> result = toolTypesRepository.GetHeaders(metrologyRepository, id: 1, datebegin: null, dateend: null, page: null, pagesize: null, headerid: null);
|
||||||
Assert.IsTrue(json is not null);
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsNotNull(result.Results.Rows.Count > 0);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +111,10 @@ public class UnitTestToolTypesController
|
|||||||
{
|
{
|
||||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1/headers");
|
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers");
|
||||||
|
Result<DataTable>? result = System.Text.Json.JsonSerializer.Deserialize<Result<DataTable>>(json);
|
||||||
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsNotNull(result.Results.Rows.Count > 0);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,8 +125,9 @@ public class UnitTestToolTypesController
|
|||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
||||||
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
||||||
string json = toolTypesRepository.GetHeaderTitles(metrologyRepository, id: 1, page: null, pagesize: null);
|
Result<HeaderCommon[]> result = toolTypesRepository.GetHeaderTitles(metrologyRepository, id: 1, page: null, pagesize: null);
|
||||||
Assert.IsTrue(json is not null);
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsTrue(result.Results.Any());
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +136,9 @@ public class UnitTestToolTypesController
|
|||||||
{
|
{
|
||||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1/headertitles");
|
Result<HeaderCommon[]>? result = await httpClient.GetFromJsonAsync<Result<HeaderCommon[]>>($"api/{_ControllerName}/1/headertitles");
|
||||||
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsTrue(result.Results.Any());
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,8 +149,9 @@ public class UnitTestToolTypesController
|
|||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
||||||
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
||||||
string json = toolTypesRepository.GetHeaderFields(metrologyRepository, id: 1, headerid: 1);
|
Result<ColumnValue[]> result = toolTypesRepository.GetHeaderFields(metrologyRepository, id: 1, headerid: 1);
|
||||||
Assert.IsTrue(json is not null);
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsTrue(result.Results.Any());
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +160,9 @@ public class UnitTestToolTypesController
|
|||||||
{
|
{
|
||||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1/headers/1/fields");
|
Result<ColumnValue[]>? result = await httpClient.GetFromJsonAsync<Result<ColumnValue[]>>($"api/{_ControllerName}/1/headers/1/fields");
|
||||||
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsTrue(result.Results.Any());
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,8 +173,9 @@ public class UnitTestToolTypesController
|
|||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService<IMetrologyRepository>();
|
||||||
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService<IToolTypesRepository>();
|
||||||
string json = toolTypesRepository.GetData(metrologyRepository, id: 1, headerid: 1);
|
Result<DataTable> result = toolTypesRepository.GetData(metrologyRepository, id: 1, headerid: 1);
|
||||||
Assert.IsTrue(json is not null);
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsNotNull(result.Results.Rows.Count > 0);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,7 +184,10 @@ public class UnitTestToolTypesController
|
|||||||
{
|
{
|
||||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1/headers/1/data");
|
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/data");
|
||||||
|
Result<DataTable>? result = System.Text.Json.JsonSerializer.Deserialize<Result<DataTable>>(json);
|
||||||
|
Assert.IsNotNull(result?.Results);
|
||||||
|
Assert.IsNotNull(result.Results.Rows.Count > 0);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,7 +198,7 @@ public class UnitTestToolTypesController
|
|||||||
_Logger.Information("Starting Web Application");
|
_Logger.Information("Starting Web Application");
|
||||||
int toolTypeId = 1;
|
int toolTypeId = 1;
|
||||||
string tabletype = "data";
|
string tabletype = "data";
|
||||||
string filename ="data.txt";
|
string filename = "data.txt";
|
||||||
string attachmentId = "ffdf5410-ca19-4097-bfa4-b398e236d07e";
|
string attachmentId = "ffdf5410-ca19-4097-bfa4-b398e236d07e";
|
||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
IAttachmentsService attachmentsService = serviceProvider.GetRequiredService<IAttachmentsService>();
|
IAttachmentsService attachmentsService = serviceProvider.GetRequiredService<IAttachmentsService>();
|
||||||
|
15
Viewer/.vscode/launch.json
vendored
15
Viewer/.vscode/launch.json
vendored
@ -31,6 +31,21 @@
|
|||||||
"type": "coreclr",
|
"type": "coreclr",
|
||||||
"request": "attach",
|
"request": "attach",
|
||||||
"processName": "Archive"
|
"processName": "Archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Watch",
|
||||||
|
"type": "coreclr",
|
||||||
|
"request": "launch",
|
||||||
|
"cwd": "${workspaceFolder}",
|
||||||
|
"program": "dotnet",
|
||||||
|
"args": [
|
||||||
|
"watch",
|
||||||
|
"--launch-profile",
|
||||||
|
"Phares-Development",
|
||||||
|
"--project",
|
||||||
|
".",
|
||||||
|
"--verbose" // Let's us confirm browser connects with hot reload capabilities
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -8,7 +8,7 @@ using System.Text.Json;
|
|||||||
// this controller is for the Awaiting Dispo functionality
|
// this controller is for the Awaiting Dispo functionality
|
||||||
|
|
||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
public class AwaitingDispoController : Controller
|
public class AwaitingDispoController : Controller, IAwaitingDispoController<IActionResult>
|
||||||
{
|
{
|
||||||
private readonly IMetrologyRepository _MetrologyRepository;
|
private readonly IMetrologyRepository _MetrologyRepository;
|
||||||
public AwaitingDispoController(IMetrologyRepository metrologyRepository) =>
|
public AwaitingDispoController(IMetrologyRepository metrologyRepository) =>
|
||||||
@ -19,7 +19,7 @@ public class AwaitingDispoController : Controller
|
|||||||
[HttpGet]
|
[HttpGet]
|
||||||
[ResponseCache(NoStore = true)]
|
[ResponseCache(NoStore = true)]
|
||||||
public IActionResult Index() =>
|
public IActionResult Index() =>
|
||||||
Json(_MetrologyRepository.GetAwaitingDispo(), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
|
Json(_MetrologyRepository.GetAwaitingDisposition(), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
|
||||||
|
|
||||||
// this endpoint is used to set the ReviewDate column, causing the header to no longer show in Awaiting Dispo
|
// this endpoint is used to set the ReviewDate column, causing the header to no longer show in Awaiting Dispo
|
||||||
[HttpPost("/api/awaitingdispo/markasreviewed")]
|
[HttpPost("/api/awaitingdispo/markasreviewed")]
|
||||||
|
@ -6,6 +6,7 @@ namespace OI.Metrology.Viewer.ApiControllers;
|
|||||||
using OI.Metrology.Shared.Models.Stateless;
|
using OI.Metrology.Shared.Models.Stateless;
|
||||||
using OI.Metrology.Shared.Services;
|
using OI.Metrology.Shared.Services;
|
||||||
using OI.Metrology.Viewer.Models;
|
using OI.Metrology.Viewer.Models;
|
||||||
|
using System.Data;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
@ -39,23 +40,31 @@ public class ToolTypesController : Controller, IToolTypesController<IActionResul
|
|||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("{id}/headers")]
|
[Route("{id}/headers")]
|
||||||
public IActionResult GetHeaders(int id, [FromQuery] DateTime? datebegin, [FromQuery] DateTime? dateend, [FromQuery] int? page, [FromQuery] int? pagesize, [FromQuery] long? headerid) =>
|
public IActionResult GetHeaders(int id, [FromQuery] DateTime? datebegin, [FromQuery] DateTime? dateend, [FromQuery] int? page, [FromQuery] int? pagesize, [FromQuery] long? headerid)
|
||||||
Content(_ToolTypesRepository.GetHeaders(_MetrologyRepo, id, datebegin, dateend, page, pagesize, headerid));
|
{
|
||||||
|
Shared.DataModels.Result<DataTable> r = _ToolTypesRepository.GetHeaders(_MetrologyRepo, id, datebegin, dateend, page, pagesize, headerid);
|
||||||
|
string json = JsonConvert.SerializeObject(r);
|
||||||
|
return Content(json);
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("{id}/headertitles")]
|
[Route("{id}/headertitles")]
|
||||||
public IActionResult GetHeaderTitles(int id, [FromQuery] int? page, [FromQuery] int? pagesize) =>
|
public IActionResult GetHeaderTitles(int id, [FromQuery] int? page, [FromQuery] int? pagesize) =>
|
||||||
Content(_ToolTypesRepository.GetHeaderTitles(_MetrologyRepo, id, page, pagesize));
|
Json(_ToolTypesRepository.GetHeaderTitles(_MetrologyRepo, id, page, pagesize), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("{id}/headers/{headerid}/fields")]
|
[Route("{id}/headers/{headerid}/fields")]
|
||||||
public IActionResult GetHeaderFields(int id, long headerid) =>
|
public IActionResult GetHeaderFields(int id, long headerid) =>
|
||||||
Content(_ToolTypesRepository.GetHeaderFields(_MetrologyRepo, id, headerid));
|
Json(_ToolTypesRepository.GetHeaderFields(_MetrologyRepo, id, headerid), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("{id}/headers/{headerid}/data")]
|
[Route("{id}/headers/{headerid}/data")]
|
||||||
public IActionResult GetData(int id, long headerid) =>
|
public IActionResult GetData(int id, long headerid)
|
||||||
Content(_ToolTypesRepository.GetData(_MetrologyRepo, id, headerid));
|
{
|
||||||
|
Shared.DataModels.Result<DataTable> r = _ToolTypesRepository.GetData(_MetrologyRepo, id, headerid);
|
||||||
|
string json = JsonConvert.SerializeObject(r);
|
||||||
|
return Content(json);
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("{toolTypeId}/{tabletype}/files/{attachmentId}/{filename}")]
|
[Route("{toolTypeId}/{tabletype}/files/{attachmentId}/{filename}")]
|
||||||
|
@ -705,10 +705,10 @@ public class MetrologyRepository : IMetrologyRepository
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<AwaitingDispo> GetAwaitingDispo()
|
public IEnumerable<AwaitingDisposition> GetAwaitingDisposition()
|
||||||
{
|
{
|
||||||
using DbConnection conn = GetDbConnection();
|
using DbConnection conn = GetDbConnection();
|
||||||
return conn.Query<AwaitingDispo>("GetAwaitingDispo", commandType: CommandType.StoredProcedure);
|
return conn.Query<AwaitingDisposition>("GetAwaitingDispo", commandType: CommandType.StoredProcedure);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int UpdateReviewDate(int toolTypeId, long headerId, bool clearDate)
|
public int UpdateReviewDate(int toolTypeId, long headerId, bool clearDate)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using Newtonsoft.Json;
|
|
||||||
using OI.Metrology.Shared.DataModels;
|
using OI.Metrology.Shared.DataModels;
|
||||||
using OI.Metrology.Shared.Models.Stateless;
|
using OI.Metrology.Shared.Models.Stateless;
|
||||||
using OI.Metrology.Shared.Services;
|
using OI.Metrology.Shared.Services;
|
||||||
|
using System.Data;
|
||||||
|
|
||||||
namespace OI.Metrology.Viewer.Repository;
|
namespace OI.Metrology.Viewer.Repository;
|
||||||
|
|
||||||
@ -13,18 +13,20 @@ public class ToolTypesRepository : IToolTypesRepository
|
|||||||
public ToolTypesRepository() => _Log = Serilog.Log.ForContext<ToolTypesRepository>();
|
public ToolTypesRepository() => _Log = Serilog.Log.ForContext<ToolTypesRepository>();
|
||||||
|
|
||||||
// Get a list of tooltypes, returns just Name and ID
|
// Get a list of tooltypes, returns just Name and ID
|
||||||
object IToolTypesRepository.Index(IMetrologyRepository metrologyRepository)
|
Result<ToolTypeNameId[]> IToolTypesRepository.Index(IMetrologyRepository metrologyRepository)
|
||||||
{
|
{
|
||||||
var r = new
|
ToolTypeNameId[] toolTypeNameIdCollection = metrologyRepository.GetToolTypes().Select(tt => new ToolTypeNameId() { ToolTypeName = tt.ToolTypeName, ID = tt.ID }).ToArray();
|
||||||
|
Result<ToolTypeNameId[]> r = new()
|
||||||
{
|
{
|
||||||
Results = metrologyRepository.GetToolTypes().Select(tt => new { tt.ToolTypeName, tt.ID })
|
Results = toolTypeNameIdCollection,
|
||||||
|
TotalRows = toolTypeNameIdCollection.Length,
|
||||||
};
|
};
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets the metadata for a tooltype, accepts a parameter which sorts the results
|
// Gets the metadata for a tooltype, accepts a parameter which sorts the results
|
||||||
// This is used to setup the grid displays on the UI
|
// This is used to setup the grid displays on the UI
|
||||||
object IToolTypesRepository.GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby)
|
Result<ToolTypeMetadataResult> IToolTypesRepository.GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby)
|
||||||
{
|
{
|
||||||
ToolType tt = metrologyRepository.GetToolTypeByID(id);
|
ToolType tt = metrologyRepository.GetToolTypeByID(id);
|
||||||
IEnumerable<ToolTypeMetadata> md = metrologyRepository.GetToolTypeMetadataByToolTypeID(id);
|
IEnumerable<ToolTypeMetadata> md = metrologyRepository.GetToolTypeMetadataByToolTypeID(id);
|
||||||
@ -34,70 +36,65 @@ public class ToolTypesRepository : IToolTypesRepository
|
|||||||
if (string.Equals(sortby, "table", StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(sortby, "table", StringComparison.OrdinalIgnoreCase))
|
||||||
md = md.OrderBy(f => f.GridDisplayOrder).ToList();
|
md = md.OrderBy(f => f.GridDisplayOrder).ToList();
|
||||||
|
|
||||||
var r = new
|
ToolTypeMetadataResult toolTypeMetadataResult = new(tt, md.ToArray());
|
||||||
|
int totalRows = toolTypeMetadataResult.Metadata is not null ? toolTypeMetadataResult.Metadata.Length : 0;
|
||||||
|
Result<ToolTypeMetadataResult> r = new()
|
||||||
{
|
{
|
||||||
Results = new
|
Results = toolTypeMetadataResult,
|
||||||
{
|
TotalRows = totalRows,
|
||||||
ToolType = tt,
|
|
||||||
Metadata = md
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets headers, request/response format is to allow paging with igniteUI
|
// Gets headers, request/response format is to allow paging with igniteUI
|
||||||
// The headerid parameter is used for navigating directly to a header, when the button is clicked in Awaiting Dispo
|
// The headerid parameter is used for navigating directly to a header, when the button is clicked in Awaiting Dispo
|
||||||
string IToolTypesRepository.GetHeaders(IMetrologyRepository metrologyRepository, int id, DateTime? datebegin, DateTime? dateend, int? page, int? pagesize, long? headerid)
|
Result<DataTable> IToolTypesRepository.GetHeaders(IMetrologyRepository metrologyRepository, int id, DateTime? datebegin, DateTime? dateend, int? page, int? pagesize, long? headerid)
|
||||||
{
|
{
|
||||||
string result;
|
|
||||||
long totalRecs;
|
long totalRecs;
|
||||||
System.Data.DataTable dt = metrologyRepository.GetHeaders(id, datebegin, dateend, page, pagesize, headerid, out totalRecs);
|
DataTable dataTable = metrologyRepository.GetHeaders(id, datebegin, dateend, page, pagesize, headerid, out totalRecs);
|
||||||
var r = new
|
Result<DataTable> r = new()
|
||||||
{
|
{
|
||||||
Results = dt,
|
Results = dataTable,
|
||||||
TotalRows = totalRecs,
|
TotalRows = totalRecs,
|
||||||
};
|
};
|
||||||
result = JsonConvert.SerializeObject(r);
|
return r;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets header titles, used in the Run Headers UI
|
// Gets header titles, used in the Run Headers UI
|
||||||
string IToolTypesRepository.GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize)
|
Result<HeaderCommon[]> IToolTypesRepository.GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize)
|
||||||
{
|
{
|
||||||
string result;
|
|
||||||
long totalRecs;
|
long totalRecs;
|
||||||
IEnumerable<HeaderCommon> dt = metrologyRepository.GetHeaderTitles(id, page, pagesize, out totalRecs);
|
HeaderCommon[] headerCommonCollection = metrologyRepository.GetHeaderTitles(id, page, pagesize, out totalRecs).ToArray();
|
||||||
var r = new
|
Result<HeaderCommon[]> r = new()
|
||||||
{
|
{
|
||||||
Results = dt,
|
Results = headerCommonCollection,
|
||||||
TotalRows = totalRecs,
|
TotalRows = totalRecs,
|
||||||
};
|
};
|
||||||
result = JsonConvert.SerializeObject(r);
|
return r;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get all of the fields for a header, used with the Run Header UI
|
// Get all of the fields for a header, used with the Run Header UI
|
||||||
string IToolTypesRepository.GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid)
|
Result<ColumnValue[]> IToolTypesRepository.GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid)
|
||||||
{
|
{
|
||||||
string result;
|
ColumnValue[] columnValueCollection = metrologyRepository.GetHeaderFields(id, headerid).Select(x => new ColumnValue() { Column = x.Key, Value = x.Value }).ToArray();
|
||||||
var r = new
|
Result<ColumnValue[]> r = new()
|
||||||
{
|
{
|
||||||
Results = metrologyRepository.GetHeaderFields(id, headerid).Select(x => new { Column = x.Key, x.Value }).ToList()
|
Results = columnValueCollection,
|
||||||
|
TotalRows = columnValueCollection.Length,
|
||||||
};
|
};
|
||||||
result = JsonConvert.SerializeObject(r);
|
return r;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the data for a header, used with the Run Info UI
|
// Get the data for a header, used with the Run Info UI
|
||||||
string IToolTypesRepository.GetData(IMetrologyRepository metrologyRepository, int id, long headerid)
|
Result<DataTable> IToolTypesRepository.GetData(IMetrologyRepository metrologyRepository, int id, long headerid)
|
||||||
{
|
{
|
||||||
string result;
|
DataTable dataTable = metrologyRepository.GetData(id, headerid);
|
||||||
var r = new
|
Result<DataTable> r = new()
|
||||||
{
|
{
|
||||||
Results = metrologyRepository.GetData(id, headerid)
|
Results = dataTable,
|
||||||
|
TotalRows = dataTable.Rows.Count,
|
||||||
};
|
};
|
||||||
result = JsonConvert.SerializeObject(r);
|
return r;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display an attachment, used for Run Info - note it is by tool type ID and attachment GUID, so it is best for internal use
|
// Display an attachment, used for Run Info - note it is by tool type ID and attachment GUID, so it is best for internal use
|
||||||
@ -133,7 +130,7 @@ public class ToolTypesRepository : IToolTypesRepository
|
|||||||
Exception? result = null;
|
Exception? result = null;
|
||||||
// Call the export stored procedure
|
// Call the export stored procedure
|
||||||
_Log.Debug($"Exporting to <{oiExportPath}>");
|
_Log.Debug($"Exporting to <{oiExportPath}>");
|
||||||
System.Data.DataSet ds = metrologyRepository.GetOIExportData(toolTypeId, headerid);
|
DataSet ds = metrologyRepository.GetOIExportData(toolTypeId, headerid);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// The SP must return 3 result tables
|
// The SP must return 3 result tables
|
||||||
@ -154,7 +151,7 @@ public class ToolTypesRepository : IToolTypesRepository
|
|||||||
_ = sb.Append('\t');
|
_ = sb.Append('\t');
|
||||||
}
|
}
|
||||||
// The third table has the detail data
|
// The third table has the detail data
|
||||||
foreach (System.Data.DataRow dr in ds.Tables[2].Rows)
|
foreach (DataRow dr in ds.Tables[2].Rows)
|
||||||
{
|
{
|
||||||
foreach (object? o in dr.ItemArray)
|
foreach (object? o in dr.ItemArray)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user