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(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); WorkflowDMO wfDMO = new WorkflowDMO(); /// /// /// /// /// 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("@ECNNumber"); return ecn; } /// /// /// /// 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 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 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 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 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 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 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 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(); } } /// /// /// /// /// 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().SingleOrDefault(); var departments = multipleResultItems.Read().ToList(); if (ecnItem != null && departments != null) { if (departments.Count > 0) ecnItem.DepartmentIDs.AddRange(departments); } var modules = multipleResultItems.Read().ToList(); if (ecnItem != null && modules != null) { if (modules.Count > 0) ecnItem.ModuleIDs.AddRange(modules); } var areas = multipleResultItems.Read().ToList(); if (ecnItem != null && areas != null) { if (areas.Count > 0) ecnItem.AreaIDs.AddRange(areas); } var technologies = multipleResultItems.Read().ToList(); if (ecnItem != null && technologies != null) { if (technologies.Count > 0) ecnItem.TechnologyIDs.AddRange(technologies); } var acknowledgmentby = multipleResultItems.Read().ToList(); if (ecnItem != null && acknowledgmentby != null) { if (acknowledgmentby.Count > 0) ecnItem.AcknowledgementByIDs.AddRange(acknowledgmentby); } var trainingby = multipleResultItems.Read().ToList(); if (ecnItem != null && trainingby != null) { if (trainingby.Count > 0) ecnItem.TrainingByIDs.AddRange(trainingby); } var productfamilies = multipleResultItems.Read().ToList(); if (ecnItem != null && productfamilies != null) { if (productfamilies.Count > 0) ecnItem.ProductFamilyIDs.AddRange(productfamilies); } } isITAR = parameters.Get("@IsITAR"); return ecnItem; } /// /// /// /// /// 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("@Result"); return result; } /// /// /// /// /// /// /// 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().SingleOrDefault(); var departments = multipleResultItems.Read().ToList(); if (ecnItem != null && departments != null) { if (departments.Count > 0) ecnItem.DepartmentIDs.AddRange(departments); } var modules = multipleResultItems.Read().ToList(); if (ecnItem != null && modules != null) { if (modules.Count > 0) ecnItem.ModuleIDs.AddRange(modules); } var areas = multipleResultItems.Read().ToList(); if (ecnItem != null && areas != null) { if (areas.Count > 0) ecnItem.AreaIDs.AddRange(areas); } var technologies = multipleResultItems.Read().ToList(); if (ecnItem != null && technologies != null) { if (technologies.Count > 0) ecnItem.TechnologyIDs.AddRange(technologies); } var acknowledgmentby = multipleResultItems.Read().ToList(); if (ecnItem != null && acknowledgmentby != null) { if (acknowledgmentby.Count > 0) ecnItem.AcknowledgementByIDs.AddRange(acknowledgmentby); } var trainingby = multipleResultItems.Read().ToList(); if (ecnItem != null && trainingby != null) { if (trainingby.Count > 0) ecnItem.TrainingByIDs.AddRange(trainingby); } var productfamilies = multipleResultItems.Read().ToList(); if (ecnItem != null && productfamilies != null) { if (productfamilies.Count > 0) ecnItem.ProductFamilyIDs.AddRange(productfamilies); } } isITAR = parameters.Get("@IsITAR"); return ecnItem; } /// /// /// /// /// 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().SingleOrDefault(); var departments = multipleResultItems.Read().ToList(); //if (ecnItem != null && departments != null) //{ // if (departments.Count > 0) // ecnItem.AffectedDepartments.AddRange(departments); //} var modules = multipleResultItems.Read().ToList(); //if (ecnItem != null && modules != null) //{ // if (modules.Count > 0) // ecnItem.AffectedModules.AddRange(modules); //} var attachments = multipleResultItems.Read().ToList(); if (ecnItem != null && attachments != null) { if (attachments.Count > 0) ecnItem.Attachments.AddRange(attachments); } var approvalLog = multipleResultItems.Read().ToList(); if (ecnItem != null && approvalLog != null) { if (approvalLog.Count > 0) ecnItem.Approvalog.AddRange(approvalLog); } var affectedAreas = multipleResultItems.Read().ToList(); var affectedTechnologies = multipleResultItems.Read().ToList(); var acknowledgementBy = multipleResultItems.Read().ToList(); var trainingBy = multipleResultItems.Read().ToList(); var productfamilies = multipleResultItems.Read().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 ECN(); var parameters = new DynamicParameters(); parameters.Add("@ECNNumber", value: ecnNumber); ecnItem = this.db.Query("ECNGetECNData", parameters, commandType: CommandType.StoredProcedure).Single(); return ecnItem; } /// /// /// /// internal List GetDepartments() { var departments = this.db.Query("ECNGetDepartments", null, commandType: CommandType.StoredProcedure).ToList(); return departments; } /// /// /// /// internal List GetModules() { var modules = this.db.Query("ECNGetModules", null, commandType: CommandType.StoredProcedure).ToList(); return modules; } internal List GetCategories() { var r = this.db.Query("ECNGetCategories", null, commandType: CommandType.StoredProcedure).ToList(); return r; } /// /// /// /// internal List GetECNAreas() { StringBuilder query = new StringBuilder("SELECT AreaID , Area FROM ECNArea ORDER BY Area"); return this.db.Query(query.ToString()).ToList(); } /// /// /// /// /// //internal List 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(query.ToString(), parameters ).ToList(); //} internal List GetECNTechnologies() { var parameters = new DynamicParameters(); StringBuilder query = new StringBuilder("SELECT DISTINCT TechnologyID, Technology FROM ECNTechnology ORDER BY Technology"); return this.db.Query(query.ToString()).ToList(); } internal List GetECNAcknowledgementTrainingBy() { var parameters = new DynamicParameters(); StringBuilder query = new StringBuilder("SELECT DISTINCT AcknowledgementTrainingByID, AcknowledgementTrainingBy FROM ECNAcknowledgementTrainingBy ORDER BY AcknowledgementTrainingBy"); return this.db.Query(query.ToString()).ToList(); } /// /// /// /// /// public IEnumerable 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(sql.ToString(), new { ECNNumber = ecnNumber }).ToList(); return attachments; } public IEnumerable GetECNApprovalLogHistory(int ecnNumber) { var parameters = new DynamicParameters(); parameters.Add("@ECNNumber", ecnNumber); var approverList = this.db.Query("ECNGetECNApprovalLogHistory", parameters, commandType: CommandType.StoredProcedure).ToList(); return approverList; } /// /// /// /// public void DeleteECNAttachment(int attachmentID) { var parameters = new DynamicParameters(); parameters.Add("@AttachmentID", attachmentID); this.db.Execute("ECNDeleteAttachment", parameters, commandType: CommandType.StoredProcedure); } /// /// /// /// 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); } /// /// /// /// /// public List GetRejectionOrginatorEmailList(int ecnNumber) { var parameters = new DynamicParameters(); parameters.Add("@ECNNumber", ecnNumber); var emailList = this.db.Query("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; 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("@AppoverCount"); allowedITAR = parameters.Get("@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; 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("@AppoverCount"); //allowedITAR = parameters.Get("@AllowedITAR"); newECNNumber = parameters.Get("@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; 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("@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; 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("@AppoverCount"); return appoverCount; } /// /// /// /// /// 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); } /// /// /// /// /// 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); } /// /// Cancels the document before the approval loopmis closed /// /// 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); } /// /// /// /// /// 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); } /// /// /// /// /// /// /// /// 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); } /// /// /// /// /// /// /// /// /// /// 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("@LastStep"); lastApproverInCurrentStep = parameters.Get("@LastApproverInCurrentStep"); return lastApproverInCurrentStep; } /// /// /// /// public IEnumerable 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("ECNGetECN_TECNPendingApprovalsByOriginator", new { userID }, commandType: CommandType.StoredProcedure).ToList(); return data; } /// /// /// /// /// public IEnumerable 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("ECNGetExpiredTECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList(); return data; } /// /// /// /// /// public IEnumerable 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("ECNGetAllTECN", commandType: CommandType.StoredProcedure).ToList(); return data; } /// /// /// /// /// /// public IEnumerable 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("ECNGetTECNConvertedToECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList(); return data; } /// /// /// /// /// /// public IEnumerable 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("ECNGetExpiringTECNByOriginator", new { userID, maxDays }, commandType: CommandType.StoredProcedure).ToList(); return data; } /// /// /// /// public void CancelECN(int? ecnNumber) { var parameters = new DynamicParameters(); parameters.Add("@IssueID", ecnNumber); this.db.Execute("ECNCancelECN", parameters, commandType: CommandType.StoredProcedure); } /// /// /// /// 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); } /// /// /// /// 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("@TECNExtensionState"); return tecnExtensionState; } /// /// /// /// /// 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); } /// /// /// /// /// public string GetFileName(string attachmentID) { var parameters = new DynamicParameters(); parameters.Add("@AttachmentID", attachmentID); var fileName = this.db.Query("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 GetProductFamilies() { var r = this.db.Query("ECNGetProductFamilies", null, commandType: CommandType.StoredProcedure).ToList(); return r; } } }