1073 lines
43 KiB
C#
1073 lines
43 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Web;
|
|
using Fab2ApprovalSystem.Models;
|
|
using Dapper;
|
|
using System.Transactions;
|
|
using Fab2ApprovalSystem.ViewModels;
|
|
using System.Reflection;
|
|
using Fab2ApprovalSystem.Misc;
|
|
using ICSharpCode.SharpZipLib;
|
|
|
|
namespace Fab2ApprovalSystem.DMO
|
|
{
|
|
public class ECN_DMO
|
|
{
|
|
private IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
|
WorkflowDMO wfDMO = new WorkflowDMO();
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecn"></param>
|
|
/// <returns></returns>
|
|
internal ECN InsertECN(ECN ecn)
|
|
{
|
|
|
|
var parameters = new DynamicParameters();
|
|
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", value: ecn.ECNNumber, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
parameters.Add("@OriginatorID", ecn.OriginatorID);
|
|
|
|
this.db.Execute("ECNInsertItem", parameters, commandType: CommandType.StoredProcedure);
|
|
ecn.ECNNumber = parameters.Get<int>("@ECNNumber");
|
|
|
|
return ecn;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecn"></param>
|
|
internal void UpdateECN(ECN ecn)
|
|
{
|
|
|
|
//ECN temp = GetECN(ecn.ECNNumber);
|
|
//if (temp.Equals(ecn))
|
|
//{
|
|
// string s = "good to go...";
|
|
//}
|
|
|
|
var parameters = new DynamicParameters();
|
|
using (var transanction = new TransactionScope())
|
|
{
|
|
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);
|
|
this.db.Execute("ECNUpdate", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
this.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);
|
|
this.db.Execute("ECNInsertAffectedDepartments", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
this.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);
|
|
this.db.Execute("ECNInsertAffectedModules", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
|
|
List<int> ecnAreaIDs = ecn.AreaIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
this.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);
|
|
this.db.Execute("ECNInsertAffectedAreas", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
List<int> ecnTechnologyIDs = ecn.TechnologyIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
this.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);
|
|
this.db.Execute("ECNInsertAffectedTechnologies", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
|
|
List<int> ecnAcknowledgementByIDs = ecn.AcknowledgementByIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
this.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);
|
|
this.db.Execute("ECNInsertAcknowledgementBy", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
|
|
List<int> ecnTrainingByIDs = ecn.TrainingByIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
this.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);
|
|
this.db.Execute("ECNInsertTrainingBy", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
|
|
List<int> ecnProductFamilyIDs = ecn.ProductFamilyIDs;
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecn.ECNNumber);
|
|
this.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);
|
|
this.db.Execute("ECNInsertAffectedProductFamilies", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
}
|
|
|
|
transanction.Complete();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <returns></returns>
|
|
internal ECN GetECN(int ecnNumber, out int isITAR, int userID)
|
|
{
|
|
/* IsITAR
|
|
0 = false
|
|
1 = true
|
|
2 = not required
|
|
*/
|
|
isITAR = 2;
|
|
|
|
var ecnItem = new ECN();
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", value: ecnNumber);
|
|
parameters.Add("@UserID", userID);
|
|
//parameters.Add("@UserID", GlobalVars.USER_ID);
|
|
parameters.Add("@IsITAR", value: isITAR, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
|
|
//StringBuilder query = new StringBuilder("ECNGetItem");
|
|
|
|
|
|
using (var multipleResultItems = this.db.QueryMultiple("ECNGetItem", parameters, commandType: CommandType.StoredProcedure))
|
|
{
|
|
ecnItem = multipleResultItems.Read<ECN>().SingleOrDefault();
|
|
|
|
var departments = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && departments != null)
|
|
{
|
|
if (departments.Count > 0)
|
|
ecnItem.DepartmentIDs.AddRange(departments);
|
|
}
|
|
|
|
var modules = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && modules != null)
|
|
{
|
|
if (modules.Count > 0)
|
|
ecnItem.ModuleIDs.AddRange(modules);
|
|
}
|
|
|
|
var areas = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && areas != null)
|
|
{
|
|
if (areas.Count > 0)
|
|
ecnItem.AreaIDs.AddRange(areas);
|
|
}
|
|
|
|
var technologies = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && technologies != null)
|
|
{
|
|
if (technologies.Count > 0)
|
|
ecnItem.TechnologyIDs.AddRange(technologies);
|
|
}
|
|
|
|
var acknowledgmentby = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && acknowledgmentby != null)
|
|
{
|
|
if (acknowledgmentby.Count > 0)
|
|
ecnItem.AcknowledgementByIDs.AddRange(acknowledgmentby);
|
|
}
|
|
|
|
var trainingby = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && trainingby != null)
|
|
{
|
|
if (trainingby.Count > 0)
|
|
ecnItem.TrainingByIDs.AddRange(trainingby);
|
|
}
|
|
|
|
var 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;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="pcrb"></param>
|
|
/// <returns></returns>
|
|
public int PCRBExists(int pcrb)
|
|
{
|
|
int result = 0;
|
|
var ecnItem = new ECN();
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@PCRB", value: pcrb);
|
|
parameters.Add("@Result", value: result, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
|
|
this.db.Execute("ECNPCRBExists", parameters, commandType: CommandType.StoredProcedure);
|
|
result = parameters.Get<int>("@Result");
|
|
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <param name="isITAR"></param>
|
|
/// <param name="userID"></param>
|
|
/// <returns></returns>
|
|
internal ECN GetECNForRead(int ecnNumber, out int isITAR, int userID)
|
|
{
|
|
/* IsITAR
|
|
0 = false
|
|
1 = true
|
|
2 = not required
|
|
*/
|
|
isITAR = 2;
|
|
|
|
var ecnItem = new ECN();
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", value: ecnNumber);
|
|
parameters.Add("@UserID", userID);
|
|
//parameters.Add("@UserID", GlobalVars.USER_ID);
|
|
parameters.Add("@IsITAR", value: isITAR, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
|
|
//StringBuilder query = new StringBuilder("ECNGetItem");
|
|
|
|
|
|
using (var multipleResultItems = this.db.QueryMultiple("ECNGetItemForRead", parameters, commandType: CommandType.StoredProcedure))
|
|
{
|
|
ecnItem = multipleResultItems.Read<ECN>().SingleOrDefault();
|
|
|
|
var departments = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && departments != null)
|
|
{
|
|
if (departments.Count > 0)
|
|
ecnItem.DepartmentIDs.AddRange(departments);
|
|
}
|
|
|
|
var modules = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && modules != null)
|
|
{
|
|
if (modules.Count > 0)
|
|
ecnItem.ModuleIDs.AddRange(modules);
|
|
}
|
|
|
|
var areas = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && areas != null)
|
|
{
|
|
if (areas.Count > 0)
|
|
ecnItem.AreaIDs.AddRange(areas);
|
|
}
|
|
|
|
var technologies = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && technologies != null)
|
|
{
|
|
if (technologies.Count > 0)
|
|
ecnItem.TechnologyIDs.AddRange(technologies);
|
|
}
|
|
|
|
var acknowledgmentby = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && acknowledgmentby != null)
|
|
{
|
|
if (acknowledgmentby.Count > 0)
|
|
ecnItem.AcknowledgementByIDs.AddRange(acknowledgmentby);
|
|
}
|
|
|
|
var trainingby = multipleResultItems.Read<int>().ToList();
|
|
if (ecnItem != null && trainingby != null)
|
|
{
|
|
if (trainingby.Count > 0)
|
|
ecnItem.TrainingByIDs.AddRange(trainingby);
|
|
}
|
|
|
|
var 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;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <returns></returns>
|
|
internal ECNPdf GetECNPdf(int ecnNumber)
|
|
{
|
|
|
|
var ecnItem = new ECNPdf();
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", value: ecnNumber);
|
|
|
|
//StringBuilder query = new StringBuilder("ECNGetItem");
|
|
|
|
|
|
using (var multipleResultItems = this.db.QueryMultiple("ECNGetPdfItem", parameters, commandType: CommandType.StoredProcedure))
|
|
{
|
|
ecnItem = multipleResultItems.Read<ECNPdf>().SingleOrDefault();
|
|
|
|
var departments = multipleResultItems.Read<string>().ToList();
|
|
//if (ecnItem != null && departments != null)
|
|
//{
|
|
// if (departments.Count > 0)
|
|
// ecnItem.AffectedDepartments.AddRange(departments);
|
|
//}
|
|
|
|
var modules = multipleResultItems.Read<string>().ToList();
|
|
//if (ecnItem != null && modules != null)
|
|
//{
|
|
// if (modules.Count > 0)
|
|
// ecnItem.AffectedModules.AddRange(modules);
|
|
//}
|
|
|
|
var attachments = multipleResultItems.Read<string>().ToList();
|
|
if (ecnItem != null && attachments != null)
|
|
{
|
|
if (attachments.Count > 0)
|
|
ecnItem.Attachments.AddRange(attachments);
|
|
}
|
|
|
|
var approvalLog = multipleResultItems.Read<ECNApprovalLog>().ToList();
|
|
if (ecnItem != null && approvalLog != null)
|
|
{
|
|
if (approvalLog.Count > 0)
|
|
ecnItem.Approvalog.AddRange(approvalLog);
|
|
}
|
|
|
|
var affectedAreas = multipleResultItems.Read<string>().ToList();
|
|
var affectedTechnologies = multipleResultItems.Read<string>().ToList();
|
|
var acknowledgementBy = multipleResultItems.Read<string>().ToList();
|
|
var trainingBy = multipleResultItems.Read<string>().ToList();
|
|
var 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;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <returns></returns>
|
|
internal ECN GetECN(int ecnNumber)
|
|
{
|
|
ECN ecnItem = new ECN();
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", value: ecnNumber);
|
|
|
|
ecnItem = this.db.Query<ECN>("ECNGetECNData", parameters, commandType: CommandType.StoredProcedure).Single();
|
|
|
|
return ecnItem;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
internal List<ECNAffectedDeparmtent> GetDepartments()
|
|
{
|
|
var departments = this.db.Query<ECNAffectedDeparmtent>("ECNGetDepartments", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return departments;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
internal List<ECNAffectedModule> GetModules()
|
|
{
|
|
var modules = this.db.Query<ECNAffectedModule>("ECNGetModules", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return modules;
|
|
|
|
}
|
|
|
|
internal List<ECNCategory> GetCategories()
|
|
{
|
|
var r = this.db.Query<ECNCategory>("ECNGetCategories", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return r;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
internal List<ECNArea> GetECNAreas()
|
|
{
|
|
|
|
StringBuilder query = new StringBuilder("SELECT AreaID , Area FROM ECNArea ORDER BY Area");
|
|
return this.db.Query<ECNArea>(query.ToString()).ToList();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="AreaId"></param>
|
|
/// <returns></returns>
|
|
//internal List<ECNTechnology> GetECNTechnology(int? areaId)
|
|
//{
|
|
// var parameters = new DynamicParameters();
|
|
// parameters.Add("@AreaId", value: areaId);
|
|
|
|
// StringBuilder query = new StringBuilder("SELECT TechnologyID, Technology FROM ECNTechnology WHERE AreaID = @AreaId ORDER BY Technology");
|
|
// return this.db.Query<ECNTechnology>(query.ToString(), parameters ).ToList();
|
|
|
|
//}
|
|
|
|
internal List<ECNTechnology> GetECNTechnologies()
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
|
|
|
|
StringBuilder query = new StringBuilder("SELECT DISTINCT TechnologyID, Technology FROM ECNTechnology ORDER BY Technology");
|
|
return this.db.Query<ECNTechnology>(query.ToString()).ToList();
|
|
|
|
}
|
|
|
|
internal List<ECNAcknowledgementTrainingBy> GetECNAcknowledgementTrainingBy()
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
|
|
|
|
StringBuilder query = new StringBuilder("SELECT DISTINCT AcknowledgementTrainingByID, AcknowledgementTrainingBy FROM ECNAcknowledgementTrainingBy ORDER BY AcknowledgementTrainingBy");
|
|
return this.db.Query<ECNAcknowledgementTrainingBy>(query.ToString()).ToList();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <returns></returns>
|
|
public IEnumerable<ECNAttachment> GetECNAttachments(int ecnNumber)
|
|
{
|
|
StringBuilder sql = new StringBuilder();
|
|
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 ");
|
|
var attachments = this.db.Query<ECNAttachment>(sql.ToString(), new { ECNNumber = ecnNumber }).ToList();
|
|
return attachments;
|
|
}
|
|
|
|
|
|
public IEnumerable<ApprovalLogHistory> GetECNApprovalLogHistory(int ecnNumber)
|
|
{
|
|
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
var approverList = this.db.Query<ApprovalLogHistory>("ECNGetECNApprovalLogHistory", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return approverList;
|
|
}
|
|
|
|
public IEnumerable<int> GetTECNNotificationUsers()
|
|
{
|
|
string sql = "select T.UserId from TECNNotificationsUsers T";
|
|
var result = this.db.Query<int>(sql).ToList();
|
|
return result;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="attachmentID"></param>
|
|
public void DeleteECNAttachment(int attachmentID)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@AttachmentID", attachmentID);
|
|
this.db.Execute("ECNDeleteAttachment", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="attach"></param>
|
|
public void InsertECNAttachment(ECNAttachment attach)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", attach.ECNNumber);
|
|
parameters.Add("@UserID", attach.UserID);
|
|
parameters.Add("@FileName", attach.FileName);
|
|
|
|
this.db.Execute("ECNInsertAttachment", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <returns></returns>
|
|
public List<string> GetRejectionOrginatorEmailList(int ecnNumber)
|
|
{
|
|
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
var emailList = this.db.Query<string>("ECNGetRejectionOrginatorEmailList", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
return emailList;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="userID"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
var parameters = new DynamicParameters();
|
|
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);
|
|
this.db.Execute("ECNSubmitForApproval", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
appoverCount = parameters.Get<int>("@AppoverCount");
|
|
allowedITAR = parameters.Get<int>("@AllowedITAR");
|
|
|
|
return appoverCount;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="userID"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <param name="allowedITAR"></param>
|
|
/// <param name="descriptionOfChange"></param>
|
|
/// <param name="reasonForChange"></param>
|
|
/// <param name="ecnTypeString"></param>
|
|
/// <param name="newECNNumber"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
var parameters = new DynamicParameters();
|
|
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);
|
|
this.db.Execute("ECNReSubmitForApproval", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
|
|
appoverCount = parameters.Get<int>("@AppoverCount");
|
|
//allowedITAR = parameters.Get<int>("@AllowedITAR");
|
|
newECNNumber = parameters.Get<int>("@NewECNNumber");
|
|
return appoverCount;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="userID"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
var parameters = new DynamicParameters();
|
|
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);
|
|
|
|
this.db.Execute("ECNSubmitCancellation_Expiration", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
appoverCount = parameters.Get<int>("@AppoverCount");
|
|
return appoverCount;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="userID"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <param name="extensionDate"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
var parameters = new DynamicParameters();
|
|
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);
|
|
|
|
this.db.Execute("ECN_TECNExtensionSubmitForApproval", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
appoverCount = parameters.Get<int>("@AppoverCount");
|
|
return appoverCount;
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <param name="implementationDetails"></param>
|
|
public void SaveAfterSubmitByApprover(int ecnNumber, string implementationDetails)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@ImplementationDetails", implementationDetails);
|
|
|
|
this.db.Execute("ECNSaveAfterSubmitByApprover", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <param name="extensionDate"></param>
|
|
public void TECNExtensionLog(int ecnNumber, DateTime extensionDate )
|
|
{
|
|
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@ExtensionDate", extensionDate);
|
|
|
|
this.db.Execute("ECN_TECNExtensionLogUpdate", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Cancels the document before the approval loopmis closed
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
public void DeleteDocument(int ecnNumber, int userid, string ecnTypeString)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@UserID", userid);
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@ECNType", ecnTypeString);
|
|
|
|
this.db.Execute("ECNDeleteDocument", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <param name="ecnType"></param>
|
|
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 " ;
|
|
|
|
this.db.Execute(updateSql, new { ECNNumber = ecnNumber }, commandType: CommandType.Text);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
/// <param name="userid"></param>
|
|
/// <param name="step"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <param name="ecnTypeString"></param>
|
|
public void SetToExecutionStep(int ecnNumber, int userid, int documentType, string ecnTypeString)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@UserID", userid);
|
|
parameters.Add("@DocumentType", documentType);
|
|
parameters.Add("@ECNType", ecnTypeString);
|
|
|
|
|
|
this.db.Execute("ECNSetToExecutionStep", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="issueID"></param>
|
|
/// <param name="step"></param>
|
|
/// <param name="comments"></param>
|
|
/// <param name="lastStep"></param>
|
|
/// <param name="userID"></param>
|
|
/// <param name="documentType"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
|
|
var parameters = new DynamicParameters();
|
|
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);
|
|
|
|
this.db.Execute("UpdateApproval", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
lastStep = parameters.Get<bool>("@LastStep");
|
|
lastApproverInCurrentStep = parameters.Get<bool>("@LastApproverInCurrentStep");
|
|
|
|
return lastApproverInCurrentStep;
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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
|
|
var data = this.db.Query<IssuesViewModel>("ECNGetECN_TECNPendingApprovalsByOriginator", new { userID }, commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="userID"></param>
|
|
/// <returns></returns>
|
|
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
|
|
var data = this.db.Query<IssuesViewModel>("ECNGetExpiredTECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name=""></param>
|
|
/// <returns></returns>
|
|
public IEnumerable<IssuesViewModel> GetAllTECNs()
|
|
{
|
|
// later on the View Model will refer to a generic task list instead of the just Lot Disposition Items
|
|
var data = this.db.Query<IssuesViewModel>("ECNGetAllTECN", commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="userID"></param>
|
|
/// <param name="maxDays"></param>
|
|
/// <returns></returns>
|
|
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
|
|
var data = this.db.Query<IssuesViewModel>("ECNGetTECNConvertedToECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="userID"></param>
|
|
/// <param name="maxDays"></param>
|
|
/// <returns></returns>
|
|
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
|
|
var data = this.db.Query<IssuesViewModel>("ECNGetExpiringTECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList();
|
|
return data;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
public void CancelECN(int? ecnNumber)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@IssueID", ecnNumber);
|
|
|
|
this.db.Execute("ECNCancelECN", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
public void ECNResetTECNAtRejection(int ecnNumber, int userID, int docType)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@UserID", userID);
|
|
parameters.Add("@DocumentTypeID", docType);
|
|
|
|
this.db.Execute("ECNResetTECNAtRejection", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ecnNumber"></param>
|
|
public bool CanSubmitECN(int ecnNumber)
|
|
{
|
|
bool tecnExtensionState = false;
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@TECNExtensionState", value: tecnExtensionState, dbType: DbType.Boolean, direction: ParameterDirection.InputOutput);
|
|
|
|
this.db.Execute("ECNCanSubmitECN", parameters, commandType: CommandType.StoredProcedure);
|
|
|
|
|
|
tecnExtensionState = parameters.Get<bool>("@TECNExtensionState");
|
|
|
|
return tecnExtensionState;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="userID"></param>
|
|
/// <param name="issueID"></param>
|
|
public void ReleaseLockOnDocument(int userID, int issueID)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@IssueID", issueID);
|
|
parameters.Add("@UserID", userID);
|
|
this.db.Execute("ECNReleaseLockOnECNDocuments", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="attachmentID"></param>
|
|
/// <returns></returns>
|
|
public string GetFileName(string attachmentID)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@AttachmentID", attachmentID);
|
|
var fileName = this.db.Query<string>("ECNGetFileName", parameters, commandType: CommandType.StoredProcedure).Single();
|
|
return fileName;
|
|
}
|
|
|
|
|
|
public void ReassignOriginatorECN(int ecnNumber, int newOriginatorID, string comments, int userID)
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@ECNNumber", ecnNumber);
|
|
parameters.Add("@NewOriginatorID", newOriginatorID);
|
|
parameters.Add("@Comments", comments);
|
|
parameters.Add("@UserID", userID);
|
|
|
|
this.db.Execute("ECNReassignOriginator", parameters, commandType: CommandType.StoredProcedure);
|
|
}
|
|
|
|
internal List<ProductFamilies> GetProductFamilies()
|
|
{
|
|
var r = this.db.Query<ProductFamilies>("ECNGetProductFamilies", null, commandType: CommandType.StoredProcedure).ToList();
|
|
return r;
|
|
}
|
|
}
|
|
}
|