Viewer to Server

This commit is contained in:
2023-02-16 15:17:31 -07:00
parent 5c50078c04
commit a25dc93610
968 changed files with 16395 additions and 2385 deletions

View File

@ -0,0 +1,18 @@
namespace OI.Metrology.Shared.DataModels;
public class AwaitingDisposition
{
public string? PK { get; set; }
public string? Title { get; set; }
public int ID { get; set; }
public int ToolTypeID { get; set; }
public string? ToolType { get; set; }
public string? Tool { get; set; }
public string? Reactor { get; set; }
public string? RDS { get; set; }
public string? PSN { get; set; }
public string? Layer { get; set; }
public string? Zone { get; set; }
public DateTime InsertDate { get; set; }
public DateTime Expiration { get; set; }
}

View File

@ -0,0 +1,9 @@
namespace OI.Metrology.Shared.DataModels;
public class ColumnValue
{
public string? Column { get; set; }
public string? Value { get; set; }
}

View File

@ -2,10 +2,31 @@
public class HeaderCommon
{
public long ID { get; set; }
public DateTime InsertDate { get; set; }
public Guid AttachmentID { get; set; }
public string? Title { get; set; }
public string? Recipe { get; set; }
public DateTime Date { get; set; }
public long ToolTypeID { get; set; }
public string? ToolTypeName { get; set; }
// [Newtonsoft.Json.JsonProperty("Tool")]
// [System.Text.Json.Serialization.JsonPropertyName("Tool")]
// public string? Tool { get; set; }
// [Newtonsoft.Json.JsonProperty("Equipment ID")]
// [System.Text.Json.Serialization.JsonPropertyName("Equipment ID")]
// public string? Equipment_ID { get; set; }
public string? MesEntity { get; set; }
public string? Employee { get; set; }
public string? Layer { get; set; }
public string? PSN { get; set; }
public string? RDS { get; set; }
public string? Reactor { get; set; }
public string? Recipe { get; set; }
public string? Zone { get; set; }
}

View File

@ -0,0 +1,47 @@
namespace OI.Metrology.Shared.DataModels;
public class Pinned : HeaderCommon
{
public string Point1 { get; set; }
public string Point2 { get; set; }
public string Point3 { get; set; }
public string Point4 { get; set; }
public string Point5 { get; set; }
public string Point6 { get; set; }
public string Point7 { get; set; }
public string Point8 { get; set; }
public string Point9 { get; set; }
public Pinned(HeaderCommon headerCommon, List<string> values)
{
ID = headerCommon.ID;
InsertDate = headerCommon.InsertDate;
AttachmentID = headerCommon.AttachmentID;
Title = headerCommon.Title;
Date = headerCommon.Date;
ToolTypeID = headerCommon.ToolTypeID;
ToolTypeName = headerCommon.ToolTypeName;
MesEntity = headerCommon.MesEntity;
Employee = headerCommon.Employee;
Layer = headerCommon.Layer;
PSN = headerCommon.PSN;
RDS = headerCommon.RDS;
Reactor = headerCommon.Reactor;
Recipe = headerCommon.Recipe;
Zone = headerCommon.Zone;
Point1 = values[0];
Point2 = values[1];
Point3 = values[2];
Point4 = values[3];
Point5 = values[4];
Point6 = values[5];
Point7 = values[6];
Point8 = values[7];
Point9 = values[8];
}
}

View File

@ -0,0 +1,7 @@
namespace OI.Metrology.Shared.DataModels;
public class Result<T>
{
public T? Results { get; set; }
public long TotalRows { get; set; }
}

View 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;
}
}

View File

@ -0,0 +1,9 @@
namespace OI.Metrology.Shared.DataModels;
public class ToolTypeNameId
{
public string? ToolTypeName { get; set; }
public int ID { get; set; }
}

View File

@ -10,7 +10,7 @@ public class ExtWebClient : WebClient
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest webRequest = base.GetWebRequest(address);
if (webRequest != null)
if (webRequest is not null)
webRequest.PreAuthenticate = PreAuthenticate;
return webRequest;
}

View File

@ -0,0 +1,7 @@
using System.Text.Json.Serialization;
namespace OI.Metrology.Shared.Models;
public record AdditionalData(
[property: JsonPropertyName("ServiceId")] string ServiceId
);

View File

@ -0,0 +1,9 @@
using System.Text.Json.Serialization;
namespace OI.Metrology.Shared.Models;
public record AllowedActions(
[property: JsonPropertyName("Incident")] bool Incident,
[property: JsonPropertyName("Accept")] bool Accept,
[property: JsonPropertyName("Reorder")] bool Reorder
);

18
Shared/Models/Booking.cs Normal file
View File

