1521 lines
73 KiB
C#
1521 lines
73 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
|
|
#if !NET8
|
|
using System.Web;
|
|
using System.Web.Mvc;
|
|
using System.Configuration;
|
|
using System.Threading;
|
|
#endif
|
|
|
|
#if NET8
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
using Microsoft.AspNetCore.Mvc.ViewEngines;
|
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
#endif
|
|
|
|
using Fab2ApprovalSystem.DMO;
|
|
using Fab2ApprovalSystem.Misc;
|
|
using Fab2ApprovalSystem.Models;
|
|
using Fab2ApprovalSystem.ViewModels;
|
|
using Fab2ApprovalSystem.PdfGenerator;
|
|
|
|
#if !NET8
|
|
using Kendo.Mvc.Extensions;
|
|
using Kendo.Mvc.UI;
|
|
#endif
|
|
|
|
namespace Fab2ApprovalSystem.Controllers;
|
|
|
|
[Authorize]
|
|
#if !NET8
|
|
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
|
|
[SessionExpireFilter]
|
|
#endif
|
|
#if NET8
|
|
[Route("[controller]")]
|
|
#endif
|
|
public class LotTravelerController : Controller {
|
|
|
|
private readonly LotTravelerDMO LotTravDMO = new();
|
|
private readonly string docTypeString = "LotTraveler";
|
|
private readonly WorkflowDMO wfDMO = new();
|
|
private readonly AppSettings? _AppSettings = GlobalVars.AppSettings;
|
|
|
|
public ActionResult CreateWorkRequest() {
|
|
LTWorkRequest workRequest = new();
|
|
try {
|
|
workRequest.OriginatorID = GlobalVars.GetUserId(GetSession());
|
|
LotTravDMO.InsertWorkRequest(workRequest);
|
|
return RedirectToAction("Edit", new { issueID = workRequest.ID });
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + workRequest.SWRNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n CreateWorkRequest - LotTraveler\r\n" + e.InnerException == null ? e.Message : e.InnerException.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = workRequest.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Error", Comments = "CreateWorkRequest - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult Edit(int issueID) {
|
|
int isITARCompliant = 1;
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
ViewBag.NewRevision = "false";
|
|
|
|
LTWorkRequest workRequest = new();
|
|
try {
|
|
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(issueID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
return View("UnAuthorizedAccess");
|
|
}
|
|
if (GlobalVars.GetUserId(GetSession()) == workRequest.OriginatorID)
|
|
ViewBag.IsOriginator = "true";
|
|
else
|
|
ViewBag.IsOriginator = "false";
|
|
|
|
List<ApproversListViewModel> userList = MiscDMO.GetPendingApproversListByDocument(issueID, workRequest.CurrentStep, (int)GlobalVars.DocumentType.LotTraveler);
|
|
ApproversListViewModel approver = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == GlobalVars.GetUserId(GetSession()); });
|
|
if (approver == null)
|
|
ViewBag.IsApprover = "false";
|
|
else
|
|
ViewBag.IsApprover = "true";
|
|
|
|
if (workRequest.CloseDate != null) {
|
|
// LATER ON SHOULD CALL THE LOT TRAVLELER VIEW
|
|
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
|
|
}
|
|
|
|
// open the view based on the Workflow step
|
|
if (workRequest.CurrentStep == 0) {
|
|
if ((workRequest.RecordLockIndicator && workRequest.RecordLockedBy != GlobalVars.GetUserId(GetSession()))) {
|
|
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
|
|
}
|
|
|
|
} else if (workRequest.CurrentStep >= 1 && workRequest.CurrentStep < 3 && workRequest.CloseDate == null) // Before
|
|
{
|
|
if ((ViewBag.IsApprover == "true") || (GlobalVars.IsAdmin(GetSession())))
|
|
return RedirectToAction("WorkRequestApproval", new { issueID = issueID });
|
|
else
|
|
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
|
|
} else if (workRequest.CurrentStep == 3) {
|
|
if ((workRequest.RecordLockIndicator && workRequest.RecordLockedBy != GlobalVars.GetUserId(GetSession())) || (ViewBag.IsApprover == "false")) {
|
|
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
|
|
} else {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), true);
|
|
ViewBag.NewRevision = "true";
|
|
workRequest = LotTravDMO.GetLTWorkRequestItem(issueID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
return RedirectToAction("WorkRequestRevision", new { workRequestID = issueID });
|
|
}
|
|
|
|
// Start the versioning of the documents with the Edit Feature
|
|
// Call the Edit Form
|
|
|
|
}
|
|
workRequest = LotTravDMO.GetLTWorkRequestItem(issueID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
// else do this part
|
|
ViewBag.Departments = MiscDMO.GetDepartments();
|
|
ViewBag.AffectedModules = MiscDMO.GetModules();
|
|
ViewBag.WorkReqRevisionList = LotTravDMO.GetWorkReqRevisions(workRequest.SWRNumber);
|
|
return View(workRequest);
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + workRequest.SWRNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n Edit WorkRequest - LotTraveler\r\n" + e.InnerException == null ? e.Message : e.InnerException.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = workRequest.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Edit WorkRequest - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult SaveRevision(LTWorkRequest model) {
|
|
try {
|
|
var data = model;
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
ViewBag.NewRevision = "false";
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
model.OriginatorID = GlobalVars.GetUserId(GetSession());
|
|
int newRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
// TODO
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newRequestID);
|
|
|
|
return Content(newRequestID.ToString());
|
|
} else {
|
|
LotTravDMO.UpdateWorkRequest(model, GlobalVars.GetUserId(GetSession()));
|
|
return Content("");
|
|
}
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + model.SWRNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n SaveRevision - LotTraveler\r\n" + e.InnerException == null ? e.Message : e.InnerException.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = model.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Error", Comments = "SaveRevision - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult WorkRequestReadOnly(int issueID) {
|
|
int isITARCompliant = 1;
|
|
LTWorkRequest workRequest = new();
|
|
try {
|
|
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(issueID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
|
|
ViewBag.Departments = MiscDMO.GetDepartments();
|
|
ViewBag.AffectedModules = MiscDMO.GetModules();
|
|
ViewBag.WorkReqRevisionList = LotTravDMO.GetWorkReqRevisions(workRequest.SWRNumber);
|
|
|
|
return View(workRequest);
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n WorkRequestReadOnly - LotTraveler\r\n" + e.InnerException == null ? e.Message : e.InnerException.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Error", Comments = "WorkRequestReadOnly - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult WorkRequestApproval(int issueID) {
|
|
int isITARCompliant = 1;
|
|
LTWorkRequest workRequest = new();
|
|
try {
|
|
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(issueID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
|
|
List<ApproversListViewModel> userList = MiscDMO.GetPendingApproversListByDocument(issueID, workRequest.CurrentStep, (int)GlobalVars.DocumentType.LotTraveler);
|
|
|
|
ApproversListViewModel approver = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == GlobalVars.GetUserId(GetSession()); });
|
|
if (approver == null)
|
|
ViewBag.IsApprover = "false";
|
|
else
|
|
ViewBag.IsApprover = "true";
|
|
|
|
if (workRequest.RecordLockIndicator && workRequest.RecordLockedBy != GlobalVars.GetUserId(GetSession())) {
|
|
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
|
|
}
|
|
|
|
workRequest = LotTravDMO.GetLTWorkRequestItem(issueID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
ViewBag.Departments = MiscDMO.GetDepartments();
|
|
ViewBag.AffectedModules = MiscDMO.GetModules();
|
|
ViewBag.WorkReqRevisionList = LotTravDMO.GetWorkReqRevisions(workRequest.SWRNumber);
|
|
|
|
return View(workRequest);
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n WorkRequestApproval - LotTraveler\r\n" + e.InnerException == null ? e.Message : e.InnerException.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Error", Comments = "WorkRequestApproval - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public ActionResult GetWorkRequestRevision(int workRequestID) {
|
|
int isITARCompliant = 1;
|
|
LTWorkRequest workRequest = new();
|
|
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
|
|
return Content("");
|
|
}
|
|
|
|
public ActionResult DisplayWorkRequestPDF(int workRequestID) {
|
|
WorkRequestPdf workRequest = new();
|
|
try {
|
|
workRequest = LotTravDMO.GetLTWorkRequestItemPDF(workRequestID);
|
|
|
|
string pageTitle = string.Empty;
|
|
string htmlText = RenderViewToString("WorkRequestPDF", workRequest);
|
|
if (Debugger.IsAttached) {
|
|
return Content(htmlText, "text/html");
|
|
} else {
|
|
byte[] buffer = StandardPdfRenderer.GetPortableDocumentFormatBytes(pageTitle, htmlText);
|
|
return new BinaryContentResult(buffer, "application/pdf");
|
|
}
|
|
} catch (Exception ex) {
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n DisplayWorkRequestPDF - LotTraveler\r\n" + ex.InnerException.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = workRequest.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "LotTravler", OperationType = "Generate PDF", Comments = ex.Message });
|
|
workRequest = null;
|
|
return Content("");
|
|
}
|
|
}
|
|
|
|
private string RenderViewToString(string viewName, object model) {
|
|
string result;
|
|
ViewData.Model = model;
|
|
using (StringWriter writer = new()) {
|
|
try {
|
|
#if !NET8
|
|
ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, string.Empty);
|
|
if (viewResult is null)
|
|
return $"A view with the name '{viewName}' could not be found";
|
|
ViewContext viewContext = new(ControllerContext, viewResult.View, ViewData, TempData, writer);
|
|
viewResult.View.Render(viewContext, writer);
|
|
result = writer.GetStringBuilder().ToString();
|
|
#endif
|
|
#if NET8
|
|
ViewEngineResult viewResult;
|
|
CompositeViewEngine compositeViewEngine = HttpContext.RequestServices.GetRequiredService(typeof(ICompositeViewEngine)) as CompositeViewEngine;
|
|
|
|
if (viewName.EndsWith(".cshtml")) {
|
|
viewResult = compositeViewEngine.GetView(viewName, viewName, false);
|
|
} else {
|
|
viewResult = compositeViewEngine.FindView(ControllerContext, viewName, false);
|
|
}
|
|
|
|
if (!viewResult.Success) {
|
|
return $"A view with the name '{viewName}' could not be found";
|
|
}
|
|
|
|
ViewContext viewContext = new(ControllerContext,
|
|
viewResult.View,
|
|
ViewData,
|
|
TempData,
|
|
writer,
|
|
new HtmlHelperOptions());
|
|
|
|
System.Threading.Tasks.Task task = viewResult.View.RenderAsync(viewContext);
|
|
task.Wait();
|
|
|
|
result = writer.GetStringBuilder().ToString();
|
|
#endif
|
|
} catch (Exception ex) {
|
|
result = $"Failed - {ex.Message}";
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public ActionResult WorkRequestRevision(int workRequestID) {
|
|
int isITARCompliant = 1;
|
|
LTWorkRequest workRequest = new();
|
|
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
List<ApproversListViewModel> userList = MiscDMO.GetPendingApproversListByDocument(workRequestID, workRequest.CurrentStep, (int)GlobalVars.DocumentType.LotTraveler);
|
|
ApproversListViewModel approver = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == GlobalVars.GetUserId(GetSession()); });
|
|
if (approver == null)
|
|
ViewBag.IsApprover = "false";
|
|
else
|
|
ViewBag.IsApprover = "true";
|
|
|
|
if (
|
|
(workRequest.RecordLockIndicator && workRequest.RecordLockedBy != GlobalVars.GetUserId(GetSession())
|
|
|| (ViewBag.IsApprover == "false"))
|
|
|| (!workRequest.IsCurrentRevision)
|
|
|| (workRequest.CloseDate != null)
|
|
) {
|
|
return RedirectToAction("WorkRequestReadOnly", new { issueID = workRequestID });
|
|
}
|
|
|
|
workRequest = LotTravDMO.GetLTWorkRequestItem(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
|
|
ViewBag.Departments = MiscDMO.GetDepartments();
|
|
ViewBag.AffectedModules = MiscDMO.GetModules();
|
|
ViewBag.WorkReqRevisionList = LotTravDMO.GetWorkReqRevisions(workRequest.SWRNumber);
|
|
|
|
return View(workRequest);
|
|
}
|
|
|
|
[HttpPost]
|
|
public ActionResult Edit(LTWorkRequest model) {
|
|
try {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
var data = model;
|
|
LotTravDMO.UpdateWorkRequest(model, GlobalVars.GetUserId(GetSession()));
|
|
} catch (Exception ex) {
|
|
return Content(ex.Message);
|
|
}
|
|
|
|
return Content("Successfully Saved");
|
|
}
|
|
|
|
public JsonResult GetBaseFlowLocations(string baseFlow) {
|
|
List<BaseFlowLocation> loclist = LotTravDMO.GetBaseFlowLocations(baseFlow);
|
|
return GetJsonResult(loclist);
|
|
}
|
|
|
|
public JsonResult GetMaterialRecord(int materialID) {
|
|
LTMaterial ltMaterial = LotTravDMO.GetMaterialRecord(materialID);
|
|
return GetJsonResult(ltMaterial);
|
|
}
|
|
|
|
public JsonResult GetBaseFlowOperations(string baseFlow, string location) {
|
|
List<BaseFlowOperations> operationslist = LotTravDMO.GetBaseFlowOperations(baseFlow, location);
|
|
return GetJsonResult(operationslist);
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult GetMaterialDetails([DataSourceRequest] DataSourceRequest request, int workRequestID) {
|
|
return Json(LotTravDMO.GetMaterialDetails(workRequestID).ToDataSourceResult(request));
|
|
}
|
|
|
|
#endif
|
|
|
|
public JsonResult GetPartNumbers() {
|
|
List<PartNumberAttrib> operationslist = LotTravDMO.GetPartNumbers();
|
|
return GetJsonResult(operationslist);
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult InsertMaterialDetail([DataSourceRequest] DataSourceRequest request, LTMaterialViewModel model) {
|
|
try {
|
|
bool s = GlobalVars.GetCreateNewRevision(GetSession());
|
|
if (model != null && ModelState.IsValid) {
|
|
LotTravDMO.InsertMaterialDetail(model, GlobalVars.GetUserId(GetSession()));
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
} catch (Exception ex) {
|
|
return this.Json(new DataSourceResult {
|
|
Errors = ex.Message
|
|
});
|
|
}
|
|
}
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult UpdateMaterialDetail([DataSourceRequest] DataSourceRequest request, LTMaterialViewModel model) {
|
|
try {
|
|
if (model != null && ModelState.IsValid) {
|
|
LotTravDMO.UpdateMaterialDetail(model, GlobalVars.GetUserId(GetSession()));
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
} catch (Exception ex) {
|
|
return this.Json(new DataSourceResult {
|
|
Errors = ex.Message
|
|
});
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult AddMaterialDetailRevision(LTWorkRequest model) {
|
|
var modelMaterialDetail = model.LTMaterial;
|
|
int previousMaterialID = model.LTMaterial.ID;
|
|
int newWorkRequestID = model.ID;
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
modelMaterialDetail.LTWorkRequestID = newWorkRequestID;
|
|
|
|
// Any update will be a new entry
|
|
LotTravDMO.InsertMaterialDetail(modelMaterialDetail, GlobalVars.GetUserId(GetSession()));
|
|
// TODO
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
} else {
|
|
if (modelMaterialDetail != null && ModelState.IsValid) {
|
|
LotTravDMO.InsertMaterialDetail(modelMaterialDetail, GlobalVars.GetUserId(GetSession()));
|
|
}
|
|
}
|
|
|
|
return Content(newWorkRequestID.ToString());
|
|
}
|
|
|
|
public ActionResult UpdateMaterialDetailRevision(LTWorkRequest model) {
|
|
var modelMaterialDetail = model.LTMaterial;
|
|
int previousMaterialID = model.LTMaterial.ID;
|
|
int newWorkRequestID = model.ID;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
modelMaterialDetail.LTWorkRequestID = newWorkRequestID;
|
|
|
|
// Any update will be a new entry
|
|
LotTravDMO.UpdateMaterialDetailRevision(modelMaterialDetail, previousMaterialID);
|
|
// TODO
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
} else {
|
|
if (modelMaterialDetail != null && ModelState.IsValid) {
|
|
LotTravDMO.UpdateMaterialDetail(modelMaterialDetail, GlobalVars.GetUserId(GetSession()));
|
|
}
|
|
}
|
|
|
|
return Content(newWorkRequestID.ToString());
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult DeleteMaterialDetail([DataSourceRequest] DataSourceRequest request, LTMaterialViewModel model) {
|
|
try {
|
|
if (model != null && ModelState.IsValid) {
|
|
LotTravDMO.DeleteMaterialDetail(model.ID);
|
|
|
|
}
|
|
} catch (Exception e) {
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult DeleteMaterialDetailRevision(LTWorkRequest model) {
|
|
var modelMaterialDetail = model.LTMaterial;
|
|
int newWorkRequestID = model.ID;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
modelMaterialDetail.LTWorkRequestID = newWorkRequestID;
|
|
|
|
// Any update will be a new entry
|
|
LotTravDMO.DeleteMaterialDetailRevision(modelMaterialDetail.ID);
|
|
// TODO
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
} else {
|
|
if (modelMaterialDetail != null && ModelState.IsValid) {
|
|
LotTravDMO.DeleteMaterialDetail(modelMaterialDetail.ID);
|
|
}
|
|
}
|
|
|
|
return Content(newWorkRequestID.ToString());
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult GetHoldSteps([DataSourceRequest] DataSourceRequest request, int workRequestID) {
|
|
return Json(LotTravDMO.GetHoldSteps(workRequestID).ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult InsertHoldStep([DataSourceRequest] DataSourceRequest request, LTHoldStep model) {
|
|
if (model != null && ModelState.IsValid) {
|
|
model.UpdatedBy = GlobalVars.GetUserId(GetSession());
|
|
LotTravDMO.InsertHoldStep(model);
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult UpdateHoldStepRevision(LTWorkRequest model) {
|
|
var holdStepModel = model.LTHoldStep;
|
|
int newWorkRequestID = model.ID;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
holdStepModel.LTWorkRequestID = newWorkRequestID;
|
|
|
|
// Any update will be a new entry
|
|
LotTravDMO.UpdateHoldStepRevision(holdStepModel);
|
|
// TODO
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
} else {
|
|
if (holdStepModel != null && ModelState.IsValid) {
|
|
holdStepModel.UpdatedBy = GlobalVars.GetUserId(GetSession());
|
|
LotTravDMO.UpdateHoldStep(holdStepModel);
|
|
}
|
|
}
|
|
|
|
return Content(newWorkRequestID.ToString());
|
|
}
|
|
|
|
public ActionResult InsertHoldStepRevision(LTWorkRequest model) {
|
|
var holdStepModel = model.LTHoldStep;
|
|
int newWorkRequestID = model.ID;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
holdStepModel.LTWorkRequestID = newWorkRequestID;
|
|
|
|
// Any update will be a new entry
|
|
LotTravDMO.InsertHoldStepRevision(holdStepModel);
|
|
// TODO
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
} else {
|
|
if (holdStepModel != null && ModelState.IsValid) {
|
|
holdStepModel.UpdatedBy = GlobalVars.GetUserId(GetSession());
|
|
LotTravDMO.InsertHoldStep(holdStepModel);
|
|
}
|
|
}
|
|
|
|
return Content(newWorkRequestID.ToString());
|
|
}
|
|
|
|
public ActionResult DeleteHoldStepRevision(LTWorkRequest model) {
|
|
var holdStepModel = model.LTHoldStep;
|
|
int newWorkRequestID = model.ID;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
holdStepModel.LTWorkRequestID = newWorkRequestID;
|
|
|
|
// Any update will be a new entry
|
|
LotTravDMO.DeleteHoldStepRevision(holdStepModel.ID);
|
|
// TODO
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
} else {
|
|
if (holdStepModel != null && ModelState.IsValid) {
|
|
|
|
LotTravDMO.DeleteHoldStep(holdStepModel.ID, GlobalVars.GetUserId(GetSession()));
|
|
}
|
|
}
|
|
|
|
return Content(newWorkRequestID.ToString());
|
|
}
|
|
|
|
public void UpdateHoldStep(LTHoldStep model) {
|
|
if (model != null && ModelState.IsValid) {
|
|
LotTravDMO.UpdateHoldStep(model);
|
|
}
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult DeleteHoldStep([DataSourceRequest] DataSourceRequest request, LTHoldStep model) {
|
|
try {
|
|
if (model != null && ModelState.IsValid) {
|
|
LotTravDMO.DeleteHoldStep(model.ID, GlobalVars.GetUserId(GetSession()));
|
|
|
|
}
|
|
} catch (Exception ex) {
|
|
return this.Json(new DataSourceResult {
|
|
Errors = ex.Message
|
|
});
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult GetHoldStep(int holdStepID) {
|
|
LTHoldStep model = new();
|
|
model = LotTravDMO.GetHoldStep(holdStepID);
|
|
|
|
return PartialView("_HoldStepAttachments", model);
|
|
}
|
|
|
|
public ActionResult GetHoldStepRevision(int holdStepID) {
|
|
LTHoldStep model = new();
|
|
model = LotTravDMO.GetHoldStep(holdStepID);
|
|
|
|
return PartialView("_HoldStepAttachmentsRevision", model);
|
|
}
|
|
|
|
public ActionResult GetLotTravHoldStepRevision(int ltHoldStepID) {
|
|
LTLotTravelerHoldSteps model = new();
|
|
model = LotTravDMO.GetLotTravHoldStep(ltHoldStepID);
|
|
return PartialView("_LotTravHoldStepAttachRev", model);
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult GetHoldStepAttachments([DataSourceRequest] DataSourceRequest request, int holdStepID) {
|
|
return Json(LotTravDMO.GetHoldStepAttachemnts(holdStepID).ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult GetLTHoldStepAttachments([DataSourceRequest] DataSourceRequest request, int ltHoldStepID) {
|
|
return Json(LotTravDMO.GetLotTravHoldStepAttachemnts(ltHoldStepID).ToDataSourceResult(request));
|
|
}
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult DeleteHoldStepAttachment([DataSourceRequest] DataSourceRequest request, LTWorkRequestAttachment model) {
|
|
try {
|
|
if (model != null && ModelState.IsValid) {
|
|
LotTravDMO.DeleteWorkRequestAttachment(model.ID);
|
|
|
|
}
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Delete =" + model.ID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n AttachmentID Work Request\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { UserID = GetUserIdentityName(), OperationType = "Error", Comments = exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
public ActionResult GetWorkRequestAttachments([DataSourceRequest] DataSourceRequest request, int workRequestID) {
|
|
return Json(LotTravDMO.GetWorkRequestAttachments(workRequestID).ToDataSourceResult(request));
|
|
}
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult UpdateWorkRequestAttachment([DataSourceRequest] DataSourceRequest request, LTWorkRequestAttachment model) {
|
|
if (model != null && ModelState.IsValid) {
|
|
LotTravDMO.UpdateWorkRequestAttachment(model);
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult UpdateWorkRequestAttachmentRevision(LTWorkRequest model) {
|
|
var wrAttachmentDetail = model.WorkRequestAttachment;
|
|
int previousWorkRequestAttachmentID = model.WorkRequestAttachment.ID;
|
|
int newWorkRequestID = model.ID;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
wrAttachmentDetail.WorkRequestID = newWorkRequestID;
|
|
|
|
// Any update will be a new entry
|
|
LotTravDMO.UpdateWorkRequestAttachmentRevision(wrAttachmentDetail, previousWorkRequestAttachmentID);
|
|
// TODO
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
} else {
|
|
if (wrAttachmentDetail != null && ModelState.IsValid) {
|
|
LotTravDMO.UpdateWorkRequestAttachment(wrAttachmentDetail);
|
|
}
|
|
}
|
|
|
|
return Content(newWorkRequestID.ToString());
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult DeleteWorkRequestAttachment([DataSourceRequest] DataSourceRequest request, LTWorkRequestAttachment model) {
|
|
try {
|
|
if (model != null && ModelState.IsValid) {
|
|
LotTravDMO.DeleteWorkRequestAttachment(model.ID);
|
|
|
|
}
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Delete =" + model.ID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n AttachmentID WorkRequiest\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { UserID = GetUserIdentityName(), OperationType = "Error", Comments = exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult DeleteWorkRequestAttachmentRevision(LTWorkRequest model) {
|
|
var wrAttachmentDetail = model.WorkRequestAttachment;
|
|
int previousWorkRequestAttachmentID = model.WorkRequestAttachment.ID;
|
|
int newWorkRequestID = model.ID;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
wrAttachmentDetail.WorkRequestID = newWorkRequestID;
|
|
|
|
// Any update will be a new entry
|
|
LotTravDMO.DeleteWorkRequestAttachmentRevision(wrAttachmentDetail.ID);
|
|
// TODO
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
} else {
|
|
if (wrAttachmentDetail != null && ModelState.IsValid) {
|
|
LotTravDMO.DeleteWorkRequestAttachment(wrAttachmentDetail.ID);
|
|
}
|
|
}
|
|
|
|
return Content(newWorkRequestID.ToString());
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult AttachSaveWorkRequest(IEnumerable<HttpPostedFileBase> files, int workRequestID, int currentRevision, int swrNo, string comments, string docType) {
|
|
// The Name of the Upload component is "files"
|
|
if (files != null) {
|
|
int userId = GlobalVars.GetUserId(GetSession());
|
|
foreach (var file in files) {
|
|
LotTravelerHelper.AttachSaveWorkRequest(_AppSettings, LotTravDMO, workRequestID, swrNo, comments, docType, userId, file.FileName, file.InputStream);
|
|
}
|
|
}
|
|
return Content("");
|
|
}
|
|
|
|
public ActionResult AttachSaveWorkRequestRevision(IEnumerable<HttpPostedFileBase> files, int workRequestID, int currentRevision, int swrNo, string revComments, string docType, string attachComments) {
|
|
bool newRevision = false;
|
|
int newWorkRequestID = -1;
|
|
int isITARCompliant = 1;
|
|
LTWorkRequest model = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
model.RevisionComments = revComments;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
newRevision = true;
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
|
|
// Send email to the Originator and Group of People
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
}
|
|
|
|
// The Name of the Upload component is "files"
|
|
if (files != null) {
|
|
int userId = GlobalVars.GetUserId(GetSession());
|
|
foreach (var file in files) {
|
|
LotTravelerHelper.AttachSaveWorkRequestRevision(_AppSettings, LotTravDMO, workRequestID, swrNo, docType, attachComments, newRevision, userId, file.FileName, file.InputStream);
|
|
}
|
|
}
|
|
return Content("");
|
|
}
|
|
|
|
public ActionResult HoldStepAttachSave(IEnumerable<HttpPostedFileBase> HoldStepAttachment, int holdStepID, int currentRevision, int swrNo, string docType, string comments) {
|
|
// The Name of the Upload component is "files"
|
|
try {
|
|
if (HoldStepAttachment != null) {
|
|
int userId = GlobalVars.GetUserId(GetSession());
|
|
foreach (var file in HoldStepAttachment) {
|
|
LotTravelerHelper.HoldStepAttachSave(_AppSettings, LotTravDMO, holdStepID, swrNo, docType, comments, userId, file.FileName, file.InputStream);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "HoldStep=" + holdStepID.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n Approve\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = holdStepID, UserID = GetUserIdentityName(), DocumentType = docTypeString, OperationType = "Error", Comments = "HoldStep Attachment - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
return Content("");
|
|
}
|
|
|
|
public ActionResult HoldStepAttachSaveRev(IEnumerable<HttpPostedFileBase> HoldStepAttachment, int workRequestID, int holdStepID, int currentRevision, int swrNo, string docType, string comments, string revComments) {
|
|
// The Name of the Upload component is "files"
|
|
bool newRevision = false;
|
|
int newWorkRequestID = -1;
|
|
int isITARCompliant = 1;
|
|
LTWorkRequest model = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
model.RevisionComments = revComments;
|
|
|
|
if (GlobalVars.GetCreateNewRevision(GetSession())) {
|
|
newRevision = true;
|
|
GlobalVars.SetCreateNewRevision(GetSession(), false);
|
|
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
|
|
NotifyfWorkRequestRevisionChange(newWorkRequestID);
|
|
}
|
|
|
|
try {
|
|
if (HoldStepAttachment != null) {
|
|
int userId = GlobalVars.GetUserId(GetSession());
|
|
foreach (var file in HoldStepAttachment) {
|
|
LotTravelerHelper.HoldStepAttachSaveRev(_AppSettings, LotTravDMO, holdStepID, swrNo, docType, comments, newRevision, userId, file.FileName, file.InputStream);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "HoldStep=" + holdStepID.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n Approve\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = holdStepID, UserID = GetUserIdentityName(), DocumentType = docTypeString, OperationType = "Error", Comments = "HoldStep Attachment - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
return Content("");
|
|
}
|
|
|
|
#endif
|
|
|
|
public int GetRevisedWrkReqIDFromHoldStepID(int prevHoldStepID) {
|
|
return LotTravDMO.GetRevisedWrkReqIDFromHoldStepID(prevHoldStepID);
|
|
}
|
|
|
|
public int GetRevisedWrkReqIDFromPreviousWrkReqID(int prevWorkRequestID) {
|
|
return LotTravDMO.GetRevisedWrkReqIDFromPreviousWrkReqID(prevWorkRequestID);
|
|
}
|
|
|
|
public JsonResult GetWorkRequestAttachDetail(int wrAttachmentID) {
|
|
LTWorkRequestAttachment data = LotTravDMO.GetWorkRequestAttachDetail(wrAttachmentID);
|
|
return GetJsonResult(data);
|
|
}
|
|
|
|
public ActionResult SubmitDocument(int workRequestID, int documentType) {
|
|
int isITARCompliant = 1;
|
|
LTWorkRequest ltWR = new();
|
|
try {
|
|
int appoverCount = LotTravDMO.SubmitDocument(workRequestID, GlobalVars.GetUserId(GetSession()), documentType, out isITARCompliant);
|
|
if (isITARCompliant == 0) // not ITAR Compliant
|
|
{
|
|
return View("UnAuthorizedAccess");
|
|
} else {
|
|
if (appoverCount > 0) {
|
|
NotifyApprovers(workRequestID, (byte)GlobalVars.WorkFLowStepNumber.Step1, documentType);
|
|
} else {
|
|
// automaically approve current step (Step 1) beacuase there are no approvers in step 1 and move to the next step of approval
|
|
Approve(workRequestID, (byte)GlobalVars.WorkFLowStepNumber.Step1, "", documentType); // this is the Submit Level Approval
|
|
|
|
}
|
|
|
|
ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
|
|
List<ApproversListViewModel> userList = MiscDMO.GetPendingApproversListByDocument(workRequestID, ltWR.CurrentStep, documentType);
|
|
ApproversListViewModel approver = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == GlobalVars.GetUserId(GetSession()); });
|
|
if (approver == null)
|
|
ViewBag.IsApprover = "false";
|
|
else
|
|
ViewBag.IsApprover = "true";
|
|
|
|
if (GlobalVars.GetUserId(GetSession()) == ltWR.OriginatorID)
|
|
ViewBag.IsOriginator = "true";
|
|
else
|
|
ViewBag.IsOriginator = "false";
|
|
|
|
if (IsAjaxRequest()) {
|
|
return Content("Redirect");
|
|
} else {
|
|
return Content("Invalid");
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + workRequestID.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n SubmitDocument\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = docTypeString, OperationType = "Error", Comments = "SubmitDocument - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public void Approve(int workRequestID, byte currentStep, string comments, int documentType) {
|
|
LTWorkRequest ltWR = new();
|
|
int isITAR = 1;
|
|
ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITAR, GlobalVars.GetUserId(GetSession()));
|
|
try {
|
|
bool lastStep = false;
|
|
bool lastApprover = wfDMO.Approve(_AppSettings, workRequestID, currentStep, comments, out lastStep, GlobalVars.GetUserId(GetSession()), documentType, ltWR.WorkFlowNumber);
|
|
|
|
while (lastApprover && !lastStep) {
|
|
currentStep++;
|
|
lastApprover = wfDMO.Approve(_AppSettings, workRequestID, currentStep, comments, out lastStep, GlobalVars.GetUserId(GetSession()), documentType, ltWR.WorkFlowNumber);
|
|
NotifyApprovers(workRequestID, currentStep, documentType);
|
|
}
|
|
|
|
if (lastApprover && lastStep) {
|
|
// Send email to the Originator and different groups
|
|
NotifyApprovalOfWorkRequest(workRequestID);
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + workRequestID.ToString() + " Step:" + currentStep + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n Approve\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Approve - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public void Reject(int workRequestID, byte currentStep, string comments, int docType) {
|
|
LTWorkRequest ltWR = new();
|
|
int isITARCompliant = 1;
|
|
ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
try {
|
|
if (GlobalVars.IsUserIdValueNotNull(GetSession())) {
|
|
wfDMO.Reject(workRequestID, currentStep, comments, GlobalVars.GetUserId(GetSession()), docType);
|
|
NotifyRejectionToOrginator(workRequestID);
|
|
} else {
|
|
Response.Redirect("~/Account/Login");
|
|
}
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + workRequestID.ToString() + " Step:" + currentStep + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n Reject\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Reject - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
public void NotifyRejectionToOrginator(int workRequestID) {
|
|
int isITARCompliant = 0;
|
|
string username = GlobalVars.GetUserName(GetSession());
|
|
List<string> emailIst = LotTravDMO.GetRejectionOrginatorEmailList(workRequestID).Distinct().ToList();
|
|
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
string userEmail = LotTravelerHelper.NotifyRejectionToOrginator(_AppSettings, GetUserIdentityName(), workRequestID, username, emailIst, ltWR);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Email", Comments = "Rejection: " + userEmail });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyApprovers(int workRequestID, byte currentStep, int documentType) {
|
|
string emailSentList = "";
|
|
int isITARCompliant = 0;
|
|
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
|
|
List<string> emailIst = MiscDMO.GetApproverEmailListByDocument(workRequestID, currentStep, documentType).Distinct().ToList();
|
|
emailSentList = LotTravelerHelper.NotifyApprovers(_AppSettings, GetUserIdentityName(), workRequestID, emailSentList, ltWR, emailIst);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Email", Comments = "Approvers for Step " + currentStep.ToString() + ":" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyApprovalOfWorkRequest(int workRequestID) {
|
|
string emailSentList = "";
|
|
int isITARCompliant = 0;
|
|
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
|
|
List<string> emailIst = MiscDMO.GetWorkRequestApprovedNotifyList((int)GlobalVars.NotificationType.WorkRequest, workRequestID, GlobalVars.GetUserId(GetSession())).Distinct().ToList();
|
|
emailSentList = LotTravelerHelper.NotifyApprovalOfWorkRequest(_AppSettings, GetUserIdentityName(), workRequestID, emailSentList, ltWR, emailIst);
|
|
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Email", Comments = "Approvers for WorkRequest: " + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyfWorkRequestRevisionChange(int workRequestID) {
|
|
string emailSentList = "";
|
|
int isITARCompliant = 0;
|
|
int currentUserID = GlobalVars.GetUserId(GetSession());
|
|
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, currentUserID);
|
|
|
|
List<string> emailIst = MiscDMO.GetWorkRequestRevisionNotifyList((int)GlobalVars.NotificationType.WorkRequest, workRequestID, currentUserID).Distinct().ToList();
|
|
emailSentList = LotTravelerHelper.NotifyfWorkRequestRevisionChange(_AppSettings, GetUserIdentityName(), workRequestID, emailSentList, ltWR, emailIst);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Email", Comments = "Work Request Revision Change for :" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyLotTravelerRevisionChange(int ltLotID, int revisionNumber) {
|
|
string emailSentList = "";
|
|
LTLotTravelerHeaderViewModel data = LotTravDMO.GetLotTravelerHeaderForReadOnly(ltLotID, revisionNumber);
|
|
int currentUserID = GlobalVars.GetUserId(GetSession());
|
|
List<string> emailIst = MiscDMO.GetLotTravelerCreationAndRevisionNotifyList(ltLotID, data.LTWorkRequestID, currentUserID).Distinct().ToList();
|
|
emailSentList = LotTravelerHelper.NotifyLotTravelerRevisionChange(_AppSettings, GetUserIdentityName(), emailSentList, data, emailIst);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = data.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Email", Comments = "Lot Traveler Revision Change Notification:" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public void NotifyLotTravelerCreation(int ltLotID, int revisionNumber) {
|
|
string emailSentList = "";
|
|
LTLotTravelerHeaderViewModel data = LotTravDMO.GetLotTravelerHeaderForReadOnly(ltLotID, revisionNumber);
|
|
int currentUserID = GlobalVars.GetUserId(GetSession());
|
|
List<string> emailIst = MiscDMO.GetLotTravelerCreationAndRevisionNotifyList(ltLotID, data.LTWorkRequestID, currentUserID).Distinct().ToList();
|
|
emailSentList = LotTravelerHelper.NotifyLotTravelerCreation(_AppSettings, GetUserIdentityName(), emailSentList, data, emailIst);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = data.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Email", Comments = "Lot Traveler Revision Change Notification:" + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult GetApproversList([DataSourceRequest] DataSourceRequest request, int workRequestID, byte step) {
|
|
return Json(MiscDMO.GetApproversListByDocument(workRequestID, step, (int)GlobalVars.DocumentType.LotTraveler).ToDataSourceResult(request));
|
|
}
|
|
|
|
#endif
|
|
|
|
public void ReleaseLockOnDocument(int workRequestID) {
|
|
LotTravDMO.ReleaseLockOnDocument(GlobalVars.GetUserId(GetSession()), workRequestID);
|
|
}
|
|
|
|
public void ReleaseLockOnLotTravelerUpdateDoc(int lotID) {
|
|
try {
|
|
LotTravDMO.ReleaseLockOnLotTravelerUpdateDoc(GlobalVars.GetUserId(GetSession()), lotID);
|
|
} catch {
|
|
// TODO
|
|
// unlock the current revision of the Lot traveler
|
|
LotTravDMO.ReleaseLockOnLotTravelerUpdateDoc(-1, lotID);
|
|
}
|
|
}
|
|
|
|
public JsonResult GetAllUsersList() {
|
|
UserAccountDMO userDMO = new();
|
|
IEnumerable<LoginModel> userlist = userDMO.GetAllUsers();
|
|
return GetJsonResult(userlist);
|
|
}
|
|
|
|
public void ReAssignApproverByAdmin(int workRequestID, int reAssignApproverFrom, int reAssignApproverTo, byte step, int docType) {
|
|
var email = "";
|
|
int isITARCompliant = 0;
|
|
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
try {
|
|
email = wfDMO.ReAssignApproval(workRequestID, reAssignApproverFrom, reAssignApproverTo, step, docType);
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + workRequestID.ToString() + " Step:" + step + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n ReAssignApproval\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Error", Comments = "ReAssignApproval - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
LotTravelerHelper.ReAssignApproverByAdmin(_AppSettings, GetUserIdentityName(), workRequestID, email, ltWR);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Email", Comments = "ReAssign Approver: " + email });
|
|
} catch { }
|
|
}
|
|
|
|
public void ReAssignApproval(int workRequestID, int userIDs, byte step, int docType) {
|
|
var email = "";
|
|
int isITARCompliant = 0;
|
|
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
try {
|
|
email = wfDMO.ReAssignApproval(workRequestID, GlobalVars.GetUserId(GetSession()), userIDs, step, docType);
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + workRequestID.ToString() + " Step:" + step + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n ReAssignApproval\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Error", Comments = "ReAssignApproval - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
LotTravelerHelper.ReAssignApproval(_AppSettings, GetUserIdentityName(), workRequestID, email, ltWR);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Email", Comments = "ReAssign Approver: " + email });
|
|
} catch { }
|
|
}
|
|
|
|
public void AddAdditionalApproval(int workRequestID, byte step, string userIDs, int docType) {
|
|
string emailSentList = "";
|
|
var emailArray = "";
|
|
int isITARCompliant = 0;
|
|
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, GlobalVars.GetUserId(GetSession()));
|
|
try {
|
|
emailArray = wfDMO.AddAdditionalApproval(workRequestID, userIDs, step, docType);
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + workRequestID.ToString() + " Step:" + step + " " + " Userid:" + userIDs + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n AddAdditionalApproval\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Error", Comments = "AddAdditionalApproval - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
emailSentList = LotTravelerHelper.AddAdditionalApproval(_AppSettings, GetUserIdentityName(), workRequestID, emailSentList, emailArray, ltWR);
|
|
try {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Email", Comments = "Additonal Approver: " + emailSentList });
|
|
} catch { }
|
|
}
|
|
|
|
public JsonResult AddLots(string lotNumbers, int workRequestID) {
|
|
IssueWithExistingLotsViewModel issueWEL = new();
|
|
try {
|
|
if (lotNumbers.Length > 0) {
|
|
string[] tempLots = lotNumbers.Split(new char[] { '~' });
|
|
foreach (string lotNumber in tempLots) {
|
|
LTLot l = new();
|
|
l.LotNumber = lotNumber;
|
|
l.WorkRequestID = workRequestID;
|
|
l.LotUploadedBy = GlobalVars.GetUserId(GetSession());
|
|
LotTravDMO.InsertLot(l);
|
|
if (l.WRWithExistingLot != 0) {
|
|
issueWEL.LotList += l.LotNumber + "~";
|
|
issueWEL.IssuesList += l.WRWithExistingLot.ToString() + "~";
|
|
}
|
|
}
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "IssueID=" + workRequestID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n AddLots Work Request\r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { UserID = GetUserIdentityName(), DocumentType = "Work Request", OperationType = "Error", Comments = exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
|
|
return GetJsonResult(issueWEL);
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public JsonResult SearchLots(string searchText, string searchBy) {
|
|
List<String> lotlist = MiscDMO.SearchLTLots(searchText, searchBy).Select(x => x.LotNumber).ToList<String>();
|
|
return GetJsonResult(lotlist);
|
|
}
|
|
|
|
public JsonResult SearchParts(string searchText) {
|
|
List<String> partList = MiscDMO.SearchLTParts(searchText.Trim()).Select(x => x.WIPPartData).ToList<String>();
|
|
return GetJsonResult(partList);
|
|
}
|
|
|
|
public ActionResult GetLotList([DataSourceRequest] DataSourceRequest request, int workRequestID) {
|
|
return Json(LotTravDMO.GetLotList(workRequestID).ToDataSourceResult(request));
|
|
}
|
|
|
|
#endif
|
|
|
|
public void CreateTaveler(int ltLotID, int workRequestID) {
|
|
try {
|
|
LotTravDMO.CreateTraveler(ltLotID, workRequestID, GlobalVars.GetUserId(GetSession()));
|
|
|
|
// Thread.Sleep(10000);
|
|
NotifyLotTravelerCreation(ltLotID, -1);
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = workRequestID, UserID = GetUserIdentityName(), DocumentType = "LotTraveler", OperationType = "CreateTaveler", Comments = ex.Message });
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public JsonResult GetLotTravelerHeader(int ltLotID) {
|
|
LTLotTravelerHeaderViewModel data = new LTLotTravelerHeaderViewModel();
|
|
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, GlobalVars.GetUserId(GetSession()));
|
|
return GetJsonResult(data);
|
|
}
|
|
|
|
public ActionResult GetLotTravRevisions(int ltLotID) {
|
|
return GetJsonResult(LotTravDMO.GetLotTravRevisions(ltLotID));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult DisplayLotTraveler(int ltLotID) {
|
|
LTLotTravelerHeaderViewModel data = new();
|
|
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, GlobalVars.GetUserId(GetSession()));
|
|
|
|
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
|
|
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
|
|
|
|
if (data.RecordLockIndicator && data.RecordLockedBy != GlobalVars.GetUserId(GetSession())) {
|
|
// redirect to a readonly Lot Travler
|
|
return Content("Readonly" + "~" + data.LotTravCurrentRevision.ToString());
|
|
} else
|
|
return Content("Update");
|
|
}
|
|
|
|
public ActionResult LotTravelerUpdate(int ltLotID) {
|
|
|
|
LTLotTravelerHeaderViewModel data = new();
|
|
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, GlobalVars.GetUserId(GetSession()));
|
|
|
|
if (data.TravelerClosedDate != null) {
|
|
return RedirectToAction("LotTravelerReadOnly", new { ltLotID = ltLotID, revisionNumber = -1 });
|
|
}
|
|
|
|
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
|
|
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
|
|
|
|
GlobalVars.SetCreateLotTravNewRevision(GetSession(), true);
|
|
return View(data);
|
|
}
|
|
|
|
public ActionResult LotTravelerReadonly(int ltLotID, int revisionNumber) {
|
|
LTLotTravelerHeaderViewModel data = new();
|
|
data = LotTravDMO.GetLotTravelerHeaderForReadOnly(ltLotID, revisionNumber);
|
|
|
|
if (data.IsCurrentRevision && (!data.RecordLockIndicator)) {
|
|
return RedirectToAction("LotTravelerUpdate", new { ltLotID = ltLotID });
|
|
}
|
|
|
|
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
|
|
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
|
|
return View(data);
|
|
}
|
|
|
|
public ActionResult DisplayLotTravelerForExecute(int ltLotID) {
|
|
LTLotTravelerHeaderViewModel data = new();
|
|
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, GlobalVars.GetUserId(GetSession()));
|
|
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
|
|
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
|
|
|
|
if (data.RecordLockIndicator && data.RecordLockedBy != GlobalVars.GetUserId(GetSession())) {
|
|
// redirect to a readonly Lot Travler
|
|
return Content("Readonly" + "~" + data.LotTravCurrentRevision.ToString());
|
|
} else
|
|
return Content("Execute");
|
|
}
|
|
|
|
public ActionResult LotTravelerExecute(int ltLotID) {
|
|
LTLotTravelerHeaderViewModel data = new();
|
|
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, GlobalVars.GetUserId(GetSession()));
|
|
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
|
|
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
|
|
|
|
return View(data);
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult GetLotTravHoldSteps([DataSourceRequest] DataSourceRequest request, int LotID) {
|
|
return Json(LotTravDMO.GetLotTravHoldSteps(LotID).ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult GetLotTravHoldStepsPending([DataSourceRequest] DataSourceRequest request, int LotID) {
|
|
return Json(LotTravDMO.GetLotTravHoldStepsPending(LotID).ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult GetLotTravHoldStepsCompleted([DataSourceRequest] DataSourceRequest request, int LotID) {
|
|
return Json(LotTravDMO.GetLotTravHoldStepsCompleted(LotID).ToDataSourceResult(request));
|
|
}
|
|
|
|
#endif
|
|
|
|
public void UpdateLotTravlerExecution(int currentHoldStepID, string taskComments, bool taskcompleted) {
|
|
LotTravDMO.UpdateLotTravlerExecution(currentHoldStepID, taskComments, taskcompleted, GlobalVars.GetUserId(GetSession()));
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult GetLotTravHoldStepsByRevision([DataSourceRequest] DataSourceRequest request, int LotID, int revisionNumber) {
|
|
return Json(LotTravDMO.GetLotTravelerHolStepsByRevision(LotID, revisionNumber).ToDataSourceResult(request));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult UpdateLotTravHoldStepRevision(LTLotTravelerHoldSteps ltHoldStepObj) {
|
|
int prevLotTravRevID = ltHoldStepObj.LotTravelerRevisionID;
|
|
int newLotTravRevID = 1;
|
|
try {
|
|
if (GlobalVars.GetCreateLotTravNewRevision(GetSession())) {
|
|
// Create a new Revision
|
|
GlobalVars.SetCreateLotTravNewRevision(GetSession(), false);
|
|
newLotTravRevID = LotTravDMO.CreateLotTravelerRevision(ltHoldStepObj, GlobalVars.GetUserId(GetSession()));
|
|
|
|
try {
|
|
|
|
LotTravDMO.UpdateRevisedLotTravelerHoldStep(ltHoldStepObj, GlobalVars.GetUserId(GetSession()));
|
|
} catch {
|
|
|
|
LotTravDMO.RestoreLotTravToPrevRevision(prevLotTravRevID, newLotTravRevID);
|
|
throw new Exception("There was a problem while creating the revision, Please try againm,. \n If the problem persist please contact the Site Administrator");
|
|
}
|
|
|
|
// send a notification
|
|
// - 1 indicates to return the current revision
|
|
NotifyLotTravelerRevisionChange(ltHoldStepObj.LTLotID, -1);
|
|
} else {
|
|
int result = LotTravDMO.UpdateLotTravelerHoldStep(ltHoldStepObj, GlobalVars.GetUserId(GetSession()));
|
|
if (result == -1) {
|
|
throw new Exception("Cannot add the Hold Step as the step has already been passed in the Mfg Process.");
|
|
}
|
|
}
|
|
} catch (Exception ex) {
|
|
return Content(ex.Message);
|
|
}
|
|
|
|
return Content(GlobalVars.SUCCESS);
|
|
}
|
|
|
|
public ActionResult InsertLotTravHoldStepRevision(LTLotTravelerHoldSteps ltHoldStepObj) {
|
|
int prevLotTravRevID = ltHoldStepObj.LotTravelerRevisionID;
|
|
int newLotTravRevID = -1;
|
|
try {
|
|
if (GlobalVars.GetCreateLotTravNewRevision(GetSession())) {
|
|
// Create a new Revision
|
|
GlobalVars.SetCreateLotTravNewRevision(GetSession(), false);
|
|
|
|
int result = LotTravDMO.CanAddLocationOperation(ltHoldStepObj);
|
|
if (result == -1) {
|
|
GlobalVars.SetCreateLotTravNewRevision(GetSession(), true);
|
|
throw new Exception("Cannot add the Hold Step as the step has already been passed in the Mfg Process.");
|
|
}
|
|
newLotTravRevID = LotTravDMO.CreateLotTravelerRevision(ltHoldStepObj, GlobalVars.GetUserId(GetSession()));
|
|
ltHoldStepObj.LotTravelerRevisionID = newLotTravRevID;
|
|
|
|
try {
|
|
|
|
LotTravDMO.InsertLotTravelerHoldStep(ltHoldStepObj, GlobalVars.GetUserId(GetSession()));
|
|
} catch {
|
|
// roll back the revision creation
|
|
LotTravDMO.RestoreLotTravToPrevRevision(prevLotTravRevID, newLotTravRevID);
|
|
throw new Exception("There was a problem while creating the revision, Please logout and log back and then retry. \n If the problem persist please contact the Site Administrator");
|
|
}
|
|
|
|
// send a notification
|
|
// - 1 indicates to return the current revision
|
|
NotifyLotTravelerRevisionChange(ltHoldStepObj.LTLotID, -1);
|
|
|
|
} else {
|
|
int result = LotTravDMO.InsertLotTravelerHoldStep(ltHoldStepObj, GlobalVars.GetUserId(GetSession()));
|
|
if (result == -1) {
|
|
throw new Exception("Cannot add the Hold Step as the step has already been passed in the Mfg Process.");
|
|
}
|
|
}
|
|
} catch (Exception ex) {
|
|
return Content(ex.Message);
|
|
}
|
|
|
|
return Content(GlobalVars.SUCCESS);
|
|
}
|
|
|
|
public ActionResult DeleteLotTravHoldStepRevision(LTLotTravelerHoldSteps ltHoldStepObj) {
|
|
int prevLotTravRevID = ltHoldStepObj.LotTravelerRevisionID;
|
|
int newLotTravRevID = -1;
|
|
try {
|
|
if (GlobalVars.GetCreateLotTravNewRevision(GetSession())) {
|
|
// Create a new Revision
|
|
GlobalVars.SetCreateLotTravNewRevision(GetSession(), false);
|
|
newLotTravRevID = LotTravDMO.CreateLotTravelerRevision(ltHoldStepObj, GlobalVars.GetUserId(GetSession()));
|
|
|
|
try {
|
|
LotTravDMO.DeleteLotTravHoldStepRevision(ltHoldStepObj.ID);
|
|
} catch {
|
|
// roll back the revision creation
|
|
LotTravDMO.RestoreLotTravToPrevRevision(prevLotTravRevID, newLotTravRevID);
|
|
throw new Exception("There was a problem while creating the revision, Please logout and log back and then retry. \n If the problem persist please contact the Site Administrator");
|
|
}
|
|
|
|
// send a notification
|
|
// - 1 indicates to return the current revision
|
|
NotifyLotTravelerRevisionChange(ltHoldStepObj.LTLotID, -1);
|
|
} else {
|
|
LotTravDMO.DeleteLotTravHoldStep(ltHoldStepObj.ID);
|
|
}
|
|
} catch (Exception ex) {
|
|
return Content(ex.Message);
|
|
}
|
|
|
|
return Content(GlobalVars.SUCCESS);
|
|
}
|
|
|
|
public void DeleteLot(int ltLotID) {
|
|
LotTravDMO.DeleteLot(ltLotID);
|
|
}
|
|
|
|
public ActionResult DisplayLotTravlerPdf(int ltLotID, int revisionNumber) {
|
|
LotTravelerPdf traveler = new();
|
|
try {
|
|
traveler = LotTravDMO.GetLotTravlerPdf(ltLotID, revisionNumber);
|
|
|
|
string pageTitle = string.Empty;
|
|
string htmlText = RenderViewToString("LotTravelerPDF", traveler);
|
|
if (Debugger.IsAttached) {
|
|
return Content(htmlText, "text/html");
|
|
} else {
|
|
byte[] buffer = StandardPdfRenderer.GetPortableDocumentFormatBytes(pageTitle, htmlText);
|
|
return new BinaryContentResult(buffer, "application/pdf");
|
|
}
|
|
} catch (Exception ex) {
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = traveler.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "LotTraveler", OperationType = "Generate PDF", Comments = ex.Message });
|
|
traveler = null;
|
|
return Content("");
|
|
}
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult ApprovalLogHistory_Read([DataSourceRequest] DataSourceRequest request, int swrNumber) {
|
|
return GetJsonResult(LotTravDMO.GetWorkReqApprovalLogHistory(swrNumber).ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult GetWorkRequestRevisionHistory([DataSourceRequest] DataSourceRequest request, int swrNumber) {
|
|
return GetJsonResult(LotTravDMO.GetWorkReqRevisionHistory(swrNumber).ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult GetLotTravelerRevisionHistory([DataSourceRequest] DataSourceRequest request, int lotID) {
|
|
return GetJsonResult(LotTravDMO.GetLotTravelerRevisionHistory(lotID).ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult LotTravHoldStepAttachSaveRev(IEnumerable<HttpPostedFileBase> LotTravHoldStepAttachment, int ltHoldStepID, int swrNo, string docType, string revComments) {
|
|
// The Name of the Upload component is "files"
|
|
|
|
int prevLotTravRevID = -1;
|
|
int newLotTravRevID = -1;
|
|
|
|
bool newRevision = false;
|
|
LTLotTravelerHoldSteps model = LotTravDMO.GetLotTravHoldStep(ltHoldStepID);
|
|
prevLotTravRevID = model.LotTravelerRevisionID;
|
|
|
|
model.RevisionComments = revComments;
|
|
|
|
if (GlobalVars.GetCreateLotTravNewRevision(GetSession())) {
|
|
// Create a new Revision
|
|
newRevision = true;
|
|
GlobalVars.SetCreateLotTravNewRevision(GetSession(), false);
|
|
newLotTravRevID = LotTravDMO.CreateLotTravelerRevision(model, GlobalVars.GetUserId(GetSession()));
|
|
model.LotTravelerRevisionID = newLotTravRevID;
|
|
}
|
|
|
|
try {
|
|
if (LotTravHoldStepAttachment != null) {
|
|
int userId = GlobalVars.GetUserId(GetSession());
|
|
foreach (var file in LotTravHoldStepAttachment) {
|
|
LotTravelerHelper.LotTravHoldStepAttachSaveRev(_AppSettings, LotTravDMO, ltHoldStepID, swrNo, docType, prevLotTravRevID, newLotTravRevID, newRevision, userId, file.FileName, file.InputStream);
|
|
}
|
|
|
|
// send a notification
|
|
// - 1 indicates to return the current revision
|
|
if (newRevision) {
|
|
NotifyLotTravelerRevisionChange(model.LTLotID, -1);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "LotTravHoldStep=" + ltHoldStepID.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n Attachment \r\n" + e.Message.ToString(), EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = ltHoldStepID, UserID = GetUserIdentityName(), DocumentType = docTypeString, OperationType = "Error", Comments = "Lot Traveler HoldStep Attachment - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
return Content("");
|
|
}
|
|
|
|
#endif
|
|
|
|
public bool IsWorkRequestDocLockedByUser(int workRequestID) {
|
|
int result = LotTravDMO.IsWorkRequestDocLockedByUser(workRequestID, GlobalVars.GetUserId(GetSession()));
|
|
if (result == 0)
|
|
return false;
|
|
else
|
|
return true;
|
|
}
|
|
|
|
public ActionResult CloseTraveler(int ltLotID, string reason) {
|
|
int result = LotTravDMO.CloseTraveler(ltLotID, GlobalVars.GetUserId(GetSession()), reason);
|
|
|
|
if (result == 1)
|
|
return Content("C");
|
|
else
|
|
return Content("O");
|
|
}
|
|
|
|
public FileResult DownloadFile(string fileGuid, string swrNumber, int typeOfDoc) {
|
|
string fileName = LotTravDMO.GetFileName(fileGuid, typeOfDoc);
|
|
|
|
string fileExtension = fileName.Substring(fileName.LastIndexOf("."), fileName.Length - fileName.LastIndexOf("."));
|
|
|
|
string ecnFolderPath = _AppSettings.AttachmentFolder + "LotTraveler\\" + swrNumber.ToString();
|
|
var sDocument = Path.Combine(ecnFolderPath, fileGuid + fileExtension);
|
|
|
|
var FDir_AppData = _AppSettings.AttachmentFolder;
|
|
if (!sDocument.StartsWith(FDir_AppData)) {
|
|
// Ensure that we are serving file only inside the Fab2ApprovalAttachments folder
|
|
// and block requests outside like "../web.config"
|
|
throw new HttpException(403, "Forbidden");
|
|
}
|
|
|
|
if (!System.IO.File.Exists(sDocument)) {
|
|
return null;
|
|
}
|
|
|
|
return File(sDocument, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
|
|
}
|
|
|
|
[HttpPost]
|
|
public void ReAssignOriginatorByAdmin(int workRequestID, string comments, int newOriginatorId) {
|
|
if (GlobalVars.IsAdminValueNull(GetSession()))
|
|
throw new Exception("Permission denied");
|
|
|
|
try {
|
|
LotTravDMO.ReassignOriginator(workRequestID, newOriginatorId, comments, GlobalVars.GetUserId(GetSession()));
|
|
} catch (Exception e) {
|
|
string detailedException = "";
|
|
try {
|
|
detailedException = e.InnerException.ToString();
|
|
} catch {
|
|
detailedException = e.Message;
|
|
}
|
|
string exceptionString = e.Message.ToString().Trim();
|
|
if (exceptionString.Length > 450)
|
|
exceptionString = exceptionString.Substring(0, 450);
|
|
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n ReAssignOriginatorByAdmin\r\n" + workRequestID.ToString() + "\r\n" + detailedException, EventLogEntryType.Error);
|
|
EventLogDMO.Add(new WinEventLog() { IssueID = workRequestID, UserID = GetUserIdentityName(), DocumentType = "Lot Traveler", OperationType = "Error", Comments = "ReAssignOriginatorByAdmin - " + exceptionString });
|
|
throw new Exception(e.Message);
|
|
}
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
private System.Web.HttpSessionStateBase GetSession() =>
|
|
Session;
|
|
|
|
private JsonResult GetJsonResult(object? data) =>
|
|
Json(data, JsonRequestBehavior.AllowGet);
|
|
|
|
private bool IsAjaxRequest() =>
|
|
Request.IsAjaxRequest();
|
|
|
|
#endif
|
|
|
|
#if NET8
|
|
|
|
private Microsoft.AspNetCore.Http.ISession GetSession() =>
|
|
HttpContext.Session;
|
|
|
|
private JsonResult GetJsonResult(object? data) =>
|
|
Json(data);
|
|
|
|
private bool IsAjaxRequest() =>
|
|
Request.Headers.TryGetValue("X-Requested-With", out Microsoft.Extensions.Primitives.StringValues strings) && strings[0] == "XMLHttpRequest";
|
|
|
|
#endif
|
|
|
|
private string GetUserIdentityName() =>
|
|
@User.Identity.Name;
|
|
|
|
} |