2023-10-03 10:14:54 -07:00

1066 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;
}
/// <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;
}
}
}