using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Fab2ApprovalSystem.ViewModels; using Fab2ApprovalSystem.DMO; using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Models; using System.IO; using Kendo.Mvc.Extensions; using Kendo.Mvc.UI; using System.Web.Services; namespace Fab2ApprovalSystem.Controllers { [Authorize] [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] [SessionExpireFilter] public class ChangeControlController : Controller { // // GET: /ChangeControl/ ChangeControlDMO ccDMO = new ChangeControlDMO(); public ActionResult Index() { return View(); } public ActionResult Create() { ChangeControlViewModel cc = new ChangeControlViewModel(); try { cc.OwnerID = (int)Session[GlobalVars.SESSION_USERID]; ccDMO.InsertChangeControl(cc); return RedirectToAction("Edit", new { issueID = cc.PlanNumber }); } catch (Exception e) { string detailedException = ""; try { detailedException = e.InnerException.ToString(); } catch { detailedException = e.Message; } string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + cc.PlanNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); Functions.WriteEvent(@User.Identity.Name + "\r\n Create - Change Control\r\n" + cc.PlanNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); EventLogDMO.Add(new WinEventLog() { IssueID = cc.PlanNumber, UserID = @User.Identity.Name, DocumentType = "Change Control", OperationType = "Error", Comments = "Create - " + exceptionString }); throw new Exception(e.Message); } } /// /// /// /// /// public ActionResult Edit(int issueID) { int isITARCompliant = 1; ChangeControlViewModel cc = new ChangeControlViewModel(); cc = ccDMO.GetChangeControlRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]); List userList = MiscDMO.GetApproversListByDocument(cc.PlanNumber, cc.CurrentStep, (int)GlobalVars.DocumentType.ChangeControl); ApproversListViewModel appUser = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == (int)Session[GlobalVars.SESSION_USERID]; }); if (appUser != null) { ViewBag.IsApprover = "true"; } //TODO locked functionality if (isITARCompliant == 0) // not ITAR Compliant { return View("UnAuthorizedAccess"); } else { if ((int)Session[GlobalVars.SESSION_USERID] == cc.OwnerID) ViewBag.IsOriginator = "true"; else ViewBag.IsOriginator = "false"; if ((cc.RecordLockIndicator && cc.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID]) || cc.ClosedDate != null) { return RedirectToAction("ReadOnlyCC", new { issueID = issueID }); } else { cc = ccDMO.GetChangeControl(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]); ViewBag.Attendees = ccDMO.GetUsers(); ViewBag.Generations = ccDMO.GetGenerations(); ViewBag.PartNumbers = ccDMO.GetPartNumbers(); //ViewBag.ToolTypes = ccDMO.GetToolTypes(); //ViewBag.MeetingList = ccDMO.GetMeetingList(issueID); ViewBag.Processes = ccDMO.GetProcesses(); ViewBag.Logistics = ccDMO.GetLogistics(); ViewBag.AIResponsibles = ccDMO.GetActionItemResponsible(); ViewBag.Sites = ccDMO.GetSites(); return View(cc); } } } /// /// /// /// /// public ActionResult ReadOnlyCC(int issueID) { int isITARCompliant = 1; ChangeControlViewModel cc = new ChangeControlViewModel(); cc = ccDMO.GetChangeControlRead(issueID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]); //TODO locked functionality if (isITARCompliant == 0) // not ITAR Compliant { return View("UnAuthorizedAccess"); } else { ViewBag.MeetingList = ccDMO.GetMeetingList(issueID); ViewBag.Generations = ccDMO.GetGenerations(); ViewBag.PartNumbers = ccDMO.GetPartNumbers(); //ViewBag.ToolTypes = ccDMO.GetToolTypes(); ViewBag.Processes = ccDMO.GetProcesses(); ViewBag.Logistics = ccDMO.GetLogistics(); return View(cc); } } /// /// /// /// /// [HttpPost] public ActionResult Edit(ChangeControlViewModel model) { try { var data = model; ccDMO.UpdateChangeControl(model, (int)Session[GlobalVars.SESSION_USERID]); ViewBag.AIResponsibles = ccDMO.GetActionItemResponsible(); } catch (Exception ex) { return Content(ex.Message); } return Content("Successfully Saved"); } public int GetUserIDByDisplayName(string displayName) { try { var UserList = ccDMO.GetUsers(); int UserID = (from a in UserList where a.AttendeeName.Equals(displayName) select a.AttendeeID).First(); return UserID; } catch (Exception ex) { return 0; } } /// /// /// /// /// public JsonResult SearchParts(string searchText) { List partList = MiscDMO.SearchLTParts(searchText.Trim()).Select(x => x.WIPPartData).ToList(); return Json(partList, JsonRequestBehavior.AllowGet); } /// /// /// /// /// /// public ActionResult GetCCAttachments([DataSourceRequest] DataSourceRequest request, int planNumber) { return Json(ccDMO.GetCCAttachment(planNumber).ToDataSourceResult(request)); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult UpdateCCAttachment([DataSourceRequest] DataSourceRequest request, CCAttachment model) { if (model != null && ModelState.IsValid) { ccDMO.UpdateCCAttachemnt(model); } //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult DeleteCCAttachment([DataSourceRequest] DataSourceRequest request, CCAttachment model) { if (model != null && ModelState.IsValid) { ccDMO.DeleteCCAttachemnt(model); } //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } public ActionResult InsertCCAttachmentItem([DataSourceRequest] DataSourceRequest request, CCAttachment model) { if (model != null && ModelState.IsValid) { model = ccDMO.InsertCCAttachment(model); } return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } /// /// /// /// /// /// /// public ActionResult AttachSaveCC(IEnumerable files, int planNumber, int attachID) { // The Name of the Upload component is "files" if (files != null) { foreach (var file in files) { // Some browsers send file names with full path. // We are only interested in the file name. var fileName = Path.GetFileName(file.FileName); var fileExtension = Path.GetExtension(file.FileName); //var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName); DirectoryInfo di; var ccPhysicalPath = Functions.GetAttachmentFolder() + @"ChangeControl\" + planNumber; di = new DirectoryInfo(ccPhysicalPath); if (!di.Exists) di.Create(); var guid = Guid.NewGuid().ToString(); var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"ChangeControl\" + planNumber + @"\", guid + fileExtension); file.SaveAs(physicalPath); CCAttachment attach = new CCAttachment() { ID = attachID, FileGUID = guid, FileName = fileName, UploadedByID = (int)Session[GlobalVars.SESSION_USERID] //Title = title, //RequirementsNotes = requirementsNotes }; //ccDMO.InsertCCAttachment(attach); ccDMO.UpdateCCAttachmentDocument(attach); } } return Content(""); } /// /// /// /// /// /// public ActionResult GetMeetingDecisionSummaryList([DataSourceRequest] DataSourceRequest request, int planNumber) { return Json(ccDMO.GetMeetingDecisionSummaryList(planNumber).ToDataSourceResult(request)); } /// /// /// /// /// /// public ActionResult GetMeetingAttachments([DataSourceRequest] DataSourceRequest request, int meetingID) { return Json(ccDMO.GetMeetingAttachments(meetingID).ToDataSourceResult(request)); } public ActionResult GetPCRB([DataSourceRequest] DataSourceRequest request, int PlanNumber, string PCRB) { return Json(ccDMO.GetPCRB(PlanNumber, PCRB).ToDataSourceResult(request)); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult UpdateMeetingAttachmentAttrib([DataSourceRequest] DataSourceRequest request, CCMeetingAttachment model) { if (model != null && ModelState.IsValid) { ccDMO.UpdateMeetingAttachmentAttrib(model); } //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult DeleteMeetingAttachment([DataSourceRequest] DataSourceRequest request, CCMeetingAttachment model) { if (model != null && ModelState.IsValid) { ccDMO.DeleteMeetingAttachemnt(model); } //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult InsertMeetingAttachmentItemAttrib([DataSourceRequest] DataSourceRequest request, CCMeetingAttachment model) { if (model != null && ModelState.IsValid) { model = ccDMO.InsertMeetingAttachmentAttrib(model); } return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } /// /// /// /// /// /// /// /// public ActionResult AttachSaveMeeting(IEnumerable files, int planNumber, int meetingID, int attachID) { // The Name of the Upload component is "files" if (files != null) { foreach (var file in files) { // Some browsers send file names with full path. // We are only interested in the file name. var fileName = Path.GetFileName(file.FileName); var fileExtension = Path.GetExtension(file.FileName); //var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName); DirectoryInfo di; var ccPhysicalPath = Functions.GetAttachmentFolder() + @"ChangeControl\" + planNumber; di = new DirectoryInfo(ccPhysicalPath); if (!di.Exists) di.Create(); var guid = Guid.NewGuid().ToString(); var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"ChangeControl\" + planNumber + @"\", guid + fileExtension); file.SaveAs(physicalPath); CCMeetingAttachment attach = new CCMeetingAttachment() { ID = attachID, FileGUID = guid, FileName = fileName, UploadedByID = (int)Session[GlobalVars.SESSION_USERID] }; //ccDMO.InsertCCAttachment(attach); ccDMO.UpdateMeetingAttachmentDocument(attach); } } return Content(""); } /// /// /// /// /// /// public FileResult DownloadCCFile(string fileGuid, int planNumber) { string fileName = ccDMO.GetCCFileName(fileGuid); string fileExtension = fileName.Substring(fileName.LastIndexOf("."), fileName.Length - fileName.LastIndexOf(".")); string ecnFolderPath = Functions.GetAttachmentFolder() + "ChangeControl\\" + planNumber.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); } /// /// /// /// /// public ActionResult CreateMeeting(int planNumber) { try { int meetingID = ccDMO.InsertMeeting(planNumber); //return RedirectToAction("EditMeeting", new { meetingID = meetingID }); return Content(meetingID.ToString()); //return null; } catch (Exception e) { string detailedException = ""; try { detailedException = e.InnerException.ToString(); } catch { detailedException = e.Message; } string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + planNumber.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); Functions.WriteEvent(@User.Identity.Name + "\r\n Create - Meeting\r\n" + planNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); EventLogDMO.Add(new WinEventLog() { IssueID = planNumber, UserID = @User.Identity.Name, DocumentType = "Meeting", OperationType = "Error", Comments = "Create - " + exceptionString }); throw new Exception("Error: " + e.Message); } } /// /// /// /// /// public ActionResult EditMeeting(int meetingID) { int isITARCompliant = 1; CCMeeting meeting = new CCMeeting(); meeting = ccDMO.GetMeetingRead(meetingID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]); ViewBag.MeetingList = ccDMO.GetMeetingList(meeting.PlanNumber); //TODO locked functionality List userList = MiscDMO.GetApproversListByDocument(meeting.PlanNumber, meeting.CurrentStep, (int)GlobalVars.DocumentType.ChangeControl); ApproversListViewModel appUser = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == (int)Session[GlobalVars.SESSION_USERID]; }); if (appUser != null) { ViewBag.IsApprover = "true"; } if (isITARCompliant == 0) // not ITAR Compliant { return View("UnAuthorizedAccess"); } else { if ((meeting.RecordLockIndicator && meeting.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID]) || (meeting.PCRBClosed)) { return RedirectToAction("ReadOnlyMeeting", new { meetingID = meetingID }); } else if (meeting.Decision != -1) { return RedirectToAction("EditMeetingUpdate", new { meetingID = meetingID }); } else { ViewBag.AIResponsibles = ccDMO.GetActionItemResponsible(); ViewBag.Attendees = ccDMO.GetUsers(); ViewBag.Sites = ccDMO.GetSites(); ViewBag.PCRValues = ccDMO.GetPCRValues(); meeting = ccDMO.GetMeeting(meetingID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]); return View(meeting); } } } /// /// /// /// /// public ActionResult ReadOnlyMeeting(int meetingID) { int isITARCompliant = 1; CCMeeting meeting = new CCMeeting(); meeting = ccDMO.GetMeetingRead(meetingID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]); ViewBag.MeetingList = ccDMO.GetMeetingList(meeting.PlanNumber); ViewBag.PCRValues = ccDMO.GetPCRValues(); if (isITARCompliant == 0) // not ITAR Compliant { return View("UnAuthorizedAccess"); } else { return View(meeting); } } /// /// /// /// /// [HttpPost] public ActionResult EditMeeting(CCMeeting meeting) { try { ccDMO.UpdateMeeting(meeting); } catch (Exception ex) { return Content(ex.Message); } return Content("Successfully Saved"); } /// /// /// /// /// public ActionResult EditMeetingUpdate(int meetingID) { int isITARCompliant = 1; CCMeeting meeting = new CCMeeting(); meeting = ccDMO.GetMeetingRead(meetingID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]); ViewBag.MeetingList = ccDMO.GetMeetingList(meeting.PlanNumber); ViewBag.PCRValues = ccDMO.GetPCRValues(); //TODO locked functionality List userList = MiscDMO.GetApproversListByDocument(meeting.PlanNumber, meeting.CurrentStep, (int)GlobalVars.DocumentType.ChangeControl); ApproversListViewModel appUser = userList.Find(delegate (ApproversListViewModel al) { return al.UserID == (int)Session[GlobalVars.SESSION_USERID]; }); if (appUser != null) { ViewBag.IsApprover = "true"; } if (isITARCompliant == 0) // not ITAR Compliant { return View("UnAuthorizedAccess"); } else { if ((meeting.RecordLockIndicator && meeting.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID]) || (meeting.PCRBClosed)) { return RedirectToAction("ReadOnlyMeeting", new { meetingID = meetingID }); } else { meeting = ccDMO.GetMeeting(meetingID, out isITARCompliant, (int)Session[GlobalVars.SESSION_USERID]); ViewBag.AIResponsibles = ccDMO.GetActionItemResponsible(); return View(meeting); } } } /// /// /// /// /// /// public FileResult DownloadMeetingFile(string fileGuid, int planNumber) { string fileName = ccDMO.GetMeetingFileName(fileGuid); string fileExtension = fileName.Substring(fileName.LastIndexOf("."), fileName.Length - fileName.LastIndexOf(".")); string ecnFolderPath = Functions.GetAttachmentFolder() + "ChangeControl\\" + planNumber.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); } /// /// /// /// /// /// public ActionResult GetDecisionsSummaryList([DataSourceRequest] DataSourceRequest request, int meetingID) { return Json(ccDMO.GetDecisionsSummaryList(meetingID).ToDataSourceResult(request)); } /// /// /// /// /// /// //[AcceptVerbs(HttpVerbs.Post)] //public ActionResult UpdateDecisionsSummary([DataSourceRequest] DataSourceRequest request, CCDecisionSummary model) //{ // if (model != null && ModelState.IsValid) // { // ccDMO.UpdateDecisionSummary(model); // } // //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; // return Json(new[] { model }.ToDataSourceResult(request, ModelState)); //} /// /// /// /// /// /// public ActionResult UpdateMeetingDecisionNotes(CCDecisionSummary model) { try { ccDMO.UpdateDecisionSummary(model); } catch (Exception ex) { return Content(ex.Message); } return Content("Saved Succesfully"); } /// /// /// /// /// /// [AcceptVerbs(HttpVerbs.Post)] public ActionResult DeleteDecisionsSummary([DataSourceRequest] DataSourceRequest request, CCDecisionSummary model) { if (model != null && ModelState.IsValid) { ccDMO.DeleteDecisionSummary(model); } //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } /// /// /// /// /// /// //[AcceptVerbs(HttpVerbs.Post)] //public ActionResult InsertDecisionsSummary([DataSourceRequest] DataSourceRequest request, CCDecisionSummary model) //{ // if (model != null && ModelState.IsValid) // { // model = ccDMO.InsertDecisionSummary(model); // } // return Json(new[] { model }.ToDataSourceResult(request, ModelState)); //} public ActionResult InsertDecisionsSummary(CCDecisionSummary model) { try { ccDMO.InsertDecisionSummary(model); } catch (Exception ex) { return Content(ex.Message); } return Content("Saved Succesfully"); } /// /// /// /// /// /// public ActionResult UpdateECN_LotDispoLinks(int id, string ecnLinks, string lotDispoLinks) { try { ccDMO.UpdateDecisionSummaryLinks(id, ecnLinks, lotDispoLinks); } catch (Exception ex) { return Content(ex.Message); } return Content("Saved Succesfully", "application/json"); } public ActionResult GetMeetingList([DataSourceRequest] DataSourceRequest request, int planNumber) { var meetingList = ccDMO.GetMeetingList(planNumber); return Json(meetingList.ToDataSourceResult(request)); } /// /// /// /// /// /// /// public ActionResult GetMeetingAttendees([DataSourceRequest] DataSourceRequest request, int meetingID) { return Json(ccDMO.GetMeetingAttendees(meetingID).ToDataSourceResult(request)); } public ActionResult GetPCRBAttendees([DataSourceRequest] DataSourceRequest request, int PCRBID) { return Json(ccDMO.GetPCRBAttendees(PCRBID).ToDataSourceResult(request)); } /// /// /// /// /// /// //[AcceptVerbs(HttpVerbs.Post)] //public ActionResult UpdateMeetingAttendee([DataSourceRequest] DataSourceRequest request, CCMeetingAttendee model) //{ // if (model != null && ModelState.IsValid) // { // ccDMO.UpdateMeetingAttendee(model); // } // //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; // return Json(new[] { model }.ToDataSourceResult(request, ModelState)); //} public void InsertNewMeetingAttendee(string attendeeName, string jobTitle, string siteName) { try { //ccDMO.InsertNewMeetingAttendee(meetingId, attendeeName, jobTitle, siteName); } catch (Exception e) { string detailedException = ""; try { detailedException = e.InnerException.ToString(); } catch { detailedException = e.Message; } //string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + docid.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); //Functions.WriteEvent(@User.Identity.Name + "\r\n UpdateMeetingAttendee - Change Control\r\n" + docid.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); //EventLogDMO.Add(new WinEventLog() { IssueID = docid, UserID = @User.Identity.Name, DocumentType = "Change Control", OperationType = "Error", Comments = "UpdateMeetingAttendee - " + exceptionString }); //throw new Exception(e.Message); } } public void UpdateMeetingAttendee(int id, string attendeeName, string jobTitle, string siteName) { int docid = id; try { ccDMO.UpdateMeetingAttendee(id, attendeeName, jobTitle, siteName); } catch (Exception e) { string detailedException = ""; try { detailedException = e.InnerException.ToString(); } catch { detailedException = e.Message; } string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + docid.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); Functions.WriteEvent(@User.Identity.Name + "\r\n UpdateMeetingAttendee - Change Control\r\n" + docid.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); EventLogDMO.Add(new WinEventLog() { IssueID = docid, UserID = @User.Identity.Name, DocumentType = "Change Control", OperationType = "Error", Comments = "UpdateMeetingAttendee - " + exceptionString }); throw new Exception(e.Message); } //return Content(""); } [HttpPost] public void UpdatePCRBAttendee(int id, int attendeeId, string jobTitle, string siteName) { int docid = id; try { ccDMO.UpdatePCRBAttendee(id, attendeeId, jobTitle, siteName); } catch (Exception e) { string detailedException = ""; try { detailedException = e.InnerException.ToString(); } catch { detailedException = e.Message; } string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + docid.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); Functions.WriteEvent(@User.Identity.Name + "\r\n UpdateMeetingAttendee - Change Control\r\n" + docid.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); EventLogDMO.Add(new WinEventLog() { IssueID = docid, UserID = @User.Identity.Name, DocumentType = "Change Control", OperationType = "Error", Comments = "UpdateMeetingAttendee - " + exceptionString }); throw new Exception(e.Message); } //return Content(""); } /// /// /// /// /// /// [AcceptVerbs(HttpVerbs.Post)] public ActionResult DeleteMeetingAttendee([DataSourceRequest] DataSourceRequest request, CCMeetingAttendee model) { if (model != null && ModelState.IsValid) { ccDMO.DeleteMeetingAttendee(model); } //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } /// /// /// /// /// /// [AcceptVerbs(HttpVerbs.Post)] public ActionResult InsertMeetingAttendee([DataSourceRequest] DataSourceRequest request,int pcrId, int attendeeId, string jobTitle, string siteName) { CCPCRBAttendee newAttendee = new CCPCRBAttendee(); newAttendee.AttendeeID = attendeeId; newAttendee.PCRBID = pcrId; newAttendee.JobTitle = jobTitle; newAttendee.Location = siteName; try { ccDMO.InsertMeetingAttendee(newAttendee); } catch (Exception ex) { return Content(ex.Message.ToString()); } return Content("1"); //return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } public ActionResult GetMeetingActionItems([DataSourceRequest] DataSourceRequest request, int meetingID) { return Json(ccDMO.GetMeetingActionItems(meetingID).ToDataSourceResult(request)); } public ActionResult GetPCRBActionItems([DataSourceRequest] DataSourceRequest request, int pcrbID) { return Json(ccDMO.GetPCRBActionItems(pcrbID).ToDataSourceResult(request)); } public ActionResult GetMeetingActionItems_All([DataSourceRequest] DataSourceRequest request, int planNumber) { return Json(ccDMO.GetMeetingActionItems_All(planNumber).ToDataSourceResult(request)); } /// /// /// /// /// /// [AcceptVerbs(HttpVerbs.Post)] //public ActionResult InsertMeetingActionItem([DataSourceRequest] DataSourceRequest request, CCMeetingActionItem model) //{ // if (model != null && ModelState.IsValid) // { // ccDMO.InsertMeetingActionItem(model); // } // return Json(new[] { model }.ToDataSourceResult(request, ModelState)); //} public ActionResult InsertPCRBActionItem(CCPCRBActionItem model) { try { if (model != null) { ccDMO.InsertPCRBActionItem(model); } } catch (Exception ex) { return Content(ex.Message.ToString()); } return Content("1"); } public ActionResult InsertMeetingActionItem(CCMeetingActionItem model) { try { if (model != null) { ccDMO.InsertMeetingActionItem(model); } } catch (Exception ex) { return Content(ex.Message.ToString()); } return Content("1"); } public ActionResult InsertPCRBAttendee([DataSourceRequest] DataSourceRequest request, int pcrId, int attendeeId, string jobTitle, string siteName) { CCPCRBAttendee newAttendee = new CCPCRBAttendee(); newAttendee.AttendeeID = attendeeId; newAttendee.PCRBID = pcrId; newAttendee.JobTitle = jobTitle; newAttendee.Location = siteName; try { ccDMO.InsertPCRBAttendee(newAttendee); } catch (Exception ex) { return Content(ex.Message.ToString()); } return Content("1"); //return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } public ActionResult UpdatePCRBActionItem(CCPCRBActionItem model) { try { if (model != null) { ccDMO.UpdatePCRBActionItem(model); } } catch (Exception ex) { return Content(ex.Message.ToString()); } return Content("1"); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult UpdateMeetingActionItemAll([DataSourceRequest] DataSourceRequest request, CCMeetingActionItemAll model) { if (model != null && ModelState.IsValid) { model.ClosedBy = (int)Session[GlobalVars.SESSION_USERID]; ccDMO.UpdateMeetingActionItem_All(model); } if (model.ClosedStatus) model.ClosedDate = DateTime.Now; else model.ClosedDate = null; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } public ActionResult UpdateMeetingActionItem(CCMeetingActionItem model) { try { if (model != null) { ccDMO.UpdateMeetingActionItem(model); } } catch (Exception ex) { return Content(ex.Message.ToString()); } return Content("1"); } [HttpPost] public ActionResult ReassignMeetingActionItemResponsiblePersons(int meetingActionItemId, string newResponsiblePersonIDs, string comments) { if (Session[GlobalVars.IS_ADMIN] == null) throw new Exception("Permission denied"); try { ccDMO.ReassignMeetingActionItemResponsiblePersons(meetingActionItemId, newResponsiblePersonIDs, comments, (int)Session[GlobalVars.SESSION_USERID]); } catch (Exception ex) { return Content(ex.Message.ToString()); } return Content("1"); } /// /// /// /// /// /// /// /// /// /// /// [AcceptVerbs(HttpVerbs.Post)] public ActionResult DeleteMeetingActionItem([DataSourceRequest] DataSourceRequest request, CCMeetingActionItem model) { if (model != null && ModelState.IsValid) { ccDMO.DeleteMeetingActionItem(model); } //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } public ActionResult DeletePCRBActionItem([DataSourceRequest] DataSourceRequest request, CCPCRBActionItem model) { if (model != null && ModelState.IsValid) { ccDMO.DeletePCRBActionItem(model); } //lot.LotStatusOptionID = lot.LotStatusOption.LotStatusOptionID; return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } /// /// /// /// public void CompleteCC(int planNumber) { int docid = planNumber; try { ccDMO.CompleteCC(planNumber); } catch (Exception e) { string detailedException = ""; try { detailedException = e.InnerException.ToString(); } catch { detailedException = e.Message; } string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + docid.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); Functions.WriteEvent(@User.Identity.Name + "\r\n CompleteCC - Change Control\r\n" + docid.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); EventLogDMO.Add(new WinEventLog() { IssueID = docid, UserID = @User.Identity.Name, DocumentType = "Change Control", OperationType = "Error", Comments = "CompleteCC - " + exceptionString }); throw new Exception(e.Message); } } /// /// /// /// public void CancelCC(int planNumber) { int docid = planNumber; try { ccDMO.CancelCC(planNumber); } catch (Exception e) { string detailedException = ""; try { detailedException = e.InnerException.ToString(); } catch { detailedException = e.Message; } string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + docid.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); Functions.WriteEvent(@User.Identity.Name + "\r\n CompleteCC - Change Control\r\n" + docid.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); EventLogDMO.Add(new WinEventLog() { IssueID = docid, UserID = @User.Identity.Name, DocumentType = "Change Control", OperationType = "Error", Comments = "CancelCC - " + exceptionString }); throw new Exception(e.Message); } } public ActionResult AttachSaveActionItem(IEnumerable AIfiles, int planNumber, int attachID) { // The Name of the Upload component is "files" if (AIfiles != null) { foreach (var file in AIfiles) { // Some browsers send file names with full path. // We are only interested in the file name. var fileName = Path.GetFileName(file.FileName); var fileExtension = Path.GetExtension(file.FileName); //var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName); DirectoryInfo di; var ccPhysicalPath = Functions.GetAttachmentFolder() + @"ChangeControl\" + planNumber; di = new DirectoryInfo(ccPhysicalPath); if (!di.Exists) di.Create(); var guid = Guid.NewGuid().ToString(); var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"ChangeControl\" + planNumber + @"\", guid + fileExtension); file.SaveAs(physicalPath); CCMeetingActionItemAll attach = new CCMeetingActionItemAll() { ID = attachID, FileGUID = guid, FileName = fileName, UploadedByID = (int)Session[GlobalVars.SESSION_USERID] }; //ccDMO.InsertCCAttachment(attach); ccDMO.UpdateActionItemAttachment(attach); } } return Content(""); } /// /// /// /// /// /// public FileResult DownloadActionItemFile(string fileGuid, int planNumber) { string fileName = ccDMO.GetActionItemFileName(fileGuid); string fileExtension = fileName.Substring(fileName.LastIndexOf("."), fileName.Length - fileName.LastIndexOf(".")); string ecnFolderPath = Functions.GetAttachmentFolder() + "ChangeControl\\" + planNumber.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); } public void UpdateMeetingNotes(int meetingID, string notes) { ccDMO.UpdateMeetingNotes(meetingID, notes); } /// /// /// /// public void ReleaseLockOnDocument(int planNumber) { ccDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], planNumber); try { ccDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], planNumber); } catch (Exception e) { try { Functions.WriteEvent(@User.Identity.Name + "\r\n ReleaseLockOnDocument LD\r\n" + planNumber.ToString() + "\r\n" + e.Message, System.Diagnostics.EventLogEntryType.Error); } catch { } ccDMO.ReleaseLockOnDocument(-1, planNumber); } } 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); } [HttpPost] public void ReAssignOwnerByAdmin(string planNumber, string comments, int newOwnerId) { if (Session[GlobalVars.IS_ADMIN] == null) throw new Exception("Permission denied"); int planNumberInt = 0; try { // remove non-numeric characters from Plan # then convert to int planNumberInt = Int32.Parse(new String(planNumber.Where(c => char.IsNumber(c)).ToArray())); ccDMO.ReassignOwner(planNumberInt, newOwnerId, 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 ReAssignOwnerByAdmin\r\n" + planNumber.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); EventLogDMO.Add(new WinEventLog() { IssueID = planNumberInt, UserID = @User.Identity.Name, DocumentType = "ChangeControl", OperationType = "Error", Comments = "ReAssignOwnerByAdmin - " + exceptionString }); throw new Exception(e.Message); } } public ActionResult GetPCRBMesaTitle(int issueID) { int isItarCompliant = 1; ChangeControlViewModel cc = ccDMO.GetChangeControlRead(issueID, out isItarCompliant, (int)Session[GlobalVars.SESSION_USERID]); string content = cc.PlanTitle; return Content(content); } } }