646 lines
29 KiB
C#
646 lines
29 KiB
C#
using Fab2ApprovalSystem.Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using Dapper;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Configuration;
|
|
using System.Text;
|
|
using Fab2ApprovalSystem.Misc;
|
|
using Fab2ApprovalSystem.ViewModels;
|
|
|
|
namespace Fab2ApprovalSystem.DMO
|
|
{
|
|
public class MiscDMO
|
|
{
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="searchText"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<Lot> SearchLots(string searchText, string searchBy)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
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(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
IEnumerable<int> userList;
|
|
|
|
string sql = "";
|
|
sql = "SELECT UserID FROM UserSubRole WHERE SubRoleID = " + subRoleID;
|
|
userList = db.Query<int>(sql).ToList();
|
|
db.Close();
|
|
return userList;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="searchText"></param>
|
|
/// <param name="searchBy"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<Lot> SearchLTLots(string searchText, string searchBy)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
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() + "'";
|
|
}
|
|
var lotList = db.Query<Lot>(sql).ToList();
|
|
db.Close();
|
|
return lotList;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="searchText"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<WIPPart> SearchLTParts(string searchText)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
StringBuilder sql = new StringBuilder();
|
|
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 ");
|
|
|
|
|
|
var parList = db.Query<WIPPart>(sql.ToString()).ToList();
|
|
db.Close();
|
|
return parList;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="lot"></param>
|
|
public static void GetLotInformation(Lot lot)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
//IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnectionProd"].ConnectionString);
|
|
StringBuilder qryLotInfo = new StringBuilder();
|
|
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;
|
|
var 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 ");
|
|
var 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>
|
|
/// <returns></returns>
|
|
public static IEnumerable<UserProfile> GetUserList()
|
|
{
|
|
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="step"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <returns></returns>
|
|
public static List<string> GetApproverEmailListByDocument(int issueID, byte step, int documentType)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@Step", step);
|
|
var emailList = db.Query<string>("GetApproverEmailListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return emailList;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="step"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <returns></returns>
|
|
public static List<ApproversListViewModel> GetApproversListByDocument(int issueID, byte step, int documentType)
|
|
{
|
|
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@Step", step);
|
|
var 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(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
|
|
var parameters = new DynamicParameters();
|
|
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>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="currentStep"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<LoginModel> GetApprovedApproversListByDocument(int issueID, int currentStep, int documentType)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
return db.Query<LoginModel>("GetApprovedApproversListByDocument", new { @DocumentTypeID = documentType, @IssueID = issueID, @Step = currentStep }, commandType: CommandType.StoredProcedure).ToList();
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="step"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <returns></returns>
|
|
public static List<ApproversListViewModel> GetPendingApproversListByDocument(int issueID, byte step, int documentType)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@Step", step);
|
|
var approverList = db.Query<ApproversListViewModel>("GetPendingApproversListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <returns></returns>
|
|
public static List<string> GetEmergencyTECNApprovalNotifyList(int ecnNumber)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
var approverList = db.Query<string>("ECNGetETECNApprovalNotificationList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <returns></returns>
|
|
public static List<string> GetTECNCancelledApprovalNotifyList(int ecnNumber)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
var approverList = db.Query<string>("ECN_TECNCancelledApprovalNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="workRequestID"></param>
|
|
/// <returns></returns>
|
|
public static List<string> GetFabGroupNotifyList(int workRequestID)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@WorkRequestID", workRequestID);
|
|
var notifyList = db.Query<string>("LTFabGroupApprovalNotificationList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return notifyList;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="workRequestID"></param>
|
|
/// <returns></returns>
|
|
public static List<string> GetWorkRequestRevisionNotifyList(int notificationType, int workRequestID, int userID)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@NotificationType", notificationType);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@WorkRequestID", workRequestID);
|
|
var notifyList = db.Query<string>("LTGetWorkRequestRevisionNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return notifyList;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="notificationType"></param>
|
|
/// <param name="workRequestID"></param>
|
|
/// <param name="userID"></param>
|
|
/// <returns></returns>
|
|
public static List<string> GetWorkRequestApprovedNotifyList(int notificationType, int workRequestID, int userID)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@NotificationType", notificationType);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@WorkRequestID", workRequestID);
|
|
var notifyList = db.Query<string>("LTGetWorkRequestApprovedNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return notifyList;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="notificationType"></param>
|
|
/// <param name="workRequestID"></param>
|
|
/// <param name="userID"></param>
|
|
/// <returns></returns>
|
|
public static List<string> GetLotTravelerCreationAndRevisionNotifyList(int ltLotID, int workRequestID, int userID)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@LotID", ltLotID);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@WorkRequestID", workRequestID);
|
|
var notifyList = db.Query<string>("LTGetLotTravelerCreationAndRevisionNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return notifyList;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="oooUserID"></param>
|
|
/// <param name="delegatedTo"></param>
|
|
/// <param name="startDate"></param>
|
|
/// <param name="endDate"></param>
|
|
public static int EnableOOOStatus(int oooUserID, int delegatedTo, DateTime startDate, DateTime endDate)
|
|
{
|
|
int returnValue = 0;
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
|
|
var parameters = new DynamicParameters();
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="oooUserID"></param>
|
|
/// <param name="delegatedTo"></param>
|
|
/// <param name="startDate"></param>
|
|
/// <param name="endDate"></param>
|
|
public static void ExpireOOOStatus(int oooUserID)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@OOOUserID", oooUserID);
|
|
var approverList = db.Execute("ExpireOOOStatus", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static List<Department> GetDepartments()
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var departments = db.Query<Department>("GetDepartments", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return departments;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static List<AffectedModule> GetModules()
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
|
|
var modules = db.Query<AffectedModule>("GetModules", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return modules;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="lot"></param>
|
|
public static void GetLTLotInformation(LTLot lot)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
StringBuilder qryLotInfo = new StringBuilder();
|
|
//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;
|
|
var 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;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="userID"></param>
|
|
/// <returns></returns>
|
|
public static string GetEmail(int? userID)
|
|
{
|
|
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@UserID", userID);
|
|
var email = db.Query<string>("GetEmail", parameters, commandType: CommandType.StoredProcedure).Single();
|
|
return email;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <returns></returns>
|
|
public static List<string> Get8DEmailListForClosureNotification(int issueID)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
|
|
var parameters = new DynamicParameters();
|
|
|
|
parameters.Add("@DocID", issueID);
|
|
var 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(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
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(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var approvals = db.Query<ApproveListModel>("GetApprovalForNotifcation", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return approvals;
|
|
}
|
|
public void UpdateApprovalNotifyDate(int approvalId)
|
|
{
|
|
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ApprovalId", approvalId);
|
|
db.Query<CredentialsStorage>("UpdateApprovalLastNotifyDate", param: parameters, commandType: CommandType.StoredProcedure).Single();
|
|
//return data;
|
|
}
|
|
//================================================================== End of Class
|
|
}
|
|
}
|