333 lines
14 KiB
C#
333 lines
14 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Specialized;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using WebLib;
|
|
|
|
namespace Education.Forms.辦訓狀況
|
|
{
|
|
public partial class 教學日誌處理 : FormBase
|
|
{
|
|
private DAC_訓練課程內容 Dao訓練課程內容;
|
|
private DAC_教學日誌 Dao教學日誌;
|
|
private int 課程企劃ID;
|
|
private int 課程序號;
|
|
private bool 主簽核已核准 = false;
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
FunctionName = "教學日誌暨異常狀況登錄";
|
|
Dao訓練課程內容 = new DAC_訓練課程內容(conn);
|
|
Dao教學日誌 = new DAC_教學日誌(conn);
|
|
Form_View = FormView1;
|
|
FormView_DataSource = ds教學日誌;
|
|
|
|
if (IsPostBack)
|
|
{
|
|
Form_View.DataBind();
|
|
}
|
|
|
|
Form_View.Visible = (訓練企劃搜尋.訓練企劃編號 > 0
|
|
&& ddl課程內容.SelectedValue != null && ddl課程內容.SelectedValue.Length > 0);
|
|
|
|
送簽1.Visible = Form_View.Visible;
|
|
送簽2.Visible = Form_View.Visible;
|
|
}
|
|
|
|
protected void ds已上課_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
|
|
{
|
|
e.ObjectInstance = Dao訓練課程企劃;
|
|
}
|
|
|
|
protected void ds課程內容_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
|
|
{
|
|
e.ObjectInstance = Dao訓練課程內容;
|
|
}
|
|
|
|
protected void btn查詢1_Click(object sender, EventArgs e)
|
|
{
|
|
if (訓練企劃搜尋.訓練企劃編號 == 0)
|
|
{
|
|
Panel1.Visible = false;
|
|
Panel2.Visible = false;
|
|
lbMessage.Text = "請選擇課程企劃";
|
|
return;
|
|
}
|
|
|
|
Panel1.Visible = true;
|
|
ddl課程內容.DataBind();
|
|
Panel2.Visible = ddl課程內容.Items.Count > 0;
|
|
}
|
|
|
|
protected void btn查詢2_Click(object sender, EventArgs e)
|
|
{
|
|
Form_View.ChangeMode(FormViewMode.ReadOnly);
|
|
Form_View.DataBind();
|
|
}
|
|
|
|
protected override void FormView_DataBound(object sender, EventArgs e)
|
|
{
|
|
if (!Form_View.Visible)
|
|
return;
|
|
|
|
//if (Form_View.PageCount == 0)
|
|
//{
|
|
// if (Form_View.CurrentMode != FormViewMode.Insert)
|
|
// {
|
|
// Form_View.ChangeMode(FormViewMode.Insert);
|
|
// Form_View.DataBind();
|
|
// return;
|
|
// }
|
|
//}
|
|
|
|
課程企劃ID = 訓練企劃搜尋.訓練企劃編號;
|
|
課程序號 = DAC.GetInt32(ddl課程內容.SelectedValue);
|
|
|
|
base.FormView_DataBound(sender, e);
|
|
}
|
|
|
|
private void 顯示課程內容相關資料()
|
|
{
|
|
訓練課程內容List d = Dao訓練課程內容.SelectOne(課程企劃ID, 課程序號);
|
|
if (d.Count > 0)
|
|
{
|
|
if (FindControl<ITextControl>(Form_View, "lb節次") != null)
|
|
FindControl<ITextControl>(Form_View, "lb節次").Text = d[0].節次.ToString();
|
|
if (FindControl<ITextControl>(Form_View, "lb講師") != null)
|
|
FindControl<ITextControl>(Form_View, "lb講師").Text = Dao訓練課程企劃.Select選定講師名稱(課程企劃ID, 課程序號);
|
|
}
|
|
}
|
|
|
|
protected override void FormView_InsertDataBound(object sender, EventArgs e)
|
|
{
|
|
base.FormView_InsertDataBound(sender, e);
|
|
|
|
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
|
|
if (d.Count == 0)
|
|
return;
|
|
|
|
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
|
|
FindControl<HiddenField>(Form_View, "hf課程序號").Value = ddl課程內容.SelectedValue;
|
|
FindControl<DateTextBox>(Form_View, "txt填表日期").Value = DateTime.UtcNow.AddHours(8).Date;
|
|
FindControl<ITextControl>(Form_View, "txt填表人員").Text = UserId;
|
|
FindControl<ITextControl>(Form_View, "lb填表人員X").Text = Get員工姓名(UserId);
|
|
|
|
顯示課程內容相關資料();
|
|
送簽1.Visible = false;
|
|
送簽2.Visible = false;
|
|
btn填寫追蹤.Visible = false;
|
|
pnl追蹤編輯.Visible = false;
|
|
}
|
|
|
|
protected override void FormView_EditDataBound(object sender, EventArgs e)
|
|
{
|
|
base.FormView_EditDataBound(sender, e);
|
|
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
|
|
if (d.Count == 0)
|
|
return;
|
|
|
|
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
|
|
|
|
顯示課程內容相關資料();
|
|
送簽1.Visible = false;
|
|
送簽2.Visible = false;
|
|
btn填寫追蹤.Visible = false;
|
|
pnl追蹤編輯.Visible = false;
|
|
}
|
|
|
|
private void Set新增欄位顯示()
|
|
{
|
|
string[] 新欄位ID = { "lb觀察01", "lb觀察02", "lb觀察03", "lb觀察04", "lb觀察05", "lb觀察06", "lb觀察07", "lb觀察08", "lb觀察說明", "lb觀察紀錄1", "lb觀察紀錄2", "lb是否需後續追蹤", "lb追蹤事項", "lb處理結果追蹤" };
|
|
foreach (string 控制項ID in 新欄位ID)
|
|
{
|
|
Label lb = FindControl<Label>(Form_View, 控制項ID);
|
|
if (lb != null && String.IsNullOrEmpty(lb.Text.Trim()))
|
|
{
|
|
lb.Text = "2026年新增欄位";
|
|
lb.ForeColor = System.Drawing.Color.Gray;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void FormView_ReadOnlyDataBound(object sender, EventArgs e)
|
|
{
|
|
base.FormView_ReadOnlyDataBound(sender, e);
|
|
顯示課程內容相關資料();
|
|
Set新增欄位顯示();
|
|
|
|
btn填寫追蹤.Visible = false;
|
|
pnl追蹤編輯.Visible = false;
|
|
主簽核已核准 = false;
|
|
|
|
if (Form_View.SelectedValue != null)
|
|
{
|
|
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
|
|
if (d.Count == 0)
|
|
return;
|
|
|
|
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
|
|
|
|
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
|
|
|
|
送簽1.表單ID = 表單ID;
|
|
送簽1.訓練課程企劃編號 = 課程企劃ID;
|
|
送簽1.編號2 = 課程序號;
|
|
送簽1.表單ID格式 = String.Format("[{0}] {1}<br>[{2}] {3}",
|
|
d[0].顯示編號, d[0].訓練名稱, 課程序號, ddl課程內容.SelectedItem.Text);
|
|
|
|
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
|
|
送簽1.可送簽 = data[0].填表人員 == UserId;
|
|
送簽1.Refresh();
|
|
|
|
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
|
|
LinkButton btnUpdate = FindControl<LinkButton>(Form_View, "btnUpdate");
|
|
if (btnUpdate != null)
|
|
btnUpdate.Visible = !已送簽且未撤單(主簽核狀態);
|
|
|
|
bool 主單已送簽 = 已送簽且未撤單(主簽核狀態);
|
|
主簽核已核准 = 主簽核狀態 != null
|
|
&& 主簽核狀態.最終結果 == "Y"
|
|
&& 主簽核狀態.應簽關數.CompareTo("D") != 0;
|
|
|
|
表單簽核主檔 trackingStatus = Dao表單簽核主檔.GetLastStatus("處理結果追蹤", 表單ID);
|
|
bool 追蹤已核准 = trackingStatus != null
|
|
&& trackingStatus.最終結果 == "Y"
|
|
&& trackingStatus.應簽關數 != "D";
|
|
|
|
if (主單已送簽)
|
|
{
|
|
送簽2.表單ID = 表單ID;
|
|
送簽2.訓練課程企劃編號 = 課程企劃ID;
|
|
送簽2.編號2 = 課程序號;
|
|
送簽2.表單ID格式 = String.Format("[{0}] {1}<br>[{2}] {3}",
|
|
d[0].顯示編號, d[0].訓練名稱, 課程序號, ddl課程內容.SelectedItem.Text);
|
|
送簽2.可送簽 = data[0].填表人員 == UserId;
|
|
送簽2.Refresh();
|
|
|
|
btn填寫追蹤.Visible = data[0].填表人員 == UserId && !追蹤已核准;
|
|
}
|
|
}
|
|
|
|
送簽1.Visible = Form_View.SelectedValue != null;
|
|
送簽2.Visible = Form_View.SelectedValue != null
|
|
&& 已送簽且未撤單(Dao表單簽核主檔.GetLastStatus(
|
|
"教學日誌暨異常狀況", String.Format("{0}|{1}", 課程企劃ID, 課程序號)));
|
|
}
|
|
|
|
protected void btn填寫追蹤_Click(object sender, EventArgs e)
|
|
{
|
|
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
|
|
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
|
|
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
|
|
if (data.Count == 0 || data[0].填表人員 != UserId || !已送簽且未撤單(主簽核狀態))
|
|
{
|
|
lbMessage.Text = "教學日誌暨異常狀況尚未送簽、已撤單或目前使用者無權限填寫。";
|
|
return;
|
|
}
|
|
|
|
txt追蹤內容.Text = data[0].處理結果追蹤;
|
|
|
|
btn填寫追蹤.Visible = false;
|
|
pnl追蹤編輯.Visible = true;
|
|
送簽1.Visible = false;
|
|
送簽2.Visible = false;
|
|
}
|
|
|
|
protected void btn追蹤存檔_Click(object sender, EventArgs e)
|
|
{
|
|
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
|
|
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
|
|
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
|
|
if (data.Count == 0 || data[0].填表人員 != UserId || !已送簽且未撤單(主簽核狀態))
|
|
{
|
|
lbMessage.Text = "教學日誌暨異常狀況尚未送簽、已撤單或目前使用者無權限填寫。";
|
|
pnl追蹤編輯.Visible = false;
|
|
Form_View.DataBind();
|
|
return;
|
|
}
|
|
|
|
表單簽核主檔 trackingStatus = Dao表單簽核主檔.GetLastStatus("處理結果追蹤", 表單ID);
|
|
if (trackingStatus != null && trackingStatus.最終結果 == "Y" && trackingStatus.應簽關數 != "D")
|
|
{
|
|
lbMessage.Text = "處理結果追蹤已完成簽核,不可修改。";
|
|
pnl追蹤編輯.Visible = false;
|
|
Form_View.DataBind();
|
|
return;
|
|
}
|
|
|
|
if (String.IsNullOrEmpty(txt追蹤內容.Text.Trim()))
|
|
{
|
|
lbMessage.Text = "請輸入處理結果追蹤。";
|
|
return;
|
|
}
|
|
|
|
Dao教學日誌.Update處理結果追蹤(課程企劃ID, 課程序號, txt追蹤內容.Text);
|
|
|
|
pnl追蹤編輯.Visible = false;
|
|
Form_View.DataBind();
|
|
}
|
|
|
|
protected void btn追蹤取消_Click(object sender, EventArgs e)
|
|
{
|
|
pnl追蹤編輯.Visible = false;
|
|
Form_View.DataBind();
|
|
}
|
|
|
|
protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
|
|
{
|
|
e.Values["課程企劃編號"] = 課程企劃ID;
|
|
e.Values["處理結果追蹤"] = "";
|
|
}
|
|
|
|
protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e)
|
|
{
|
|
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
|
|
表單簽核主檔 status = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
|
|
if (已送簽且未撤單(status))
|
|
{
|
|
e.Cancel = true;
|
|
lbMessage.Text = "教學日誌暨異常狀況已送簽,不可更正。";
|
|
Form_View.ChangeMode(FormViewMode.ReadOnly);
|
|
Form_View.DataBind();
|
|
return;
|
|
}
|
|
|
|
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
|
|
if (data.Count > 0)
|
|
e.NewValues["處理結果追蹤"] = data[0].處理結果追蹤;
|
|
}
|
|
|
|
protected void cv觀察說明_ServerValidate(object source, ServerValidateEventArgs args)
|
|
{
|
|
args.IsValid = !String.IsNullOrEmpty(FindFormValue(source, "txt觀察說明").Trim());
|
|
}
|
|
|
|
protected void cv異常情形_ServerValidate(object source, ServerValidateEventArgs args)
|
|
{
|
|
args.IsValid = FindFormValue(source, "ddl有無異常事項") == "0"
|
|
|| !String.IsNullOrEmpty(FindFormValue(source, "txt異常情形").Trim());
|
|
}
|
|
|
|
protected void cv追蹤事項_ServerValidate(object source, ServerValidateEventArgs args)
|
|
{
|
|
args.IsValid = FindFormValue(source, "ddl是否需後續追蹤") == "0"
|
|
|| !String.IsNullOrEmpty(FindFormValue(source, "txt追蹤事項").Trim());
|
|
}
|
|
|
|
private bool 已送簽且未撤單(表單簽核主檔 status)
|
|
{
|
|
return status != null
|
|
&& !(status.應簽關數 == "D" && status.已簽關數 == "D");
|
|
}
|
|
|
|
protected void ds課程內容_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
|
{
|
|
送簽1.Visible = false;
|
|
送簽2.Visible = false;
|
|
}
|
|
}
|
|
}
|