@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace OI.Metrology.Shared.Models;
public record Booking(
[property: JsonPropertyName("Catalog")] Catalog Catalog,
[property: JsonPropertyName("Name")] string Name,
[property: JsonPropertyName("Description")] string Description,
[property: JsonPropertyName("PaymentMethod")] int PaymentMethod,
[property: JsonPropertyName("Service")] Service Service,
[property: JsonPropertyName("Order")] Order Order,
[property: JsonPropertyName("ApprovalStatus")] int ApprovalStatus,
[property: JsonPropertyName("AllowedActions")] AllowedActions AllowedActions,
[property: JsonPropertyName("ObjectId")] string ObjectId,
[property: JsonPropertyName("Id")] string Id,
[property: JsonPropertyName("Quantity")] int Quantity,
[property: JsonPropertyName("AdditionalData")] AdditionalData AdditionalData
);

9
Shared/Models/Catalog.cs Normal file
View File

@ -0,0 +1,9 @@
using System.Text.Json.Serialization;
namespace OI.Metrology.Shared.Models;
public record Catalog(
[property: JsonPropertyName("Id")] string Id,
[property: JsonPropertyName("Name")] string Name,
[property: JsonPropertyName("CurrencyCode")] string CurrencyCode
);

View File

@ -0,0 +1,19 @@
namespace OI.Metrology.Shared.Models;
public class DataResponse
{
public bool Success { get; set; }
public long HeaderID { get; set; }
public List<string> Errors { get; set; }
public List<string> Warnings { get; set; }
public DataResponse()
{
HeaderID = -1;
Success = false;
Errors = new List<string>();
Warnings = new List<string>();
}
}

26
Shared/Models/Order.cs Normal file
View File

@ -0,0 +1,26 @@
using System.Text.Json.Serialization;
namespace OI.Metrology.Shared.Models;
public record Order(
[property: JsonPropertyName("Bookings")] IReadOnlyList<Booking> Bookings,
[property: JsonPropertyName("AllowedActions")] AllowedActions AllowedActions,
[property: JsonPropertyName("Id")] string Id,
[property: JsonPropertyName("ObjectId")] string ObjectId,
[property: JsonPropertyName("Name")] string Name,
[property: JsonPropertyName("Type")] string Type,
[property: JsonPropertyName("TypeId")] int TypeId,
[property: JsonPropertyName("State")] string State,
[property: JsonPropertyName("StateId")] int StateId,
[property: JsonPropertyName("StateIcon")] string StateIcon,
[property: JsonPropertyName("StateColor")] string StateColor,
[property: JsonPropertyName("ItemNumber")] string ItemNumber,
[property: JsonPropertyName("CreatedDate")] DateTime CreatedDate,
[property: JsonPropertyName("DecidedDate")] DateTime DecidedDate,
[property: JsonPropertyName("CostCenterId")] string CostCenterId,
[property: JsonPropertyName("CostCenterName")] string CostCenterName,
[property: JsonPropertyName("Recipient")] string Recipient,
[property: JsonPropertyName("RecipientId")] string RecipientId,
[property: JsonPropertyName("Requestor")] string Requestor,
[property: JsonPropertyName("RequestorId")] string RequestorId
);

7
Shared/Models/Price.cs Normal file
View File

@ -0,0 +1,7 @@
using System.Text.Json.Serialization;
namespace OI.Metrology.Shared.Models;
public record Price(
[property: JsonPropertyName("CC")] string CC
);

20
Shared/Models/Service.cs Normal file
View File

@ -0,0 +1,20 @@
using System.Text.Json.Serialization;
namespace OI.Metrology.Shared.Models;
public record Service(
[property: JsonPropertyName("Id")] string Id,
[property: JsonPropertyName("Quantity")] int Quantity,
[property: JsonPropertyName("PaymentMethod")] int PaymentMethod,
[property: JsonPropertyName("Price")] Price Price,
[property: JsonPropertyName("ObjectId")] string ObjectId,
[property: JsonPropertyName("ConfigurationItemType")] int ConfigurationItemType,
[property: JsonPropertyName("ConfigurationItemTypeName")] string ConfigurationItemTypeName,
[property: JsonPropertyName("ServiceType")] int ServiceType,
[property: JsonPropertyName("CustomFormEntityId")] string CustomFormEntityId,
[property: JsonPropertyName("CustomFormEntityName")] string CustomFormEntityName,
[property: JsonPropertyName("CreateMultipleBookings")] bool CreateMultipleBookings,
[property: JsonPropertyName("AllowIdenticalInstances")] bool AllowIdenticalInstances,
[property: JsonPropertyName("Catalog")] Catalog Catalog,
[property: JsonPropertyName("UninstallationMode")] int? UninstallationMode
);

View File

