using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Fab2ApprovalSystem.ViewModels;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using System.IO;
using System.Configuration;
using Fab2ApprovalSystem.PdfGenerator;
using System.Threading;
namespace Fab2ApprovalSystem.Controllers
{
[Authorize]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
[SessionExpireFilter]
public class LotTravelerController : PdfViewController
{
//
string docTypeString = "LotTraveler";
LotTravelerDMO LotTravDMO = new LotTravelerDMO();
WorkflowDMO wfDMO = new WorkflowDMO();
///
///
///
///
public ActionResult CreateWorkRequest()
{
LTWorkRequest workRequest = new LTWorkRequest();
try
{
workRequest.OriginatorID = (int)Session[GlobalVars.SESSION_USERID];
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(@User.Identity.Name + "\r\n CreateWorkRequest - LotTraveler\r\n" + e.InnerException == null? e.Message : e.InnerException.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = workRequest.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "CreateWorkRequest - " + exceptionString });
throw new Exception(e.Message);
}
}
///
///
///
///
///
public ActionResult Edit(int issueID)
{
int isITARCompliant = 1;
Session["CreateNewRevision"] = "false";
ViewBag.NewRevision = "false";
LTWorkRequest workRequest = new LTWorkRequest();
try
{
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
if (isITARCompliant == 0) // not ITAR Compliant
{
return View("UnAuthorizedAccess");
}
if ((int)Session[GlobalVars.SESSION_USERID] == workRequest.OriginatorID)
ViewBag.IsOriginator = "true";
else
ViewBag.IsOriginator = "false";
List userList = MiscDMO.GetPendingApproversListByDocument(issueID, workRequest.CurrentStep, (int)GlobalVars.DocumentType.LotTraveler);
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 (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 != (int)Session[GlobalVars.SESSION_USERID]))
{
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
}
}
else if (workRequest.CurrentStep >= 1 && workRequest.CurrentStep < 3 && workRequest.CloseDate == null) // Before
{
if ((ViewBag.IsApprover == "true") || ((bool)Session[GlobalVars.IS_ADMIN]))
return RedirectToAction("WorkRequestApproval", new { issueID = issueID });
else
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
}
else if (workRequest.CurrentStep == 3)
{
if ((workRequest.RecordLockIndicator && workRequest.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID]) || (ViewBag.IsApprover == "false"))
{
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
}
else
{
Session["CreateNewRevision"] = "true";
ViewBag.NewRevision = "true";
workRequest = LotTravDMO.GetLTWorkRequestItem(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
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, (int)Session[GlobalVars.SESSION_USERID]);
// 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(@User.Identity.Name + "\r\n Edit WorkRequest - LotTraveler\r\n" + e.InnerException == null? e.Message : e.InnerException.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = workRequest.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Edit WorkRequest - " + exceptionString });
throw new Exception(e.Message);
}
}
///
///
///
///
///
public ActionResult SaveRevision(LTWorkRequest model)
{
try
{
var data = model;
if (Session["CreateNewRevision"].ToString() == "true")
{
ViewBag.NewRevision = "false";
Session["CreateNewRevision"] = "false";
//Session["CurrentlyOnSamePage"] = "true";
model.OriginatorID = (int)Session[GlobalVars.SESSION_USERID];
int newRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
// TODO
// Send email to the Originator and Group of People
NotifyfWorkRequestRevisionChange(newRequestID);
return Content(newRequestID.ToString());
}
else
{
// model.OriginatorID = (int)Session[GlobalVars.SESSION_USERID];
LotTravDMO.UpdateWorkRequest(model, (int)Session[GlobalVars.SESSION_USERID]);
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(@User.Identity.Name + "\r\n SaveRevision - LotTraveler\r\n" + e.InnerException == null? e.Message : e.InnerException.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = model.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "SaveRevision - " + exceptionString });
throw new Exception(e.Message);
}
}
///
///
///
///
///
public ActionResult WorkRequestReadOnly(int issueID)
{
int isITARCompliant = 1;
LTWorkRequest workRequest = new LTWorkRequest();
try
{
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
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(@User.Identity.Name + "\r\n WorkRequestReadOnly - LotTraveler\r\n" + e.InnerException == null? e.Message : e.InnerException.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "WorkRequestReadOnly - " + exceptionString });
throw new Exception(e.Message);
}
}
///
///
///
///
///
public ActionResult WorkRequestApproval(int issueID)
{
int isITARCompliant = 1;
LTWorkRequest workRequest = new LTWorkRequest();
try
{
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
List userList = MiscDMO.GetPendingApproversListByDocument(issueID, workRequest.CurrentStep, (int)GlobalVars.DocumentType.LotTraveler);
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 ((workRequest.RecordLockIndicator && workRequest.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID]) || (!((bool)Session[GlobalVars.IS_ADMIN]) && (ViewBag.IsApprover == "false")) )
if (workRequest.RecordLockIndicator && workRequest.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID])
{
return RedirectToAction("WorkRequestReadOnly", new { issueID = issueID });
}
workRequest = LotTravDMO.GetLTWorkRequestItem(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
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(@User.Identity.Name + "\r\n WorkRequestApproval - LotTraveler\r\n" + e.InnerException == null? e.Message : e.InnerException.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "WorkRequestApproval - " + exceptionString });
throw new Exception(e.Message);
}
}
///
///
///
///
///
public ActionResult GetWorkRequestRevision(int workRequestID)
{
int isITARCompliant = 1;
LTWorkRequest workRequest = new LTWorkRequest();
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
//if (workRequest.IsCurrentRevision)
//{
// return RedirectToAction("Edit", new { issueID = workRequestID });
//}
return Content("");
}
///
///
///
///
public ActionResult DisplayWorkRequestPDF(int workRequestID)
{
WorkRequestPdf workRequest = new WorkRequestPdf();
try
{
workRequest = LotTravDMO.GetLTWorkRequestItemPDF(workRequestID);
// 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("", "WorkRequestPDF", workRequest);
}
catch (Exception ex)
{
Functions.WriteEvent(@User.Identity.Name + "\r\n DisplayWorkRequestPDF - LotTraveler\r\n" + ex.InnerException.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = workRequest.SWRNumber, UserID = @User.Identity.Name, DocumentType = "LotTravler", OperationType = "Generate PDF", Comments = ex.Message });
workRequest = null;
return Content("");
}
}
///
///
///
///
///
public ActionResult WorkRequestRevision(int workRequestID)
{
int isITARCompliant = 1;
LTWorkRequest workRequest = new LTWorkRequest();
workRequest = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
List userList = MiscDMO.GetPendingApproversListByDocument(workRequestID, workRequest.CurrentStep, (int)GlobalVars.DocumentType.LotTraveler);
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 (
(workRequest.RecordLockIndicator && workRequest.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID]
|| (ViewBag.IsApprover == "false"))
|| (!workRequest.IsCurrentRevision)
|| (workRequest.CloseDate != null)
)
{
return RedirectToAction("WorkRequestReadOnly", new { issueID = workRequestID });
}
workRequest = LotTravDMO.GetLTWorkRequestItem(workRequestID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
ViewBag.Departments = MiscDMO.GetDepartments();
ViewBag.AffectedModules = MiscDMO.GetModules();
ViewBag.WorkReqRevisionList = LotTravDMO.GetWorkReqRevisions(workRequest.SWRNumber);
return View(workRequest);
}
[HttpPost]
public ActionResult Edit(LTWorkRequest model)
{
try
{
Session["CreateNewRevision"] = "false";
var data = model;
LotTravDMO.UpdateWorkRequest(model, (int)Session[GlobalVars.SESSION_USERID]);
}
catch(Exception ex)
{
return Content(ex.Message);
}
return Content("Successfully Saved");
}
///
///
///
///
///
///
public JsonResult GetBaseFlowLocations(string baseFlow)
{
List loclist = LotTravDMO.GetBaseFlowLocations(baseFlow);
return Json(loclist, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
public JsonResult GetMaterialRecord(int materialID)
{
LTMaterial ltMaterial = LotTravDMO.GetMaterialRecord(materialID);
return Json(ltMaterial, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
public JsonResult GetBaseFlowOperations(string baseFlow, string location)
{
List operationslist = LotTravDMO.GetBaseFlowOperations(baseFlow, location);
return Json(operationslist, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
public ActionResult GetMaterialDetails([DataSourceRequest] DataSourceRequest request, int workRequestID)
{
return Json(LotTravDMO.GetMaterialDetails(workRequestID).ToDataSourceResult(request));
}
///
///
///
///
public JsonResult GetPartNumbers()
{
List operationslist = LotTravDMO.GetPartNumbers();
return Json(operationslist, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult InsertMaterialDetail([DataSourceRequest] DataSourceRequest request, LTMaterialViewModel model)
{
try
{
string s = Session["CreateNewRevision"].ToString();
if (model != null && ModelState.IsValid)
{
LotTravDMO.InsertMaterialDetail(model, (int)Session[GlobalVars.SESSION_USERID]);
}
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
}
catch(Exception ex)
{
//throw new Exception(ex.Message);
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, (int)Session[GlobalVars.SESSION_USERID]);
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
}
catch (Exception ex)
{
//throw new Exception(ex.Message);
return this.Json(new DataSourceResult
{
Errors = ex.Message
});
}
}
///
///
///
///
///
public ActionResult AddMaterialDetailRevision(LTWorkRequest model)
{
var modelMaterialDetail = model.LTMaterial;
int previousMaterialID = model.LTMaterial.ID;
int newWorkRequestID = model.ID;
if (Session["CreateNewRevision"].ToString() == "true")
{
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
modelMaterialDetail.LTWorkRequestID = newWorkRequestID;
// Any update will be a new entry
LotTravDMO.InsertMaterialDetail(modelMaterialDetail, (int)Session[GlobalVars.SESSION_USERID]);
// TODO
NotifyfWorkRequestRevisionChange(newWorkRequestID);
}
else
{
if (modelMaterialDetail != null && ModelState.IsValid)
{
LotTravDMO.InsertMaterialDetail(modelMaterialDetail, (int)Session[GlobalVars.SESSION_USERID]);
}
}
return Content(newWorkRequestID.ToString());
}
///
/// For the Revison
///
///
///
///
public ActionResult UpdateMaterialDetailRevision(LTWorkRequest model)
{
var modelMaterialDetail = model.LTMaterial;
int previousMaterialID = model.LTMaterial.ID;
int newWorkRequestID = model.ID;
if (Session["CreateNewRevision"].ToString() == "true")
{
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
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, (int)Session[GlobalVars.SESSION_USERID]);
}
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
//return Json(new[] { modelMaterialDetail }.ToDataSourceResult(request, ModelState));
return Content(newWorkRequestID.ToString());
}
public ActionResult DeleteMaterialDetail([DataSourceRequest] DataSourceRequest request, LTMaterialViewModel model)
{
try
{
if (model != null && ModelState.IsValid)
{
LotTravDMO.DeleteMaterialDetail(model.ID);
}
}
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 Disposition\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[] { model }.ToDataSourceResult(request, ModelState));
}
///
///
///
///
///
public ActionResult DeleteMaterialDetailRevision(LTWorkRequest model)
{
var modelMaterialDetail = model.LTMaterial;
int newWorkRequestID = model.ID;
if (Session["CreateNewRevision"].ToString() == "true")
{
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
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);
}
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
//return Json(new[] { modelMaterialDetail }.ToDataSourceResult(request, ModelState));
return Content(newWorkRequestID.ToString());
}
///
///
///
///
///
///
public ActionResult GetHoldSteps([DataSourceRequest] DataSourceRequest request, int workRequestID)
{
return Json(LotTravDMO.GetHoldSteps(workRequestID).ToDataSourceResult(request));
}
//public ActionResult InsertUpdateHoldStep([DataSourceRequest] DataSourceRequest request, LTHoldStep model)
//{
// if (model != null && ModelState.IsValid)
// {
// LotTravDMO.InsertUpdateHoldStep(model);
// }
// return Json(new[] { model }.ToDataSourceResult(request, ModelState));
//}
//public ActionResult UpdateHoldStep([DataSourceRequest] DataSourceRequest request, LTHoldStep model)
//{
// if (model != null && ModelState.IsValid)
// {
// LotTravDMO.UpdateHoldStep(model);
// }
// return Json(new[] { model }.ToDataSourceResult(request, ModelState));
//}
public ActionResult InsertHoldStep([DataSourceRequest] DataSourceRequest request, LTHoldStep model)
{
if (model != null && ModelState.IsValid)
{
model.UpdatedBy = (int)Session[GlobalVars.SESSION_USERID];
LotTravDMO.InsertHoldStep(model);
}
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
}
///
///
///
///
///
///
public ActionResult UpdateHoldStepRevision(LTWorkRequest model)
{
var holdStepModel = model.LTHoldStep;
int newWorkRequestID = model.ID;
if (Session["CreateNewRevision"].ToString() == "true")
{
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
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 = (int)Session[GlobalVars.SESSION_USERID];
LotTravDMO.UpdateHoldStep(holdStepModel);
}
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
//return Json(new[] { modelMaterialDetail }.ToDataSourceResult(request, ModelState));
return Content(newWorkRequestID.ToString());
}
public ActionResult InsertHoldStepRevision(LTWorkRequest model)
{
var holdStepModel = model.LTHoldStep;
int newWorkRequestID = model.ID;
if (Session["CreateNewRevision"].ToString() == "true")
{
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
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 = (int)Session[GlobalVars.SESSION_USERID];
LotTravDMO.InsertHoldStep(holdStepModel);
}
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
//return Json(new[] { modelMaterialDetail }.ToDataSourceResult(request, ModelState));
return Content(newWorkRequestID.ToString());
}
///
///
///
///
///
public ActionResult DeleteHoldStepRevision(LTWorkRequest model)
{
var holdStepModel = model.LTHoldStep;
int newWorkRequestID = model.ID;
if (Session["CreateNewRevision"].ToString() == "true")
{
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
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, (int)Session[GlobalVars.SESSION_USERID]);
}
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
//return Json(new[] { modelMaterialDetail }.ToDataSourceResult(request, ModelState));
return Content(newWorkRequestID.ToString());
}
///
///
///
///
public void UpdateHoldStep(LTHoldStep model)
{
if (model != null && ModelState.IsValid)
{
LotTravDMO.UpdateHoldStep(model);
}
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DeleteHoldStep([DataSourceRequest] DataSourceRequest request, LTHoldStep model)
{
try
{
if (model != null && ModelState.IsValid)
{
LotTravDMO.DeleteHoldStep(model.ID, (int)Session[GlobalVars.SESSION_USERID]);
}
}
catch (Exception ex)
{
//throw new Exception(ex.Message);
return this.Json(new DataSourceResult
{
Errors = ex.Message
});
}
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
}
///
///
///
///
///
public ActionResult GetHoldStep(int holdStepID)
{
var model = new LTHoldStep();
model = LotTravDMO.GetHoldStep(holdStepID);
return PartialView("_HoldStepAttachments", model);
}
///
///
///
///
///
public ActionResult GetHoldStepRevision(int holdStepID)
{
var model = new LTHoldStep();
model = LotTravDMO.GetHoldStep(holdStepID);
return PartialView("_HoldStepAttachmentsRevision", model);
}
///
///
///
///
///
public ActionResult GetLotTravHoldStepRevision(int ltHoldStepID)
{
var model = new LTLotTravelerHoldSteps();
model = LotTravDMO.GetLotTravHoldStep(ltHoldStepID);
return PartialView("_LotTravHoldStepAttachRev", model);
}
///
///
///
///
///
public ActionResult GetHoldStepAttachments([DataSourceRequest] DataSourceRequest request, int holdStepID)
{
//var model = LotTravDMO.GetHoldStepAttachemnts(holdStepID);
//return Json(new[] { model }.ToDataSourceResult(request, ModelState));
return Json(LotTravDMO.GetHoldStepAttachemnts(holdStepID).ToDataSourceResult(request));
}
///
///
///
///
///
///
public ActionResult GetLTHoldStepAttachments([DataSourceRequest] DataSourceRequest request, int ltHoldStepID)
{
//var model = LotTravDMO.GetHoldStepAttachemnts(holdStepID);
//return Json(new[] { model }.ToDataSourceResult(request, ModelState));
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(@User.Identity.Name + "\r\n AttachmentID Work Request\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[] { 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);
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
}
///
///
///
///
///
public ActionResult UpdateWorkRequestAttachmentRevision(LTWorkRequest model)
{
var wrAttachmentDetail = model.WorkRequestAttachment;
int previousWorkRequestAttachmentID = model.WorkRequestAttachment.ID;
int newWorkRequestID = model.ID;
if (Session["CreateNewRevision"].ToString() == "true")
{
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
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);
}
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
//return Json(new[] { modelMaterialDetail }.ToDataSourceResult(request, ModelState));
return Content(newWorkRequestID.ToString());
}
///
///
///
///
///
///
[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(@User.Identity.Name + "\r\n AttachmentID WorkRequiest\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[] { model }.ToDataSourceResult(request, ModelState));
}
///
///
///
///
///
public ActionResult DeleteWorkRequestAttachmentRevision( LTWorkRequest model)
{
var wrAttachmentDetail = model.WorkRequestAttachment;
int previousWorkRequestAttachmentID = model.WorkRequestAttachment.ID;
int newWorkRequestID = model.ID;
if (Session["CreateNewRevision"].ToString() == "true")
{
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
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);
}
}
//lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID;
//return Json(new[] { modelMaterialDetail }.ToDataSourceResult(request, ModelState));
return Content(newWorkRequestID.ToString());
}
///
///
///
///
///
///
///
///
public ActionResult AttachSaveWorkRequest(IEnumerable files, int workRequestID, int currentRevision, int swrNo, string comments, string docType)
{
// 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.
// TODO
//int currentRevision = 1;
var fileName = Path.GetFileName(file.FileName);
var fileExtension = Path.GetExtension(file.FileName);
//var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName);
DirectoryInfo di;
var SWRPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo;
di = new DirectoryInfo(SWRPhysicalPath);
if (!di.Exists)
di.Create();
//var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\Rev" + currentRevision;
var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo ;
di = new DirectoryInfo(SWR_RevPhysicalPath);
if (!di.Exists)
di.Create();
var guid = Guid.NewGuid().ToString();
var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\", guid + fileExtension);
file.SaveAs(physicalPath);
LTWorkRequestAttachment attach = new LTWorkRequestAttachment()
{
WorkRequestID = workRequestID,
FileGUID = guid,
LTHoldStepID = -1,
FileName = fileName,
UploadedByID = (int)Session[GlobalVars.SESSION_USERID],
DocType = docType,
Comments = comments
};
LotTravDMO.InsertWorkRequestAttachment(attach);
}
}
return Content("");
}
public ActionResult AttachSaveWorkRequestRevision(IEnumerable 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, (int)Session[GlobalVars.SESSION_USERID]);
model.RevisionComments = revComments;
if (Session["CreateNewRevision"].ToString() == "true")
{
newRevision = true;
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
// Send email to the Originator and Group of People
NotifyfWorkRequestRevisionChange(newWorkRequestID);
}
// 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.
// TODO
//int currentRevision = 1;
var fileName = Path.GetFileName(file.FileName);
var fileExtension = Path.GetExtension(file.FileName);
//var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName);
DirectoryInfo di;
var SWRPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo;
di = new DirectoryInfo(SWRPhysicalPath);
if (!di.Exists)
di.Create();
//var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\Rev" + currentRevision;
var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo;
di = new DirectoryInfo(SWR_RevPhysicalPath);
if (!di.Exists)
di.Create();
var guid = Guid.NewGuid().ToString();
var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\", guid + fileExtension);
file.SaveAs(physicalPath);
LTWorkRequestAttachment attach = new LTWorkRequestAttachment()
{
WorkRequestID = workRequestID,
FileGUID = guid,
LTHoldStepID = -1,
FileName = fileName,
UploadedByID = (int)Session[GlobalVars.SESSION_USERID],
DocType = docType,
Comments = attachComments
};
// LotTravDMO.InsertWorkRequestAttachment(attach);
if (newRevision)
LotTravDMO.InsertWorkRequestAttachmentRevision(attach);
else
LotTravDMO.InsertWorkRequestAttachment(attach);
}
}
return Content("");
}
///
///
///
///
///
///
///
///
///
public ActionResult HoldStepAttachSave(IEnumerable HoldStepAttachment, int holdStepID, int currentRevision, int swrNo, string docType, string comments)
{
// The Name of the Upload component is "files"
try
{
if (HoldStepAttachment != null)
{
foreach (var file in HoldStepAttachment)
{
// Some browsers send file names with full path.
// We are only interested in the file name.
// TODO
//int currentRevision = 1;
var fileName = Path.GetFileName(file.FileName);
var fileExtension = Path.GetExtension(file.FileName);
//var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName);
DirectoryInfo di;
var SWRPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo;
di = new DirectoryInfo(SWRPhysicalPath);
if (!di.Exists)
di.Create();
//var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\Rev" + currentRevision;
var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo ;
di = new DirectoryInfo(SWR_RevPhysicalPath);
if (!di.Exists)
di.Create();
var guid = Guid.NewGuid().ToString();
//var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\Rev" + currentRevision + @"\", guid + fileExtension);
var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\", guid + fileExtension);
file.SaveAs(physicalPath);
LTWorkRequestAttachment attach = new LTWorkRequestAttachment()
{
FileGUID = guid,
LTHoldStepID = holdStepID,
FileName = fileName,
UploadedByID = (int)Session[GlobalVars.SESSION_USERID],
DocType = docType,
Comments = comments
};
LotTravDMO.InsertLotHoldStepAttachment(attach);
}
}
}
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(@User.Identity.Name + "\r\n Approve\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = holdStepID, UserID = @User.Identity.Name, DocumentType = docTypeString, OperationType = "Error", Comments = "HoldStep Attachment - " + exceptionString });
throw new Exception(e.Message);
}
//var model = ldDMO.GetLotDispoAttachments(issueID);
return Content("");
}
///
///
///
///
///
///
///
///
///
///
///
public ActionResult HoldStepAttachSaveRev(IEnumerable 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, (int)Session[GlobalVars.SESSION_USERID]);
model.RevisionComments = revComments;
if (Session["CreateNewRevision"].ToString() == "true")
{
newRevision = true;
Session["CreateNewRevision"] = "false";
newWorkRequestID = LotTravDMO.CreateWorkRequestRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
NotifyfWorkRequestRevisionChange(newWorkRequestID);
}
try
{
if (HoldStepAttachment != null)
{
foreach (var file in HoldStepAttachment)
{
// Some browsers send file names with full path.
// We are only interested in the file name.
// TODO
//int currentRevision = 1;
var fileName = Path.GetFileName(file.FileName);
var fileExtension = Path.GetExtension(file.FileName);
//var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName);
DirectoryInfo di;
var SWRPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo;
di = new DirectoryInfo(SWRPhysicalPath);
if (!di.Exists)
di.Create();
//var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\Rev" + currentRevision;
var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo;
di = new DirectoryInfo(SWR_RevPhysicalPath);
if (!di.Exists)
di.Create();
var guid = Guid.NewGuid().ToString();
//var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\Rev" + currentRevision + @"\", guid + fileExtension);
var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\", guid + fileExtension);
file.SaveAs(physicalPath);
LTWorkRequestAttachment attach = new LTWorkRequestAttachment()
{
FileGUID = guid,
LTHoldStepID = holdStepID,
FileName = fileName,
UploadedByID = (int)Session[GlobalVars.SESSION_USERID],
DocType = docType,
Comments = comments
};
if (newRevision)
LotTravDMO.InsertLotHoldStepAttachmentRevision(attach);
else
LotTravDMO.InsertLotHoldStepAttachment(attach);
}
}
}
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(@User.Identity.Name + "\r\n Approve\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = holdStepID, UserID = @User.Identity.Name, DocumentType = docTypeString, OperationType = "Error", Comments = "HoldStep Attachment - " + exceptionString });
throw new Exception(e.Message);
}
//var model = ldDMO.GetLotDispoAttachments(issueID);
return Content("");
}
///
///
///
///
///
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 Json(data, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
public ActionResult SubmitDocument(int workRequestID, int documentType)
{
int isITARCompliant = 1;
LTWorkRequest ltWR = new LTWorkRequest();
try
{
int appoverCount = LotTravDMO.SubmitDocument(workRequestID, (int)Session[GlobalVars.SESSION_USERID], 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, (int)Session[GlobalVars.SESSION_USERID]);
List userList = MiscDMO.GetPendingApproversListByDocument(workRequestID, ltWR.CurrentStep, (int)documentType);
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] == ltWR.OriginatorID)
ViewBag.IsOriginator = "true";
else
ViewBag.IsOriginator = "false";
if (Request.IsAjaxRequest())
{
// the content gets evaluated on the client side
return Content("Redirect");
}
else
return Content("Invalid");
//return View(ltWR);
}
}
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(@User.Identity.Name + "\r\n SubmitDocument\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, 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 LTWorkRequest();
int isITAR = 1;
ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITAR, (int)Session[GlobalVars.SESSION_USERID]);
try
{
bool lastStep = false;
bool lastApprover = wfDMO.Approve(workRequestID, currentStep, comments, out lastStep, (int)Session[GlobalVars.SESSION_USERID], documentType, ltWR.WorkFlowNumber);
while (lastApprover && !lastStep)
{
currentStep++;
lastApprover = wfDMO.Approve(workRequestID, currentStep, comments, out lastStep, (int)Session[GlobalVars.SESSION_USERID], documentType, ltWR.WorkFlowNumber);
//if (currentStep == 3 && (!lastStep)) // add orginator to the last step
//{
// int isITARCompliant = 1;
// ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
// wfDMO.AddAdditionalApproval(workRequestID, ltWR.OriginatorID.ToString(), currentStep, documentType);
//}
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(@User.Identity.Name + "\r\n Approve\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, 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 LTWorkRequest();
int isITARCompliant = 1;
ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
try
{
if (Session[GlobalVars.SESSION_USERID] != null)
{
wfDMO.Reject(workRequestID, currentStep, comments, (int)Session[GlobalVars.SESSION_USERID], 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(@User.Identity.Name + "\r\n Reject\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Reject - " + exceptionString });
throw new Exception(e.Message);
}
}
// TODO ======================================
///
///
///
///
public void NotifyRejectionToOrginator(int workRequestID)
{
List emailIst = LotTravDMO.GetRejectionOrginatorEmailList(workRequestID).Distinct().ToList();
int isITARCompliant = 0;
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]);
string emailTemplate = "WorkRequestReject.txt";
string userEmail = string.Empty;
string subject = "Work Request Rejection";
string senderName = "Work Request";
foreach (string email in emailIst)
{
subject = "Work Request Rejection notice for Number " + ltWR.SWRNumber + ", - " + ltWR.Title;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[5];
emailparams[0] = ltWR.SWRNumber.ToString();
emailparams[1] = workRequestID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = Session[GlobalVars.SESSION_USERNAME].ToString();
emailparams[4] = "Work Request";
userEmail = email;
//#if(DEBUG)
// userEmail = "rkotian1@irf.com";
//#endif
// en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
try
{
//emailSentList += email + ",";
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Lot Traveler Notify Rejection:" + email });
}
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, 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, (int)Session[GlobalVars.SESSION_USERID]);
List emailIst = MiscDMO.GetApproverEmailListByDocument(workRequestID, currentStep, documentType).Distinct().ToList();
string emailTemplate = "WorkRequestAssigned.txt";
string userEmail = string.Empty;
string subject = "Work Request Assignment";
var senderName = "";
foreach (string email in emailIst)
{
subject = "Work Request Assignment notice for Number " + ltWR.SWRNumber + ", - " + ltWR.Title;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = ltWR.SWRNumber.ToString();
emailparams[1] = workRequestID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = "Work Request";
userEmail = email;
#if(DEBUG)
userEmail = "rkotian1@irf.com";
#endif
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
//emailSentList += email + ",";
try
{
emailSentList += email + ",";
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "WR Notify Approvers:" + email });
}
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, 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, (int)Session[GlobalVars.SESSION_USERID]);
List emailIst = MiscDMO.GetWorkRequestApprovedNotifyList((int)GlobalVars.NotificationType.WorkRequest, workRequestID, (int)Session[GlobalVars.SESSION_USERID]).Distinct().ToList();
string emailTemplate = "WorkRequestApproval.txt";
string userEmail = string.Empty;
string subject = "Work Request Approval";
var senderName = "";
foreach (string email in emailIst)
{
subject = "Work Request Approval notice for Number " + ltWR.SWRNumber + ", - " + ltWR.Title;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = ltWR.SWRNumber.ToString();
emailparams[1] = workRequestID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = "Work Request";
userEmail = email;
#if(DEBUG)
userEmail = "rkotian1@irf.com";
#endif
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
//emailSentList += email + ",";
try
{
emailSentList += email + ",";
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Lot Traveler Approval Notification:" + email });
}
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Work Request", OperationType = "Email", Comments = "Approvers for WorkRequest: " + emailSentList });
}
catch { }
}
///
///
///
///
public void NotifyfWorkRequestRevisionChange(int workRequestID)
{
string emailSentList = "";
int isITARCompliant = 0;
int currentUserID = (int)Session[GlobalVars.SESSION_USERID];
LTWorkRequest ltWR = LotTravDMO.GetLTWorkRequestItemForRead(workRequestID, out isITARCompliant, currentUserID);
List emailIst = MiscDMO.GetWorkRequestRevisionNotifyList((int)GlobalVars.NotificationType.WorkRequest, workRequestID, currentUserID).Distinct().ToList();
string emailTemplate = "WorkRequestRevisionChange.txt";
string userEmail = string.Empty;
string subject = "Work Request Revision Change";
var senderName = "";
foreach (string email in emailIst)
{
subject = "Work Request Revision Change notice for Number " + ltWR.SWRNumber + ", - " + ltWR.Title;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = ltWR.SWRNumber.ToString();
emailparams[1] = workRequestID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = "Work Request";
userEmail = email;
#if(DEBUG)
userEmail = "rkotian1@irf.com";
#endif
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
//emailSentList += email + ",";
try
{
emailSentList += email + ",";
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "WR Revision Change Notification:" + email });
}
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Work Request", OperationType = "Email", Comments = "Work Request Revision Change for :" + emailSentList });
}
catch { }
}
///
///
///
///
public void NotifyLotTravelerRevisionChange(int ltLotID, int revisionNumber)
{
string emailSentList = "";
var data = LotTravDMO.GetLotTravelerHeaderForReadOnly(ltLotID, revisionNumber);
int currentUserID = (int)Session[GlobalVars.SESSION_USERID];
List emailIst = MiscDMO.GetLotTravelerCreationAndRevisionNotifyList(ltLotID, data.LTWorkRequestID, currentUserID).Distinct().ToList();
string emailTemplate = "LotTravelerRevisionChange.txt";
string userEmail = string.Empty;
string subject = "Lot Traveler Revision Change";
var senderName = "";
foreach (string email in emailIst)
{
subject = "Lot Traveler Revision for SWR# " + data.SWRNumber + ", Lot# " + data.LotNumber + " - " + data.Title;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = data.SWRNumber.ToString();
emailparams[1] = data.LTWorkRequestID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = data.LotNumber;
userEmail = email;
#if(DEBUG)
userEmail = "rkotian1@irf.com";
#endif
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
//emailSentList += email + ",";
try
{
emailSentList += email + ",";
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = data.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Lot Traveler Revision Notification:" + email });
}
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = data.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Email", Comments = "Lot Traveler Revision Change Notification:" + emailSentList });
}
catch { }
}
///
///
///
///
///
public void NotifyLotTravelerCreation(int ltLotID, int revisionNumber)
{
string emailSentList = "";
var data = LotTravDMO.GetLotTravelerHeaderForReadOnly(ltLotID, revisionNumber);
int currentUserID = (int)Session[GlobalVars.SESSION_USERID];
List emailIst = MiscDMO.GetLotTravelerCreationAndRevisionNotifyList(ltLotID, data.LTWorkRequestID, currentUserID).Distinct().ToList();
string emailTemplate = "LotTravelerCreation.txt";
string userEmail = string.Empty;
string subject = "Lot Traveler Revision Change";
var senderName = "";
foreach (string email in emailIst)
{
subject = "Lot Traveler created for SWR# " + data.SWRNumber + ", Lot# " + data.LotNumber + " - " + data.Title;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = data.SWRNumber.ToString();
emailparams[1] = data.LTWorkRequestID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = data.LotNumber;
userEmail = email;
#if(DEBUG)
userEmail = "rkotian1@irf.com";
#endif
try
{
emailSentList += email + ",";
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = data.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Lot Traveler Creation Email Notification:" + email });
}
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = data.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Email", Comments = "Lot Traveler Revision Change Notification:" + emailSentList });
}
catch { }
}
///
///
///
///
///
///
///
public ActionResult GetApproversList([DataSourceRequest] DataSourceRequest request, int workRequestID, byte step)
{
return Json(MiscDMO.GetApproversListByDocument(workRequestID, step, (int)GlobalVars.DocumentType.LotTraveler).ToDataSourceResult(request));
}
///
///
///
///
public void ReleaseLockOnDocument(int workRequestID)
{
LotTravDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], workRequestID);
}
///
///
///
///
public void ReleaseLockOnLotTravelerUpdateDoc(int lotID)
{
try
{
LotTravDMO.ReleaseLockOnLotTravelerUpdateDoc((int)Session[GlobalVars.SESSION_USERID], lotID);
}
catch
{
//TODO
// unlock the current revision of the Lot traveler
LotTravDMO.ReleaseLockOnLotTravelerUpdateDoc(-1, lotID);
}
}
///
///
///
///
public JsonResult GetAllUsersList()
{
//var userList = ldDMO.GetApprovedApproversList(issueID, currentStep);
//return Json(userList, JsonRequestBehavior.AllowGet);
UserAccountDMO userDMO = new UserAccountDMO();
IEnumerable userlist = userDMO.GetAllUsers();
return Json(userlist, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
///
///
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, (int)Session[GlobalVars.SESSION_USERID]);
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(@User.Identity.Name + "\r\n ReAssignApproval\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Work Request", OperationType = "Error", Comments = "ReAssignApproval - " + exceptionString });
throw new Exception(e.Message);
}
string emailTemplate = "WorkRequestReAssigned.txt";
string userEmail = string.Empty;
string subject;
string senderName = "Work Request";
subject = "Work Request Re-Assignment" + " - Email would be sent to " + email + " for Number " + ltWR.SWRNumber + ", - " + ltWR.Title; ;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = ltWR.SWRNumber.ToString();
emailparams[1] = workRequestID.ToString(); // goes into the link
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = "Work Request";
userEmail = email;
//#if(DEBUG)
// userEmail = "rkotian1@irf.com";
//#endif
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
try
{
//emailSentList += email + ",";
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "ReAssign Approver Notification:" + email });
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, 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, (int)Session[GlobalVars.SESSION_USERID]);
try
{
email = wfDMO.ReAssignApproval(workRequestID, (int)Session[GlobalVars.SESSION_USERID], 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(@User.Identity.Name + "\r\n ReAssignApproval\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Work Request", OperationType = "Error", Comments = "ReAssignApproval - " + exceptionString });
throw new Exception(e.Message);
}
string emailTemplate = "WorkRequestReAssigned.txt";
string userEmail = string.Empty;
string subject = "Work Request Re-Assignment";
string senderName = "Work Request";
subject = "Work Request Re-Assignment" + " - Email would be sent to " + email + " for Number " + ltWR.SWRNumber + ", - " + ltWR.Title; ;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = ltWR.SWRNumber.ToString();
emailparams[1] = workRequestID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = "Work Request";
userEmail = email;
//#if(DEBUG)
// userEmail = "rkotian1@irf.com";
//#endif
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
try
{
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "ReAssign Approval Notification:" + email });
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, 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, (int)Session[GlobalVars.SESSION_USERID]);
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(@User.Identity.Name + "\r\n AddAdditionalApproval\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Work Request", OperationType = "Error", Comments = "AddAdditionalApproval - " + exceptionString });
throw new Exception(e.Message);
}
string emailTemplate = "WorkRequestAssigned.txt";
string userEmail = string.Empty;
string subject = "Work Request Assignment";
string senderName = "Work Request";
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 = "Work Request Assignment notice for Number " + workRequestID + ", - " + ltWR.Title;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = ltWR.SWRNumber.ToString();
emailparams[1] = workRequestID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = "Work Request";
userEmail = email;
//#if(DEBUG)
// userEmail = "rkotian1@irf.com";
//#endif
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
//emailSentList += email + ",";
try
{
emailSentList += email + ",";
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
catch
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "Addtional Approver Notification:" + email });
}
}
}
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = ltWR.SWRNumber, UserID = @User.Identity.Name, DocumentType = "Work Request", OperationType = "Email", Comments = "Additonal Approver: " + emailSentList });
}
catch { }
}
///
///
///
///
///
///
public JsonResult AddLots(string lotNumbers, int workRequestID)
{
IssueWithExistingLotsViewModel issueWEL = new IssueWithExistingLotsViewModel();
try
{
if (lotNumbers.Length > 0)
{
string[] tempLots = lotNumbers.Split(new char[] { '~' });
foreach (string lotNumber in tempLots)
{
LTLot l = new LTLot();
l.LotNumber = lotNumber;
l.WorkRequestID = workRequestID;
l.LotUploadedBy = (int)Session[GlobalVars.SESSION_USERID];
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(@User.Identity.Name + "\r\n AddLots Work Request\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { UserID = @User.Identity.Name, DocumentType = "Work Request", OperationType = "Error", Comments = exceptionString });
throw new Exception(e.Message);
}
return Json(issueWEL, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
public JsonResult SearchLots(string searchText, string searchBy)
{
List lotlist = MiscDMO.SearchLTLots(searchText, searchBy).Select(x => x.LotNumber).ToList();
//IEnumerable lotlist = MiscDMO.SearchLots(searchText, searchBy);
return Json(lotlist, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
public JsonResult SearchParts(string searchText)
{
List partList = MiscDMO.SearchLTParts(searchText.Trim()).Select(x => x.WIPPartData).ToList();
return Json(partList, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
public ActionResult GetLotList([DataSourceRequest] DataSourceRequest request,int workRequestID)
{
return Json(LotTravDMO.GetLotList(workRequestID).ToDataSourceResult(request));
}
///
///
///
///
///
public void CreateTaveler(int ltLotID, int workRequestID)
{
try
{
LotTravDMO.CreateTraveler(ltLotID, workRequestID, (int)Session[GlobalVars.SESSION_USERID]);
// Thread.Sleep(10000);
NotifyLotTravelerCreation(ltLotID, -1);
}
catch(Exception ex)
{
EventLogDMO.Add(new WinEventLog() { IssueID = workRequestID, UserID = @User.Identity.Name, DocumentType = "LotTraveler", OperationType = "CreateTaveler", Comments = ex.Message });
throw new Exception(ex.Message);
}
}
///
///
///
///
///
public JsonResult GetLotTravelerHeader(int ltLotID)
{
LTLotTravelerHeaderViewModel data = new LTLotTravelerHeaderViewModel();
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, (int)Session[GlobalVars.SESSION_USERID]);
//data.Revisions = LotTravDMO.GetLotTravRevisions(ltLotID).Select(s => new SelectListItem { Value = s.ID.ToString(), Text = s.RevisionNumber.ToString() }).ToList();
return Json(data, JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
public ActionResult GetLotTravRevisions(int ltLotID)
{
//return Json(LotTravDMO.GetLotTravRevisions(ltLotID).ToDataSourceResult(request));
return Json(LotTravDMO.GetLotTravRevisions(ltLotID), JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
public ActionResult DisplayLotTraveler(int ltLotID)
{
LTLotTravelerHeaderViewModel data = new LTLotTravelerHeaderViewModel();
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, (int)Session[GlobalVars.SESSION_USERID]);
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
if (data.RecordLockIndicator && data.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID])
{
// redirect to a readonly Lot Travler
return Content("Readonly" + "~" + data.LotTravCurrentRevision.ToString());
}
else
return Content("Update");
}
///
///
///
///
///
public ActionResult LotTravelerUpdate(int ltLotID)
{
LTLotTravelerHeaderViewModel data = new LTLotTravelerHeaderViewModel();
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, (int)Session[GlobalVars.SESSION_USERID]);
if (data.TravelerClosedDate != null)
{
return RedirectToAction("LotTravelerReadOnly", new { ltLotID = ltLotID, revisionNumber = -1 });
}
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
Session["CreateLotTravNewRevision"] = "true";
return View(data);
}
///
/// /
///
///
///
///
public ActionResult LotTravelerReadonly(int ltLotID, int revisionNumber)
{
LTLotTravelerHeaderViewModel data = new LTLotTravelerHeaderViewModel();
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 LTLotTravelerHeaderViewModel();
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, (int)Session[GlobalVars.SESSION_USERID]);
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
if (data.RecordLockIndicator && data.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID])
{
// redirect to a readonly Lot Travler
return Content("Readonly" + "~" + data.LotTravCurrentRevision.ToString());
}
else
return Content("Execute");
}
///
///
///
///
///
public ActionResult LotTravelerExecute(int ltLotID)
{
LTLotTravelerHeaderViewModel data = new LTLotTravelerHeaderViewModel();
data = LotTravDMO.GetLotTravelerHeaderForUpdate(ltLotID, (int)Session[GlobalVars.SESSION_USERID]);
ViewBag.LotTravRevisionList = LotTravDMO.GetLotTravRevisions(ltLotID);
ViewBag.LotList = LotTravDMO.GetLotsWithTraveler(data.LTWorkRequestID);
return View(data);
}
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));
}
///
///
///
///
///
///
public void UpdateLotTravlerExecution(int currentHoldStepID, string taskComments, bool taskcompleted)
{
LotTravDMO.UpdateLotTravlerExecution(currentHoldStepID, taskComments, taskcompleted, (int)Session[GlobalVars.SESSION_USERID]);
}
///
///
///
///
///
///
///
public ActionResult GetLotTravHoldStepsByRevision([DataSourceRequest] DataSourceRequest request, int LotID, int revisionNumber)
{
return Json(LotTravDMO.GetLotTravelerHolStepsByRevision(LotID, revisionNumber).ToDataSourceResult(request));
}
///
///
///
///
public ActionResult UpdateLotTravHoldStepRevision(LTLotTravelerHoldSteps ltHoldStepObj)
{
int prevLotTravRevID = ltHoldStepObj.LotTravelerRevisionID;
int newLotTravRevID = 1;
try
{
if (Session["CreateLotTravNewRevision"].ToString() == "true")
{
// Create a new Revision
Session["CreateLotTravNewRevision"] = "false";
//int result = LotTravDMO.CanAddLocationOperation(ltHoldStepObj);
//if (result == -1)
//{
// Session["CreateLotTravNewRevision"] = "true";
// throw new Exception("Cannot set to this Hold Step as the step has already been passed in the Mfg Process.");
//}
newLotTravRevID = LotTravDMO.CreateLotTravelerRevision(ltHoldStepObj, (int)Session[GlobalVars.SESSION_USERID]);
try
{
LotTravDMO.UpdateRevisedLotTravelerHoldStep(ltHoldStepObj, (int)Session[GlobalVars.SESSION_USERID]);
}
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, (int)Session[GlobalVars.SESSION_USERID]);
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 (Session["CreateLotTravNewRevision"].ToString() == "true")
{
// Create a new Revision
Session["CreateLotTravNewRevision"] = "false";
int result = LotTravDMO.CanAddLocationOperation(ltHoldStepObj);
if (result == -1)
{
Session["CreateLotTravNewRevision"] = "true";
throw new Exception("Cannot add the Hold Step as the step has already been passed in the Mfg Process.");
}
newLotTravRevID = LotTravDMO.CreateLotTravelerRevision(ltHoldStepObj, (int)Session[GlobalVars.SESSION_USERID]);
ltHoldStepObj.LotTravelerRevisionID = newLotTravRevID;
try
{
LotTravDMO.InsertLotTravelerHoldStep(ltHoldStepObj, (int)Session[GlobalVars.SESSION_USERID]);
}
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, (int)Session[GlobalVars.SESSION_USERID]);
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
{
//int newLotTravRevisionAttribID = 0;
if (Session["CreateLotTravNewRevision"].ToString() == "true")
{
// Create a new Revision
Session["CreateLotTravNewRevision"] = "false";
newLotTravRevID = LotTravDMO.CreateLotTravelerRevision(ltHoldStepObj, (int)Session[GlobalVars.SESSION_USERID]);
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)
{
//DateTime? expDt;
LotTravelerPdf traveler = new LotTravelerPdf();
try
{
traveler = LotTravDMO.GetLotTravlerPdf(ltLotID, revisionNumber);
// 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("", "LotTravelerPDF", traveler);
}
catch (Exception ex)
{
EventLogDMO.Add(new WinEventLog() { IssueID = traveler.SWRNumber, UserID = @User.Identity.Name, DocumentType = "LotTraveler", OperationType = "Generate PDF", Comments = ex.Message });
traveler = null;
return Content("");
}
}
///
///
///
///
///
///
public ActionResult ApprovalLogHistory_Read([DataSourceRequest] DataSourceRequest request, int swrNumber)
{
return Json(LotTravDMO.GetWorkReqApprovalLogHistory(swrNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
public ActionResult GetWorkRequestRevisionHistory([DataSourceRequest] DataSourceRequest request, int swrNumber)
{
return Json(LotTravDMO.GetWorkReqRevisionHistory(swrNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
public ActionResult GetLotTravelerRevisionHistory([DataSourceRequest] DataSourceRequest request, int lotID)
{
return Json(LotTravDMO.GetLotTravelerRevisionHistory(lotID).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
///
///
///
///
///
///
///
///
///
public ActionResult LotTravHoldStepAttachSaveRev(IEnumerable 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 (Session["CreateLotTravNewRevision"].ToString() == "true")
{
// Create a new Revision
newRevision = true;
Session["CreateLotTravNewRevision"] = "false";
newLotTravRevID = LotTravDMO.CreateLotTravelerRevision(model, (int)Session[GlobalVars.SESSION_USERID]);
model.LotTravelerRevisionID = newLotTravRevID;
}
try
{
if (LotTravHoldStepAttachment != null)
{
foreach (var file in LotTravHoldStepAttachment)
{
// Some browsers send file names with full path.
// We are only interested in the file name.
// TODO
//int currentRevision = 1;
var fileName = Path.GetFileName(file.FileName);
var fileExtension = Path.GetExtension(file.FileName);
//var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName);
DirectoryInfo di;
var SWRPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo;
di = new DirectoryInfo(SWRPhysicalPath);
if (!di.Exists)
di.Create();
//var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\Rev" + currentRevision;
var SWR_RevPhysicalPath = Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo;
di = new DirectoryInfo(SWR_RevPhysicalPath);
if (!di.Exists)
di.Create();
var guid = Guid.NewGuid().ToString();
//var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\Rev" + currentRevision + @"\", guid + fileExtension);
var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"LotTraveler\" + swrNo + @"\", guid + fileExtension);
file.SaveAs(physicalPath);
LTLotTravAttachment attach = new LTLotTravAttachment()
{
FileGUID = guid,
LTLotTravHoldStepID = ltHoldStepID,
LotTravelerRevisionID = newLotTravRevID,
FileName = fileName,
UploadedByID = (int)Session[GlobalVars.SESSION_USERID],
DocType = docType
};
if (newRevision)
{
try
{
LotTravDMO.InsertLotTravLotHoldStepAttachmentRevision(attach);
}
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");
}
}
else
LotTravDMO.InsertLotTravLotHoldStepAttachment(attach);
}
// 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(@User.Identity.Name + "\r\n Attachment \r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = ltHoldStepID, UserID = @User.Identity.Name, DocumentType = docTypeString, OperationType = "Error", Comments = "Lot Traveler HoldStep Attachment - " + exceptionString });
throw new Exception(e.Message);
}
//var model = ldDMO.GetLotDispoAttachments(issueID);
return Content("");
}
///
///
///
///
///
public bool IsWorkRequestDocLockedByUser(int workRequestID )
{
int result = LotTravDMO.IsWorkRequestDocLockedByUser(workRequestID, (int)Session[GlobalVars.SESSION_USERID]);
if (result == 0)
return false;
else
return true;
}
///
///
///
///
public ActionResult CloseTraveler(int ltLotID, string reason)
{
int result = LotTravDMO.CloseTraveler(ltLotID, (int)Session[GlobalVars.SESSION_USERID], 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 = Functions.GetAttachmentFolder() + "LotTraveler\\" + swrNumber.ToString();
var sDocument = Path.Combine(ecnFolderPath, fileGuid + fileExtension);
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);
}
[HttpPost]
public void ReAssignOriginatorByAdmin(int workRequestID, string comments, int newOriginatorId)
{
if (Session[GlobalVars.IS_ADMIN] == null)
throw new Exception("Permission denied");
try
{
LotTravDMO.ReassignOriginator(workRequestID, 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" + workRequestID.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = workRequestID, UserID = @User.Identity.Name, DocumentType = "Lot Traveler", OperationType = "Error", Comments = "ReAssignOriginatorByAdmin - " + exceptionString });
throw new Exception(e.Message);
}
}
}
}