Files
.vs
Fab2ApprovalSystem
App_Start
Content
Controllers
AccountController.cs
AdminController.cs
AuditController.cs
ChangeControlController.cs
CorrectiveActionController.cs
ECNController.cs
HomeController.cs
LotDispositionController.cs
LotTravelerController.cs
MRBController.cs
ManagerController.cs
PartsRequestController.cs
ReportsController.cs
TrainingController.cs
WebAPIController.cs
WorkflowController.cs
DMO
EmailTemplates
FTPBatch
Lib
Misc
Models
PdfGenerator
Properties
Scripts
Utilities
ViewModels
Views
fonts
.groovy
Fab2ApprovalSystem.csproj
Global.asax
Global.asax.cs
Jenkinsfile
Project_Readme.html
README.md
Startup.cs
Test.html
Web.Debug.config
Web.Release.config
Web.config
favicon.ico
package.json
Fab2ApprovalSystem-Copy
Fab2ApprovalSystem-TF
Kendo
SQL
packages
references
.editorconfig
.gitignore
Fab2ApprovalSystem.sln
README.md
mesa-fab-approval/Fab2ApprovalSystem/Controllers/ECNController.cs
Jonathan Ouellette 580e90f6a2 initial add
2022-09-27 14:10:30 -07:00

2958 lines
126 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc;
using System.IO;
using System.Configuration;
using Fab2ApprovalSystem.ViewModels;
//using Ionic.Zip;
using System.IO.Compression;
//using ReportManagement;
using Fab2ApprovalSystem.PdfGenerator;
using Dapper;
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();
//
// 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(@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(
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 JsonResult GetTechnology(int? area)
//{
// List<ECNTechnology> respIssue = ecnDMO.GetECNTechnology(area);
// var data = respIssue.Select(s => new SelectListItem { Value = s.TechnologyID.ToString(), Text = s.Technology });
// return Json(data, JsonRequestBehavior.AllowGet);
//}
/// <summary>
///
/// </summary>
/// <param name="ECN"></param>
/// <returns></returns>
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(@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(@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(@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);
}
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <returns></returns>
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(@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);
}
}
/// <summary>
///
/// </summary>
/// <param name="files"></param>
/// <returns></returns>
public ActionResult AttachSave(IEnumerable<HttpPostedFileBase> files, int ecnNumber)
{
// The Name of the Upload component is "files"
if (files != null)
{
foreach (var file in files)
{
// Some browsers send file names with full path.
// We are only interested in the file name.
var fileName = Path.GetFileName(file.FileName);
string ecnFolderPath = Functions.GetAttachmentFolder() + "ECN\\" + ecnNumber.ToString();
DirectoryInfo di = new DirectoryInfo(ecnFolderPath);
if (!di.Exists)
di.Create();
var physicalPath = Path.Combine(ecnFolderPath, fileName);
file.SaveAs(physicalPath);
ECNAttachment attach = new ECNAttachment()
{
ECNNumber = ecnNumber,
FileName = fileName,
UserID = (int)Session[GlobalVars.SESSION_USERID],
};
if (System.IO.File.Exists(physicalPath))
{
ecnDMO.InsertECNAttachment(attach);
}
else
{
throw new Exception();
}
}
}
return Content("");
}
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="issueID"></param>
/// <returns></returns>
public ActionResult Attachment_Read([DataSourceRequest] DataSourceRequest request, int ecnNumber)
{
return Json(ecnDMO.GetECNAttachments(ecnNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="ecnNumber"></param>
/// <returns></returns>
public ActionResult ApprovalLogHistory_Read([DataSourceRequest] DataSourceRequest request, int ecnNumber)
{
return Json(ecnDMO.GetECNApprovalLogHistory(ecnNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
//[AcceptVerbs(HttpVerbs.Post)]
/// <summary>
///
/// </summary>
/// <param name="attachmentID"></param>
/// <param name="fileName"></param>
[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(Functions.GetAttachmentFolder() + @"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(@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);
}
}
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="attachment"></param>
/// <returns></returns>
[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(@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>
/// <param name="issueID"></param>
/// <param name="peRequired"></param>
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(@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>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="documentType"></param>
/// <param name="ecnTypeString"></param>
/// <param name="extensionDate"></param>
/// <returns></returns>
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(@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(@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>
/// <param name="issueID"></param>
/// <param name="peRequired"></param>
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(@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>
/// <param name="ecnNumber"></param>
/// <param name="currentStep"></param>
/// <param name="comments"></param>
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(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(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(Functions.GetAttachmentFolder() + "ECN\\" + ecnNumber + "\\ECNForm_" + ecnNumber + ".pdf");
attachments.Add(Functions.GetAttachmentFolder() + "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(@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);
}
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
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(Functions.GetAttachmentFolder() + "\\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(@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;
}
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="documentType"></param>
//void PostApprovalForECNsDerivedFromTECN(int ecnNumber, int tecnNumber)
//{
// try
// {
// // Generate the PDF version of the ECN form and Approval log
// string sourceFile = Functions.GetAttachmentFolder() + "ECN\\" + tecnNumber + "\\ECNForm_" + tecnNumber + ".pdf";
// string destFile = Functions.GetAttachmentFolder() + "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(@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;
// }
//}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="documentType"></param>
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(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(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(@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(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(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(@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>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="currentStep"></param>
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(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(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(@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>
///
/// </summary>
/// <param name="issueID"></param>
//public void NotifyRejectionToOrginator(int ecnNumber, int documentType)
//{
// List<string> emailIst = ecnDMO.GetRejectionOrginatorEmailList(@ecnNumber).Distinct().ToList();
// string emailTemplate = "ECNReject.txt";
// string userEmail = string.Empty;
// string subject = "ECN Rejection";
// string senderName = "ECN";
// foreach (string email in emailIst)
// {
// subject = "ECN Rejection";
// EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
// string[] emailparams = new string[4];
// emailparams[0] = ecnNumber.ToString();
// emailparams[1] = ecnNumber.ToString();
// emailparams[2] = GlobalVars.hostURL;
// emailparams[3] = Session[GlobalVars.SESSION_USERNAME].ToString();
// 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 = ecnNumber, UserID = @User.Identity.Name, DocumentType = "ECN", OperationType = "Email", Comments = "Rejection: " + userEmail });
// }
// catch { }
//}
/// <summary>
/// Get a list of Approvers and the status
/// </summary>
/// <param name="request"></param>
/// <param name="issueID"></param>
/// <param name="step"></param>
/// <returns></returns>
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));
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="ecnTypeString"></param>
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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="currentStep"></param>
/// <param name="comments"></param>
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(@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(@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);
}
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="reAssignApproverFrom"></param>
/// <param name="reAssignApproverTo"></param>
/// <param name="step"></param>
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(@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(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(@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);
}
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="userIDs"></param>
/// <param name="step"></param>
/// <param name="docType"></param>
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(@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(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
/// <summary>
///
/// </summary>
/// <returns></returns>
//public JsonResult GetUserListForAdditionalAppprrovers()
//{
// UserAccountDMO userDMO = new UserAccountDMO();
// IEnumerable<LoginModel> userlist = userDMO.GetAllUsers();
// return Json(userlist, JsonRequestBehavior.AllowGet);
//}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="currentStep"></param>
/// <returns></returns>
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);
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="step"></param>
/// <param name="userIDs"></param>
/// <param name="docType"></param>
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(@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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
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 = Functions.GetAttachmentFolder() + "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;
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="?"></param>
/// <param name="ecn"></param>
/// <returns></returns>
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 = Functions.GetAttachmentFolder() + "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;
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="ecn"></param>
/// <returns></returns>
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;
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
public void NotifyEmergencyTECNApproval(int ecnNumber, DateTime? expDate)
{
string ecnFolderPath = Functions.GetAttachmentFolder() + "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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="currentStep"></param>
/// <param name="documentType"></param>
/// <param name="ecnTypeString"></param>
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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="currentStep"></param>
/// <param name="documentType"></param>
/// <param name="ecnTypeString"></param>
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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="currentStep"></param>
/// <param name="documentType"></param>
/// <param name="ecnTypeString"></param>
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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
public void NotifyTECNCancellation(int ecnNumber, string ecnFolderPath)
{
//string ecnFolderPath = Functions.GetAttachmentFolder() + "TECNCancelledZipped\\" + TECN_PREFIX + ecnNumber.ToString() + ".zip";
ECN ecn = ecnDMO.GetECN(ecnNumber);
string emailSentList = "";
List<string> emailIst = MiscDMO.GetTECNCancelledApprovalNotifyList(ecnNumber).Distinct().ToList();
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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="attachments"></param>
public void NotifyTECNAutoCancellation(int ecnNumber, int tecnNumber, List<string> attachments)
{
//string ecnFolderPath = Functions.GetAttachmentFolder() + "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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
public void NotifyTECNExpiration(int ecnNumber, string ecnFolderPath)
{
ECN ecn = ecnDMO.GetECN(ecnNumber);
//string ecnFolderPath = Functions.GetAttachmentFolder() + "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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
bool CreateZip(ECNPdf ecn)
{
try
{
string sourceDirectory = Functions.GetAttachmentFolder() + "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 = Functions.GetAttachmentFolder() + "\\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 = Functions.GetAttachmentFolder() + "\\E-TECNZipped\\" + outputFileName;
}
else
{
outputFileName = ECN_PREFIX + ecn.ECNNumber.ToString() + ".zip";
outputFullFilePath = Functions.GetAttachmentFolder() + "\\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;
}
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="step"></param>
/// <param name="userIDs"></param>
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(@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(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 { }
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="implementationDetails"></param>
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(@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);
}
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="ecnTypeString"></param>
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(@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(@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
{
}
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="documentType"></param>
/// <param name="ecnTypeString"></param>
/// <param name="oldECNTypeString"></param>
/// <returns></returns>
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(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(@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(@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(@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);
}
}
/// <summary>
///
/// </summary>
/// <param name="pcrb"></param>
/// <returns></returns>
public ActionResult PCRBExists(int pcrb)
{
return Content(ecnDMO.PCRBExists(pcrb).ToString());
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
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 = Functions.GetAttachmentFolder() + "ECN\\" + ecnNumber.ToString() + "\\";
string outputFullFilePath = "";
string outputFileName;
outputFileName = TECN_PREFIX + ecnNumber.ToString() + ".zip";
outputFullFilePath = Functions.GetAttachmentFolder() + "\\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");
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="currentStep"></param>
/// <param name="comments"></param>
/// <param name="documentType"></param>
/// <param name="ecnTypeString"></param>
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 = Functions.GetAttachmentFolder() + "ECN\\" + ecnNumber.ToString() + "\\";
string outputFullFilePath = "";
string outputFileName;
outputFileName = TECN_PREFIX + ecnNumber.ToString() + ".zip";
outputFullFilePath = Functions.GetAttachmentFolder() + "\\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;
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
/// <param name="currentStep"></param>
/// <param name="comments"></param>
/// <param name="documentType"></param>
/// <param name="ecnTypeString"></param>
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 = Functions.GetAttachmentFolder() + "ECN\\" + ecnNumber.ToString() + "\\";
string outputFullFilePath = "";
string outputFileName;
outputFileName = TECN_PREFIX + ecnNumber.ToString() + ".zip";
outputFullFilePath = Functions.GetAttachmentFolder() + "\\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 });
}
}
}
/// <summary>
///
/// </summary>
/// <param name="ecnNumber"></param>
public void CheckCanSubmit(int ecnNumber)
{
bool result = ecnDMO.CanSubmitECN(ecnNumber);
if (result)
{
throw new Exception("Cannot Submit");
}
}
/// <summary>
///
/// </summary>
/// <param name="workRequestID"></param>
public void ReleaseLockOnDocument(int issueID)
{
try
{
ecnDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], issueID);
}
catch(Exception e)
{
try
{
Functions.WriteEvent(@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(@User.Identity.Name + "\r\n ReleaseLockOnDocument ECN\r\n" + issueID.ToString() + "\r\n" + e.Message, System.Diagnostics.EventLogEntryType.Error);
}
catch { }
ecnDMO.ReleaseLockOnDocument(-1, issueID);
}
}
/// <summary>
///
/// </summary>
/// <param name="attachmentID"></param>
/// <param name="ecnNumber"></param>
/// <returns></returns>
public FileResult DownloadFile(string attachmentID, string ecnNumber)
{
//fileName = "ECNForm_71132.pdf";
string fileName = ecnDMO.GetFileName(attachmentID);
string ecnFolderPath = Functions.GetAttachmentFolder() + "ECN\\" + ecnNumber.ToString();
var sDocument = Path.Combine(ecnFolderPath, fileName);
var FDir_AppData = Functions.GetAttachmentFolder();
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);
// }
//}
/// <summary>
///
/// </summary>
/// <param name="ecn"></param>
/// <returns></returns>
bool IsITAR(ECN ecn)
{
if (ecn.IsRH && !ecn.IsAU && !ecn.IsIndustrial && !ecn.IsMA)
{
return true;
}
else
return false;
}
}
}