private void Show_Display()
        {
            string wst_id, cur_empl, out_time;
            string subline;

            frmClient frmLayout = new frmClient("", Cur_Line_ID, MasterDatabase_Connection_Str);
            Line line = frmLayout.GetLineInstant();
            line.SetInactiveLine();
            line.SetDisableLine();

            // Create WST Ready List & WST Inactive List
            foreach (DataRow row in Current_Line_Status.Rows)
            {
                subline = row["SubLine_ID"].ToString().Trim();
                wst_id = row["WST_ID"].ToString().Trim();
                cur_empl = row["Empl_ID"].ToString().Trim();
                out_time = row["To_Time"].ToString().Trim();
                if ((subline == FRU_LINE) || (subline == STAND_LINE))
                {
                    if ((cur_empl != "") && (out_time == ""))
                    {
                        line.SetReady_FRU_WST(wst_id, cur_empl);
                    }
                    else
                    {
                        line.SetReady_FRU_Inactive_WST(wst_id);
                    }
                }
                else
                {
                    if ((cur_empl != "") && (out_time == ""))
                    {
                        line.SetReady_WST(wst_id, cur_empl);
                    }
                    else
                    {

                        line.SetInactiveWST(wst_id);
                    }
                }
            }
            frmLayout.ShowDialog();
        }
        private bool Create_Tracking(string msnv)
        {
            DateTime date = Cur_Date;
            string line_id;
            string wst_id;
            string plan_wst = "";
            DataTable job_plan;

            bool use_for_cur_PO;
            string po_wst;
            string[] wst_list;
            string empl_name = "";
            string cur_empl, out_time;
            frmClient frmLayout;
            Line line;

            Load_List_of_WST(Cur_Line_ID);
            int total = List_WST_dtb.Rows.Count;
            Cur_WST_ID = "";

            switch (Tracking_Mode)
            {
                case TRACKING_MODE.MANUAL_OUT:
                    return Empl_Check_out(msnv);
                    break;

                case TRACKING_MODE.MANUAL_IN:
                case TRACKING_MODE.NORMAL_IN:
                    empl_name = Get_Empl_Name(msnv);
                    // Get WST in Plan
                    job_plan = Load_Cur_JobsPlan(msnv, date);
                    if ((job_plan != null) && (job_plan.Rows.Count > 0))
                    {
                        plan_wst = job_plan.Rows[0]["WST_ID"].ToString().Trim();
                    }

                    // WST_plan in this Line or Not: if WST_Plan in this line set WST value to Cur_WST_ID
                    if (Tracking_Mode == TRACKING_MODE.NORMAL_IN)
                    {
                        wst_list = new string[total];
                        for (int i = 0; i < total; i++)
                        {
                            wst_list[i] = List_WST_dtb.Rows[i]["WST_ID"].ToString().Trim();
                            if ((plan_wst == wst_list[i]) && (plan_wst != ""))
                            {
                                Cur_WST_ID = plan_wst;
                            }
                        }
                    }

                    use_for_cur_PO = false;
                    foreach (DataRow row in Current_Line_Status.Rows)
                    {
                        po_wst = row["WST_ID"].ToString().Trim();
                        if (Cur_WST_ID == po_wst)
                        {
                            use_for_cur_PO = true;
                            break;
                        }
                    }

                    if (use_for_cur_PO == false)
                    {
                        if (MessageBox.Show("PO hiện tại không bao gồm vị trí (WST) trong kế hoạch của Bạn. \nBạn có vào WST khác không?", "Warning", MessageBoxButtons.YesNo) != DialogResult.Yes)
                        {
                            MessageBox.Show(msnv + ": Bạn vui lòng về Line STAND", "Warning");
                            return false;
                        }
                    }

                    // If WST_Plan no in current line ==> Allow to select this WST
                    if ((Cur_WST_ID == "") || (Is_Empty_WST(Cur_WST_ID) == false))
                    {
                        if (Cur_WST_ID == "")
                        {
                            if (MessageBox.Show("Bạn không được sắp trong line này. \nBạn có chắc bạn sẽ vào line này không?", "Warning", MessageBoxButtons.YesNo) != DialogResult.Yes)
                            {
                                return false;
                            }
                        }
                        else if (Is_Empty_WST(Cur_WST_ID) == false)
                        {
                            if (MessageBox.Show("WST làm việc của bạn trong kế hoạch đã có nhân viên khác làm. \nBạn có vào WST khác không?", "Warning", MessageBoxButtons.YesNo) != DialogResult.Yes)
                            {
                                return false;
                            }
                        }

                        use_for_cur_PO = false;
                        foreach (DataRow row in Current_Line_Status.Rows)
                        {
                            po_wst = row["WST_ID"].ToString().Trim();
                            if (Cur_WST_ID == po_wst)
                            {
                                use_for_cur_PO = true;
                                break;
                            }
                        }

                        if (use_for_cur_PO == true)
                        {
                            if (MessageBox.Show("PO hiện tại không bao gồm vị trí (WST) trong kế hoạch của Bạn. \nBạn có vào WST khác không?", "Warning", MessageBoxButtons.YesNo) != DialogResult.Yes)
                            {
                                MessageBox.Show(msnv + ": Bạn vui lòng về Line STAND", "Warning");
                                return false;
                            }
                        }

                        frmLayout = new frmClient("Please Select WST", Cur_Line_ID, MasterDatabase_Connection_Str);
                        line = frmLayout.GetLineInstant();

                        line.SetDisableLine();

                        // Create WST Ready List
                        foreach (DataRow row in Current_Line_Status.Rows)
                        {
                            wst_id = row["WST_ID"].ToString().Trim();
                            cur_empl = row["Empl_ID"].ToString().Trim();
                            out_time = row["To_Time"].ToString().Trim();
                            if ((cur_empl != "") && (out_time == ""))
                            {
                                line.SetReady_WST(wst_id, cur_empl);
                            }
                            else
                            {
                                line.SetInactiveWST(wst_id);
                            }
                        }

                        if (frmLayout.ShowDialog() == DialogResult.OK)
                        {
                            Cur_WST_ID = frmLayout.WST_Selected.Trim();
                            if (Cur_WST_ID == "")
                            {
                                return false;
                            }
                        }
                        else
                        {
                            return false;
                        }
                    }

                    if ((Cur_WST_ID != null) && (Cur_WST_ID != ""))
                    {
                        // Show Current Empty Position
                        frmLayout = new frmClient("", Cur_Line_ID, MasterDatabase_Connection_Str);
                        line = frmLayout.GetLineInstant();
                        line.SetActiveWST(Cur_WST_ID, "");
                        frmLayout.ShowDialog();

                        /********************************************************************************************/
                        //@TODO (1): need to apply: Một nhân viên không được làm 2 line
                        //      --> nhưng một nhân viên có thể làm nhiều trạm trên cùng 1 line
                        //      Load_Cur_JobsPlan_Details(msnv, date);
                        Load_Job_Tracking(msnv, date);

                        // Close Current Line
                        foreach (DataRow row in JobsTracking_dtb.Rows)
                        {
                            line_id = row["LineID"].ToString().Trim();
                            wst_id = row["WST_ID"].ToString().Trim();
                            out_time = row["To_Time"].ToString().Trim();
                            //if ((line_id != Cur_Line_ID) && (out_time != ""))
                            if ((line_id != Cur_Line_ID) && (out_time == "")) // edit Thuy
                            {
                                // row["To_Time"] = Cur_Date.TimeOfDay;
                                // Hiển thị thông báo một người không được làm 2 line và thoát ra
                                MessageBox.Show("Một người không được làm 2 line", "Warning");
                                return false;
                            }
                        }
                        /********************************************************************************************/
                        // add new record
                        // Check In
                        Empl_Check_in(Cur_WST_ID, msnv, empl_name);
                        Update_SQL_Data(Current_Line_Status_da, Current_Line_Status);
                        return true;
                    }
                    break;
                case TRACKING_MODE.FRU_IN:
                    empl_name = Get_Empl_Name(msnv);
                    if ((Cur_Part == "") || (Cur_PO == ""))
                    {
                        MessageBox.Show("Bạn chưa chọn PO.\nVui Lòng Chọn PO!", "Cảnh Báo");
                        return false;
                    }

                    if (MessageBox.Show("Bạn sẽ làm PO " + FRU_Rb.Text.Trim() + "?", "Cảnh Báo", MessageBoxButtons.YesNo) != DialogResult.Yes)
                    {
                        return false;
                    }

                    frmLayout = new frmClient("Please Select WST", Cur_Line_ID, MasterDatabase_Connection_Str);
                    line = frmLayout.GetLineInstant();

                    line.SetInactiveLine();

                    // Create WST Ready List
                    foreach (DataRow row in Current_Line_Status.Rows)
                    {
                        wst_id = row["WST_ID"].ToString().Trim();
                        line.SetDisable_WST(wst_id);
                    }

                    if (frmLayout.ShowDialog() == DialogResult.OK)
                    {
                        Cur_WST_ID = frmLayout.WST_Selected.Trim();
                        if (Cur_WST_ID == "")
                        {
                            return false;
                        }
                    }
                    else
                    {
                        return false;
                    }

                    frmLayout = new frmClient("", Cur_Line_ID, MasterDatabase_Connection_Str);
                    line = frmLayout.GetLineInstant();
                    line.SetActiveWST(Cur_WST_ID, "");
                    frmLayout.ShowDialog();

                    Empl_FRU_Check_in(Cur_WST_ID, msnv, empl_name);

                    break;
            }
            return false;
        }