All but DataTable Deserialize
This commit is contained in:
15
Viewer/.vscode/launch.json
vendored
15
Viewer/.vscode/launch.json
vendored
@ -31,6 +31,21 @@
|
||||
"type": "coreclr",
|
||||
"request": "attach",
|
||||
"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
|
||||
|
||||
[Route("api/[controller]")]
|
||||
public class AwaitingDispoController : Controller
|
||||
public class AwaitingDispoController : Controller, IAwaitingDispoController<IActionResult>
|
||||
{
|
||||
private readonly IMetrologyRepository _MetrologyRepository;
|
||||
public AwaitingDispoController(IMetrologyRepository metrologyRepository) =>
|
||||
@ -19,7 +19,7 @@ public class AwaitingDispoController : Controller
|
||||
[HttpGet]
|
||||
[ResponseCache(NoStore = true)]
|
||||
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
|
||||
[HttpPost("/api/awaitingdispo/markasreviewed")]
|
||||
|
@ -6,6 +6,7 @@ namespace OI.Metrology.Viewer.ApiControllers;
|
||||
using OI.Metrology.Shared.Models.Stateless;
|
||||
using OI.Metrology.Shared.Services;
|
||||
using OI.Metrology.Viewer.Models;
|
||||
using System.Data;
|
||||
using System.Text.Json;
|
||||
|
||||
[Route("api/[controller]")]
|
||||
@ -39,23 +40,31 @@ public class ToolTypesController : Controller, IToolTypesController<IActionResul
|
||||
|
||||
[HttpGet]
|
||||
[Route("{id}/headers")]
|
||||
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));
|
||||
public IActionResult GetHeaders(int id, [FromQuery] DateTime? datebegin, [FromQuery] DateTime? dateend, [FromQuery] int? page, [FromQuery] int? pagesize, [FromQuery] long? headerid)
|
||||
{
|
||||
Shared.DataModels.Result<DataTable> r = _ToolTypesRepository.GetHeaders(_MetrologyRepo, id, datebegin, dateend, page, pagesize, headerid);
|
||||
string json = JsonConvert.SerializeObject(r);
|
||||
return Content(json);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("{id}/headertitles")]
|
||||
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]
|
||||
[Route("{id}/headers/{headerid}/fields")]
|
||||
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]
|
||||
[Route("{id}/headers/{headerid}/data")]
|
||||
public IActionResult GetData(int id, long headerid) =>
|
||||
Content(_ToolTypesRepository.GetData(_MetrologyRepo, id, headerid));
|
||||
public IActionResult GetData(int id, long headerid)
|
||||
{
|
||||
Shared.DataModels.Result<DataTable> r = _ToolTypesRepository.GetData(_MetrologyRepo, id, headerid);
|
||||
string json = JsonConvert.SerializeObject(r);
|
||||
return Content(json);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("{toolTypeId}/{tabletype}/files/{attachmentId}/{filename}")]
|
||||
|
@ -705,10 +705,10 @@ public class MetrologyRepository : IMetrologyRepository
|
||||
return r;
|
||||
}
|
||||
|
||||
public IEnumerable<AwaitingDispo> GetAwaitingDispo()
|
||||
public IEnumerable<AwaitingDisposition> GetAwaitingDisposition()
|
||||
{
|
||||
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)
|
||||
|
@ -1,7 +1,7 @@
|
||||
using Newtonsoft.Json;
|
||||
using OI.Metrology.Shared.DataModels;
|
||||
using OI.Metrology.Shared.Models.Stateless;
|
||||
using OI.Metrology.Shared.Services;
|
||||
using System.Data;
|
||||
|
||||
namespace OI.Metrology.Viewer.Repository;
|
||||
|
||||
@ -13,18 +13,20 @@ public class ToolTypesRepository : IToolTypesRepository
|
||||
public ToolTypesRepository() => _Log = Serilog.Log.ForContext<ToolTypesRepository>();
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// Gets the metadata for a tooltype, accepts a parameter which sorts the results
|
||||
// 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);
|
||||
IEnumerable<ToolTypeMetadata> md = metrologyRepository.GetToolTypeMetadataByToolTypeID(id);
|
||||
@ -34,70 +36,65 @@ public class ToolTypesRepository : IToolTypesRepository
|
||||
if (string.Equals(sortby, "table", StringComparison.OrdinalIgnoreCase))
|
||||
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
|
||||
{
|
||||
ToolType = tt,
|
||||
Metadata = md
|
||||
}
|
||||
Results = toolTypeMetadataResult,
|
||||
TotalRows = totalRows,
|
||||
};
|
||||
return r;
|
||||
}
|
||||
|
||||
// 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
|
||||
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;
|
||||
System.Data.DataTable dt = metrologyRepository.GetHeaders(id, datebegin, dateend, page, pagesize, headerid, out totalRecs);
|
||||
var r = new
|
||||
DataTable dataTable = metrologyRepository.GetHeaders(id, datebegin, dateend, page, pagesize, headerid, out totalRecs);
|
||||
Result<DataTable> r = new()
|
||||
{
|
||||
Results = dt,
|
||||
Results = dataTable,
|
||||
TotalRows = totalRecs,
|
||||
};
|
||||
result = JsonConvert.SerializeObject(r);
|
||||
return result;
|
||||
return r;
|
||||
}
|
||||
|
||||
// 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;
|
||||
IEnumerable<HeaderCommon> dt = metrologyRepository.GetHeaderTitles(id, page, pagesize, out totalRecs);
|
||||
var r = new
|
||||
HeaderCommon[] headerCommonCollection = metrologyRepository.GetHeaderTitles(id, page, pagesize, out totalRecs).ToArray();
|
||||
Result<HeaderCommon[]> r = new()
|
||||
{
|
||||
Results = dt,
|
||||
Results = headerCommonCollection,
|
||||
TotalRows = totalRecs,
|
||||
};
|
||||
result = JsonConvert.SerializeObject(r);
|
||||
return result;
|
||||
return r;
|
||||
}
|
||||
|
||||
// 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;
|
||||
var r = new
|
||||
ColumnValue[] columnValueCollection = metrologyRepository.GetHeaderFields(id, headerid).Select(x => new ColumnValue() { Column = x.Key, Value = x.Value }).ToArray();
|
||||
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 result;
|
||||
return r;
|
||||
}
|
||||
|
||||
// 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;
|
||||
var r = new
|
||||
DataTable dataTable = metrologyRepository.GetData(id, headerid);
|
||||
Result<DataTable> r = new()
|
||||
{
|
||||
Results = metrologyRepository.GetData(id, headerid)
|
||||
Results = dataTable,
|
||||
TotalRows = dataTable.Rows.Count,
|
||||
};
|
||||
result = JsonConvert.SerializeObject(r);
|
||||
return result;
|
||||
return r;
|
||||
}
|
||||
|
||||
// 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;
|
||||
// Call the export stored procedure
|
||||
_Log.Debug($"Exporting to <{oiExportPath}>");
|
||||
System.Data.DataSet ds = metrologyRepository.GetOIExportData(toolTypeId, headerid);
|
||||
DataSet ds = metrologyRepository.GetOIExportData(toolTypeId, headerid);
|
||||
try
|
||||
{
|
||||
// The SP must return 3 result tables
|
||||
@ -154,7 +151,7 @@ public class ToolTypesRepository : IToolTypesRepository
|
||||
_ = sb.Append('\t');
|
||||
}
|
||||
// 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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user