Reorganized project structure to separate backend process from frontend process.

This commit is contained in:
Daniel Wathen 2022-12-22 12:10:18 -07:00
parent b5def3da89
commit 80696e5fe6
131 changed files with 494 additions and 347 deletions

View File

@ -1,6 +1,6 @@
using System.Web;
namespace ReportingServices.HelperClasses
namespace ReportingServices.Shared.HelperClasses
{
public static class APIHelperFunctions
{

View File

@ -1,8 +1,8 @@
using ReportingServices.Dependency_Injections;
using ReportingServices.Models.ProductionReport;
using ReportingServices.ViewModels.ProductionReport;
using ReportingServices.Shared.Repositories;
using ReportingServices.Shared.Models.ProductionReport;
using ReportingServices.Shared.ViewModels.ProductionReport;
namespace ReportingServices.HelperClasses
namespace ReportingServices.Shared.HelperClasses
{
public static class DailyReportHelper
{

View File

@ -1,6 +1,6 @@
using System.Text.Json;
namespace ReportingServices.HelperClasses
namespace ReportingServices.Shared.HelperClasses
{
public static class JsonFileHandler
{

View File

@ -0,0 +1,9 @@
namespace ReportingServices.Shared.Models.PlanningReport
{
public class ReactorPSNWORuns
{
public string REACTOR { get; set; }
public string PSN { get; set; }
public int WO_COUNT { get; set; }
}
}

View File

@ -0,0 +1,10 @@
namespace ReportingServices.Shared.Models.PlanningReport
{
public class WeeklyPartChanges
{
public int TotalPartChanges { get; set; }
public string StartDate { get; set; }
public string EndDate { get; set; }
public List<ReactorPSNWORuns> ReactorPSNWORuns { get; set; }
}
}

View File

@ -1,4 +1,4 @@
namespace ReportingServices.Models.ProductionReport
namespace ReportingServices.Shared.Models.ProductionReport
{
public class EquipmentStateByDay
{

View File

@ -1,4 +1,4 @@
namespace ReportingServices.Models.ProductionReport
namespace ReportingServices.Shared.Models.ProductionReport
{
public class ManualReportEntries
{

View File

@ -1,4 +1,4 @@
namespace ReportingServices.Models.ProductionReport
namespace ReportingServices.Shared.Models.ProductionReport
{
public class QuarterlyTargets
{

View File

@ -0,0 +1,11 @@
namespace ReportingServices.Shared.Models.ProductionReport
{
public class RDS
{
public int Reactor { get; set; }
public string ReactorType { get; set; }
public DateTime DateOut { get; set; }
public int UnloadTemp { get; set; }
public string LayerType { get; set; }
}
}

View File

@ -0,0 +1,10 @@
namespace ReportingServices.Shared.Models.ProductionReport
{
public class Reactor
{
public int ReactorNumber { get; set; }
public string Type { get; set; }
public string PocketSize { get; set; }
public bool HasDisabledLoadlock { get; set; }
}
}

View File

@ -0,0 +1,8 @@
namespace ReportingServices.Shared.Models.ProductionReport
{
public class ReactorOutsByDay
{
public string StartDate { get; set; }
public int TotalWafers { get; set; }
}
}

View File

@ -1,4 +1,4 @@
namespace ReportingServices.Models.ProductionReport
namespace ReportingServices.Shared.Models.ProductionReport
{
public class ReactorOutsByRDS
{

View File

@ -0,0 +1,11 @@
namespace ReportingServices.Shared.Models.ProductionReport
{
public class ScrapByDay
{
public string StartDate { get; set; }
public int TW_PROD { get; set; }
public int TOT_REJ_CUST { get; set; }
public int TOT_REJ_MANU { get; set; }
public int TOT_REJ_WFRS { get; set; }
}
}

View File

@ -1,4 +1,4 @@
namespace ReportingServices.Models.ProductionReport
namespace ReportingServices.Shared.Models.ProductionReport
{
public class ToolStateCurrent
{

View File

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.0.1" />
</ItemGroup>
</Project>

View File

@ -1,10 +1,10 @@
using ReportingServices.HelperClasses;
using ReportingServices.Models.ProductionReport;
using ReportingServices.ViewModels.ProductionReport;
using ReportingServices.Shared.HelperClasses;
using ReportingServices.Shared.Models.ProductionReport;
using ReportingServices.Shared.ViewModels.ProductionReport;
using System.Text.Json;
using System.Web;
namespace ReportingServices.Dependency_Injections
namespace ReportingServices.Shared.Repositories
{
public class FabTimeReportingRepository : IFabTimeReportingRepository
{

View File

@ -1,19 +1,18 @@
using Microsoft.Data.SqlClient;
using ReportingServices.Models.PlanningReport;
using ReportingServices.Models.ProductionReport;
using ReportingServices.Shared.Models.PlanningReport;
using ReportingServices.Shared.Models.ProductionReport;
using System.Data;
namespace ReportingServices.Dependency_Injections
namespace ReportingServices.Shared.Repositories
{
public class ScrapeDatabaseRepository : IScrapeDatabaseRepository
{
private SqlConnection _connection;
private string _connectionString;
private readonly string _connectionString;
public ScrapeDatabaseRepository()
{
IConfiguration configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
_connectionString = configuration.GetConnectionString("DefaultConnection");
_connectionString = "Server=MESSV01EC.EC.LOCAL\\PROD1,53959;Database=LSL2SQL;User Id=srpadmin;Password=0okm9ijn;TrustServerCertificate=true";
}
public void OpenConnection()
@ -91,7 +90,15 @@ namespace ReportingServices.Dependency_Injections
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read() && reader[0].ToString() != "1/1/1900 12:00:00 AM")
scrap.Add(new ScrapByDay(reader[0].ToString(), reader[3].ToString(), reader[1].ToString(), reader[2].ToString()));
scrap.Add(new ScrapByDay
{
StartDate = reader[0].ToString(),
TW_PROD = int.Parse(reader[3].ToString()),
TOT_REJ_CUST = int.Parse(reader[1].ToString()),
TOT_REJ_MANU = int.Parse(reader[2].ToString()),
TOT_REJ_WFRS =
int.Parse(reader[1].ToString()) + int.Parse(reader[2].ToString())
});
}
cmd.Dispose();
@ -121,7 +128,12 @@ namespace ReportingServices.Dependency_Injections
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
weeklyPartChanges.Add(new ReactorPSNWORuns(reader[0].ToString(), reader[1].ToString(), int.Parse(reader[2].ToString())));
weeklyPartChanges.Add(new ReactorPSNWORuns
{
REACTOR = reader[0].ToString(),
PSN = reader[1].ToString(),
WO_COUNT = int.Parse(reader[2].ToString())
});
}
cmd.Dispose();
@ -198,7 +210,13 @@ namespace ReportingServices.Dependency_Injections
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
reactors.Add(new Reactor(int.Parse(reader[0].ToString()), reader[1].ToString(), reader[2].ToString(), bool.Parse(reader[3].ToString())));
reactors.Add(new Reactor
{
ReactorNumber = int.Parse(reader[0].ToString()),
Type = reader[1].ToString(),
PocketSize = reader[2].ToString(),
HasDisabledLoadlock = bool.Parse(reader[3].ToString())
});
}
cmd.Dispose();
@ -227,7 +245,14 @@ namespace ReportingServices.Dependency_Injections
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
rdsList.Add(new RDS(int.Parse(reader[0].ToString()), reader[1].ToString(), DateTime.Parse(reader[2].ToString()), int.Parse(reader[3].ToString()), reader[4].ToString()));
rdsList.Add(new RDS
{
Reactor = int.Parse(reader[0].ToString()),
ReactorType = reader[1].ToString(),
DateOut = DateTime.Parse(reader[2].ToString()),
UnloadTemp = int.Parse(reader[3].ToString()),
LayerType = reader[4].ToString()
});
}
cmd.Dispose();

View File

@ -1,7 +1,7 @@
using ReportingServices.Models.ProductionReport;
using ReportingServices.ViewModels.ProductionReport;
using ReportingServices.Shared.Models.ProductionReport;
using ReportingServices.Shared.ViewModels.ProductionReport;
namespace ReportingServices.Dependency_Injections
namespace ReportingServices.Shared.Repositories
{
public interface IFabTimeReportingRepository
{

View File

@ -1,7 +1,7 @@
using ReportingServices.Models.PlanningReport;
using ReportingServices.Models.ProductionReport;
using ReportingServices.Shared.Models.PlanningReport;
using ReportingServices.Shared.Models.ProductionReport;
namespace ReportingServices.Dependency_Injections
namespace ReportingServices.Shared.Repositories
{
public interface IScrapeDatabaseRepository
{

View File

@ -1,7 +1,8 @@
using ReportingServices.HelperClasses;
using ReportingServices.Models.ProductionReport;
using ReportingServices.Shared.HelperClasses;
using ReportingServices.Shared.Models.ProductionReport;
using ReportingServices.Shared.ViewModels.ProductionReport;
namespace ReportingServices.ViewModels.ProductionReport
namespace ReportingServices.Shared.ViewModels.ProductionReport
{
public class DailyReport
{

View File

@ -1,6 +1,6 @@
using ReportingServices.Models.ProductionReport;
using ReportingServices.Shared.Models.ProductionReport;
namespace ReportingServices.ViewModels.ProductionReport
namespace ReportingServices.Shared.ViewModels.ProductionReport
{
public class ToolStateByType
{
@ -34,14 +34,14 @@ namespace ReportingServices.ViewModels.ProductionReport
{
float elapsedTime = 0f;
if (ToolStateCurrents[ToolStateCurrents.Count - 1].BasicStateDescription.ToUpper() != "PRODUCTIVE" && ToolStateCurrents[ToolStateCurrents.Count - 1].BasicStateDescription.ToUpper() != "OUT OF SERVICE")
float.Parse(ToolStateCurrents[ToolStateCurrents.Count - 1].GanttElapsedHours);
if (ToolStateCurrents[^1].BasicStateDescription.ToUpper() is not "PRODUCTIVE" and not "OUT OF SERVICE")
float.Parse(ToolStateCurrents[^1].GanttElapsedHours);
for (int i = ToolStateCurrents.Count - 2; i >= 0; i--)
{
if (ToolStateCurrents[i].Tool == ToolStateCurrents[i + 1].Tool)
{
if (ToolStateCurrents[i].BasicStateDescription.ToUpper() != "PRODUCTIVE" && ToolStateCurrents[ToolStateCurrents.Count - 1].BasicStateDescription.ToUpper() != "OUT OF SERVICE")
if (ToolStateCurrents[i].BasicStateDescription.ToUpper() != "PRODUCTIVE" && ToolStateCurrents[^1].BasicStateDescription.ToUpper() != "OUT OF SERVICE")
elapsedTime += float.Parse(ToolStateCurrents[i].GanttElapsedHours);
}
else
@ -49,7 +49,7 @@ namespace ReportingServices.ViewModels.ProductionReport
if (elapsedTime >= 12)
ToolsDownGreaterThan12Hours.Add(ToolStateCurrents[i + 1].Tool);
if (ToolStateCurrents[i].BasicStateDescription.ToUpper() != "PRODUCTIVE" && ToolStateCurrents[ToolStateCurrents.Count - 1].BasicStateDescription.ToUpper() != "OUT OF SERVICE")
if (ToolStateCurrents[i].BasicStateDescription.ToUpper() != "PRODUCTIVE" && ToolStateCurrents[^1].BasicStateDescription.ToUpper() != "OUT OF SERVICE")
elapsedTime = float.Parse(ToolStateCurrents[i].GanttElapsedHours);
else
elapsedTime = 0;

View File

@ -1,4 +1,6 @@
namespace ReportingServices.Models.ProductionReport
using ReportingServices.Shared.Models.ProductionReport;
namespace ReportingServices.Shared.ViewModels.ProductionReport
{
public class YieldStatistics
{
@ -48,7 +50,7 @@
waferCount += (int)float.Parse(rout.Units);
}
outsByDay.Add(new ReactorOutsByDay(date, waferCount));
outsByDay.Add(new ReactorOutsByDay { StartDate = date, TotalWafers = waferCount });
}
return outsByDay;

View File

@ -1,4 +1,4 @@
using ReportingServices.HelperClasses;
using ReportingServices.Shared.HelperClasses;
namespace ReportingServices.Test
{

View File

@ -1,9 +1,4 @@
using ReportingServices.ViewModels.ProductionReport;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ReportingServices.Shared.ViewModels.ProductionReport;
namespace ReportingServices.Test
{
@ -14,8 +9,10 @@ namespace ReportingServices.Test
public void SetRDSInfo_InputData_CalculatedAndStoresCorrectly()
{
// Arrange
DailyReport rpt = new();
rpt.CurrentEntries = TestingClass.ManualReportEntries;
DailyReport rpt = new()
{
CurrentEntries = TestingClass.ManualReportEntries
};
Dictionary<string, List<int>> dualLayerReactors = new()
{
{ "ASM", new List<int>() { 24, 62 } },
@ -40,8 +37,10 @@ namespace ReportingServices.Test
public void SetReactorInfo_InputData_CalculatedAndStoresCorrectly()
{
// Arrange
DailyReport rpt = new();
rpt.CurrentEntries = TestingClass.ManualReportEntries;
DailyReport rpt = new()
{
CurrentEntries = TestingClass.ManualReportEntries
};
int numberOfToolsWaferSize6IN = 11;
int numberOfToolsWaferSize8IN = 46;
int numberOfToolsWaferSize6INScheduled = 9;

View File

@ -30,7 +30,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ReportingServices\ReportingServices.csproj" />
<ProjectReference Include="..\ReportingServices.UI\ReportingServices.UI.csproj" />
</ItemGroup>
</Project>

View File

@ -1,4 +1,4 @@
using ReportingServices.Models.ProductionReport;
using ReportingServices.Shared.Models.ProductionReport;
namespace ReportingServices.Test
{
@ -6,165 +6,165 @@ namespace ReportingServices.Test
{
public static readonly List<RDS> RDSList = new()
{
new RDS(79, "ASM+", new DateTime(2022, 12, 13), 600, "Standard 1 Layer"),
new RDS(45, "HTR", new DateTime(2022, 12, 13), 550, "Standard 1 Layer"),
new RDS(62, "ASM+", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(62, "ASM+", new DateTime(2022, 12, 13), 700, "Standard 2 Layer"),
new RDS(62, "ASM+", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(24, "ASM", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(24, "ASM", new DateTime(2022, 12, 13), 800, "Standard 2 Layer"),
new RDS(24, "ASM", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(66, "ASM+", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(28, "ASM", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(28, "ASM", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(63, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(63, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(23, "ASM", new DateTime(2022, 12, 13), 550, "Standard 1 Layer"),
new RDS(23, "ASM", new DateTime(2022, 12, 13), 550, "Standard 1 Layer"),
new RDS(32, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(58, "ASM", new DateTime(2022, 12, 13), 650, "Standard 1 Layer"),
new RDS(77, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(77, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(57, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(57, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(20, "ASM", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(20, "ASM", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(43, "ASM+", new DateTime(2022, 12, 13), 750, "Standard 1 Layer"),
new RDS(43, "ASM+", new DateTime(2022, 12, 13), 750, "Standard 1 Layer"),
new RDS(29, "ASM", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(25, "ASM", new DateTime(2022, 12, 13), 750, "Standard 1 Layer"),
new RDS(51, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(51, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(51, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(38, "HTR", new DateTime(2022, 12, 13), 550, "Standard 1 Layer"),
new RDS(38, "HTR", new DateTime(2022, 12, 13), 550, "Standard 1 Layer"),
new RDS(64, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(64, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(32, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(37, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(37, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(30, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(31, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(33, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(33, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(33, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(55, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(55, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(55, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(36, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(21, "ASM", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(21, "ASM", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(73, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(75, "ASM+", new DateTime(2022, 12, 13), 750, "Standard 1 Layer"),
new RDS(75, "ASM+", new DateTime(2022, 12, 13), 750, "Standard 1 Layer"),
new RDS(51, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(53, "ASM+", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(53, "ASM+", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(35, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(35, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(35, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(36, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(68, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(68, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(68, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(41, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(41, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(41, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(70, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(70, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(70, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(70, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(74, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(74, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(74, "HTR", new DateTime(2022, 12, 13), 700, "Standard 1 Layer"),
new RDS(61, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(61, "ASM+", new DateTime(2022, 12, 13), 800, "Standard 1 Layer"),
new RDS(49, "HTR", new DateTime(2022, 12, 13), 550, "Standard 1 Layer"),
new RDS(42, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(42, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(42, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(46, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(46, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(52, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(48, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(54, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(50, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(40, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(40, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(42, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(42, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(44, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(44, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(46, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(46, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(46, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 2 Layer"),
new RDS(48, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(50, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(52, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(54, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(48, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS(52, "EPP", new DateTime(2022, 12, 13), 1000, "Standard 1 Layer"),
new RDS { Reactor = 79, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 600, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 45, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 550, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 62, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 62, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 62, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 24, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 24, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 24, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 66, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 28, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 28, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 63, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 63, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 23, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 550, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 23, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 550, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 32, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 58, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 650, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 77, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 77, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 57, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 57, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 20, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 20, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 43, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 750, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 43, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 750, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 29, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 25, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 750, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 51, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 51, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 51, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 38, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 550, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 38, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 550, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 64, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 64, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 32, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 37, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 37, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 30, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 31, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 33, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 33, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 33, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 55, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 55, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 55, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 36, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 21, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 21, ReactorType = "ASM", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 73, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 75, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 750, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 75, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 750, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 51, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 53, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 53, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 35, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 35, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 35, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 36, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 68, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 68, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 68, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 41, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 41, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 41, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 70, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 70, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 70, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 70, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 74, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 74, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 74, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 700, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 61, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 61, ReactorType = "ASM+", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 800, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 49, ReactorType = "HTR", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 550, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 42, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 42, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 42, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 46, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 46, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 52, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 48, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 54, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 50, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 40, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 40, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 42, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 42, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 44, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 44, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 46, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 46, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 46, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 2 Layer" },
new RDS { Reactor = 48, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 50, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 52, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 54, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 48, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" },
new RDS { Reactor = 52, ReactorType = "EPP", DateOut = new DateTime(2022, 12, 13), UnloadTemp = 1000, LayerType = "Standard 1 Layer" }
};
public static readonly List<Reactor> Reactors = new()
{
new Reactor(20, "ASM", "200 mm 8 in", false),
new Reactor(21, "ASM", "200 mm 8 in", false),
new Reactor(22, "ASM", "200 mm 8 in", false),
new Reactor(23, "ASM", "200 mm 8 in", false),
new Reactor(24, "ASM", "200 mm 8 in", false),
new Reactor(25, "ASM", "200 mm 8 in", true),
new Reactor(26, "ASM", "200 mm 8 in", false),
new Reactor(27, "ASM", "200 mm 8 in", false),
new Reactor(28, "ASM", "150 mm 6 in", true),
new Reactor(29, "ASM", "200 mm 8 in", false),
new Reactor(30, "HTR", "200 mm 8 in", true),
new Reactor(31, "HTR", "200 mm 8 in", true),
new Reactor(32, "HTR", "200 mm 8 in", true),
new Reactor(33, "HTR", "200 mm 8 in", true),
new Reactor(34, "HTR", "200 mm 8 in", false),
new Reactor(35, "HTR", "200 mm 8 in", false),
new Reactor(36, "HTR", "200 mm 8 in", false),
new Reactor(37, "HTR", "200 mm 8 in", true),
new Reactor(38, "HTR", "200 mm 8 in", true),
new Reactor(39, "ASM+", "200 mm 8 in", false),
new Reactor(40, "EPP", "150 mm 6 in", false),
new Reactor(41, "HTR", "200 mm 8 in", true),
new Reactor(42, "EPP", "150 mm 6 in", false),
new Reactor(43, "ASM+", "200 mm 8 in", false),
new Reactor(44, "EPP", "150 mm 6 in", false),
new Reactor(45, "HTR", "200 mm 8 in", true),
new Reactor(46, "EPP", "150 mm 6 in", false),
new Reactor(47, "HTR", "150 mm 6 in", true),
new Reactor(48, "EPP", "200 mm 8 in", false),
new Reactor(49, "HTR", "200 mm 8 in", true),
new Reactor(50, "EPP", "200 mm 8 in", false),
new Reactor(51, "HTR", "150 mm 6 in", true),
new Reactor(52, "EPP", "200 mm 8 in", false),
new Reactor(53, "ASM+", "200 mm 8 in", false),
new Reactor(54, "EPP", "200 mm 8 in", false),
new Reactor(55, "HTR", "200 mm 8 in", true),
new Reactor(56, "ASM+", "200 mm 8 in", true),
new Reactor(57, "ASM+", "200 mm 8 in", false),
new Reactor(58, "ASM", "200 mm 8 in", false),
new Reactor(59, "ASM", "200 mm 8 in", false),
new Reactor(60, "ASM+", "200 mm 8 in", true),
new Reactor(61, "ASM+", "200 mm 8 in", false),
new Reactor(62, "ASM+", "200 mm 8 in", true),
new Reactor(63, "ASM+", "200 mm 8 in", false),
new Reactor(64, "ASM+", "200 mm 8 in", false),
new Reactor(65, "ASM+", "200 mm 8 in", false),
new Reactor(66, "ASM+", "200 mm 8 in", false),
new Reactor(68, "HTR", "200 mm 8 in", false),
new Reactor(70, "HTR", "150 mm 6 in", true),
new Reactor(72, "HTR", "200 mm 8 in", true),
new Reactor(73, "HTR", "200 mm 8 in", false),
new Reactor(74, "HTR", "150 mm 6 in", false),
new Reactor(75, "ASM+", "200 mm 8 in", false),
new Reactor(77, "ASM+", "200 mm 8 in", false),
new Reactor(79, "ASM+", "200 mm 8 in", false),
new Reactor(100, "ASM", "150 mm 6 in", false),
new Reactor(101, "ASM", "150 mm 6 in", false),
new Reactor { ReactorNumber = 20, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 21, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 22, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 23, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 24, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 25, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 26, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 27, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 28, Type = "ASM", PocketSize = "150 mm 6 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 29, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 30, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 31, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 32, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 33, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 34, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 35, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 36, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 37, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 38, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 39, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 40, Type = "EPP", PocketSize = "150 mm 6 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 41, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 42, Type = "EPP", PocketSize = "150 mm 6 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 43, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 44, Type = "EPP", PocketSize = "150 mm 6 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 45, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 46, Type = "EPP", PocketSize = "150 mm 6 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 47, Type = "HTR", PocketSize = "150 mm 6 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 48, Type = "EPP", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 49, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 50, Type = "EPP", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 51, Type = "HTR", PocketSize = "150 mm 6 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 52, Type = "EPP", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 53, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 54, Type = "EPP", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 55, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 56, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 57, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 58, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 59, Type = "ASM", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 60, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 61, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 62, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 63, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 64, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 65, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 66, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 68, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 70, Type = "HTR", PocketSize = "150 mm 6 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 72, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = true },
new Reactor { ReactorNumber = 73, Type = "HTR", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 74, Type = "HTR", PocketSize = "150 mm 6 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 75, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 77, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 79, Type = "ASM+", PocketSize = "200 mm 8 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 100, Type = "ASM", PocketSize = "150 mm 6 in", HasDisabledLoadlock = false },
new Reactor { ReactorNumber = 101, Type = "ASM", PocketSize = "150 mm 6 in", HasDisabledLoadlock = false }
};
public static readonly List<int> UnscheduledReactors = new()

View File

@ -1,8 +1,8 @@
using Microsoft.AspNetCore.Mvc;
using ReportingServices.Models;
using ReportingServices.UI.Models;
using System.Diagnostics;
namespace ReportingServices.Controllers
namespace ReportingServices.UI.Controllers
{
public class HomeController : Controller
{

View File

@ -1,9 +1,8 @@
using Microsoft.AspNetCore.Mvc;
using ReportingServices.Dependency_Injections;
using ReportingServices.HelperClasses;
using ReportingServices.Models.PlanningReport;
using ReportingServices.Shared.Repositories;
using ReportingServices.Shared.Models.PlanningReport;
namespace ReportingServices.Controllers
namespace ReportingServices.UI.Controllers
{
public class PlanningReportController : Controller
{
@ -24,8 +23,13 @@ namespace ReportingServices.Controllers
int numberOfPartChanges = _scrapeDatabaseRepository.GetNumberOfPartChanges(startDate.ToString(), endDate.ToString());
List<ReactorPSNWORuns> reactorPSNWORuns = _scrapeDatabaseRepository.GetReactorPSNWORuns(startDate.ToString(), endDate.ToString());
WeeklyPartChanges weeklyPartChanges = new WeeklyPartChanges(numberOfPartChanges, startDate.ToShortDateString(),
endDate.ToShortDateString(), reactorPSNWORuns);
WeeklyPartChanges weeklyPartChanges = new()
{
TotalPartChanges = numberOfPartChanges,
StartDate = startDate.ToShortDateString(),
EndDate = endDate.ToShortDateString(),
ReactorPSNWORuns = reactorPSNWORuns
};
return View(weeklyPartChanges);
}

View File

@ -1,10 +1,10 @@
using Microsoft.AspNetCore.Mvc;
using ReportingServices.Dependency_Injections;
using ReportingServices.HelperClasses;
using ReportingServices.Models.ProductionReport;
using ReportingServices.ViewModels.ProductionReport;
using ReportingServices.Shared.Repositories;
using ReportingServices.Shared.HelperClasses;
using ReportingServices.Shared.Models.ProductionReport;
using ReportingServices.Shared.ViewModels.ProductionReport;
namespace ReportingServices.Controllers
namespace ReportingServices.UI.Controllers
{
public class ProductionReportController : Controller
{

View File

@ -1,4 +1,4 @@
namespace ReportingServices.Models
namespace ReportingServices.UI.Models
{
public class ErrorViewModel
{

View File

@ -1,5 +1,4 @@
using ReportingServices.Dependency_Injections;
using ReportingServices.HelperClasses;
using ReportingServices.Shared.Repositories;
using Serilog;
LoggerConfiguration loggerConfiguration = new();

View File

@ -13,4 +13,13 @@
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ReportingServices.Shared\ReportingServices.Shared.csproj" />
<ProjectReference Include="..\ReportingServicesAPIs\ReportingServices.API.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="HelperClasses\" />
</ItemGroup>
</Project>

View File

@ -1,6 +1,4 @@
@using ReportingServices.Models.PlanningReport
@using ReportingServices.HelperClasses
@model ReportingServices.Models.PlanningReport.WeeklyPartChanges
@model WeeklyPartChanges
@{
ViewData["Title"] = "Weekly Part Changes | Mesa Reporting Services";

View File

@ -1,6 +1,4 @@
@using ReportingServices.ViewModels.ProductionReport
@using ReportingServices.Models.ProductionReport
@model DailyReport
@model DailyReport
@{
int ASMAvailablePct = 0;
int EPPAvailablePct = 0;

View File

@ -1,5 +1,4 @@
@using ReportingServices.Models.ProductionReport
@model ManualReportEntries
@model ManualReportEntries
@{
ViewData["Title"] = "Edit Daily Passdown | Mesa Reporting Services";

View File

@ -1,4 +1,4 @@
@model ReportingServices.Models.ProductionReport.YieldStatistics
@model YieldStatistics
@{
int totalWafersOut = 0;

View File

@ -0,0 +1,6 @@
@using ReportingServices
@using ReportingServices.UI.Models
@using ReportingServices.Shared.Models.PlanningReport
@using ReportingServices.Shared.Models.ProductionReport
@using ReportingServices.Shared.ViewModels.ProductionReport
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

Before

Width:  |  Height:  |  Size: 886 B

After

Width:  |  Height:  |  Size: 886 B

View File

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 721 B

View File

Before

Width:  |  Height:  |  Size: 428 B

After

Width:  |  Height:  |  Size: 428 B

View File

Before

Width:  |  Height:  |  Size: 571 B

After

Width:  |  Height:  |  Size: 571 B

View File

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Some files were not shown because too many files have changed in this diff Show More