Removed nugetSource from pipeline Removed more comments Created Static Classes for most DMO / Controller Classes Push ConfigurationManager.AppSettings to controller Align Tests with other Projects
713 lines
33 KiB
C#
713 lines
33 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Transactions;
|
|
|
|
using Dapper;
|
|
|
|
using Fab2ApprovalSystem.Misc;
|
|
using Fab2ApprovalSystem.Models;
|
|
using Fab2ApprovalSystem.ViewModels;
|
|
|
|
namespace Fab2ApprovalSystem.DMO;
|
|
|
|
public class ECN_DMO {
|
|
private readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
private readonly WorkflowDMO wfDMO = new();
|
|
|
|
internal ECN InsertECN(ECN ecn) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", value: ecn.ECNNumber, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
parameters.Add("@OriginatorID", ecn.OriginatorID);
|
|
|
|
db.Execute("ECNInsertItem", parameters, commandType: CommandType.StoredProcedure);
|
|
ecn.ECNNumber = parameters.Get<int>("@ECNNumber");
|
|
|
|
return ecn;
|
|
}
|
|
|
|
internal void UpdateECN(ECN ecn) {
|
|
DynamicParameters parameters = new();
|
|
using (TransactionScope transanction = new()) {
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
parameters.Add("@Title", ecn.Title);
|
|
parameters.Add("@IsECN", ecn.IsECN);
|
|
parameters.Add("@IsTECN", ecn.IsTECN);
|
|
parameters.Add("@IsEmergencyTECN", ecn.IsEmergencyTECN);
|
|
parameters.Add("@ExpirationDate", ecn.ExpirationDate);
|
|
parameters.Add("@ExtensionDate", ecn.ExtensionDate);
|
|
parameters.Add("@CancellationDate", ecn.CancellationDate);
|
|
parameters.Add("@AcknowledgementRequired", ecn.AcknowledgementRequired);
|
|
parameters.Add("@TrainingRequired", ecn.TrainingRequired);
|
|
parameters.Add("@AreaID", ecn.AreaID);
|
|
parameters.Add("@TechnologyID", ecn.TechnologyID);
|
|
parameters.Add("@PCRBRequired", ecn.PCRBRequired);
|
|
parameters.Add("@PCRBNumber", ecn.PCRBNumber);
|
|
parameters.Add("@TestProgramChangeRequired", ecn.TestProgramChangeRequired);
|
|
parameters.Add("@MetrologyChangeRequired", ecn.MetrologyChangeRequired);
|
|
parameters.Add("@SPCChangeRequired", ecn.SPCChangeRequired);
|
|
parameters.Add("@NewPartFlowRequired", ecn.NewPartFlowRequired);
|
|
parameters.Add("@SPNChangeRequired", ecn.SPNChangeRequired);
|
|
parameters.Add("@ImplementationDetails", ecn.ImplementationDetails);
|
|
parameters.Add("@ImpactOnEnvironment", ecn.ImpactOnEnvironment);
|
|
parameters.Add("@ImpactOnEnvironmentDescription", ecn.ImpactOnEnvironmentDescription);
|
|
parameters.Add("@ImpactOnCapacity", ecn.ImpactOnCapacity);
|
|
parameters.Add("@ImpactOnCapacityDescription", ecn.ImpactOnCapacityDescription);
|
|
parameters.Add("@IsMA", ecn.IsMA);
|
|
parameters.Add("@IsRH", ecn.IsRH);
|
|
parameters.Add("@IsAU", ecn.IsAU);
|
|
parameters.Add("@IsIndustrial", ecn.IsIndustrial);
|
|
parameters.Add("@MaterialConsumptionChangeRequired", ecn.MaterialConsumptionChangeRequired);
|
|
parameters.Add("@MaterialConsumptionChangeDescription", ecn.MaterialConsumptionChangeDescription);
|
|
parameters.Add("@ReasonForChange", ecn.ReasonForChange);
|
|
parameters.Add("@DescriptionOfChange", ecn.DescriptionOfChange);
|
|
parameters.Add("@NotAFlowChange", ecn.NotAFlowChange);
|
|
parameters.Add("@AttachECN_TECNToLots", ecn.AttachECN_TECNToLots);
|
|
parameters.Add("@SPNFlowChangeAtSingleStep", ecn.SPNFlowChangeAtSingleStep);
|
|
parameters.Add("@SPNFlowChangeAtMultipleSteps", ecn.SPNFlowChangeAtMultipleSteps);
|
|
parameters.Add("@CategoryID", ecn.CategoryID);
|
|
parameters.Add("@FIChangeRequired", ecn.FIChangeRequired);
|
|
parameters.Add("@NumberOfLotsAffected", ecn.NumberOfLotsAffected);
|
|
parameters.Add("@RecipeChange", ecn.RecipeChange);
|
|
// RJK ITAR/EC
|
|
parameters.Add("@IsDocEC", ecn.IsDocEC);
|
|
db.Execute("ECNUpdate", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
db.Execute("ECNDeleteAffectedDepartments", parameters, commandType: CommandType.StoredProcedure);
|
|
List<int> ecnDepIDs = ecn.DepartmentIDs;
|
|
if (ecnDepIDs != null) {
|
|
foreach (int depId in ecnDepIDs) {
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
parameters.Add("@DepartmentID", depId);
|
|
db.Execute("ECNInsertAffectedDepartments", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
db.Execute("ECNDeleteAffectedModules", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
List<int> ecnModuleIDs = ecn.ModuleIDs;
|
|
if (ecnModuleIDs != null) {
|
|
foreach (int moduleID in ecnModuleIDs) {
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
parameters.Add("@ModuleID", moduleID);
|
|
db.Execute("ECNInsertAffectedModules", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
List<int> ecnAreaIDs = ecn.AreaIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
db.Execute("ECNDeleteAffectedAreas", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
if (ecnAreaIDs != null) {
|
|
foreach (int ecnAreaID in ecnAreaIDs) {
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
parameters.Add("@AreaID", ecnAreaID);
|
|
db.Execute("ECNInsertAffectedAreas", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
List<int> ecnTechnologyIDs = ecn.TechnologyIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
db.Execute("ECNDeleteAffectedTechnologies", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
if (ecnTechnologyIDs != null) {
|
|
foreach (int ecnTechnologyID in ecnTechnologyIDs) {
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
|
|
parameters.Add("@TechnologyID", ecnTechnologyID);
|
|
db.Execute("ECNInsertAffectedTechnologies", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
List<int> ecnAcknowledgementByIDs = ecn.AcknowledgementByIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
db.Execute("ECNDeleteAcknowledgementBy", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
if (ecnAcknowledgementByIDs != null) {
|
|
foreach (int ecnAcknowledgementByID in ecnAcknowledgementByIDs) {
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
|
|
parameters.Add("@AcknowledgementByID", ecnAcknowledgementByID);
|
|
db.Execute("ECNInsertAcknowledgementBy", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
List<int> ecnTrainingByIDs = ecn.TrainingByIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
db.Execute("ECNDeleteTrainingBy", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
if (ecnTrainingByIDs != null) {
|
|
foreach (int ecnTrainingByID in ecnTrainingByIDs) {
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
|
|
parameters.Add("@TrainingByID", ecnTrainingByID);
|
|
db.Execute("ECNInsertTrainingBy", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
List<int> ecnProductFamilyIDs = ecn.ProductFamilyIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
db.Execute("ECNDeleteAffectedProductFamilies", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
if (ecnProductFamilyIDs != null) {
|
|
foreach (int ecnProductFamilyID in ecnProductFamilyIDs) {
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
|
|
parameters.Add("@ProductFamilyID", ecnProductFamilyID);
|
|
db.Execute("ECNInsertAffectedProductFamilies", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
transanction.Complete();
|
|
}
|
|
}
|
|
|
|
internal ECN GetECN(int ecnNumber, out int isITAR, int userID) {
|
|
/* IsITAR
|
|
0 = false
|
|
1 = true
|
|
2 = not required
|
|
*/
|
|
isITAR = 2;
|
|
|
|
ECN ecnItem = new();
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", value: ecnNumber);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@IsITAR", value: isITAR, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
|
|
using (var multipleResultItems = db.QueryMultiple("ECNGetItem", parameters, commandType: CommandType.StoredProcedure)) {
|
|
ecnItem = multipleResultItems.Read<ECN>().SingleOrDefault();
|
|
|
|
List<int> departments = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && departments != null) {
|
|
if (departments.Count > 0)
|
|
ecnItem.DepartmentIDs.AddRange(departments);
|
|
}
|
|
|
|
List<int> modules = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && modules != null) {
|
|
if (modules.Count > 0)
|
|
ecnItem.ModuleIDs.AddRange(modules);
|
|
}
|
|
|
|
List<int> areas = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && areas != null) {
|
|
if (areas.Count > 0)
|
|
ecnItem.AreaIDs.AddRange(areas);
|
|
}
|
|
|
|
List<int> technologies = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && technologies != null) {
|
|
if (technologies.Count > 0)
|
|
ecnItem.TechnologyIDs.AddRange(technologies);
|
|
}
|
|
|
|
List<int> acknowledgmentby = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && acknowledgmentby != null) {
|
|
if (acknowledgmentby.Count > 0)
|
|
ecnItem.AcknowledgementByIDs.AddRange(acknowledgmentby);
|
|
}
|
|
|
|
List<int> trainingby = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && trainingby != null) {
|
|
if (trainingby.Count > 0)
|
|
ecnItem.TrainingByIDs.AddRange(trainingby);
|
|
}
|
|
|
|
List<int> productfamilies = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && productfamilies != null) {
|
|
if (productfamilies.Count > 0)
|
|
ecnItem.ProductFamilyIDs.AddRange(productfamilies);
|
|
}
|
|
|
|
}
|
|
|
|
isITAR = parameters.Get<int>("@IsITAR");
|
|
|
|
return ecnItem;
|
|
}
|
|
|
|
public int PCRBExists(int pcrb) {
|
|
int result = 0;
|
|
ECN ecnItem = new();
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@PCRB", value: pcrb);
|
|
parameters.Add("@Result", value: result, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
|
|
db.Execute("ECNPCRBExists", parameters, commandType: CommandType.StoredProcedure);
|
|
result = parameters.Get<int>("@Result");
|
|
|
|
return result;
|
|
}
|
|
|
|
internal ECN GetECNForRead(int ecnNumber, out int isITAR, int userID) {
|
|
/* IsITAR
|
|
0 = false
|
|
1 = true
|
|
2 = not required
|
|
*/
|
|
isITAR = 2;
|
|
|
|
ECN ecnItem = new();
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", value: ecnNumber);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@IsITAR", value: isITAR, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
|
|
using (var multipleResultItems = db.QueryMultiple("ECNGetItemForRead", parameters, commandType: CommandType.StoredProcedure)) {
|
|
ecnItem = multipleResultItems.Read<ECN>().SingleOrDefault();
|
|
|
|
List<int> departments = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && departments != null) {
|
|
if (departments.Count > 0)
|
|
ecnItem.DepartmentIDs.AddRange(departments);
|
|
}
|
|
|
|
List<int> modules = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && modules != null) {
|
|
if (modules.Count > 0)
|
|
ecnItem.ModuleIDs.AddRange(modules);
|
|
}
|
|
|
|
List<int> areas = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && areas != null) {
|
|
if (areas.Count > 0)
|
|
ecnItem.AreaIDs.AddRange(areas);
|
|
}
|
|
|
|
List<int> technologies = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && technologies != null) {
|
|
if (technologies.Count > 0)
|
|
ecnItem.TechnologyIDs.AddRange(technologies);
|
|
}
|
|
|
|
List<int> acknowledgmentby = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && acknowledgmentby != null) {
|
|
if (acknowledgmentby.Count > 0)
|
|
ecnItem.AcknowledgementByIDs.AddRange(acknowledgmentby);
|
|
}
|
|
|
|
List<int> trainingby = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && trainingby != null) {
|
|
if (trainingby.Count > 0)
|
|
ecnItem.TrainingByIDs.AddRange(trainingby);
|
|
}
|
|
|
|
List<int> productfamilies = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && productfamilies != null) {
|
|
if (productfamilies.Count > 0)
|
|
ecnItem.ProductFamilyIDs.AddRange(productfamilies);
|
|
}
|
|
|
|
}
|
|
|
|
isITAR = parameters.Get<int>("@IsITAR");
|
|
|
|
return ecnItem;
|
|
}
|
|
|
|
internal ECNPdf GetECNPdf(int ecnNumber) {
|
|
ECNPdf ecnItem = new();
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", value: ecnNumber);
|
|
|
|
using (var multipleResultItems = db.QueryMultiple("ECNGetPdfItem", parameters, commandType: CommandType.StoredProcedure)) {
|
|
ecnItem = multipleResultItems.Read<ECNPdf>().SingleOrDefault();
|
|
|
|
List<string> departments = multipleResultItems.Read<string>().ToList();
|
|
List<string> modules = multipleResultItems.Read<string>().ToList();
|
|
List<string> attachments = multipleResultItems.Read<string>().ToList();
|
|
if (ecnItem != null && attachments != null) {
|
|
if (attachments.Count > 0)
|
|
ecnItem.Attachments.AddRange(attachments);
|
|
}
|
|
|
|
List<ECNApprovalLog> approvalLog = multipleResultItems.Read<ECNApprovalLog>().ToList();
|
|
if (ecnItem != null && approvalLog != null) {
|
|
if (approvalLog.Count > 0)
|
|
ecnItem.Approvalog.AddRange(approvalLog);
|
|
}
|
|
|
|
List<string> affectedAreas = multipleResultItems.Read<string>().ToList();
|
|
List<string> affectedTechnologies = multipleResultItems.Read<string>().ToList();
|
|
List<string> acknowledgementBy = multipleResultItems.Read<string>().ToList();
|
|
List<string> trainingBy = multipleResultItems.Read<string>().ToList();
|
|
List<string> productfamilies = multipleResultItems.Read<string>().ToList();
|
|
|
|
ecnItem.AffectedModules = string.Join(", ", modules);
|
|
ecnItem.AffectedDepartments = string.Join(", ", departments);
|
|
ecnItem.AffectedAreas = string.Join(",", affectedAreas);
|
|
ecnItem.AffectedTechnologies = string.Join(",", affectedTechnologies);
|
|
ecnItem.TrainingBy = string.Join(",", trainingBy);
|
|
ecnItem.AcknowledgementBy = string.Join(",", acknowledgementBy);
|
|
ecnItem.AffectedProductFamilies = string.Join(",", productfamilies);
|
|
|
|
}
|
|
return ecnItem;
|
|
}
|
|
|
|
internal ECN GetECN(int ecnNumber) {
|
|
ECN ecnItem = new();
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", value: ecnNumber);
|
|
|
|
ecnItem = db.Query<ECN>("ECNGetECNData", parameters, commandType: CommandType.StoredProcedure).Single();
|
|
|
|
return ecnItem;
|
|
}
|
|
|
|
internal List<ECNAffectedDeparmtent> GetDepartments() {
|
|
List<ECNAffectedDeparmtent> departments = db.Query<ECNAffectedDeparmtent>("ECNGetDepartments", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return departments;
|
|
}
|
|
|
|
internal List<ECNAffectedModule> GetModules() {
|
|
List<ECNAffectedModule> modules = db.Query<ECNAffectedModule>("ECNGetModules", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return modules;
|
|
}
|
|
|
|
internal List<ECNCategory> GetCategories() {
|
|
List<ECNCategory> r = db.Query<ECNCategory>("ECNGetCategories", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return r;
|
|
}
|
|
|
|
internal List<ECNArea> GetECNAreas() {
|
|
StringBuilder query = new("SELECT AreaID , Area FROM ECNArea ORDER BY Area");
|
|
return db.Query<ECNArea>(query.ToString()).ToList();
|
|
}
|
|
|
|
internal List<ECNTechnology> GetECNTechnologies() {
|
|
DynamicParameters parameters = new();
|
|
|
|
StringBuilder query = new("SELECT DISTINCT TechnologyID, Technology FROM ECNTechnology ORDER BY Technology");
|
|
return db.Query<ECNTechnology>(query.ToString()).ToList();
|
|
}
|
|
|
|
internal List<ECNAcknowledgementTrainingBy> GetECNAcknowledgementTrainingBy() {
|
|
DynamicParameters parameters = new();
|
|
|
|
StringBuilder query = new("SELECT DISTINCT AcknowledgementTrainingByID, AcknowledgementTrainingBy FROM ECNAcknowledgementTrainingBy ORDER BY AcknowledgementTrainingBy");
|
|
return db.Query<ECNAcknowledgementTrainingBy>(query.ToString()).ToList();
|
|
}
|
|
|
|
public IEnumerable<ECNAttachment> GetECNAttachments(int ecnNumber) {
|
|
StringBuilder sql = new();
|
|
sql.Append("SELECT A.AttachmentID, A.ECNNumber, A.FileName, A.UserID, CONVERT(VARCHAR(10), A.UploadDate, 101) AS UploadDate, U.FirstName + ' ' + U.LastName AS FullName ");
|
|
sql.Append("FROM ECNAttachment A INNER JOIN Users U ON A.UserID = U.UserID WHERE ECNNumber = @ECNNumber ");
|
|
List<ECNAttachment> attachments = db.Query<ECNAttachment>(sql.ToString(), new { ECNNumber = ecnNumber }).ToList();
|
|
return attachments;
|
|
}
|
|
|
|
public IEnumerable<ApprovalLogHistory> GetECNApprovalLogHistory(int ecnNumber) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
List<ApprovalLogHistory> approverList = db.Query<ApprovalLogHistory>("ECNGetECNApprovalLogHistory", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
public IEnumerable<int> GetTECNNotificationUsers() {
|
|
string sql = "select T.UserId from TECNNotificationsUsers T";
|
|
List<int> result = db.Query<int>(sql).ToList();
|
|
return result;
|
|
}
|
|
|
|
public void DeleteECNAttachment(int attachmentID) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@AttachmentID", attachmentID);
|
|
db.Execute("ECNDeleteAttachment", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public void InsertECNAttachment(ECNAttachment attach) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", attach.ECNNumber);
|
|
parameters.Add("@UserID", attach.UserID);
|
|
parameters.Add("@FileName", attach.FileName);
|
|
|
|
db.Execute("ECNInsertAttachment", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public List<string> GetRejectionOrginatorEmailList(int ecnNumber) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
List<string> emailList = db.Query<string>("ECNGetRejectionOrginatorEmailList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return emailList;
|
|
}
|
|
|
|
public int SubmitDocument(int issueID, int userID, int documentType, out int allowedITAR) {
|
|
allowedITAR = 1;
|
|
string subRoles = "";
|
|
if (documentType != (int)GlobalVars.DocumentType.EECN)
|
|
subRoles = wfDMO.GetSubRoleItems(issueID, documentType);
|
|
|
|
// bubble the error
|
|
int appoverCount = 0;
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", issueID);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@SubRoleCategoriesClause", subRoles);
|
|
parameters.Add("@AppoverCount", appoverCount, dbType: DbType.Int32, direction: ParameterDirection.Output);
|
|
parameters.Add("@AllowedITAR", allowedITAR, dbType: DbType.Int32, direction: ParameterDirection.Output);
|
|
db.Execute("ECNSubmitForApproval", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
appoverCount = parameters.Get<int>("@AppoverCount");
|
|
allowedITAR = parameters.Get<int>("@AllowedITAR");
|
|
|
|
return appoverCount;
|
|
}
|
|
|
|
public int ReSubmitDocument(int issueID, int userID, int documentType, out int allowedITAR, string descriptionOfChange, string reasonForChange, string ecnTypeString, out int newECNNumber, int categoryId) {
|
|
newECNNumber = 0;
|
|
allowedITAR = 1;
|
|
string subRoles = "";
|
|
if (documentType != (int)GlobalVars.DocumentType.EECN)
|
|
subRoles = wfDMO.GetSubRoleItems(issueID, documentType);
|
|
|
|
// bubble the error
|
|
int appoverCount = 0;
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", issueID);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@SubRoleCategoriesClause", subRoles);
|
|
parameters.Add("@AppoverCount", appoverCount, dbType: DbType.Int32, direction: ParameterDirection.Output);
|
|
parameters.Add("@DescriptionOfChange", descriptionOfChange);
|
|
parameters.Add("@ReasonForChange", reasonForChange);
|
|
parameters.Add("@NewECNTypeString", ecnTypeString);
|
|
parameters.Add("NewECNNumber", newECNNumber, direction: ParameterDirection.Output);
|
|
parameters.Add("@CategoryID", categoryId);
|
|
db.Execute("ECNReSubmitForApproval", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
appoverCount = parameters.Get<int>("@AppoverCount");
|
|
newECNNumber = parameters.Get<int>("@NewECNNumber");
|
|
return appoverCount;
|
|
}
|
|
|
|
public int SubmitForCancellation(int issueID, byte currentStep, int userID, int documentType, string ecnType, int TECNOperationType) {
|
|
string subRoles = "";
|
|
if (documentType != (int)GlobalVars.DocumentType.EECN)
|
|
subRoles = wfDMO.GetSubRoleItems(issueID, documentType);
|
|
|
|
// bubble the error
|
|
int appoverCount = 0;
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", issueID);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@ECNType", ecnType);
|
|
parameters.Add("@Step", currentStep);
|
|
parameters.Add("@SubRoleCategoriesClause", subRoles);
|
|
parameters.Add("@OperationType", TECNOperationType);
|
|
parameters.Add("@AppoverCount", appoverCount, dbType: DbType.Int32, direction: ParameterDirection.Output);
|
|
|
|
db.Execute("ECNSubmitCancellation_Expiration", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
appoverCount = parameters.Get<int>("@AppoverCount");
|
|
return appoverCount;
|
|
}
|
|
|
|
public int SubmitTECNExtensionDocument(int issueID, int userID, int documentType, DateTime extensionDate) {
|
|
string subRoles = "";
|
|
if (documentType != (int)GlobalVars.DocumentType.EECN)
|
|
subRoles = wfDMO.GetSubRoleItems(issueID, documentType);
|
|
|
|
// bubble the error
|
|
int appoverCount = 0;
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", issueID);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@TECNExtensionDate", extensionDate);
|
|
parameters.Add("@SubRoleCategoriesClause", subRoles);
|
|
parameters.Add("@AppoverCount", appoverCount, dbType: DbType.Int32, direction: ParameterDirection.Output);
|
|
|
|
db.Execute("ECN_TECNExtensionSubmitForApproval", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
appoverCount = parameters.Get<int>("@AppoverCount");
|
|
return appoverCount;
|
|
}
|
|
|
|
public void SaveAfterSubmitByApprover(int ecnNumber, string implementationDetails) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@ImplementationDetails", implementationDetails);
|
|
|
|
db.Execute("ECNSaveAfterSubmitByApprover", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public void TECNExtensionLog(int ecnNumber, DateTime extensionDate) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@ExtensionDate", extensionDate);
|
|
|
|
db.Execute("ECN_TECNExtensionLogUpdate", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Cancels the document before the approval loopmis closed
|
|
/// </summary>
|
|
|
|
public void DeleteDocument(int ecnNumber, int userid, string ecnTypeString) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@UserID", userid);
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@ECNType", ecnTypeString);
|
|
|
|
db.Execute("ECNDeleteDocument", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public void UpdateECNType(int ecnNumber, string ecnType) {
|
|
string updateSql = "";
|
|
if (ecnType == "ECN")
|
|
updateSql = "UPDATE ECN SET IsECN = 1 , IsTECN = 0, IsEmergencyTECN = 0 WHERE ECNNumber = @ECNNumber ";
|
|
else if (ecnType == "TECN")
|
|
updateSql = "UPDATE ECN SET IsECN = 0 , IsTECN = 1, IsEmergencyTECN = 0 WHERE ECNNumber = @ECNNumber ";
|
|
|
|
db.Execute(updateSql, new { ECNNumber = ecnNumber }, commandType: CommandType.Text);
|
|
}
|
|
|
|
public void SetToExecutionStep(int ecnNumber, int userid, int documentType, string ecnTypeString) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@UserID", userid);
|
|
parameters.Add("@DocumentType", documentType);
|
|
parameters.Add("@ECNType", ecnTypeString);
|
|
|
|
db.Execute("ECNSetToExecutionStep", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public bool ECNApproveCancelled_ExpiredDocument(int issueID, byte step, string comments, out bool lastStep, int userID, int documentType) {
|
|
string subRolesInClause = wfDMO.GetSubRoleItems(issueID, documentType);
|
|
|
|
lastStep = false;
|
|
bool lastApproverInCurrentStep = false;
|
|
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@CurrentStep", step);
|
|
parameters.Add("@ItemStatus", (int)GlobalVars.ApprovalOption.Approved);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@Comments", comments);
|
|
parameters.Add("@SubRoleCategoriesClause", subRolesInClause);
|
|
parameters.Add("@DocumentTypeID", documentType);
|
|
parameters.Add("@LastStep", lastStep, dbType: DbType.Boolean, direction: ParameterDirection.Output);
|
|
parameters.Add("@LastApproverInCurrentStep", lastApproverInCurrentStep, dbType: DbType.Boolean, direction: ParameterDirection.Output);
|
|
|
|
db.Execute("UpdateApproval", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
lastStep = parameters.Get<bool>("@LastStep");
|
|
lastApproverInCurrentStep = parameters.Get<bool>("@LastApproverInCurrentStep");
|
|
|
|
return lastApproverInCurrentStep;
|
|
}
|
|
|
|
public IEnumerable<IssuesViewModel> GetECN_TECNPendingApprovals(int userID) {
|
|
// later on the View Model will refer to a generic task list instead of the just Lot Disposition Items
|
|
List<IssuesViewModel> data = db.Query<IssuesViewModel>("ECNGetECN_TECNPendingApprovalsByOriginator", new { userID }, commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
|
|
public IEnumerable<IssuesViewModel> GetMyExpiredTECNs(int userID, int maxDays) {
|
|
// later on the View Model will refer to a generic task list instead of the just Lot Disposition Items
|
|
List<IssuesViewModel> data = db.Query<IssuesViewModel>("ECNGetExpiredTECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
|
|
public IEnumerable<IssuesViewModel> GetAllTECNs() {
|
|
// later on the View Model will refer to a generic task list instead of the just Lot Disposition Items
|
|
List<IssuesViewModel> data = db.Query<IssuesViewModel>("ECNGetAllTECN", commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
|
|
public IEnumerable<IssuesViewModel> GetMyConvertedTECNsToECNs(int userID, int maxDays) {
|
|
// later on the View Model will refer to a generic task list instead of the just Lot Disposition Items
|
|
List<IssuesViewModel> data = db.Query<IssuesViewModel>("ECNGetTECNConvertedToECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
|
|
public IEnumerable<IssuesViewModel> GetMyExpiringTECNs(int userID, int maxDays) {
|
|
// later on the View Model will refer to a generic task list instead of the just Lot Disposition Items
|
|
List<IssuesViewModel> data = db.Query<IssuesViewModel>("ECNGetExpiringTECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
|
|
public void CancelECN(int? ecnNumber) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@IssueID", ecnNumber);
|
|
|
|
db.Execute("ECNCancelECN", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public void ECNResetTECNAtRejection(int ecnNumber, int userID, int docType) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@DocumentTypeID", docType);
|
|
|
|
db.Execute("ECNResetTECNAtRejection", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public bool CanSubmitECN(int ecnNumber) {
|
|
bool tecnExtensionState = false;
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@TECNExtensionState", value: tecnExtensionState, dbType: DbType.Boolean, direction: ParameterDirection.InputOutput);
|
|
|
|
db.Execute("ECNCanSubmitECN", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
tecnExtensionState = parameters.Get<bool>("@TECNExtensionState");
|
|
|
|
return tecnExtensionState;
|
|
}
|
|
|
|
public void ReleaseLockOnDocument(int userID, int issueID) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@UserID", userID);
|
|
db.Execute("ECNReleaseLockOnECNDocuments", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
public string GetFileName(string attachmentID) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@AttachmentID", attachmentID);
|
|
var fileName = db.Query<string>("ECNGetFileName", parameters, commandType: CommandType.StoredProcedure).Single();
|
|
return fileName;
|
|
}
|
|
|
|
public void ReassignOriginatorECN(int ecnNumber, int newOriginatorID, string comments, int userID) {
|
|
DynamicParameters parameters = new();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@NewOriginatorID", newOriginatorID);
|
|
parameters.Add("@Comments", comments);
|
|
parameters.Add("@UserID", userID);
|
|
|
|
db.Execute("ECNReassignOriginator", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
internal List<ProductFamilies> GetProductFamilies() {
|
|
List<ProductFamilies> r = db.Query<ProductFamilies>("ECNGetProductFamilies", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return r;
|
|
}
|
|
|
|
} |