Align .editorconfig files Move Controller logic to DMO classes GlobalVars.AppSettings = Models.AppSettings.GetFromConfigurationManager(); Question EditorConfig Project level editorconfig Format White Spaces AppSetting when EnvironmentVariable not set Corrective Actions Tests Schedule Actions Tests DMO Tests Controller Tests Get ready to use VSCode IDE
443 lines
22 KiB
C#
443 lines
22 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
using Dapper;
|
|
|
|
using Fab2ApprovalSystem.Misc;
|
|
using Fab2ApprovalSystem.Models;
|
|
using Fab2ApprovalSystem.ViewModels;
|
|
|
|
namespace Fab2ApprovalSystem.DMO;
|
|
|
|
public class MiscDMO {
|
|
|
|
public static IEnumerable<Lot> SearchLots(string searchText, string searchBy) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
IEnumerable<Lot> lotList;
|
|
|
|
string sql = "";
|
|
if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY") {
|
|
if (searchBy == GlobalVars.LOT_NO)
|
|
//sql = "SELECT WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') AS LotNumber FROM WP_RECORD_MJ WHERE WP_LOT_NO LIKE '%" + searchText + "%' ";
|
|
sql = "SELECT WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') AS LotNumber FROM SPNLot WHERE WP_LOT_NO LIKE '%" + searchText + "%' ";
|
|
else if (searchBy == GlobalVars.LOCATION) {
|
|
sql = "SELECT WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') AS LotNumber FROM SPNLot WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "' AND WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') IS NOT NULL";
|
|
}
|
|
lotList = db.Query<Lot>(sql).ToList();
|
|
db.Close();
|
|
} else {
|
|
if (searchBy == GlobalVars.LOT_NO)
|
|
sql = "SELECT WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') AS LotNumber FROM SPNLot WHERE WP_LOT_NO LIKE '%" + searchText + "%' OR DieLotNumber LIKE '%" + searchText + "%' ";
|
|
else if (searchBy == GlobalVars.LOCATION) {
|
|
sql = "SELECT WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') AS LotNumber FROM SPNLot WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "' AND WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') IS NOT NULL";
|
|
}
|
|
lotList = db.Query<Lot>(sql).ToList();
|
|
db.Close();
|
|
}
|
|
|
|
return lotList;
|
|
}
|
|
|
|
public static IEnumerable<int> GetUserIDsBySubRoleID(int subRoleID) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
IEnumerable<int> userList;
|
|
|
|
string sql = "";
|
|
sql = "SELECT UserID FROM UserSubRole WHERE SubRoleID = " + subRoleID;
|
|
userList = db.Query<int>(sql).ToList();
|
|
db.Close();
|
|
return userList;
|
|
}
|
|
|
|
public static IEnumerable<Lot> SearchLTLots(string searchText, string searchBy) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
string sql = "";
|
|
|
|
if (searchBy == GlobalVars.LOT_NO)
|
|
sql = "SELECT DISTINCT WP_LOT_NO AS LotNumber FROM vFAB2SPN_WP_RECORD WP WHERE WP_LOT_NO LIKE '%" + searchText.Trim() + "%' ";
|
|
else if (searchBy == GlobalVars.LOCATION) {
|
|
sql = "SELECT DISTINCT WP_LOT_NO AS LotNumber FROM vFAB2SPN_WP_RECORD WP WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "'";
|
|
}
|
|
List<Lot> lotList = db.Query<Lot>(sql).ToList();
|
|
db.Close();
|
|
return lotList;
|
|
}
|
|
|
|
public static IEnumerable<WIPPart> SearchLTParts(string searchText) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
StringBuilder sql = new();
|
|
sql.Append("SELECT PartNumber + '~' + SiliconPart + '~' + ProcessFlow + '~' + PartDescription AS WIPPartData ");
|
|
sql.Append("FROM vWIPPartData WHERE PartNumber LIKE '%" + searchText + "%' ORDER BY PartNumber");
|
|
|
|
//StringBuilder sql = new StringBuilder();
|
|
//sql.Append("SELECT TO_PART AS PartNumber, FROM_PART AS SiliconPart, P.MP_DESCRIPTION AS PartDescirption, ");
|
|
//sql.Append("RTRIM(LTRIM(SUBSTRING(TO_PART_PROC, PATINDEX('% %', TO_PART_PROC), LEN(TO_PART_PROC)))) AS ProcessFlow ");
|
|
//sql.Append("FROM TEMIRWAP019.FAB2SPN.dbo.PG_RECORD W ");
|
|
//sql.Append("INNER JOIN TEMIRWAP019.Fab2SPN.dbo.MP_RECORD P ON W.TO_PART = P.MP_PART_NUMBER ");
|
|
//sql.Append("WHERE PartNumber LIKE '%" + searchText + "%' ORDER BY PartNumber ");
|
|
|
|
List<WIPPart> parList = db.Query<WIPPart>(sql.ToString()).ToList();
|
|
db.Close();
|
|
return parList;
|
|
}
|
|
|
|
public static void GetLotInformation(Lot lot) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
StringBuilder qryLotInfo = new();
|
|
qryLotInfo.Append("SELECT WP_STATUS , WP_LOT_NO, WP_PART_NUMBER, MP_PRODUCT_FAMILY, MP_DESCRIPTION, ");
|
|
qryLotInfo.Append("WP_CURRENT_QTY, WP_CURRENT_LOCATION, DieLotNumber, DiePartNo, DieCount, MP_QUALITY_CODE FROM SPNLot ");
|
|
qryLotInfo.Append("WHERE WP_Lot_No = @LotNumber ");
|
|
|
|
//var tempLotNumber = lot.LotNumber.Substring(0, 9);
|
|
var tempLotNumber = "";
|
|
if (lot.LotNumber.IndexOf('/') >= 0) {
|
|
tempLotNumber = lot.LotNumber.Substring(0, lot.LotNumber.IndexOf('/'));
|
|
} else
|
|
tempLotNumber = lot.LotNumber;
|
|
|
|
lot.LotNumber = tempLotNumber;
|
|
List<dynamic> lotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { LotNumber = tempLotNumber }).ToList();
|
|
foreach (dynamic lotInfoColumn in lotInfoRow) {
|
|
lot.LotNumber = lotInfoColumn.WP_LOT_NO;
|
|
if (lot.DieLotNumber == null || lot.DieLotNumber == "")
|
|
lot.DieLotNumber = lotInfoColumn.DieLotNumber;
|
|
|
|
if (lotInfoColumn.WP_PART_NUMBER != null)
|
|
lot.WipPartNo = lotInfoColumn.WP_PART_NUMBER.Trim();
|
|
|
|
if (lotInfoColumn.WP_CURRENT_LOCATION != null) {
|
|
// The data is returned from a view which is a combination from various sources and at times when the
|
|
// Lot is at the QDB location, which is extracted out of SAP, it also shows up at the 6600 location in SPN.
|
|
// There is a duplication.
|
|
//if the result returns 2 records , QDB overrides the other location (6600)
|
|
if (lot.Location == "QDB" && lotInfoColumn.WP_CURRENT_LOCATION == "6600")
|
|
lot.Location = "QDB";
|
|
else
|
|
lot.Location = lotInfoColumn.WP_CURRENT_LOCATION;
|
|
}
|
|
|
|
if (lotInfoColumn.MP_DESCRIPTION != null) {
|
|
lot.Description = lotInfoColumn.MP_DESCRIPTION;
|
|
if (lot.Description.Length > 0) {
|
|
string[] temp = lot.Description.Split(new char[] { ',' });
|
|
if (temp.Length > 0) {
|
|
try {
|
|
lot.ProductFamily = temp[0];
|
|
} catch { } // ignore the error
|
|
|
|
try {
|
|
//lot.Gen = double.Parse(temp[2].Substring(1, temp[2].Length - 1));
|
|
if (lot.Description.StartsWith("MA,"))
|
|
lot.Gen = temp[2];
|
|
else
|
|
lot.Gen = temp[2].Substring(1, temp[2].Length - 1);
|
|
} catch { }// ignore the error
|
|
try {
|
|
//lot.Hexsize = double.Parse(temp[6]);
|
|
lot.Hexsize = temp[6];
|
|
} catch { }// ignore the error
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
if (lotInfoColumn.WP_STATUS != null)
|
|
lot.Status = lotInfoColumn.WP_STATUS;
|
|
|
|
if (lotInfoColumn.DiePartNo != null)
|
|
lot.DiePartNo = lotInfoColumn.DiePartNo.Trim();
|
|
|
|
if (lotInfoColumn.WP_CURRENT_QTY != null)
|
|
lot.WaferCount = lotInfoColumn.WP_CURRENT_QTY;
|
|
|
|
if (lot.WipPartNo.Length > 0 || lot.DiePartNo.Length > 0) {
|
|
qryLotInfo.Clear();
|
|
qryLotInfo.Append("SELECT DiePartNo, SourceFAB, Diameter, Silicon, Gen, Layers,HexSize,Voltage,Channel, Type AS ProductFamily, ");
|
|
qryLotInfo.Append("WaferCost, DieCost FROM StdCost WHERE WIPWaferNo = @WIPPartNo OR DiePartNo = @DiePartNo ");
|
|
List<dynamic> moreLotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { WIPPartNo = lot.WipPartNo, DiePartNo = lot.DiePartNo }).ToList();
|
|
|
|
foreach (var moreLotInfoColumn in moreLotInfoRow) {
|
|
if (lotInfoColumn.DieCount != null && lotInfoColumn.DieCount != 0)
|
|
lot.DieCount = int.Parse(lotInfoColumn.DieCount.ToString());
|
|
lot.DieCost = double.Parse(moreLotInfoColumn.DieCost.ToString());
|
|
lot.WaferCost = double.Parse(moreLotInfoColumn.WaferCost.ToString());
|
|
|
|
if (moreLotInfoColumn.Channel != null)
|
|
lot.Channel = moreLotInfoColumn.Channel;
|
|
|
|
if (moreLotInfoColumn.Hexsize != null)
|
|
lot.Hexsize = moreLotInfoColumn.Hexsize;
|
|
|
|
if (moreLotInfoColumn.Voltage != null)
|
|
lot.Voltage = moreLotInfoColumn.Voltage;
|
|
|
|
if (lot.DieCount > 0)
|
|
lot.TotalCost = Math.Round(lot.DieCount * lot.DieCost, 2);
|
|
else if (lot.WaferCount > 0)
|
|
lot.TotalCost = Math.Round(lot.WaferCount * lot.WaferCost, 2);
|
|
}
|
|
|
|
}
|
|
|
|
// added this code if the data shows up at the 6600 location and also at QDB for a lot.
|
|
//if (lot.DieCost > 0)
|
|
// lot.Location = "QDB";
|
|
|
|
if (lotInfoColumn.MP_QUALITY_CODE != null)
|
|
lot.QualityCode = lotInfoColumn.MP_QUALITY_CODE.Trim();
|
|
|
|
}
|
|
|
|
db.Close();
|
|
//return lotStatusOption;
|
|
}
|
|
|
|
/// <summary>
|
|
/// /
|
|
/// </summary>
|
|
public static IEnumerable<UserProfile> GetUserList() {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
|
|
StringBuilder sql = new();
|
|
sql.Append("SELECT FirstName + ' ' + LastName AS FullName, U.UserID AS UserId ");
|
|
sql.Append("FROM Users U ");
|
|
sql.Append("ORDER BY FirstName");
|
|
|
|
return db.Query<UserProfile>(sql.ToString()).ToList();
|
|
}
|
|
|
|
public static List<string> GetApproverEmailListByDocument(int issueID, byte step, int documentType) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@Step", step);
|
|
List<string> emailList = db.Query<string>("GetApproverEmailListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return emailList;
|
|
}
|
|
|
|
public static List<ApproversListViewModel> GetApproversListByDocument(int issueID, byte step, int documentType) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@Step", step);
|
|
List<ApproversListViewModel> approverList = db.Query<ApproversListViewModel>("GetApproversListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
public static IEnumerable<ApprovalModel> GetApprovalsByDocument(int issueID, int documentType) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@IssueID", issueID);
|
|
var approvalList = db.Query<ApprovalModel>(
|
|
"SELECT * FROM Approval WHERE IssueID = @IssueID AND DocumentTypeID = @DocumentTypeID", parameters);
|
|
return approvalList.ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// NOT IN USE YET
|
|
/// </summary>
|
|
|
|
public static IEnumerable<LoginModel> GetApprovedApproversListByDocument(int issueID, int currentStep, int documentType) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
return db.Query<LoginModel>("GetApprovedApproversListByDocument", new { @DocumentTypeID = documentType, @IssueID = issueID, @Step = currentStep }, commandType: CommandType.StoredProcedure).ToList();
|
|
}
|
|
|
|
public static List<ApproversListViewModel> GetPendingApproversListByDocument(int issueID, byte step, int documentType) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@Step", step);
|
|
List<ApproversListViewModel> approverList = db.Query<ApproversListViewModel>("GetPendingApproversListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
public static List<string> GetEmergencyTECNApprovalNotifyList(int ecnNumber) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
List<string> approverList = db.Query<string>("ECNGetETECNApprovalNotificationList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
public static List<string> GetTECNCancelledApprovalNotifyList(int ecnNumber) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
List<string> approverList = db.Query<string>("ECN_TECNCancelledApprovalNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
public static List<string> GetFabGroupNotifyList(int workRequestID) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@WorkRequestID", workRequestID);
|
|
List<string> notifyList = db.Query<string>("LTFabGroupApprovalNotificationList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return notifyList;
|
|
}
|
|
|
|
public static List<string> GetWorkRequestRevisionNotifyList(int notificationType, int workRequestID, int userID) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@NotificationType", notificationType);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@WorkRequestID", workRequestID);
|
|
List<string> notifyList = db.Query<string>("LTGetWorkRequestRevisionNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return notifyList;
|
|
}
|
|
|
|
public static List<string> GetWorkRequestApprovedNotifyList(int notificationType, int workRequestID, int userID) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@NotificationType", notificationType);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@WorkRequestID", workRequestID);
|
|
List<string> notifyList = db.Query<string>("LTGetWorkRequestApprovedNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return notifyList;
|
|
}
|
|
|
|
public static List<string> GetLotTravelerCreationAndRevisionNotifyList(int ltLotID, int workRequestID, int userID) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@LotID", ltLotID);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@WorkRequestID", workRequestID);
|
|
List<string> notifyList = db.Query<string>("LTGetLotTravelerCreationAndRevisionNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return notifyList;
|
|
}
|
|
|
|
public static int EnableOOOStatus(int oooUserID, int delegatedTo, DateTime startDate, DateTime endDate) {
|
|
int returnValue = 0;
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@OOOUserID", oooUserID);
|
|
parameters.Add("@DelegatedTo", delegatedTo);
|
|
parameters.Add("@OOOStartDate", startDate);
|
|
parameters.Add("@OOOExpirationDate", endDate);
|
|
parameters.Add("@ReturnValue", value: returnValue, direction: ParameterDirection.Output);
|
|
|
|
db.Execute("EnableOOOStatus", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
returnValue = parameters.Get<int>("@ReturnValue");
|
|
|
|
return returnValue;
|
|
}
|
|
|
|
public static void ExpireOOOStatus(int oooUserID) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@OOOUserID", oooUserID);
|
|
var approverList = db.Execute("ExpireOOOStatus", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public static List<Department> GetDepartments() {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
List<Department> departments = db.Query<Department>("GetDepartments", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return departments;
|
|
}
|
|
|
|
public static List<AffectedModule> GetModules() {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
|
|
List<AffectedModule> modules = db.Query<AffectedModule>("GetModules", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return modules;
|
|
}
|
|
|
|
public static void GetLTLotInformation(LTLot lot) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
StringBuilder qryLotInfo = new();
|
|
//qryLotInfo.Append("SELECT DISTINCT ");
|
|
//qryLotInfo.Append("WP_LOT_NO, WP_CURRENT_QTY, WP.WP_PART_NUMBER, MP_DESCRIPTION, WP_PROCESS, WO_LOCATION, WO_OPER_NO, WP_STATUS ");
|
|
//qryLotInfo.Append("FROM TEMIRWAP019.FAB2SPN.dbo.WO_RECORD WO ");
|
|
//qryLotInfo.Append("INNER JOIN TEMIRWAP019.FAB2SPN.dbo.WP_RECORD WP ");
|
|
//qryLotInfo.Append("ON WO.WO_LOT_NO = WP.WP_LOT_NO AND WO.InTime = (SELECT MAX(InTime) FROM TEMIRWAP019.FAB2SPN.dbo.WO_RECORD WHERE WO_LOT_NO = @LotNumber) ");
|
|
//qryLotInfo.Append("LEFT JOIN TEMIRWAP019.FAB2SPN.dbo.MP_RECORD MP ");
|
|
//qryLotInfo.Append("ON WP.WP_PART_NUMBER = MP.MP_PART_NUMBER ");
|
|
//qryLotInfo.Append("WHERE WO_LOT_NO = @LotNumber ");
|
|
|
|
qryLotInfo.Append("SELECT DISTINCT ");
|
|
qryLotInfo.Append("WP_LOT_NO, WP_CURRENT_QTY, WP.WP_PART_NUMBER, MP_DESCRIPTION, WP_PROCESS, WP_CURRENT_LOCATION, WP_OPER_NO, WP_STATUS ");
|
|
qryLotInfo.Append("FROM vFAB2SPN_WP_RECORD WP ");
|
|
qryLotInfo.Append("LEFT JOIN vFAB2SPN_MP_RECORD MP ");
|
|
qryLotInfo.Append("ON WP.WP_PART_NUMBER = MP.MP_PART_NUMBER ");
|
|
qryLotInfo.Append("WHERE WP_LOT_NO = @LotNumber ");
|
|
|
|
//var tempLotNumber = lot.LotNumber.Substring(0, 9);
|
|
|
|
var tempLotNumber = "";
|
|
if (lot.LotNumber.IndexOf('/') >= 0) {
|
|
tempLotNumber = lot.LotNumber.Substring(0, lot.LotNumber.IndexOf('/'));
|
|
} else
|
|
tempLotNumber = lot.LotNumber;
|
|
|
|
lot.LotNumber = tempLotNumber;
|
|
|
|
lot.LotNumber = tempLotNumber;
|
|
List<dynamic> lotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { LotNumber = tempLotNumber }).ToList();
|
|
foreach (dynamic lotInfoColumn in lotInfoRow) {
|
|
lot.WIPPartNumber = lotInfoColumn.WP_PART_NUMBER;
|
|
lot.WaferQty = lotInfoColumn.WP_CURRENT_QTY;
|
|
lot.PartDescription = lotInfoColumn.MP_DESCRIPTION;
|
|
lot.Process = lotInfoColumn.WP_PROCESS;
|
|
lot.Operation = lotInfoColumn.WP_OPER_NO;
|
|
lot.LotStatus = lotInfoColumn.WP_STATUS;
|
|
lot.Location = lotInfoColumn.WP_CURRENT_LOCATION;
|
|
}
|
|
|
|
}
|
|
|
|
public static string GetEmail(int? userID) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@UserID", userID);
|
|
var email = db.Query<string>("GetEmail", parameters, commandType: CommandType.StoredProcedure).Single();
|
|
return email;
|
|
}
|
|
|
|
public static List<string> Get8DEmailListForClosureNotification(int issueID) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
|
|
DynamicParameters parameters = new();
|
|
|
|
parameters.Add("@DocID", issueID);
|
|
List<string> emailList = db.Query<string>("_8DGetEmailListClosureNotification", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return emailList;
|
|
}
|
|
|
|
public static CredentialsStorage GetCredentialsInfo(string serverName, string credentialType) // TODO - need to use an enum for the credentialType
|
|
{
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ServerName", serverName);
|
|
parameters.Add("@CredentialType", credentialType);
|
|
var data = db.Query<CredentialsStorage>("GetCredentialsInfo", param: parameters, commandType: CommandType.StoredProcedure).Single();
|
|
return data;
|
|
}
|
|
|
|
public List<ApproveListModel> GetApprovalReminderList() {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
List<ApproveListModel> approvals = db.Query<ApproveListModel>("GetApprovalForNotifcation", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return approvals;
|
|
}
|
|
|
|
public void UpdateApprovalNotifyDate(int approvalId) {
|
|
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ApprovalId", approvalId);
|
|
db.Query<CredentialsStorage>("UpdateApprovalLastNotifyDate", param: parameters, commandType: CommandType.StoredProcedure).Single();
|
|
//return data;
|
|
}
|
|
//================================================================== End of Class
|
|
} |