@ -0,0 +1,8 @@
using System.Text.Json.Serialization;
namespace OI.Metrology.Shared.Models;
public record ServiceShop(
[property: JsonPropertyName("Orders")] IReadOnlyList<Order> Orders,
[property: JsonPropertyName("Total")] int Total
);

View File

@ -0,0 +1,15 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IAppSettingsController<T>
{
enum Action : int
{
App = 0,
DevOps = 1
}
static string GetRouteName() => nameof(IAppSettingsController<T>)[1..^10];
T GetAppSettings();
}

View File

@ -0,0 +1,9 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IAppSettingsRepository<T>
{
T GetAppSettings();
string GetBuildNumberAndGitCommitSeven();
}

View 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);
}

View File

@ -0,0 +1,16 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IClientSettingsController<T>
{
enum Action : int
{
Client = 0,
IP = 1
}
static string GetRouteName() => nameof(IClientSettingsController<T>)[1..^10];
T GetClientSettings();
T GetIpAddress();
}

View File

@ -0,0 +1,11 @@
using System.Net;
namespace OI.Metrology.Shared.Models.Stateless;
public interface IClientSettingsRepository
{
List<string> GetClientSettings(IPAddress? remoteIpAddress);
string GetIpAddress(IPAddress? remoteIpAddress);
}

View File

@ -0,0 +1,17 @@
using Newtonsoft.Json.Linq;
namespace OI.Metrology.Shared.Models.Stateless;
public interface IInboundController<T>
{
enum Action : int
{
Index = 0
}
static string GetRouteName() => nameof(IInboundController<T>)[1..^10];
T Data(string tooltype, JToken jsonbody);
T AttachFile(string tooltype, long headerid, string datauniqueid = "");
}

View File

@ -0,0 +1,14 @@
using Newtonsoft.Json.Linq;
using OI.Metrology.Shared.Services;
using System.Net;
namespace OI.Metrology.Shared.Models.Stateless;
public interface IInboundRepository
{
bool IsIPAddressAllowed(string inboundApiAllowedIPList, IPAddress? remoteIP);
DataResponse Data(IMetrologyRepository metrologyRepository, IInboundDataService inboundDataService, string tooltype, JToken jsonbody);
string? AttachFile(IMetrologyRepository metrologyRepository, IAttachmentsService _AttachmentsService, string tooltype, long headerid, string datauniqueid, string fileName, object uploadedFile);
}

View File

@ -0,0 +1,10 @@
using System.Runtime.CompilerServices;
namespace OI.Metrology.Shared.Models.Stateless;
public interface IMethodName
{
static string? GetActualAsyncMethodName([CallerMemberName] string? name = null) => name;
}

View File

@ -1,14 +1,12 @@
using Newtonsoft.Json.Linq;
using OI.Metrology.Shared.DataModels;
using System.Data;
using System.Transactions;
namespace OI.Metrology.Shared.Repositories;
namespace OI.Metrology.Shared.Models.Stateless;
using DataModels;
public interface IMetrologyRepo
public interface IMetrologyRepository
{
bool IsTestDatabase();
IEnumerable<ToolType> GetToolTypes();
ToolType GetToolTypeByName(string name);
@ -27,7 +25,7 @@ public interface IMetrologyRepo
DataTable GetData(int toolTypeId, long headerId);
DataTable GetDataSharePoint(int toolTypeId, string headerId);
IEnumerable<HeaderCommon> GetHeaderTitles(int toolTypeId, int? pageNo, int? pageSize, out long totalRecords);
HeaderCommon[] GetHeaderTitles(int? toolTypeId, int? pageNo, int? pageSize, out long totalRecords);
Guid GetHeaderAttachmentIDByTitle(int toolTypeId, string title);
Guid GetDataAttachmentIDByTitle(int toolTypeId, string title);
@ -44,7 +42,8 @@ public interface IMetrologyRepo
IEnumerable<KeyValuePair<string, string>> GetHeaderFields(int toolTypeId, long headerid);
IEnumerable<AwaitingDispo> GetAwaitingDispo();
IEnumerable<AwaitingDisposition> GetAwaitingDisposition();
int UpdateReviewDate(int toolTypeId, long headerId, bool clearDate);
}

View File

@ -0,0 +1,16 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IPinController<T>
{
enum Action : int
{
Index = 0,
MarkAsPinned = 1
}
static string GetRouteName() => nameof(IPinController<T>)[1..^10];
T MarkAsPinned(DataModels.HeaderCommon headerCommon);
T GetPinnedTable(int toolTypeId, string? biorad_id = null, string? cde_id = null, string? rds = null);
}

View File

