Align .editorconfig files Move Controller logic to DMO classes GlobalVars.AppSettings = Models.AppSettings.GetFromConfigurationManager(); Question EditorConfig Project level editorconfig Format White Spaces AppSetting when EnvironmentVariable not set Corrective Actions Tests Schedule Actions Tests DMO Tests Controller Tests Get ready to use VSCode IDE
2056 lines
103 KiB
C#
2056 lines
103 KiB
C#
using Dapper;
|
|
|
|
using Fab2ApprovalSystem.DMO;
|
|
using Fab2ApprovalSystem.Misc;
|
|
using Fab2ApprovalSystem.Models;
|
|
//using ReportManagement;
|
|
using Fab2ApprovalSystem.PdfGenerator;
|
|
using Fab2ApprovalSystem.ViewModels;
|
|
|
|
using Kendo.Mvc.Extensions;
|
|
using Kendo.Mvc.UI;
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.IO;
|
|
//using Ionic.Zip;
|
|
using System.IO.Compression;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.Mvc;
|
|
|
|
namespace Fab2ApprovalSystem.Controllers;
|
|
|
|
[Authorize]
|
|
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
|
|
[SessionExpireFilter]
|
|
public class ECNController : PdfViewController {
|
|
private const string ECN_PREFIX = "ECN_";
|
|
private const string TECN_PREFIX = "TECN_";
|
|
private const string ETECN_PREFIX = "ETECN_";
|
|
|
|
ECN_DMO ecnDMO = new ECN_DMO();
|
|
WorkflowDMO wfDMO = new WorkflowDMO();
|
|
TrainingDMO trainingDMO = new TrainingDMO();
|
|
UserAccountDMO userDMO = new UserAccountDMO();
|
|
private readonly AppSettings _AppSettings;
|
|
|
|
public ECNController(AppSettings appSettings) {
|
|
_AppSettings = appSettings;
|
|
}
|
|
|
|
//
|
|
// GET: /ECN/
|
|
public ActionResult Index() {
|
|
return View();
|
|
}
|
|
|
|
//
|
|
// GET: /ECN/Details/5
|
|
public ActionResult Details(int id) {
|
|
return View();
|
|
}
|
|
|
|
//
|
|
// GET: /ECN/Create
|
|
public ActionResult Create() {
|
|
|
|
ECN ecn = new ECN();
|
|
try {
|
|
// TODO: Add insert logic here
|
|
|
|
ecn.OriginatorID = (int)Session[GlobalVars.SESSION_USERID];
|
|
ecnDMO.InsertECN(ecn);
|
|
return RedirectToAction("Edit", new { issueID = ecn.ECNNumber });
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecn.ECNNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n SubmitDocument - ECN\r\n" + ecn.ECNNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecn.ECNNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "SubmitDocument - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
//
|
|
|
|
//
|
|
// GET: /ECN/Edit/5
|
|
public ActionResult Edit(int issueID) {
|
|
int isITARCompliant = 1;
|
|
ECN ecn = new ECN();
|
|
//GlobalVars.DocumentType docType = GlobalVars.DocumentType.ECN;
|
|
try {
|
|
|
|
//ecn = ecnDMO.GetECN(issueID);
|
|
ecn = ecnDMO.GetECNForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
|
|
//if (ecn.IsTECN && ecn.IsEmergencyTECN)
|
|
// docType = GlobalVars.DocumentType.EECN;
|
|
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
return View("UnAuthorizedAccess");
|
|
} else {
|
|
|
|
//if (ecn.CloseDate != null)
|
|
//{
|
|
// return RedirectToAction("ReadOnly", new { issueID = issueID });
|
|
//}
|
|
if (ecn.Deleted) {
|
|
return RedirectToAction("ReadOnly", new { issueID = issueID });
|
|
}
|
|
if (ecn.CurrentStep >= 1) {
|
|
return RedirectToAction("EditApproval", new { issueID = issueID });
|
|
} else {
|
|
//ecn = ecnDMO.GetECN(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
|
|
if ((ecn.RecordLockIndicator && ecn.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID])) {
|
|
return RedirectToAction("ReadOnly", new { issueID = issueID });
|
|
} else {
|
|
ecn = ecnDMO.GetECN(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
ViewBag.Departments = ecnDMO.GetDepartments();
|
|
ViewBag.AffectedModules = ecnDMO.GetModules();
|
|
ViewBag.AffectedAreas = ecnDMO.GetECNAreas();
|
|
ViewBag.AffectedTechnologies = ecnDMO.GetECNTechnologies();
|
|
ViewBag.AcknowledgementTrainingByIDs = trainingDMO.GetTrainingGroups();
|
|
ViewBag.Categories = ecnDMO.GetCategories();
|
|
ViewBag.ProductFamilies = ecnDMO.GetProductFamilies();
|
|
return View(ecn);
|
|
}
|
|
}
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(
|
|
_AppSettings,
|
|
String.Format("{0}\r\nEdit ECN\r\n{1}\r\n{2}", @User?.Identity?.Name, ecn?.ECNNumber, e.InnerException),
|
|
System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = exceptionString });
|
|
return View("Error");
|
|
}
|
|
}
|
|
|
|
//
|
|
// POST: /ECN/Edit/5
|
|
[HttpPost]
|
|
public void Edit(ECN ecn) {
|
|
try {
|
|
// TODO: Add update logic here
|
|
|
|
ecnDMO.UpdateECN(ecn);
|
|
;
|
|
} catch {
|
|
//return View();
|
|
}
|
|
}
|
|
|
|
public ActionResult ReadOnly(int issueID) {
|
|
int isITARCompliant = 1;
|
|
ECN ecn = new ECN();
|
|
try {
|
|
|
|
ecn = ecnDMO.GetECNForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
bool trainingRequired = ecn.TrainingRequired;
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
return View("UnAuthorizedAccess");
|
|
} else {
|
|
GlobalVars.DocumentType docType = (ecn.ExpirationInProgress || ecn.ExpirationProcessed || ecn.CancellationInProgress || ecn.CancellationApproved) ? GlobalVars.DocumentType.TECNCancelledExpired : GlobalVars.DocumentType.ECN;
|
|
if (ecn.IsEmergencyTECN)
|
|
docType = GlobalVars.DocumentType.EECN;
|
|
|
|
List<ApproversListViewModel> userList = MiscDMO.GetPendingApproversListByDocument(issueID, ecn.CurrentStep, (int)docType);
|
|
ApproversListViewModel approver = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == (int)Session[GlobalVars.SESSION_USERID]; });
|
|
if (approver == null)
|
|
ViewBag.IsApprover = "false";
|
|
else
|
|
ViewBag.IsApprover = "true";
|
|
|
|
if ((int)Session[GlobalVars.SESSION_USERID] == ecn.OriginatorID)
|
|
ViewBag.IsOriginator = "true";
|
|
else
|
|
ViewBag.IsOriginator = "false";
|
|
int trainingId = trainingDMO.GetTrainingId(ecn.ECNNumber);
|
|
if (trainingId > 0) {
|
|
bool? trainingStatus = (trainingDMO.GetTraining(trainingId)).Status;
|
|
|
|
ViewBag.TrainingID = trainingId;
|
|
ViewBag.TrainingStatus = trainingStatus;
|
|
}
|
|
|
|
ViewBag.Departments = ecnDMO.GetDepartments();
|
|
ViewBag.AffectedModules = ecnDMO.GetModules();
|
|
ViewBag.AffectedAreas = ecnDMO.GetECNAreas();
|
|
ViewBag.AffectedTechnologies = ecnDMO.GetECNTechnologies();
|
|
ViewBag.AcknowledgementTrainingByIDs = trainingDMO.GetTrainingGroups();
|
|
ViewBag.Categories = ecnDMO.GetCategories();
|
|
ViewBag.ProductFamilies = ecnDMO.GetProductFamilies();
|
|
ViewBag.ECNNumber = ecn.ECNNumber;
|
|
|
|
return View(ecn);
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "IssueID=" + issueID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReadOnly ECN\r\n" + ecn.ECNNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
[OutputCache(Duration = 60, VaryByCustom = "host")]
|
|
public ActionResult ECNTrainingView(int issueID) {
|
|
int isITARCompliant = 1;
|
|
ECN ecn = new ECN();
|
|
try {
|
|
ecn = ecnDMO.GetECNForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
//bool trainingRequired = ecn.TrainingRequired;
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
return PartialView("UnAuthorizedAccess");
|
|
} else {
|
|
ViewBag.Departments = ecnDMO.GetDepartments();
|
|
ViewBag.AffectedModules = ecnDMO.GetModules();
|
|
ViewBag.AffectedAreas = ecnDMO.GetECNAreas();
|
|
ViewBag.AffectedTechnologies = ecnDMO.GetECNTechnologies();
|
|
ViewBag.AcknowledgementTrainingByIDs = ecnDMO.GetECNAcknowledgementTrainingBy();
|
|
ViewBag.Categories = ecnDMO.GetCategories();
|
|
ViewBag.ProductFamilies = ecnDMO.GetProductFamilies();
|
|
ViewBag.ECNNumber = ecn.ECNNumber;
|
|
|
|
return PartialView(ecn);
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "IssueID=" + issueID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReadOnly ECN\r\n" + ecn.ECNNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
public ActionResult Acknowledge(int issueID) {
|
|
int isITARCompliant = 1;
|
|
ECN ecn = new ECN();
|
|
try {
|
|
ecn = ecnDMO.GetECNForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
return View("UnAuthorizedAccess");
|
|
} else {
|
|
GlobalVars.DocumentType docType = (ecn.ExpirationInProgress || ecn.ExpirationProcessed || ecn.CancellationInProgress || ecn.CancellationApproved) ? GlobalVars.DocumentType.TECNCancelledExpired : GlobalVars.DocumentType.ECN;
|
|
if (ecn.IsEmergencyTECN)
|
|
docType = GlobalVars.DocumentType.EECN;
|
|
|
|
List<ApproversListViewModel> userList = MiscDMO.GetPendingApproversListByDocument(issueID, ecn.CurrentStep, (int)docType);
|
|
ApproversListViewModel approver = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == (int)Session[GlobalVars.SESSION_USERID]; });
|
|
if (approver == null)
|
|
ViewBag.IsApprover = "false";
|
|
else
|
|
ViewBag.IsApprover = "true";
|
|
|
|
if ((int)Session[GlobalVars.SESSION_USERID] == ecn.OriginatorID)
|
|
ViewBag.IsOriginator = "true";
|
|
else
|
|
ViewBag.IsOriginator = "false";
|
|
|
|
ViewBag.Departments = ecnDMO.GetDepartments();
|
|
ViewBag.AffectedModules = ecnDMO.GetModules();
|
|
ViewBag.AffectedAreas = ecnDMO.GetECNAreas();
|
|
ViewBag.AffectedTechnologies = ecnDMO.GetECNTechnologies();
|
|
ViewBag.AcknowledgementTrainingByIDs = ecnDMO.GetECNAcknowledgementTrainingBy();
|
|
ViewBag.Categories = ecnDMO.GetCategories();
|
|
ViewBag.ProductFamilies = ecnDMO.GetProductFamilies();
|
|
|
|
return View(ecn);
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "IssueID=" + issueID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReadOnly ECN\r\n" + ecn.ECNNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult EditApproval(int issueID) {
|
|
int isITARCompliant = 1;
|
|
ECN ecn = new ECN();
|
|
try {
|
|
ecn = ecnDMO.GetECNForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
return View("UnAuthorizedAccess");
|
|
} else {
|
|
if (ecn.Deleted) {
|
|
return RedirectToAction("ReadOnly", new { issueID = issueID });
|
|
}
|
|
|
|
GlobalVars.DocumentType docType = GlobalVars.DocumentType.ECN;
|
|
if (ecn.IsEmergencyTECN)
|
|
docType = GlobalVars.DocumentType.EECN;
|
|
if (ecn.ExpirationInProgress || ecn.ExpirationProcessed || ecn.CancellationInProgress || ecn.CancellationApproved)
|
|
docType = GlobalVars.DocumentType.TECNCancelledExpired;
|
|
|
|
List<ApproversListViewModel> userList = MiscDMO.GetPendingApproversListByDocument(issueID, ecn.CurrentStep, (int)docType);
|
|
ApproversListViewModel approver = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == (int)Session[GlobalVars.SESSION_USERID]; });
|
|
if (approver == null)
|
|
ViewBag.IsApprover = "false";
|
|
else
|
|
ViewBag.IsApprover = "true";
|
|
|
|
if ((int)Session[GlobalVars.SESSION_USERID] == ecn.OriginatorID)
|
|
ViewBag.IsOriginator = "true";
|
|
else
|
|
ViewBag.IsOriginator = "false";
|
|
|
|
//==============
|
|
|
|
//if ((ViewBag.IsApprover == "true" && ecn.CancellationInProgress)
|
|
// ||
|
|
// (ViewBag.IsApprover == "true" && ecn.ExpirationInProgress)
|
|
// ||
|
|
// (
|
|
// (ViewBag.IsApprover == "true" && ecn.TECNExtensionState && ecn.CurrentStep > 2)
|
|
// || (ViewBag.IsApprover == "true" && ecn.CurrentStep == 3 && ecn.ConvertedFromNumber != null)
|
|
// )
|
|
// ||
|
|
// (ViewBag.IsApprover == "true")
|
|
// ||
|
|
// (ecn.CurrentStep <= 2 && ecn.CloseDate == null && !ecn.ReSubmitted && ecn.ConvertedFromNumber == null && ecn.TECNExtensionState == false)
|
|
//)
|
|
int trainingId = trainingDMO.GetTrainingId(ecn.ECNNumber);
|
|
if (trainingId > 0) {
|
|
bool? trainingStatus = (trainingDMO.GetTraining(trainingId)).Status;
|
|
|
|
ViewBag.TrainingID = trainingId;
|
|
ViewBag.TrainingStatus = trainingStatus;
|
|
}
|
|
if (ViewBag.IsApprover == "true" || ViewBag.IsOriginator == "true") {
|
|
ecn = ecnDMO.GetECN(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
if (ecn.RecordLockIndicator && ecn.RecordLockedBy == (int)Session[GlobalVars.SESSION_USERID]) {
|
|
|
|
ViewBag.Departments = ecnDMO.GetDepartments();
|
|
ViewBag.AffectedModules = ecnDMO.GetModules();
|
|
ViewBag.AffectedAreas = ecnDMO.GetECNAreas();
|
|
ViewBag.AffectedTechnologies = ecnDMO.GetECNTechnologies();
|
|
ViewBag.AcknowledgementTrainingByIDs = trainingDMO.GetTrainingGroups();
|
|
ViewBag.Categories = ecnDMO.GetCategories();
|
|
ViewBag.ProductFamilies = ecnDMO.GetProductFamilies();
|
|
|
|
return View(ecn);
|
|
} else {
|
|
return RedirectToAction("ReadOnly", new { issueID = issueID });
|
|
}
|
|
} else {
|
|
return RedirectToAction("ReadOnly", new { issueID = issueID });
|
|
}
|
|
|
|
//if (ecn.CloseDate != null )
|
|
//{
|
|
// return RedirectToAction("ReadOnly", new { issueID = issueID });
|
|
//}
|
|
|
|
//if (
|
|
// (ecn.RecordLockIndicator && ecn.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID])
|
|
// || ((ViewBag.IsApprover == "false") && (ViewBag.IsOriginator == "false"))
|
|
// )
|
|
//{
|
|
// return RedirectToAction("ReadOnly", new { issueID = issueID });
|
|
//}
|
|
//else
|
|
//{
|
|
// ecn = ecnDMO.GetECN(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
// ViewBag.Departments = ecnDMO.GetDepartments();
|
|
// ViewBag.AffectedModules = ecnDMO.GetModules();
|
|
// ViewBag.AffectedAreas = ecnDMO.GetECNAreas();
|
|
// ViewBag.AffectedTechnologies = ecnDMO.GetECNTechnologies();
|
|
// ViewBag.AcknowledgementTrainingByIDs = ecnDMO.GetECNAcknowledgementTrainingBy();
|
|
|
|
// return View(ecn);
|
|
//}
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "IssueID=" + issueID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReadOnly ECN\r\n" + ecn.ECNNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult AttachSave(IEnumerable<HttpPostedFileBase> files, int ecnNumber) {
|
|
string returnString = "";
|
|
// The Name of the Upload component is "files"
|
|
if (files != null) {
|
|
int userId = (int)Session[GlobalVars.SESSION_USERID];
|
|
foreach (var file in files) {
|
|
returnString = ecnDMO.AttachSave(_AppSettings, ecnNumber, returnString, userId, file.FileName, file.InputStream);
|
|
}
|
|
}
|
|
return Content(returnString);
|
|
}
|
|
|
|
public ActionResult Attachment_Read([DataSourceRequest] DataSourceRequest request, int ecnNumber) {
|
|
return Json(ecnDMO.GetECNAttachments(ecnNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
public ActionResult ApprovalLogHistory_Read([DataSourceRequest] DataSourceRequest request, int ecnNumber) {
|
|
return Json(ecnDMO.GetECNApprovalLogHistory(ecnNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
//[AcceptVerbs(HttpVerbs.Post)]
|
|
|
|
[HttpPost]
|
|
public void DeleteAttachment(int attachmentID, string fileName, int ecnNumber) {
|
|
try {
|
|
if (ModelState.IsValid) {
|
|
ecnDMO.DeleteECNAttachment(attachmentID);
|
|
//var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName);
|
|
//var physicalPath = Path.Combine(@"C:\Websites\Fab2ApprovalAttachments\ECN\" + ecnNumber.ToString(), fileName);
|
|
var physicalPath = Path.Combine(_AppSettings.AttachmentFolder + @"ECN\" + ecnNumber.ToString(), fileName);
|
|
|
|
FileInfo f = new FileInfo(physicalPath);
|
|
|
|
if (f.Exists)
|
|
f.Delete();
|
|
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "AttachmentID=" + attachmentID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n DeleteAttachment ECN\r\n" + ecnNumber.ToString() + detailedException.ToString(), System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = 999, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "Delete Attachment " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult Attachment_Destroy([DataSourceRequest] DataSourceRequest request, Attachment attachment) {
|
|
try {
|
|
if (attachment != null && ModelState.IsValid) {
|
|
ecnDMO.DeleteECNAttachment(attachment.AttachmentID);
|
|
|
|
}
|
|
} catch (Exception e) {
|
|
//string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Delete =" + attachmentID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
//Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n AttachmentID ECN\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
|
|
//EventLogDMO.Add(new WinEventLog() { UserID = @User.Identity.Name, OperationType = "Error", Comments = exceptionString });
|
|
//throw new Exception(e.Message);
|
|
}
|
|
|
|
return Json(new[] { attachment }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
///
|
|
/// </summary>
|
|
public ActionResult SubmitDocument(int ecnNumber, int documentType, string ecnTypeString) {
|
|
int isITARCompliant = 1;
|
|
try {
|
|
int appoverCount = ecnDMO.SubmitDocument(ecnNumber, (int)Session[GlobalVars.SESSION_USERID], documentType, out isITARCompliant);
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
// the content gets evaluated on the client side
|
|
return Content("ITAR");
|
|
} else {
|
|
if (appoverCount > 0) {
|
|
NotifyApprovers(ecnNumber, (byte)GlobalVars.WorkFLowStepNumber.Step1, documentType, ecnTypeString);
|
|
} else {
|
|
// automaically approve current step (Step 1) beacuase there are no approvers in step 1 and move to the next step of approval
|
|
Approve(ecnNumber, (byte)GlobalVars.WorkFLowStepNumber.Step1, "", documentType, ecnTypeString); // this is the Submit Level Approval
|
|
|
|
}
|
|
|
|
if (Request.IsAjaxRequest()) {
|
|
// the content gets evaluated on the client side
|
|
return Content("Redirect");
|
|
} else
|
|
return Content("Invalid");
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n SubmitDocument\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "SubmitDocument - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult SubmitTECNExtension(int ecnNumber, int documentType, string ecnTypeString, DateTime extensionDate) {
|
|
try {
|
|
int appoverCount = ecnDMO.SubmitTECNExtensionDocument(ecnNumber, (int)Session[GlobalVars.SESSION_USERID], documentType, extensionDate);
|
|
|
|
// Update the TECN Extension History
|
|
try {
|
|
//ecnDMO.TECNExtensionLog(ecnNumber, extensionDate);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n TECNExtensionLog\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "TECNExtensionLog - " + exceptionString });
|
|
|
|
}
|
|
|
|
if (appoverCount > 0)
|
|
NotifyApprovers(ecnNumber, (byte)GlobalVars.WorkFLowStepNumber.Step1, documentType, ecnTypeString);
|
|
else {
|
|
// automaically approve current step (Step 1) beacuase there are no approvers in step 1 and move to the next step of approval
|
|
Approve(ecnNumber, (byte)GlobalVars.WorkFLowStepNumber.Step1, "", documentType, ecnTypeString); // this is the Submit Level Approval
|
|
|
|
}
|
|
|
|
if (Request.IsAjaxRequest()) {
|
|
return Content("Redirect");
|
|
} else
|
|
return Content("Invalid");
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n SubmitDocument\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "SubmitDocument - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
///
|
|
/// </summary>
|
|
public ActionResult SubmitDocument_EmergencyTECN(int ecnNumber, int documentType) {
|
|
int isITARCompliant = 0;
|
|
try {
|
|
ecnDMO.SubmitDocument(ecnNumber, (int)Session[GlobalVars.SESSION_USERID], documentType, out isITARCompliant);
|
|
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
return View("ITAR");
|
|
} else {
|
|
if (Request.IsAjaxRequest()) {
|
|
return Content("Redirect");
|
|
} else
|
|
return Content("Invalid");
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n SubmitDocument ETECN\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "SubmitDocument-ETECN - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public void Approve(int ecnNumber, byte currentStep, string comments, int documentType, string ecnTypeString) {
|
|
try {
|
|
bool lastStep = false;
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
bool lastApprover = wfDMO.Approve(_AppSettings, ecnNumber, currentStep, comments, out lastStep, (int)Session[GlobalVars.SESSION_USERID], documentType, ecn.WorkFlowNumber);
|
|
|
|
while (lastApprover && !lastStep) {
|
|
|
|
currentStep++;
|
|
//Changed this next line of code to not pass the currently approving user. This prevents a user from approving multiple steps at once. An undesired function.
|
|
lastApprover = wfDMO.Approve(_AppSettings, ecnNumber, currentStep, comments, out lastStep, 11111111, documentType, ecn.WorkFlowNumber);
|
|
NotifyApprovers(ecnNumber, currentStep, documentType, ecnTypeString);
|
|
|
|
}
|
|
|
|
//#if(!DEBUG)
|
|
// only execute at the last step of the Approval loop
|
|
if (lastApprover && lastStep) {
|
|
NotifySubmitter(ecn.ECNNumber, ecnTypeString);
|
|
NotifyAdmin(ecn.ECNNumber, ecnTypeString);
|
|
if (ecn.TrainingRequired) {
|
|
TrainingController NewTraining = new TrainingController();
|
|
NewTraining.Create(ecnNumber);
|
|
}
|
|
|
|
if (ecn.IsECN && ecn.ConvertedFromNumber != null) {
|
|
// Set the cancellation date for the TECN
|
|
ecnDMO.CancelECN(ecn.ConvertedFromNumber);
|
|
|
|
//copy the TECN to the new ECN folder
|
|
GenerateECNPdfDifferentLocation((int)ecn.ConvertedFromNumber, ecnNumber);
|
|
|
|
}
|
|
// Combine the TECN and the ECN in a zipped file for DCC task creation
|
|
PostApproval(ecnNumber, documentType);
|
|
|
|
if (ecn.IsECN && ecn.ConvertedFromNumber != null) {
|
|
ApprovalLogDMO.Add(new ApprovalLog {
|
|
IssueID = (int)ecn.ConvertedFromNumber,
|
|
DocumentTypeID = documentType,
|
|
OperationType = "Change to " + ecnTypeString + ecnNumber.ToString() + " Approved",
|
|
UserID = (int)Session[GlobalVars.SESSION_USERID],
|
|
OperationLog = "Approval of the Document conversion"
|
|
});
|
|
|
|
List<string> attachments = new List<string>();
|
|
attachments.Add(_AppSettings.AttachmentFolder + "ECN\\" + ecnNumber + "\\ECNForm_" + ecnNumber + ".pdf");
|
|
attachments.Add(_AppSettings.AttachmentFolder + "ECN\\" + ecnNumber + "\\ECNForm_" + ecn.ConvertedFromNumber + ".pdf");
|
|
|
|
NotifyTECNAutoCancellation(ecnNumber, (int)ecn.ConvertedFromNumber, attachments);
|
|
}
|
|
|
|
}
|
|
//#endif
|
|
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " Step:" + currentStep + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n Approve\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "Approve - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
void PostApproval(int ecnNumber, int documentType) {
|
|
try {
|
|
ECNPdf ecn = new ECNPdf();
|
|
|
|
// Generate the PDF version of the ECN form and Approval log
|
|
if (GenerateECNPdf(ecnNumber, out ecn)) {
|
|
// Zip up all the attached files along with the Pdf version of the ECN form and the Approval Log
|
|
if (CreateZip(ecn)) {
|
|
//Documentum.Process(_AppSettings.AttachmentFolder + "\\ECNZipped\\" + ecnNumber.ToString() + ".zip");
|
|
|
|
} else {
|
|
// TODO How to recreate and send the files to documentum
|
|
throw new Exception("Problems while generating the ZIP file. Please contact the system Administrator");
|
|
}
|
|
} else {
|
|
throw new Exception("Problems while generating the PDF file. Please contact the system Administrator");
|
|
}
|
|
|
|
// Notify a list of people when the E-TECN is approved
|
|
if (documentType == (int)GlobalVars.DocumentType.EECN) {
|
|
NotifyEmergencyTECNApproval(ecnNumber, ecn.ExpirationDate);
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ECN - PostApproval \r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "PostApprovalForECNsDerivedFromTECN - " + exceptionString });
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
//void PostApprovalForECNsDerivedFromTECN(int ecnNumber, int tecnNumber)
|
|
//{
|
|
// try
|
|
// {
|
|
// // Generate the PDF version of the ECN form and Approval log
|
|
// string sourceFile = _AppSettings.AttachmentFolder + "ECN\\" + tecnNumber + "\\ECNForm_" + tecnNumber + ".pdf";
|
|
// string destFile = _AppSettings.AttachmentFolder + "ECN\\" + ecnNumber + "\\ECNForm_" + tecnNumber + ".pdf";
|
|
|
|
// GenerateECNPdfDifferentLocation(ecnNumber, tecnNumber);
|
|
|
|
// }
|
|
|
|
// catch(Exception e)
|
|
// {
|
|
// string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
// Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ECN - PostApprovalForECNsDerivedFromTECN \r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
// EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "PostApprovalForECNsDerivedFromTECN - " + exceptionString });
|
|
// throw e;
|
|
// }
|
|
|
|
//}
|
|
|
|
public void NotifySubmitter(int ecnNumber, string ecnTypeString) {
|
|
try {
|
|
string emailSentList = "";
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
//List<string> emailIst = ldDMO.GetApproverEmailList(@issueID, currentStep).Distinct().ToList();
|
|
//List<string> emailIst = MiscDMO.GetApproverEmailListByDocument(@ecnNumber, currentStep, documentType).Distinct().ToList();
|
|
int ecnCreatedById = ecn.OriginatorID;
|
|
string ecnCreatedByEmail = MiscDMO.GetEmail(ecnCreatedById);
|
|
|
|
string emailTemplate = "ECNApproved.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = string.Empty;
|
|
string senderName = ecnTypeString;
|
|
|
|
subject = ecnTypeString + " Approval notice for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
userEmail = ecnCreatedByEmail;
|
|
//#if(DEBUG)
|
|
//string SenderEmail = "MesaFabApproval@infineon.com";
|
|
//userEmail = "jonathan.ouellette@infineon.com";
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
//en.SendNotificationEmail(emailTemplate, SenderEmail, senderName, userEmail, null, subject, emailparams);
|
|
emailSentList = ecnCreatedByEmail;
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Approvers for Step " + ":" + emailSentList });
|
|
} catch { }
|
|
|
|
//EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
//string[] emailparams = new string[4];
|
|
//emailparams[0] = issueID.ToString();
|
|
//emailparams[1] = issueID.ToString();
|
|
//emailparams[2] = GlobalVars.hostURL;
|
|
//emailparams[3] =Session[GlobalVars.SESSION_USERNAME].ToString();
|
|
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, emailparams);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ECN - Notify Approvers \r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "Approve - " + exceptionString });
|
|
throw e;
|
|
}
|
|
}
|
|
public void NotifyAdmin(int ecnNumber, string ecnTypeString) {
|
|
try {
|
|
string emailSentList = "";
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
//List<string> emailIst = ldDMO.GetApproverEmailList(@issueID, currentStep).Distinct().ToList();
|
|
//List<string> emailIst = MiscDMO.GetApproverEmailListByDocument(@ecnNumber, currentStep, documentType).Distinct().ToList();
|
|
IEnumerable<int> ecnAdminIDs = MiscDMO.GetUserIDsBySubRoleID(383);
|
|
foreach (int id in ecnAdminIDs) {
|
|
string ecnCreatedByEmail = MiscDMO.GetEmail(id);
|
|
|
|
string emailTemplate = "ECNApproved.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = string.Empty;
|
|
string senderName = ecnTypeString;
|
|
|
|
subject = ecnTypeString + " Approval notice for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
userEmail = ecnCreatedByEmail;
|
|
//#if(DEBUG)
|
|
//string SenderEmail = "MesaFabApproval@infineon.com";
|
|
//userEmail = "jonathan.ouellette@infineon.com";
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
//en.SendNotificationEmail(emailTemplate, SenderEmail, senderName, userEmail, null, subject, emailparams);
|
|
emailSentList = ecnCreatedByEmail;
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Approvers for Step " + ":" + emailSentList });
|
|
} catch { }
|
|
|
|
//EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
//string[] emailparams = new string[4];
|
|
//emailparams[0] = issueID.ToString();
|
|
//emailparams[1] = issueID.ToString();
|
|
//emailparams[2] = GlobalVars.hostURL;
|
|
//emailparams[3] =Session[GlobalVars.SESSION_USERNAME].ToString();
|
|
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, emailparams);
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ECN - Notify Approvers \r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "Approve - " + exceptionString });
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
public void NotifyApprovers(int ecnNumber, byte currentStep, int documentType, string ecnTypeString) {
|
|
try {
|
|
string emailSentList = "";
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
//List<string> emailIst = ldDMO.GetApproverEmailList(@issueID, currentStep).Distinct().ToList();
|
|
List<string> emailIst = MiscDMO.GetApproverEmailListByDocument(@ecnNumber, currentStep, documentType).Distinct().ToList();
|
|
|
|
string emailTemplate = "ECNAssigned.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = string.Empty;
|
|
string senderName = ecnTypeString;
|
|
|
|
subject = ecnTypeString + " Assignment notice for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
foreach (string email in emailIst) {
|
|
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
//string SenderEmail = "MesaFabApproval@infineon.com";
|
|
//userEmail = "jonathan.ouellette@infineon.com";
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
//en.SendNotificationEmail(emailTemplate, SenderEmail, senderName, userEmail, null, subject, emailparams);
|
|
emailSentList += email + ",";
|
|
}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Approvers for Step " + currentStep.ToString() + ":" + emailSentList });
|
|
} catch { }
|
|
|
|
//EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
//string[] emailparams = new string[4];
|
|
//emailparams[0] = issueID.ToString();
|
|
//emailparams[1] = issueID.ToString();
|
|
//emailparams[2] = GlobalVars.hostURL;
|
|
//emailparams[3] =Session[GlobalVars.SESSION_USERNAME].ToString();
|
|
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, emailparams);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " Step:" + currentStep + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ECN - Notify Approvers \r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "Approve - " + exceptionString });
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get a list of Approvers and the status
|
|
/// </summary>
|
|
public ActionResult GetApproversList([DataSourceRequest] DataSourceRequest request, int issueID, byte step, bool isTECN, bool isEmergrncyTECN) {
|
|
int isITARCompliant = 0;
|
|
ECN ecn = new ECN();
|
|
ecn = ecnDMO.GetECNForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
|
|
GlobalVars.DocumentType docType;
|
|
// fix related to ticket #35336
|
|
if (ecn.CancellationInProgress || ecn.CancellationApproved || ecn.ExpirationInProgress || ecn.ExpirationProcessed)
|
|
docType = GlobalVars.DocumentType.TECNCancelledExpired;
|
|
else
|
|
docType = isEmergrncyTECN ? GlobalVars.DocumentType.EECN : GlobalVars.DocumentType.ECN;
|
|
|
|
return Json(MiscDMO.GetApproversListByDocument(issueID, step, (int)docType).ToDataSourceResult(request));
|
|
}
|
|
|
|
public void NotifyRejectionToOrginator(int issueID, string ecnTypeString, string comments) {
|
|
List<string> emailIst = ecnDMO.GetRejectionOrginatorEmailList(@issueID).Distinct().ToList();
|
|
ECN ecn = ecnDMO.GetECN(issueID);
|
|
|
|
string emailTemplate = "ECNReject.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = ecnTypeString + " Rejection";
|
|
string senderName = ecnTypeString;
|
|
|
|
foreach (string email in emailIst) {
|
|
subject = ecnTypeString + " Rejection notice for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[6];
|
|
emailparams[0] = issueID.ToString();
|
|
emailparams[1] = issueID.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = Session[GlobalVars.SESSION_USERNAME].ToString();
|
|
emailparams[4] = ecnTypeString;
|
|
emailparams[5] = comments;
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
// userEmail = GlobalVars.SENDER_EMAIL;
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Rejection: " + userEmail });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyTECNExtensionRejectionToOrginator(int issueID, string ecnTypeString) {
|
|
List<string> emailIst = ecnDMO.GetRejectionOrginatorEmailList(@issueID).Distinct().ToList();
|
|
ECN ecn = ecnDMO.GetECN(issueID);
|
|
|
|
string emailTemplate = "TECNExtensionReject.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = ecnTypeString + " Rejection";
|
|
string senderName = ecnTypeString;
|
|
|
|
foreach (string email in emailIst) {
|
|
subject = ecnTypeString + " Extension Rejection notice for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[5];
|
|
emailparams[0] = issueID.ToString();
|
|
emailparams[1] = issueID.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = Session[GlobalVars.SESSION_USERNAME].ToString();
|
|
emailparams[4] = ecnTypeString;
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
// userEmail = GlobalVars.SENDER_EMAIL;
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Rejection: " + userEmail });
|
|
} catch { }
|
|
}
|
|
|
|
public void Reject(int ecnNumber, byte currentStep, string comments, int docType, string ecnTypeString) {
|
|
try {
|
|
// TODO
|
|
// Check Rejection is for the TECN Extension
|
|
|
|
int isITARCompliant = 0;
|
|
ECN ecn = new ECN();
|
|
ecn = ecnDMO.GetECNForRead(ecnNumber, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
|
|
if (Session[GlobalVars.SESSION_USERID] != null) {
|
|
if (ecn.TECNExtensionState) {
|
|
wfDMO.RejectTECNExtension(ecnNumber, currentStep, comments, (int)Session[GlobalVars.SESSION_USERID], docType);
|
|
NotifyTECNExtensionRejectionToOrginator(ecnNumber, ecnTypeString);
|
|
} else {
|
|
if (ecn.IsECN && ecn.ConvertedFromNumber != null) {
|
|
ecnDMO.ECNResetTECNAtRejection(ecnNumber, (int)Session[GlobalVars.SESSION_USERID], docType);
|
|
}
|
|
|
|
wfDMO.Reject(ecnNumber, currentStep, comments, (int)Session[GlobalVars.SESSION_USERID], docType);
|
|
NotifyRejectionToOrginator(ecnNumber, ecnTypeString, comments);
|
|
}
|
|
} else {
|
|
Response.Redirect("~/Account/Login");
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " Step:" + currentStep + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n Reject\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "Reject - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
public void RecallDocument(int ecnNumber, byte currentStep, string comments, int docType, string ecnTypeString) {
|
|
try {
|
|
// TODO
|
|
// Check Rejection is for the TECN Extension
|
|
|
|
int isITARCompliant = 0;
|
|
ECN ecn = new ECN();
|
|
ecn = ecnDMO.GetECNForRead(ecnNumber, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
|
|
|
|
if (Session[GlobalVars.SESSION_USERID] != null) {
|
|
NotifyApproversForRecall(ecnNumber, currentStep, docType, ecnTypeString, comments);
|
|
wfDMO.Recall(ecnNumber, currentStep, comments, (int)Session[GlobalVars.SESSION_USERID], docType);
|
|
|
|
//NotifyRejectionToOrginator(ecnNumber, ecnTypeString, comments);
|
|
} else {
|
|
Response.Redirect("~/Account/Login");
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " Step:" + currentStep + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n Reject\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "Reject - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public void ReAssignApproverByAdmin(int issueID, int reAssignApproverFrom, int reAssignApproverTo, byte step, int docType, string ecnTypeString) {
|
|
var email = "";
|
|
try {
|
|
|
|
email = wfDMO.ReAssignApproval(issueID, reAssignApproverFrom, reAssignApproverTo, step, docType);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + " Step:" + step + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReAssignApproval\r\n" + issueID.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "ReAssignApproval - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
|
|
ECN ecn = ecnDMO.GetECN(issueID);
|
|
string emailTemplate = "ECNReAssigned.txt";
|
|
string userEmail = string.Empty;
|
|
string subject;
|
|
string senderName = ecnTypeString;
|
|
|
|
subject = ecnTypeString + " Re-Assignment" + " - ECN #" + ecn.ECNNumber + ", - " + ecn.Title;
|
|
;
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = issueID.ToString();
|
|
emailparams[1] = issueID.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
// userEmail = "rkotian1@infineon.com";
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "ReAssign Approver: " + email });
|
|
} catch { }
|
|
}
|
|
|
|
[HttpPost]
|
|
public void ReAssignOriginatorByAdmin(int ecnNumber, string comments, int newOriginatorId) {
|
|
if (Session[GlobalVars.IS_ADMIN] == null)
|
|
throw new Exception("Permission denied");
|
|
|
|
try {
|
|
ecnDMO.ReassignOriginatorECN(ecnNumber, newOriginatorId, comments, (int)Session[GlobalVars.SESSION_USERID]);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim();
|
|
if (exceptionString.Length > 450)
|
|
exceptionString = exceptionString.Substring(0, 450);
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReAssignOriginatorByAdmin\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "ReAssignOriginatorByAdmin - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public void ReAssignApproval(int issueID, int userIDs, byte step, int docType, string ecnTypeString) {
|
|
var email = "";
|
|
try {
|
|
email = wfDMO.ReAssignApproval(issueID, (int)Session[GlobalVars.SESSION_USERID], userIDs, step, docType);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + " Step:" + step + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReAssignApproval\r\n" + issueID.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Error", Comments = "ReAssignApproval - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
|
|
ECN ecn = ecnDMO.GetECN(issueID);
|
|
string emailTemplate = "ECNReAssigned.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = ecnTypeString + " Re-Assignment";
|
|
string senderName = ecnTypeString;
|
|
|
|
subject = ecnTypeString + " Re-Assignment" + " - Email would be sent to " + email + " for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
;
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = issueID.ToString();
|
|
emailparams[1] = issueID.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
// userEmail = GlobalVars.SENDER_EMAIL;
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "ReAssign Approver: " + email });
|
|
} catch { }
|
|
}
|
|
|
|
#region
|
|
#endregion
|
|
|
|
public JsonResult GetAllUsersList() {
|
|
//var userList = ldDMO.GetApprovedApproversList(issueID, currentStep);
|
|
//return Json(userList, JsonRequestBehavior.AllowGet);
|
|
|
|
UserAccountDMO userDMO = new UserAccountDMO();
|
|
IEnumerable<LoginModel> userlist = userDMO.GetAllActiveUsers();
|
|
return Json(userlist, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
public void AddAdditionalApproval(int issueID, byte step, string userIDs, int docType, string ecnTypeString) {
|
|
string emailSentList = "";
|
|
var emailArray = "";
|
|
try {
|
|
emailArray = wfDMO.AddAdditionalApproval(issueID, userIDs, step, docType);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + " Step:" + step + " " + " Userid:" + userIDs + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n AddAdditionalApproval\r\n" + issueID.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "AddAdditionalApproval - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
ECN ecn = ecnDMO.GetECN(issueID);
|
|
|
|
string emailTemplate = "ECNAssigned.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = ecnTypeString + " Assignment";
|
|
string senderName = ecnTypeString;
|
|
|
|
string[] emailIst = emailArray.Split(new char[] { '~' });
|
|
foreach (string email in emailIst) {
|
|
if (email.Length > 0) {
|
|
//subject = "Lot Disposition Assignment" + " - Email would be sent to " + email;
|
|
subject = ecnTypeString + "Assignment notice for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = issueID.ToString();
|
|
emailparams[1] = issueID.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
// userEmail = "rkotian1@infineon.com";
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
emailSentList += email + ",";
|
|
|
|
}
|
|
|
|
}
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Additonal Approver: " + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public bool GenerateECNPdf(int ecnNumber, out ECNPdf ecn) {
|
|
//DateTime? expDt;
|
|
try {
|
|
|
|
string outputFileName = "";
|
|
|
|
ecn = ecnDMO.GetECNPdf(ecnNumber);
|
|
//expDate = ecn.ExpirationDate;
|
|
//extensionDate = ecn.ExtensionDate;
|
|
|
|
outputFileName = ecnNumber.ToString() + ".pdf";
|
|
|
|
string ecnFolderPath = _AppSettings.AttachmentFolder + "ECN\\" + ecnNumber.ToString();
|
|
//string ecnFolderPath = @"C:\Users\Ouellette\Desktop";
|
|
DirectoryInfo di = new DirectoryInfo(ecnFolderPath);
|
|
// create the folder for the ECN if it does not exist
|
|
if (!di.Exists)
|
|
di.Create();
|
|
|
|
// To render a PDF instead of an HTML, all we need to do is call ViewPdf instead of View. This
|
|
// requires the controller to be inherited from MyController instead of MVC's Controller.
|
|
SavePdf(ecnFolderPath + "\\ECNForm_" + outputFileName, "ECNPdf", ecn);
|
|
SavePdf(ecnFolderPath + "\\ECNApprovalLog_" + outputFileName, "ECNApprovalPdf", ecn);
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Generate PDF", Comments = ex.Message });
|
|
ecn = null;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public bool GenerateECNPdfDifferentLocation(int ecnNumber, int folderName) {
|
|
ECNPdf ecn = new ECNPdf();
|
|
try {
|
|
string outputFileName = "";
|
|
|
|
ecn = ecnDMO.GetECNPdf(ecnNumber);
|
|
//expDate = ecn.ExpirationDate;
|
|
//extensionDate = ecn.ExtensionDate;
|
|
|
|
outputFileName = ecnNumber.ToString() + ".pdf";
|
|
|
|
string ecnFolderPath = _AppSettings.AttachmentFolder + "ECN\\" + folderName.ToString();
|
|
|
|
DirectoryInfo di = new DirectoryInfo(ecnFolderPath);
|
|
// create the folder for the ECN if it does not exist
|
|
if (!di.Exists)
|
|
di.Create();
|
|
|
|
// To render a PDF instead of an HTML, all we need to do is call ViewPdf instead of View. This
|
|
// requires the controller to be inherited from MyController instead of MVC's Controller.
|
|
SavePdf(ecnFolderPath + "\\ECNForm_" + outputFileName, "ECNPdf", ecn);
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Generate PDF", Comments = ex.Message });
|
|
ecn = null;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public ActionResult PrintECNPdf(int ecnNumber) {
|
|
ECNPdf ecn;
|
|
try {
|
|
//string outputFileName = "";
|
|
|
|
ecn = ecnDMO.GetECNPdf(ecnNumber);
|
|
// To render a PDF instead of an HTML, all we need to do is call ViewPdf instead of View. This
|
|
// requires the controller to be inherited from MyController instead of MVC's Controller.
|
|
return this.ViewPdf("", "ECNPdf", ecn);
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Print PDF", Comments = ex.Message });
|
|
ecn = null;
|
|
return Content("");
|
|
}
|
|
|
|
//return true;
|
|
}
|
|
|
|
public void NotifyEmergencyTECNApproval(int ecnNumber, DateTime? expDate) {
|
|
string ecnFolderPath = _AppSettings.AttachmentFolder + "E-TECNZipped\\" + ETECN_PREFIX + ecnNumber.ToString() + ".zip";
|
|
|
|
string emailSentList = "";
|
|
|
|
List<string> emailIst = MiscDMO.GetEmergencyTECNApprovalNotifyList(ecnNumber).Distinct().ToList();
|
|
|
|
string emailTemplate = "ETECNApproved.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = "E-TECN Approved";
|
|
string senderName = "E-TECN";
|
|
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
subject = "E-TECN Approved notice for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[5];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = "E-TECN";
|
|
emailparams[4] = expDate.ToString();
|
|
|
|
//#if(DEBUG)
|
|
// userEmail = "rkotian1@infineon.com";
|
|
//#endif
|
|
|
|
if (IsITAR(ecn))
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, emailparams);
|
|
else
|
|
en.SendNotificationEmailWithAttachment(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, ecnFolderPath, emailparams);
|
|
|
|
//emailSentList += email + ",";
|
|
emailSentList = String.Join(", ", emailIst.Distinct().ToArray());
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "E-TECN", OperationType = "Email", Comments = "Approvers for Step 1:" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyApproversForCancellation(int ecnNumber, byte currentStep, int documentType, string ecnTypeString) {
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
string emailSentList = "";
|
|
|
|
//List<string> emailIst = ldDMO.GetApproverEmailList(@issueID, currentStep).Distinct().ToList();
|
|
List<string> emailIst = MiscDMO.GetApproverEmailListByDocument(@ecnNumber, currentStep, documentType).Distinct().ToList();
|
|
|
|
string emailTemplate = "TECNCancellationApproval.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = ecnTypeString + " Cancellation Approval Required - " + ecnNumber + " for " + ecn.Title + ", Cancellation initiated on :" + ecn.CancellationDate;
|
|
string senderName = ecnTypeString;
|
|
|
|
foreach (string email in emailIst) {
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
// userEmail = "rkotian1@infineon.com";
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
emailSentList += email + ",";
|
|
}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Approvers for Step " + currentStep.ToString() + ":" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyApproversForRecall(int ecnNumber, byte currentStep, int documentType, string ecnTypeString, string recallComments) {
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
string emailSentList = "";
|
|
|
|
//List<string> emailIst = ldDMO.GetApproverEmailList(@issueID, currentStep).Distinct().ToList();
|
|
List<string> emailIst = MiscDMO.GetApproverEmailListByDocument(@ecnNumber, currentStep, documentType).Distinct().ToList();
|
|
emailIst.Add("Jeanne.McIntyre@infineon.com");
|
|
emailIst.Add("Jonathan.Ouellette@infineon.com");
|
|
string emailTemplate = "ECNRecallApproval.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = ecnTypeString + " Recalled - " + ecnNumber + " for " + ecn.Title + ", Recall initiated on :" + DateTime.Now.ToString();
|
|
string senderName = ecnTypeString;
|
|
|
|
foreach (string email in emailIst) {
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[5];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
emailparams[4] = recallComments;
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
// userEmail = "rkotian1@infineon.com";
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
emailSentList += email + ",";
|
|
}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Approvers for Step " + currentStep.ToString() + ":" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyApproversForExpiration(int ecnNumber, byte currentStep, int documentType, string ecnTypeString) {
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
string emailSentList = "";
|
|
|
|
//List<string> emailIst = ldDMO.GetApproverEmailList(@issueID, currentStep).Distinct().ToList();
|
|
List<string> emailIst = MiscDMO.GetApproverEmailListByDocument(@ecnNumber, currentStep, documentType).Distinct().ToList();
|
|
|
|
string emailTemplate = "TECNExpirationApproval.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = " TECN Expiration Approval Reqquired - " + ecnTypeString + "# " + ecnNumber + " for " + ecn.Title + ", Expired:" + ecn.ExpirationDate;
|
|
string senderName = ecnTypeString;
|
|
|
|
foreach (string email in emailIst) {
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = ecnTypeString;
|
|
userEmail = email;
|
|
#if (DEBUG)
|
|
userEmail = GlobalVars.SENDER_EMAIL;
|
|
#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
emailSentList += email + ",";
|
|
}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Approvers for Step " + currentStep.ToString() + ":" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyTECNCancellation(int ecnNumber, string ecnFolderPath) {
|
|
//string ecnFolderPath = _AppSettings.AttachmentFolder + "TECNCancelledZipped\\" + TECN_PREFIX + ecnNumber.ToString() + ".zip";
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
string emailSentList = "";
|
|
|
|
List<string> emailIst = MiscDMO.GetTECNCancelledApprovalNotifyList(ecnNumber).Distinct().ToList();
|
|
List<int> notificationUserList = ecnDMO.GetTECNNotificationUsers().ToList();
|
|
foreach (int userId in notificationUserList) {
|
|
string email = userDMO.GetUserEmailByID(userId);
|
|
if (email != null && !emailIst.Contains(email))
|
|
emailIst.Add(email);
|
|
}
|
|
|
|
string emailTemplate = "TECNCancelled.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = string.Empty;
|
|
if (ecn.CancellationApprovalDate == null) {
|
|
subject = "TECN Cancellation Initiated Notice - " + ecnNumber + " for " + ecn.Title + ", Cancellation Initiated on:" + DateTime.Now;
|
|
} else {
|
|
subject = "TECN Cancellation Approved Notice - " + ecnNumber + " for " + ecn.Title + ", Cancelled:" + ecn.CancellationApprovalDate;
|
|
}
|
|
string senderName = "ECN";
|
|
|
|
//foreach (string email in emailIst)
|
|
//{
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[5];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = "TECN";
|
|
emailparams[4] = DateTime.Now.ToString();
|
|
//userEmail = email;
|
|
|
|
#if (DEBUG)
|
|
userEmail = GlobalVars.SENDER_EMAIL;
|
|
#endif
|
|
|
|
//en.SendNotificationEmailWithAttachment(emailTemplate, "rkotian1@irf.com", senderName, userEmail, null, subject, ecnFolderPath, emailparams);
|
|
if (IsITAR(ecn))
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, emailparams);
|
|
else
|
|
en.SendNotificationEmailWithAttachment(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, ecnFolderPath, emailparams);
|
|
//emailSentList += email + ",";
|
|
emailSentList = String.Join(", ", emailIst.Distinct().ToArray());
|
|
|
|
//}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "E-TECN", OperationType = "Email", Comments = "Approvers for Cancellation :" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyTECNAutoCancellation(int ecnNumber, int tecnNumber, List<string> attachments) {
|
|
//string ecnFolderPath = _AppSettings.AttachmentFolder + "TECNCancelledZipped\\" + TECN_PREFIX + ecnNumber.ToString() + ".zip";
|
|
ECN ecn = ecnDMO.GetECN(tecnNumber);
|
|
string emailSentList = "";
|
|
|
|
List<string> emailIst = MiscDMO.GetTECNCancelledApprovalNotifyList(ecnNumber).Distinct().ToList();
|
|
|
|
string emailTemplate = "TECNAutoCancelled.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = string.Empty;
|
|
subject = "TECN Conversion and Cancellation Notice - " + tecnNumber + " for " + ecn.Title + ", Converted on:" + DateTime.Now;
|
|
string senderName = "ECN";
|
|
|
|
//foreach (string email in emailIst)
|
|
//{
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[6];
|
|
emailparams[0] = tecnNumber.ToString();
|
|
emailparams[1] = tecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = "TECN";
|
|
emailparams[4] = DateTime.Now.ToString();
|
|
emailparams[5] = ecnNumber.ToString();
|
|
//userEmail = email;
|
|
|
|
#if (DEBUG)
|
|
userEmail = GlobalVars.SENDER_EMAIL;
|
|
#endif
|
|
|
|
//en.SendNotificationEmailWithAttachment(emailTemplate, "rkotian1@irf.com", senderName, userEmail, null, subject, ecnFolderPath, emailparams);
|
|
if (IsITAR(ecn))
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, emailparams);
|
|
else
|
|
en.SendNotificationEmailWithAttachments(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, attachments, emailparams);
|
|
//emailSentList += email + ",";
|
|
emailSentList = String.Join(", ", emailIst.Distinct().ToArray());
|
|
|
|
//}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "E-TECN", OperationType = "Email", Comments = "Approvers for Cancellation :" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyTECNExpiration(int ecnNumber, string ecnFolderPath) {
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
//string ecnFolderPath = _AppSettings.AttachmentFolder + "TECNExpiredZipped\\" + TECN_PREFIX + ecnNumber.ToString() + ".zip";
|
|
|
|
string emailSentList = "";
|
|
|
|
List<string> emailIst = MiscDMO.GetEmergencyTECNApprovalNotifyList(ecnNumber).Distinct().ToList();
|
|
|
|
string emailTemplate = "TECNExpired.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = "TECN Expiration Approved Notice - " + ecnNumber + " for " + ecn.Title + ", Expired:" + ecn.ExpirationDate;
|
|
string senderName = "ECN";
|
|
|
|
//foreach (string email in emailIst)
|
|
//{
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[5];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = "TECN";
|
|
emailparams[4] = ecn.ExpirationDate.Value.ToShortDateString();
|
|
//userEmail = email;
|
|
|
|
//#if(DEBUG)
|
|
// userEmail = "rkotian1@infineon.com";
|
|
//#endif
|
|
|
|
//en.SendNotificationEmailWithAttachment(emailTemplate, "rkotian1@infineon.com", senderName, userEmail, null, subject, ecnFolderPath, emailparams);
|
|
if (IsITAR(ecn))
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, emailparams);
|
|
else
|
|
en.SendNotificationEmailWithAttachment(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, ecnFolderPath, emailparams);
|
|
|
|
//emailSentList += email + ",";
|
|
emailSentList = String.Join(", ", emailIst.Distinct().ToArray());
|
|
|
|
//}
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "TECN", OperationType = "Email", Comments = "Approvers for Expiration:" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
bool CreateZip(ECNPdf ecn) {
|
|
try {
|
|
string sourceDirectory = _AppSettings.AttachmentFolder + "ECN\\" + ecn.ECNNumber.ToString() + "\\";
|
|
string outputFullFilePath = "";
|
|
|
|
string outputFileName;
|
|
if (ecn.IsTECN) {
|
|
if (ecn.ExtensionDate != null)
|
|
outputFileName = TECN_PREFIX + ecn.ECNNumber.ToString() + "_Extension.zip";
|
|
else
|
|
outputFileName = TECN_PREFIX + ecn.ECNNumber.ToString() + ".zip";
|
|
|
|
outputFullFilePath = _AppSettings.AttachmentFolder + "\\ECNZipped\\" + outputFileName;
|
|
} else if (ecn.IsEmergencyTECN) // Transfer it to different folder , coz documentum does not need to have a Workflow Item created for Emergency TECN
|
|
{
|
|
outputFileName = ETECN_PREFIX + ecn.ECNNumber.ToString() + ".zip";
|
|
outputFullFilePath = _AppSettings.AttachmentFolder + "\\E-TECNZipped\\" + outputFileName;
|
|
} else {
|
|
outputFileName = ECN_PREFIX + ecn.ECNNumber.ToString() + ".zip";
|
|
outputFullFilePath = _AppSettings.AttachmentFolder + "\\ECNZipped\\" + outputFileName;
|
|
}
|
|
|
|
Zipper zip = new Zipper();
|
|
zip.CreateZip(outputFullFilePath, sourceDirectory);
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecn.ECNNumber, UserID = @User.Identity.Name, DocumentType = ecn.IsECN ? "ECN" : (ecn.IsEmergencyTECN ? "E-TECN" : "TECN"), OperationType = "Error", Comments = ex.Message });
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public void AddEECNApproval(int ecnNumber, byte step, string engUserIDs, string OpUserIDs) {
|
|
// it is always going to be the first step
|
|
step = 1;
|
|
string emailSentList = "";
|
|
var emailArray = "";
|
|
try {
|
|
emailArray = wfDMO.AddEECNApproval(ecnNumber, step, (int)GlobalVars.DocumentType.EECN, engUserIDs, OpUserIDs);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " Step:" + step + " " + " Userid:" + engUserIDs + " - " + OpUserIDs + " - " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n AddEECNApproval\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "E-TECN ", OperationType = "Error", Comments = "AddEECNApproval - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
string emailTemplate = "ECNAssigned.txt";
|
|
string userEmail = string.Empty;
|
|
string subject = "E-TECN Assignment";
|
|
string senderName = "E-TECN";
|
|
|
|
string[] emailIst = emailArray.Split(new char[] { '~' });
|
|
foreach (string email in emailIst) {
|
|
if (email.Length > 0) {
|
|
subject = "E-TECN Assignment notice for Number " + ecn.ECNNumber + ", - " + ecn.Title;
|
|
EmailNotification en = new EmailNotification(_AppSettings, subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
|
|
string[] emailparams = new string[4];
|
|
emailparams[0] = ecnNumber.ToString();
|
|
emailparams[1] = ecnNumber.ToString();
|
|
emailparams[2] = GlobalVars.hostURL;
|
|
emailparams[3] = "E-TECN";
|
|
|
|
userEmail = email;
|
|
//#if(DEBUG)
|
|
// userEmail = "rkotian1@infineon.com";
|
|
//#endif
|
|
|
|
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
|
|
emailSentList += email + ",";
|
|
|
|
}
|
|
|
|
}
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "E-TECN", OperationType = "Email", Comments = "Additonal Approver: " + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void SaveAfterSubmitByApprover(int ecnNumber, string implementationDetails) {
|
|
try {
|
|
ecnDMO.SaveAfterSubmitByApprover(ecnNumber, implementationDetails);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " - " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n SaveAfterSubmitByApprover\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "E-TECN ", OperationType = "Error", Comments = "SaveAfterSubmitByApprover - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public void DeleteDocument(int ecnNumber, string ecnTypeString) {
|
|
try {
|
|
ecnDMO.DeleteDocument(ecnNumber, (int)Session[GlobalVars.SESSION_USERID], ecnTypeString);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " - " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n DeleteDocument\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "", OperationType = "Error", Comments = "DeleteDocument - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
public void DeleteDocumentBySubmitter(int ecnNumber, string ecnTypeString) {
|
|
ECN ecn = ecnDMO.GetECN(ecnNumber);
|
|
int submitterId = ecn.OriginatorID;
|
|
if (submitterId == (int)Session[GlobalVars.SESSION_USERID]) {
|
|
try {
|
|
ecnDMO.DeleteDocument(ecnNumber, (int)Session[GlobalVars.SESSION_USERID], ecnTypeString);
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + " - " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n DeleteDocument\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "", OperationType = "Error", Comments = "DeleteDocument - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
} else {
|
|
}
|
|
}
|
|
|
|
public ActionResult ReSubmitDocument(int ecnNumber, int documentType, string ecnTypeString, string oldECNTypeString, string descriptionOfChange, string reasonForChange, string categoryId = "") {
|
|
// Update ECN Type in the ECN table
|
|
|
|
ECN ecn = new ECN();
|
|
|
|
int isITARCompliant = 1;
|
|
int newECNNumber = 0;
|
|
int catId = 0;
|
|
Int32.TryParse(categoryId, out catId);
|
|
try {
|
|
int appoverCount = ecnDMO.ReSubmitDocument(
|
|
ecnNumber,
|
|
(int)Session[GlobalVars.SESSION_USERID],
|
|
documentType,
|
|
out isITARCompliant,
|
|
descriptionOfChange,
|
|
reasonForChange,
|
|
ecnTypeString,
|
|
out newECNNumber,
|
|
catId);
|
|
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
// the content gets evaluated on the client side
|
|
return Content("ITAR");
|
|
} else {
|
|
//TODO - COPY ATTACHMENTS
|
|
Functions.CopyAttachments(_AppSettings, ecnNumber, newECNNumber);
|
|
|
|
// Log into the Approval Log
|
|
try {
|
|
ecn = ecnDMO.GetECN(ecnNumber);
|
|
|
|
//ecnDMO.UpdateECNType(ecnNumber, ecnTypeString);
|
|
|
|
ApprovalLogDMO.Add(new ApprovalLog {
|
|
IssueID = ecnNumber,
|
|
DocumentTypeID = documentType,
|
|
OperationType = "Changed From " + oldECNTypeString + " To " + ecnTypeString,
|
|
UserID = (int)Session[GlobalVars.SESSION_USERID],
|
|
OperationLog = "Changed the Document Type"
|
|
});
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReSubmitDocument (ApprovalLogDMO)\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Error", Comments = "ReSubmitDocument (ApprovalLogDMO)" + exceptionString });
|
|
|
|
}
|
|
|
|
// Add to the Document Change Log
|
|
try {
|
|
ECNTypeChangeLogDMO.Add(new ECNTypeChangeLog {
|
|
ECNNumber = ecnNumber,
|
|
UserID = (int)Session[GlobalVars.SESSION_USERID],
|
|
ECNTypeFrom = oldECNTypeString,
|
|
ECNTypeTo = ecnTypeString
|
|
});
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReSubmitDocument (ECNTypeChangeLogDMO)\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Error", Comments = "ReSubmitDocument (ECNTypeChangeLogDMO)" + exceptionString });
|
|
|
|
}
|
|
|
|
//if (appoverCount > 0)
|
|
//{
|
|
// NotifyApprovers(newECNNumber, (byte)GlobalVars.WorkFLowStepNumber.Step1, documentType, ecnTypeString);
|
|
//}
|
|
//else
|
|
//{
|
|
// // automaically approve current step (Step 1) beacuase there are no approvers in step 1 and move to the next step of approval
|
|
// Approve(newECNNumber, (byte)GlobalVars.WorkFLowStepNumber.Step1, "", documentType, ecnTypeString); // this is the Submit Level Approval
|
|
|
|
//}
|
|
|
|
if (Request.IsAjaxRequest()) {
|
|
// the content gets evaluated on the client side
|
|
return Content("Redirect~" + newECNNumber);
|
|
|
|
} else
|
|
return Content("Invalid");
|
|
}
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + ecnNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n SubmitDocument\r\n" + ecnNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Error", Comments = "Re-SubmitDocument - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult PCRBExists(int pcrb) {
|
|
|
|
return Content(ecnDMO.PCRBExists(pcrb).ToString());
|
|
}
|
|
|
|
public ActionResult CancelDocument(int ecnNumber, byte currentStep, int documentType, string ecnTypeString) {
|
|
// log the cancelled event
|
|
//EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = docTypeString, OperationType = "Cancelled", Comments = "Cancelled the document" });
|
|
// Set the ECN Current step to the last step of the document type, which is the execution step
|
|
|
|
bool lastApproverAndLastStep = false;
|
|
int appoverCount = ecnDMO.SubmitForCancellation(ecnNumber, (byte)GlobalVars.WorkFLowStepNumber.Step1, (int)Session[GlobalVars.SESSION_USERID], documentType, ecnTypeString, (int)GlobalVars.TECNExpirationCancellation.Cancellation);
|
|
if (appoverCount > 0) {
|
|
NotifyApproversForCancellation(ecnNumber, currentStep, documentType, ecnTypeString);
|
|
} else // TODO Automatically close the
|
|
{
|
|
lastApproverAndLastStep = ApproveCancellation(ecnNumber, currentStep, "", documentType, ecnTypeString);
|
|
// automaically approve current step (Step 1) because there are no approvers in step 1 and move to the next step of approval
|
|
//Approve(ecnNumber, currentStep, "", documentType, ecnTypeString); // this is the Submit Level Approval
|
|
|
|
}
|
|
|
|
// if there are approvers dont wait for it to finish the approval loop for sending cancel notications.
|
|
if (!lastApproverAndLastStep) {
|
|
// send notifications
|
|
try {
|
|
lastApproverAndLastStep = true;
|
|
|
|
ECNPdf ecn = new ECNPdf();
|
|
GenerateECNPdf(ecnNumber, out ecn);
|
|
|
|
string sourceDirectory = _AppSettings.AttachmentFolder + "ECN\\" + ecnNumber.ToString() + "\\";
|
|
string outputFullFilePath = "";
|
|
|
|
string outputFileName;
|
|
outputFileName = TECN_PREFIX + ecnNumber.ToString() + ".zip";
|
|
|
|
outputFullFilePath = _AppSettings.AttachmentFolder + "\\TECNCancelledZipped\\" + outputFileName;
|
|
|
|
// Create the zipped package
|
|
Zipper zip = new Zipper();
|
|
zip.CreateZip(outputFullFilePath, sourceDirectory);
|
|
NotifyTECNCancellation(ecnNumber, outputFullFilePath);
|
|
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "TECN", OperationType = "Error", Comments = ex.Message });
|
|
|
|
}
|
|
|
|
}
|
|
int trainingId = trainingDMO.GetTrainingId(ecnNumber);
|
|
trainingDMO.DeleteTraining(trainingId);
|
|
|
|
if (Request.IsAjaxRequest()) {
|
|
// the content gets evaluated on the client side
|
|
return Content("Redirect");
|
|
} else
|
|
return Content("Invalid");
|
|
}
|
|
public ActionResult CancelDocumentBySubmitter(int ecnNumber, byte currentStep, int documentType, string ecnTypeString) {
|
|
return Content("Redirect");
|
|
}
|
|
|
|
public bool ApproveCancellation(int ecnNumber, byte currentStep, string comments, int documentType, string ecnTypeString) {
|
|
bool lastApproverAndLastStep = false;
|
|
bool lastStep = false;
|
|
bool lastApprover = ecnDMO.ECNApproveCancelled_ExpiredDocument(ecnNumber, currentStep, comments, out lastStep, (int)Session[GlobalVars.SESSION_USERID], documentType);
|
|
while (lastApprover && !lastStep) {
|
|
currentStep++;
|
|
lastApprover = ecnDMO.ECNApproveCancelled_ExpiredDocument(ecnNumber, currentStep, comments, out lastStep, (int)Session[GlobalVars.SESSION_USERID], documentType);
|
|
NotifyApproversForCancellation(ecnNumber, currentStep, documentType, ecnTypeString);
|
|
}
|
|
|
|
if (lastApprover && lastStep) {
|
|
try {
|
|
lastApproverAndLastStep = true;
|
|
|
|
ECNPdf ecn = new ECNPdf();
|
|
GenerateECNPdf(ecnNumber, out ecn);
|
|
|
|
string sourceDirectory = _AppSettings.AttachmentFolder + "ECN\\" + ecnNumber.ToString() + "\\";
|
|
string outputFullFilePath = "";
|
|
|
|
string outputFileName;
|
|
outputFileName = TECN_PREFIX + ecnNumber.ToString() + ".zip";
|
|
|
|
outputFullFilePath = _AppSettings.AttachmentFolder + "\\TECNCancelledZipped\\" + outputFileName;
|
|
|
|
// Create the zipped package
|
|
Zipper zip = new Zipper();
|
|
zip.CreateZip(outputFullFilePath, sourceDirectory);
|
|
NotifyTECNCancellation(ecnNumber, outputFullFilePath);
|
|
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "TECN", OperationType = "Error", Comments = ex.Message });
|
|
|
|
}
|
|
}
|
|
|
|
return lastApproverAndLastStep;
|
|
}
|
|
|
|
public void ApproveExpiration(int ecnNumber, byte currentStep, string comments, int documentType, string ecnTypeString) {
|
|
bool lastStep = false;
|
|
bool lastApprover = ecnDMO.ECNApproveCancelled_ExpiredDocument(ecnNumber, currentStep, comments, out lastStep, (int)Session[GlobalVars.SESSION_USERID], documentType);
|
|
while (lastApprover && !lastStep) {
|
|
currentStep++;
|
|
lastApprover = lastApprover = ecnDMO.ECNApproveCancelled_ExpiredDocument(ecnNumber, currentStep, comments, out lastStep, (int)Session[GlobalVars.SESSION_USERID], documentType);
|
|
NotifyApproversForExpiration(ecnNumber, currentStep, documentType, ecnTypeString);
|
|
}
|
|
if (lastApprover && lastStep) {
|
|
try {
|
|
ECNPdf ecn = new ECNPdf();
|
|
GenerateECNPdf(ecnNumber, out ecn);
|
|
|
|
string sourceDirectory = _AppSettings.AttachmentFolder + "ECN\\" + ecnNumber.ToString() + "\\";
|
|
string outputFullFilePath = "";
|
|
|
|
string outputFileName;
|
|
outputFileName = TECN_PREFIX + ecnNumber.ToString() + ".zip";
|
|
|
|
outputFullFilePath = _AppSettings.AttachmentFolder + "\\TECNExpiredZipped\\" + outputFileName;
|
|
|
|
Zipper zip = new Zipper();
|
|
zip.CreateZip(outputFullFilePath, sourceDirectory);
|
|
|
|
NotifyTECNExpiration(ecnNumber, outputFullFilePath);
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = @User.Identity.Name, DocumentType = "TECN", OperationType = "Error", Comments = ex.Message });
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
public void CheckCanSubmit(int ecnNumber) {
|
|
bool result = ecnDMO.CanSubmitECN(ecnNumber);
|
|
if (result) {
|
|
throw new Exception("Cannot Submit");
|
|
}
|
|
}
|
|
|
|
public void ReleaseLockOnDocument(int issueID) {
|
|
try {
|
|
ecnDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], issueID);
|
|
} catch (Exception e) {
|
|
try {
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReleaseLockOnDocument ECN\r\n" + issueID.ToString() + "\r\n" + e.Message, System.Diagnostics.EventLogEntryType.Error);
|
|
} catch { }
|
|
ecnDMO.ReleaseLockOnDocument(-1, issueID);
|
|
}
|
|
}
|
|
public void ReleaseLockOnDocumentAdmin(int issueID) {
|
|
try {
|
|
ecnDMO.ReleaseLockOnDocument(-1, issueID);
|
|
} catch (Exception e) {
|
|
try {
|
|
Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReleaseLockOnDocument ECN\r\n" + issueID.ToString() + "\r\n" + e.Message, System.Diagnostics.EventLogEntryType.Error);
|
|
} catch { }
|
|
ecnDMO.ReleaseLockOnDocument(-1, issueID);
|
|
}
|
|
}
|
|
|
|
public FileResult DownloadFile(string attachmentID, string ecnNumber) {
|
|
//fileName = "ECNForm_71132.pdf";
|
|
|
|
string fileName = ecnDMO.GetFileName(attachmentID);
|
|
|
|
string ecnFolderPath = _AppSettings.AttachmentFolder + "ECN\\" + ecnNumber.ToString();
|
|
var sDocument = Path.Combine(ecnFolderPath, fileName);
|
|
|
|
var FDir_AppData = _AppSettings.AttachmentFolder;
|
|
if (!sDocument.StartsWith(FDir_AppData)) {
|
|
// Ensure that we are serving file only inside the Fab2ApprovalAttachments folder
|
|
// and block requests outside like "../web.config"
|
|
throw new HttpException(403, "Forbidden");
|
|
}
|
|
|
|
if (!System.IO.File.Exists(sDocument)) {
|
|
return null;
|
|
//throw new Exception("File not found");
|
|
}
|
|
|
|
return File(sDocument, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
|
|
}
|
|
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
//void CreateZipFile()
|
|
//{
|
|
// try
|
|
// {
|
|
// using (ZipFile zip = new ZipFile())
|
|
// {
|
|
// // note: this does not recurse directories!
|
|
// String[] filenames = System.IO.Directory.GetFiles(@"C:\Documents\Approval System\ECN-TECN");
|
|
|
|
// // This is just a sample, provided to illustrate the DotNetZip interface.
|
|
// // This logic does not recurse through sub-directories.
|
|
// // If you are zipping up a directory, you may want to see the AddDirectory() method,
|
|
// // which operates recursively.
|
|
// foreach (String filename in filenames)
|
|
// {
|
|
// Console.WriteLine("Adding {0}...", filename);
|
|
|
|
// ZipEntry e = zip.AddFile(filename);
|
|
// e.Comment = "Added by Cheeso's CreateZip utility.";
|
|
// }
|
|
|
|
// zip.Comment = String.Format("This zip archive was created by the CreateZip example application on machine '{0}'",
|
|
// System.Net.Dns.GetHostName());
|
|
|
|
// zip.Save(@"C:\Documents\Approval System\ECN-TECN\New.Zip");
|
|
// }
|
|
|
|
// }
|
|
// catch (System.Exception ex1)
|
|
// {
|
|
// System.Console.Error.WriteLine("exception: " + ex1);
|
|
// }
|
|
|
|
//}
|
|
|
|
bool IsITAR(ECN ecn) {
|
|
if (ecn.IsRH && !ecn.IsAU && !ecn.IsIndustrial && !ecn.IsMA) {
|
|
return true;
|
|
} else
|
|
return false;
|
|
}
|
|
|
|
} |