Mike Phares b586da5c82 Removed PdfViewController, HtmlViewRenderer and FakeView to be replaced with ViewEngineResult Render method
Added HttpException class for missing HttpException for net8

Wrapped HttpContext.Session, GetJsonResult, IsAjaxRequest and GetUserIdentityName in controllers for net8

Added AuthenticationService to test Fab2ApprovalMKLink code for net8

Compile conditionally flags to debug in dotnet core
2025-05-23 12:27:09 -07:00

787 lines
35 KiB
Plaintext

@model Fab2ApprovalSystem.ViewModels.ChangeControlViewModel
@{
ViewBag.Title = "Edit";
}
<style>
table {
border-spacing: 5px;
padding: 5px;
border-color: white;
}
</style>
<script src="~/Scripts/common.js"> </script>
<link rel="stylesheet" href="/Content/kendo/kendo.blueopal.min.css" />
<body>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div>
<div class="panel panel-default center-block" data-spy="affix">
<input type="button" value="Back to PCRB List" class="btn btn-primary btn-xs" id="PCRBList" />
</div>
</div>
<div class="panel panel-default center-block" style="font-size: 10px">
<div class="panel-body bg-warning">
<div class="row">
<div class="col-sm-4">
<div class="row">
<div class="col-sm-3">
</div>
<div class="col-sm-3">
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<div class="col-sm-4 text-center">
<div class="row">
<div class="col-sm-12 center-block">
<font style="color: crimson; font-size:24px;font-weight: bolder">
Change Control @(Model.Status == 0 ? "" : " (Closed)")
</font>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="row">
<div class="col-sm-12">
<font style="color:crimson">
@if (Model.RecordLockByName == null)
{
<h4>
<font style="color:red">
Mode: [Readonly]
</font>
</h4>
}
else
{
<h4>
<font style="color:red">
Mode: [Readonly] - Locked for Editing by <font style="color: green; font-weight:bold; font-style:italic">@Model.RecordLockByName</font>
</font>
</h4>
}
</font>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-body bg-warning">
<div class="row">
<div class="col-sm-8">
<label class="control-label">Meeting List:</label>
@(Html.Kendo().DropDownList()
.Name("MeetingList")
.BindTo(new SelectList(ViewBag.MeetingList, "MeetingID", "MeetingInfo"))
.OptionLabel("Select")
.HtmlAttributes(new { style ="width: 300px; font-size:10px" })
)
<input type="button" value="Display MeetingInfo" class="btn btn-primary btn-xs" id="GetMeeting" />
</div>
<div class="col-sm-2 pull-right" style="color:crimson; font-weight:bold">
@(Model.Status == 1 ? "Completed Date:" + Model.ClosedDate.Value.ToString("MM/dd/yyyy") : (Model.Status == 2 ? "Cancelled Date:" + Model.ClosedDate.Value.ToString("MM/dd/yyyy") : ""))
</div>
<div class="col-sm-2 pull-right" style="color:crimson; font-weight:bold">
Status: @(Model.Status == 0 ? "NA" : (Model.Status == 1 ? "Completed" : "Cancelled"))
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-warning">
<div class="row">
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Plan #:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.PlanNumber, "P" + "{0:0000}", new { id = "txtPlanNumber", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-4">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Title</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.Title, new { id = "txtTitle", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue; width:100%" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Owner:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.OwnerName, new { id = "txtOwner", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
@if (GlobalVars.IsAdminValueNotNull(Session))
{
<a href="javascript:undefined" id="lnkReassignOwner" class="linkbutton edit" title="Re-assign Owner"></a>
}
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Change Level:</label>
</div>
<div class="form-control-static col-sm-9">
@(Html.Kendo().DropDownList()
.Name("ChangeLevel")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>()
{
new SelectListItem()
{
Text = "Select",
Value = "-1"
},
new SelectListItem()
{
Text = "1",
Value = "1"
},
new SelectListItem()
{
Text = "2",
Value = "2"
}
,
new SelectListItem()
{
Text = "3",
Value = "3"
}
}
)
.Value(Model.ChangeLevel.ToString())
)
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Export Control:</label>
</div>
<div class="col-sm-9">
@(Html.Kendo().DropDownList()
.Name("IsITAR")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>()
{
new SelectListItem()
{
Text = "Select",
Value = "-1"
},
new SelectListItem()
{
Text = "Yes",
Value = "1"
},
new SelectListItem()
{
Text = "No",
Value = "0"
}
}
)
.Value(Model.IsITAR.ToString())
)
</div>
</div>
</div>
</div>
</div>
</div>
<table class="table-condensed" style="width: 100%; font-size: 10px; border-color: lightgrey;">
<tbody>
<tr>
<td>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-info" style="font-size: 11px">
<div class="panel-heading">
<h5 style="font-weight:600">Description of Change</h5>
</div>
</div>
<div class="panel-body bg-warning">
<div class="form-horizontal col-sm-12">
@Html.TextAreaFor(model => model.ReasonForChange, 15, 30, new { id = "txtReasonForChange", @class = "form-control", Readonly = "Readonly", style = "background-color:lightblue; font-size: 11px;width: 100%;" })
</div>
</div>
</div>
</td>
<td>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-info" style="font-size: 11px">
<div class="panel-heading">
<h5 style="font-weight:600">Reason For Change</h5>
</div>
</div>
<div class="panel-body bg-warning">
<div class="form-horizontal col-sm-12">
@Html.TextAreaFor(model => model.ChangeDescription, 15, 30, new { id = "txtChangeDescription", @class = "form-control", Readonly = "Readonly", style = "background-color:lightblue; font-size: 11px;width: 100%;" })
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<table class="table-condensed" style="width: 100%; font-size: 10px; background-color:#95c7c3; border-color: lightgrey; " border="1" cellpadding="1">
<tbody>
<tr style="background-color:#e5e0e0">
<td width="10%" style="font-weight:bold">
</td>
<td>
<div class="panel-info" style="font-size: 11px">
<div class="panel-heading">
<h5 style="font-weight:600">Affected by Change</h5>
</div>
</div>
</td>
</tr>
<tr>
<td bgcolor="e5e0e0" width="10%">
<div class="panel-body bg-success">
Generations
</div>
</td>
<td width="80%">
@(Html.Kendo().MultiSelect()
.Name("GenerationIDs")
.BindTo(new SelectList(ViewBag.Generations, "GenerationID", "Generation"))
.Value(ViewBag.Nothing)
)
</td>
@*<td width="10%">
<button class="btn btn-warning btn-xs" data-toggle="modal" id="editGens" style="font-size:x-small">
Edit
</button>
</td>*@
</tr>
<tr>
<td bgcolor="e5e0e0" width="10%">
<div class="panel-body bg-success">
Notes:
</div>
</td>
<td width="80%">
@Html.TextAreaFor(model => model.Notes, 5, 50, new { id = "txtNotes", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue; width:100%;" })
</td>
</tr>
<tr>
<td bgcolor="e5e0e0" width="10%">
<div class="panel-body bg-success">
Part Numbers
</div>
</td>
<td width="80%">
<table width="100%">
<tr>
<td>
@*<table width="100%" border="0">
<tr>
<td>
Medical(A5)
</td>
<td>
@(Html.Kendo().DropDownList()
.Name("IsMedical")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>()
{
new SelectListItem()
{
Text = "Select",
Value = "-1"
},
new SelectListItem()
{
Text = "Yes",
Value = "1"
},
new SelectListItem()
{
Text = "No",
Value = "0"
}
}
)
.Value(Model.IsMedical.ToString())
)
</td>
</tr>
<tr>
<td>
Radhard(A6)
</td>
<td>
@(Html.Kendo().DropDownList()
.Name("IsRadHard")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>()
{
new SelectListItem()
{
Text = "Select",
Value = "-1"
},
new SelectListItem()
{
Text = "Yes",
Value = "1"
},
new SelectListItem()
{
Text = "No",
Value = "0"
}
}
)
.Value(Model.IsRadHard.ToString())
)
</td>
</tr>
<tr>
<td>
Automotive(A3/A4)
</td>
<td>
@(Html.Kendo().DropDownList()
.Name("IsAutomotive")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>()
{
new SelectListItem()
{
Text = "Select",
Value = "-1"
},
new SelectListItem()
{
Text = "Yes",
Value = "1"
},
new SelectListItem()
{
Text = "No",
Value = "0"
}
}
)
.Value(Model.IsAutomotive.ToString())
)
</td>
</tr>
</table>*@
</td>
<td>
<table width="100%">
<tr>
<td>
<div class="panel-body bg-success">
Part Numbers List
</div>
</td>
</tr>
<tr>
<td>
@Html.TextAreaFor(model => model.PartNumbers, 5, 50, new { id = "txtPartNumber", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue; width:100%; height=100%" })
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor="e5e0e0" width="10%">
<div class="panel-body bg-success">
Tool Type
</div>
</td>
<td width="80%">
@Html.TextAreaFor(model => model.ToolTypes, 5, 50, new { id = "txtToolTypes", @class = "k-textbox", Readonly = "Readonly",style = "background-color:lightblue; width:100%;" })
</td>
@*<td width="10%">
<button class="btn btn-warning btn-xs" data-toggle="modal" id="editToolTypes" style="font-size:x-small">
Edit
</button>
</td>*@
</tr>
<tr>
<td bgcolor="e5e0e0" width="10%">
<div class="panel-body bg-success">
Processes
</div>
</td>
<td width="80%">
@(Html.Kendo().MultiSelect()
.Name("ProcessIDs")
.BindTo(new SelectList(ViewBag.Processes, "ProcessID", "Process"))
.Value(ViewBag.Nothing)
)
</td>
@*<td width="10%">
<button class="btn btn-warning btn-xs" data-toggle="modal" id="editProcesses" style="font-size:x-small">
Edit
</button>
</td>*@
</tr>
<tr>
<td bgcolor="e5e0e0" width="10%">
<div class="panel-body bg-success">
Logistics
</div>
</td>
<td width="80%">
@(Html.Kendo().MultiSelect()
.Name("LogisticsIDs")
.BindTo(new SelectList(ViewBag.Logistics, "LogisticsID", "Logistics"))
.Value(ViewBag.Nothing)
)
</td>
@*<td width="10%">
<button class="btn btn-warning btn-xs" data-toggle="modal" id="editLogistics" style="font-size:x-small">
Edit
</button>
</td>*@
</tr>
</tbody>
</table>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-info">
<div class="pull-left">
<h5>
<font style="color:crimson">
Documents Attachments
</font>
</h5>
</div>
</div>
<div class="panel-body bg-warning">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.CCAttachment>()
.Name("ChangeControlAttachmentGrid")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.FileGUID).Visible(false);
columns.Bound(a => a.FileName).Template(@<text> @Html.ActionLink(@item.FileName.ToString(), null)</text>).Width("100px");
columns.Bound(a => a.Title).Width("300px");
columns.Bound(a => a.UploadedByName).Width("50px");
columns.Bound(a => a.UploadDateTime).Format("{0:MM/dd/yy hh:mm:ss}").Width("50px");
columns.Command(c => c.Custom("View Doc").Click("DownloadCCAttachment")).Width("100px"); ;
})
.Resizable(resize => resize.Columns(true))
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:125; width:100%; font-size: 11px" })
.DataSource(dataSource => dataSource
.Ajax()
//.Batch(false)
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
model.Field(a => a.UploadDateTime).Editable(false);
model.Field(a => a.UploadedByName).Editable(false);
model.Field(a => a.FileName).Editable(false);
})
.PageSize(50)
.Read(read => read.Action("GetCCAttachments", "ChangeControl", new { planNumber = Model.PlanNumber }))
)
)
}
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-info">
<div class="pull-left">
<h5>
<font style="color:crimson">
Decision Summary List
</font>
</h5>
</div>
</div>
<div class="panel-body bg-warning">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.MeetingDecisionSummaryList>()
.Name("DecisionSummaryList")
.Columns(columns =>
{
columns.Bound(a => a.PCRB).Width("100px");
columns.Bound(a => a.MeetingDate).Width("100px");
columns.Bound(a => a.DecisionNotes).ClientTemplate("#=ProcessLinkBreaks(DecisionNotes)#").Width("500px");
columns.Bound(a => a.ECNLinks).ClientTemplate("#=DisplayECNLinks(ECNLinks)#").Width("100px");
columns.Bound(a => a.LotDispoLinks).ClientTemplate("#=DisplayLotDispoLinks(LotDispoLinks)#").Width("100px");
})
.Resizable(resize => resize.Columns(true))
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:125; width:100%; font-size: 11px; valign:top" })
.DataSource(dataSource => dataSource
.Ajax()
//.Batch(false)
.ServerOperation(false)
.Model(model =>
{
//model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetMeetingDecisionSummaryList", "ChangeControl", new { planNumber = Model.PlanNumber }))
)
)
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-info">
<div class="pull-left">
<h5>
<font style="color:crimson">
Action Items
</font>
</h5>
</div>
</div>
<div class="panel-body bg-warning">
<div id="userListdiv" class="k-content">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.CCMeetingActionItemAll>()
.Name("MeetingActionItemsAll")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.MeetingID).Visible(false);
columns.Bound(a => a.PCRB).Width("50px");
columns.Bound(a => a.ActionItemName).Width("300px");
columns.Bound(a => a.ResponsiblePerson).Width("100px");
columns.Bound(a => a.Gating).Width("50px");
columns.Bound(a => a.DueDate).Width("50px").Format("{0:MM/dd/yy}").Width("50px");
columns.Bound(a => a.Updates).Width("200px");
columns.Bound(a => a.ClosedStatus).ClientTemplate("<input type='checkbox' disabled #= ClosedStatus ? checked='checked':'' # class='chkbx' />").Width("50px");
columns.Bound(a => a.ClosedDate).Width("50px").Format("{0:MM/dd/yy}").Width("150px");
columns.Bound(a => a.FileName).Width("100px");
columns.Command(c => c.Custom("View Doc").Click("DownloadActionItemAttachment")).Width("75px");
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.HtmlAttributes(new { style = "height: 500px;" })
.Scrollable()
.Resizable(resize => resize.Columns(true))
.Sortable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(5))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Id(p => p.ID);
model.Field(a => a.MeetingID).Editable(false);
model.Field(a => a.PCRB).Editable(false);
model.Field(a => a.ActionItemName).Editable(false);
model.Field(a => a.ResponsiblePerson).Editable(false);
model.Field(a => a.Gating).Editable(false);
model.Field(a => a.DueDate).Editable(false);
model.Field(a => a.ClosedDate).Editable(false);
})
.PageSize(50)
.Read(read => read.Action("GetMeetingActionItems_All", "ChangeControl", new { planNumber = Model.PlanNumber }))
)
)
</div>
</div>
</div>
}
</body>
@Html.Partial("_CCReassignOwner")
<script type="text/javascript">
function DownloadCCAttachment(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var fileGUID = dataItem.FileGUID;
var attachmentID = dataItem.AttachmentID;
if (fileGUID != null) {
window.location = '/ChangeControl/DownloadCCFile?fileGuid=' + fileGUID + '&planNumber=' + "@Model.PlanNumber";
}
else {
alert("There is no Attachment to display ")
}
}
function ProcessLinkBreaks(data) {
var template = "";
if (data != null) {
var tempValue = data.split('~');
for (var i = 0; i < tempValue.length; i++) {
var value = tempValue[i];
template += value + "<BR>" + " ";
}
}
return template;
}
function DisplayECNLinks(data) {
var template = "";
if (data != null) {
var tempValue = data.split('~');
for (var i = 0; i < tempValue.length; i++) {
var value = tempValue[i];
if (value != null) {
var newtempValue = value.split(',');
var newtemplate = "";
for (var i = 0; i < newtempValue.length; i++) {
newtemplate += "<a href='/ECN/Edit?IssueID=" + newtempValue[i].trim() + "'>" + newtempValue[i] + ", </a>" + " ";
}
}
template += newtemplate + "<BR>" + " ";
}
}
return template;
}
function DisplayLotDispoLinks(data) {
var template = "";
if (data != null) {
var tempValue = data.split('~');
for (var i = 0; i < tempValue.length; i++) {
var value = tempValue[i];
if (value != null) {
var newtempValue = value.split(',');
var newtemplate = "";
for (var i = 0; i < newtempValue.length; i++) {
newtemplate += "<a href='/LotDisposition/Edit?IssueID=" + newtempValue[i] + "'> " + newtempValue[i] + ", </a>" + " ";
}
}
template += newtemplate + "<BR>" + " ";
}
}
return template;
}
$("#GetMeeting").on('click', function (e) {
e.preventDefault()
var meetingid = $("#MeetingList").data("kendoDropDownList").value();
window.location.href = "/ChangeControl/EditMeeting?meetingID=" + meetingid;
})
$("#PCRBList").on('click', function () {
var url = '@Url.Action("ChangeControlList", "Home")';
window.location = url;
})
function DownloadActionItemAttachment(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var fileGUID = dataItem.FileGUID;
var attachmentID = dataItem.AttachmentID;
if (fileGUID != null) {
window.location = '/ChangeControl/DownloadActionItemFile?fileGuid=' + fileGUID + '&planNumber=' + "@Model.PlanNumber";
}
else {
alert("There is no Attachment to display ")
}
}
</script>