@ -0,0 +1,11 @@
using OI.Metrology.Shared.DataModels;
namespace OI.Metrology.Shared.Models.Stateless;
public interface IPinRepository
{
Result<Pinned[]> GetPinnedTable(IMetrologyRepository metrologyRepository, int id, string? biorad_id, string? cde_id, string? rds);
void SetPinnedTable(HeaderCommon headerCommon);
}

View File

@ -0,0 +1,11 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IServiceShopOrder
{
ViewModels.ServiceShopOrder[] TestStatic_GetServiceShopOrders(ServiceShop? serviceShop) =>
GetServiceShopOrders(serviceShop);
static ViewModels.ServiceShopOrder[] GetServiceShopOrders(ServiceShop? serviceShop) =>
ServiceShopOrder.GetServiceShopOrders(serviceShop);
}

View File

@ -0,0 +1,15 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IServiceShopOrderController<T>
{
enum Action : int
{
All = 0
}
static string GetRouteName() => nameof(IServiceShopOrderController<T>)[1..^10];
Task<T> GetAllServiceShopOrders();
Task<T> GetServiceShopOrders(string id);
}

View File

@ -0,0 +1,9 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IServiceShopOrderRepository
{
Task<ViewModels.ServiceShopOrder[]> GetAllServiceShopOrders();
Task<ViewModels.ServiceShopOrder[]> GetServiceShopOrders(string id);
}

View File

@ -0,0 +1,21 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IToolTypesController<T>
{
enum Action : int
{
Index = 0
}
static string GetRouteName() => nameof(IToolTypesController<T>)[1..^10];
T Index();
T GetToolTypeMetadata(int id, string sortby = "");
T GetHeaders(int id, DateTime? datebegin, DateTime? dateend, int? page, int? pagesize, long? headerid);
T GetHeaderTitles(int id, int? page, int? pagesize);
T GetHeaderFields(int id, long headerid);
T GetData(int id, long headerid);
T GetAttachment(int toolTypeId, string tabletype, string attachmentId, string filename);
T OIExport(int toolTypeId, long headerid);
}

View File

@ -0,0 +1,20 @@
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Services;
using System.Data;
namespace OI.Metrology.Shared.Models.Stateless;
public interface IToolTypesRepository
{
Result<ToolTypeNameId[]> Index(IMetrologyRepository metrologyRepository);
Result<ToolTypeMetadataResult> GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby = "");
Result<DataTable> GetHeaders(IMetrologyRepository metrologyRepository, int id, DateTime? datebegin, DateTime? dateend, int? page, int? pagesize, long? headerid);
Result<HeaderCommon[]> GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize);
Result<ColumnValue[]> GetHeaderFields(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);
Exception? OIExport(IMetrologyRepository metrologyRepository, string oiExportPath, int toolTypeId, long headerid);
Result<DataTable> GetExportData(IMetrologyRepository metrologyRepository, int toolTypeId, DateTime? datebegin, DateTime? dateend);
byte[] GetCSVExport(IMetrologyRepository metrologyRepository, int toolTypeId, DateTime? datebegin, DateTime? dateend);
}

View File

@ -0,0 +1,16 @@
namespace OI.Metrology.Shared.Models.Stateless;
internal abstract class ServiceShopOrder
{
internal static ViewModels.ServiceShopOrder[] GetServiceShopOrders(ServiceShop? serviceShop)
{
ViewModels.ServiceShopOrder[] results;
if (serviceShop is null || !serviceShop.Orders.Any())
results = Array.Empty<ViewModels.ServiceShopOrder>();
else
results = serviceShop.Orders.Select(l => new ViewModels.ServiceShopOrder(l)).ToArray();
return results;
}
}

View File

@ -1,5 +0,0 @@
namespace OI.Metrology.Shared.Models;
public class TencorRunHeaders
{
}

View File

@ -4,7 +4,7 @@
<LangVersion>10.0</LangVersion>
<Nullable>enable</Nullable>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<PackageId>OI.Metrology.Shared</PackageId>
@ -30,7 +30,8 @@
<DefineConstants>Linux</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Json" Version="6.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="System.Text.Json" Version="7.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,37 @@
using System.Text.Json;
namespace OI.Metrology.Shared.ViewModels;
// [JsonConstructor]
public record ServiceShopOrder(string Id,
string Name,
string[] BookingNames,
string Type,
string State,
string ItemNumber,
DateTime CreatedDate,
DateTime DecidedDate,
string Recipient,
string Requestor)
{
internal ServiceShopOrder(Models.Order order) :
this(order.Id,
order.Name,
order.Bookings is null || !order.Bookings.Any() ? Array.Empty<string>() : order.Bookings.Select(l => l.Name).ToArray(),
order.Type,
order.State,
order.ItemNumber,
order.CreatedDate,
order.DecidedDate,
order.Recipient,
order.Requestor)
{ }
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
return result;
}
}