Esempio n. 1
0
 public XL_SuKienTKBInfo FindSuKienByIDGiaoVien(int IDGiaoVien, int Thu, int Tiet)
 {
     for (int i = 0; i < arrSuKienTKB.Count; i++)
     {
         XL_SuKienTKBInfo sk = (XL_SuKienTKBInfo)arrSuKienTKB[i];
         if (sk.IDNS_GiaoVien == IDGiaoVien && sk.Thu == Thu && sk.TietDau == Tiet)
         {
             return(sk);
         }
     }
     return(null);
 }
Esempio n. 2
0
 public XL_SuKienTKBInfo FindSuKienByIDPhongHoc(int IDPhongHoc, int Thu, int Tiet)
 {
     for (int i = 0; i < arrSuKienTKB.Count; i++)
     {
         XL_SuKienTKBInfo sk = (XL_SuKienTKBInfo)arrSuKienTKB[i];
         if (sk.IDDM_PhongHoc == IDPhongHoc && sk.Thu == Thu && sk.TietDau == Tiet)
         {
             return(sk);
         }
     }
     return(null);
 }
Esempio n. 3
0
 public XL_SuKienTKBInfo FindSuKienByIDKhoiLop(int IDDM_Lop, int Thu, int Tiet)
 {
     for (int i = 0; i < arrSuKienTKB.Count; i++)
     {
         XL_SuKienTKBInfo sk = (XL_SuKienTKBInfo)arrSuKienTKB[i];
         if (sk.IDDM_Lop == IDDM_Lop && sk.Thu == Thu && sk.TietDau == Tiet)
         {
             return(sk);
         }
     }
     return(null);
 }
Esempio n. 4
0
        public clsTKB(int IDNamHoc, int HocKy, long _IDTuan, HT_ThamSoXepLichInfo pThamSoTKB)
        {
            intIDTuan = _IDTuan;
            // Lấy ra danh sách phòng học, lớp học, giao viên phục vụ cho việc xếp TKB
            lps            = new cBDM_Lop(_IDTuan, pThamSoTKB);
            phs            = new cBDM_PhongHoc(pThamSoTKB);
            gvs            = new cBNS_GiaoVien(pThamSoTKB);
            objThamSoTKB   = pThamSoTKB;
            oBSuKienTKB    = new cBXL_SuKienTKB();
            pSuKienTKBInfo = new XL_SuKienTKBInfo();

            cBDM_MonHoc oBDM_MonHoc = new cBDM_MonHoc();

            htbPhong         = oBDM_MonHoc.GetPhongHoc_MonHoc(2);
            htbPhanCongPhong = new Hashtable();

            string[] strTietNhom;
            // Lấy ra mảng tiết của các nhóm tiết
            strTietNhom = objThamSoTKB.SO_TIET_CAC_NHOM.Split(',');
            arrTietNhom = new int[strTietNhom.Length];
            for (int i = 0; i < strTietNhom.Length; i++)
            {
                arrTietNhom[i] = int.Parse(strTietNhom[i]);
                if (arrTietNhom[i] > SoTietNhomMax)
                {
                    SoTietNhomMax = arrTietNhom[i];
                }
            }

            // Kiểm tra xem tuần đó đã chia sự kiện chưa
            // Nếu rồi thì lấy trực tiếp trong bảng sự kiện
            // Nếu chưa thì sẽ đọc sự kiện trong kế hoạch và chia sự kiện cho phù hợp
            if (oBSuKienTKB.CheckExist(_IDTuan) == true)
            {
                mUpdate = true;
                DocSuKien(_IDTuan);
            }
            else
            {
                mUpdate = false;
                DocKeHoachChiTiet(_IDTuan);
            }
            DataTable dtThucHanh = new cBXL_KeHoachThucHanhChiTiet().GetByIDXL_Tuan(_IDTuan);

            DocKeHoachLop(dtThucHanh);
            if (objThamSoTKB.SUDUNG_BAOBAN_TRONG_XEPLICH == 1)
            {
                DocKeHoachGiaoVien(dtThucHanh);
            }
            scE = new SchoolEngine(IDNamHoc, intIDTuan, phs, gvs, lps, sks, sk_lp, sk_gv, objThamSoTKB, arrTietNhom);
        }
Esempio n. 5
0
        private void DocKeHoachChiTiet(long IDXL_Tuan)
        {
            oBKeHoachChiTiet = new cBXL_KeHoachChiTiet();
            DataTable dt = oBKeHoachChiTiet.Get_SuKienTKB(IDXL_Tuan);

            sks = new SuKienTKB();

            DataRow[]        arrDr;
            string           IDDM_Lop = "";
            int              SoTiet, IDXL_MonHocTrongKy, count;
            List <CHIA_TIET> lst;
            XL_SuKienTKBInfo sk = new XL_SuKienTKBInfo(true), skClone;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                IDXL_MonHocTrongKy = 0;
                count = 0;
                if (dt.Rows[i]["IDDM_Lop"].ToString() != IDDM_Lop)
                {
                    IDDM_Lop = dt.Rows[i]["IDDM_Lop"].ToString();
                    arrDr    = dt.Select("IDDM_Lop = " + IDDM_Lop);
                    SoTiet   = int.Parse(dt.Compute("Sum(SoTiet)", "IDDM_Lop = " + IDDM_Lop).ToString());

                    lst = lstChiaTiet32(arrDr, SoTiet);

                    foreach (CHIA_TIET pChiaTiet in lst)
                    {
                        if (pChiaTiet.IDXL_MonHocTrongKy != IDXL_MonHocTrongKy)
                        {
                            sk = new XL_SuKienTKBInfo(true);
                            GanSuKien(sk, arrDr[count]);
                            sk.SoTiet = pChiaTiet.SoTiet;

                            IDXL_MonHocTrongKy = pChiaTiet.IDXL_MonHocTrongKy;
                            count++;
                        }
                        else
                        {
                            skClone        = sk.Clone();
                            skClone.SoTiet = pChiaTiet.SoTiet;
                            skClone.Idx    = sks.Count;
                            sks.Add(skClone);
                        }
                    }
                    i += count - 1;
                }
                //XL_SuKienTKBInfo sk = new XL_SuKienTKBInfo(true);
                //GanSuKien(sk, dr);
                //ChiaSuKien(sk);
            }
        }
Esempio n. 6
0
 public string ThongTinGV(int idx, int Thu, int Tiet)
 {
     if (gvs[idx].TKB[Thu, Tiet] == -1)
     {
         return("");
     }
     if (gvs[idx].TKB[Thu, Tiet, true] == eLOAI_SK.LK_GV)
     {
         XL_BaoBanGiaoVienInfo skk = (XL_BaoBanGiaoVienInfo)sk_gv[gvs[idx].TKB[Thu, Tiet], true];
         return("-1@" + skk.MoTa);
     }
     else
     {
         XL_SuKienTKBInfo sk = sks.FindSuKienByIdxSuKien(gvs[idx].TKB[Thu, Tiet]);
         return(gvs[idx].TKB[Thu, Tiet] + "@" + sk.TenLop + "\n" + (sk.KyHieu == "" ? sk.TenMon : sk.KyHieu) + "\n" + sk.TenPhong);
     }
 }
Esempio n. 7
0
        // Tìm và đổi lịch
        private bool XepLichBangCachDoiCho(int idx)
        {
            XL_SuKienTKBInfo sk = sks[idx];
            int min = 0, max = 4, TuTiet = 0, DenTiet = 4;

            GetMinMax(idx, ref min, ref max, ref TuTiet, ref DenTiet);

            for (int Tiet = TuTiet; Tiet <= DenTiet; Tiet++)
            {
                for (int Thu = objThamSoTKB.THU_BAT_DAU; Thu <= objThamSoTKB.THU_KET_THUC; Thu++)
                {
                    // Nếu sự kiên idx có khả năng xếp vào ô thứ tiết thì sẽ thực hiện kiểm tra khả năng của sự kiện tại ô thứ tiết.
                    if (lps[sk.IdxLop].TKB[Thu, Tiet, true] != eLOAI_SK.LK_LOP)
                    {
                        int idxDangXet = lps[sk.IdxLop].TKB[Thu, Tiet];
                        if (idxDangXet >= 0)
                        {
                            int TietDau = HuyLich(idxDangXet, Thu, TuTiet, DenTiet);
                            arrTiet = null;
                            if (ChoPhepXepLich(idx, Thu, Tiet, TuTiet, DenTiet) == "" && Xep1NhomTietTrongBuoi(idx, Thu, Tiet, min, max) == "")
                            {
                                if (sks[idx].SoTiet + TietDau - 1 <= max)
                                {
                                    int[] arrTietDoiLich = arrTiet;
                                    if (XepTuDong(idxDangXet, Thu) == true)
                                    {
                                        ChayXepLich(idx, Thu, arrTietDoiLich[0]);
                                        return(true);
                                    }
                                    else
                                    {
                                        ChayXepLich(idxDangXet, Thu, TietDau);
                                    }
                                }
                            }
                            else
                            {
                                ChayXepLich(idxDangXet, Thu, TietDau);
                            }
                        }
                    }
                }
            }
            return(false);
        }
Esempio n. 8
0
 public string ThongTinLop(int idx, int Thu, int Tiet)
 {
     if (lps[idx].TKB[Thu, Tiet] == -1)
     {
         return("");
     }
     if (lps[idx].TKB[Thu, Tiet, true] == eLOAI_SK.LK_LOP)
     {
         XL_SuKienKhacLopInfo skk = sk_lp[lps[idx].TKB[Thu, Tiet]];
         return("-1@" + skk.MoTa);
     }
     else
     {
         XL_SuKienTKBInfo sk = sks.FindSuKienByIdxSuKien(lps[idx].TKB[Thu, Tiet]);
         return(lps[idx].TKB[Thu, Tiet] + "@" + (sk.KyHieu == "" ? sk.TenMon : sk.KyHieu) + "\n" + sk.TenPhong +
                "\n" + (sk.TenVietTat == "" ? sk.TenGiaoVien : sk.TenVietTat));
     }
 }
        public dlgTKB_SuaSuKien(DataTable _dtTuan, ref XL_SuKienTKBInfo _sk, int IDXL_Tuan)
        {
            InitializeComponent();
            this.DialogResult = DialogResult.Cancel;
            sk = _sk;
            EditTable(_dtTuan);
            lblLop.Text    = sk.TenLop;
            lblMonHoc.Text = sk.TenMon;
            cmbTuTuan.Properties.DataSource  = _dtTuan;
            cmbDenTuan.Properties.DataSource = _dtTuan;

            cmbGiaoVien.EditValue    = sk.IDNS_GiaoVien;
            cmbPhongHoc.EditValue    = sk.IDDM_PhongHoc;
            cmbBuoiHoc.SelectedIndex = (int)sk.CaHoc;

            cmbTuTuan.EditValue  = IDXL_Tuan;
            cmbDenTuan.EditValue = IDXL_Tuan;
            Loaded = true;
        }
Esempio n. 10
0
        public void Update(XL_SuKienTKBInfo pXL_SuKienTKBInfo)
        {
            ArrayList colParam = new ArrayList();

            colParam.Add(CreateParam("@IDXL_Tuan", SqlDbType.BigInt, pXL_SuKienTKBInfo.IDXL_Tuan));
            colParam.Add(CreateParam("@IDDM_Lop", SqlDbType.Int, pXL_SuKienTKBInfo.IDDM_Lop));
            colParam.Add(CreateParam("@IDXL_MonHocTrongKy", SqlDbType.Int, pXL_SuKienTKBInfo.IDXL_MonHocTrongKy));
            colParam.Add(CreateParam("@IDDM_MonHoc", SqlDbType.Int, pXL_SuKienTKBInfo.IDDM_MonHoc));
            colParam.Add(CreateParam("@IDDM_PhongHoc", SqlDbType.Int, pXL_SuKienTKBInfo.IDDM_PhongHoc));
            colParam.Add(CreateParam("@IDNS_GiaoVien", SqlDbType.Int, pXL_SuKienTKBInfo.IDNS_GiaoVien));
            colParam.Add(CreateParam("@CaHoc", SqlDbType.Int, pXL_SuKienTKBInfo.CaHoc));
            colParam.Add(CreateParam("@Thu", SqlDbType.Int, pXL_SuKienTKBInfo.Thu));
            colParam.Add(CreateParam("@TietDau", SqlDbType.Int, pXL_SuKienTKBInfo.TietDau));
            colParam.Add(CreateParam("@SoTiet", SqlDbType.Int, pXL_SuKienTKBInfo.SoTiet));
            colParam.Add(CreateParam("@LoaiTiet", SqlDbType.Int, pXL_SuKienTKBInfo.LoaiTiet));
            colParam.Add(CreateParam("@DaXepLich", SqlDbType.Bit, pXL_SuKienTKBInfo.DaXepLich));
            colParam.Add(CreateParam("@Locked", SqlDbType.Bit, pXL_SuKienTKBInfo.Locked));
            colParam.Add(CreateParam("@XL_SuKienTKBID", SqlDbType.BigInt, pXL_SuKienTKBInfo.XL_SuKienTKBID));

            RunProcedure("sp_XL_SuKienTKB_Update", colParam);
        }
Esempio n. 11
0
        private void DocSuKien(long IDTuan)
        {
            oBSuKienTKB = new cBXL_SuKienTKB();
            DataTable dt = oBSuKienTKB.Get_TKB(IDTuan);

            sks = new SuKienTKB();
            foreach (DataRow dr in dt.Rows)
            {
                if (long.Parse(dr["XL_SuKienTKBID"].ToString()) > 0)
                {
                    XL_SuKienTKBInfo sk = new XL_SuKienTKBInfo(true);
                    sk.XL_SuKienTKBID = long.Parse(dr["XL_SuKienTKBID"].ToString());
                    GanSuKien(sk, dr);
                }
                else
                {
                    XL_SuKienTKBInfo sk = new XL_SuKienTKBInfo(true);
                    GanSuKien(sk, dr);
                    ChiaSuKien(sk);
                }
            }
            FillData();
        }
Esempio n. 12
0
 public void Delete(XL_SuKienTKBInfo pXL_SuKienTKBInfo)
 {
     oDXL_SuKienTKB.Delete(pXL_SuKienTKBInfo);
     mErrorMessage = oDXL_SuKienTKB.ErrorMessages;
     mErrorNumber  = oDXL_SuKienTKB.ErrorNumber;
 }
Esempio n. 13
0
 public DataTable Get(XL_SuKienTKBInfo pXL_SuKienTKBInfo)
 {
     return(oDXL_SuKienTKB.Get(pXL_SuKienTKBInfo));
 }
Esempio n. 14
0
 public void Add(XL_SuKienTKBInfo sk)
 {
     arrSuKienTKB.Add(sk);
 }
Esempio n. 15
0
        private void GanSuKien(XL_SuKienTKBInfo sk, DataRow dr)
        {
            sk.Idx                = sks.Count;
            sk.IDXL_Tuan          = intIDTuan;
            sk.IDDM_Lop           = int.Parse(dr["IDDM_Lop"].ToString());
            sk.IdxLop             = lps.SearchIndexLop(sk.IDDM_Lop);
            sk.TenLop             = dr["TenLop"].ToString();
            sk.IDXL_MonHocTrongKy = int.Parse("0" + dr["IDXL_MonHocTrongKy"].ToString());
            sk.IDDM_MonHoc        = int.Parse("0" + dr["IDDM_MonHoc"].ToString());
            sk.SuDungPhong        = (SU_DUNG_PHONG)dr["SuDungPhong"];
            sk.TenMon             = dr["TenMonHoc"].ToString();
            sk.KyHieu             = dr["KyHieu"].ToString();

            sk.CaHoc = "" + dr["CaHoc"] == "" ? CA_HOC.KHONG_XAC_DINH : (CA_HOC)dr["CaHoc"];

            if (sk.SuDungPhong != SU_DUNG_PHONG.KHONG_SD)
            {
                if (sk.SuDungPhong == SU_DUNG_PHONG.DUOI_DAY && sk.IDDM_PhongHoc > 0)
                {
                    if (htbPhong.ContainsKey(sk.IDDM_MonHoc))
                    {
                        arrPhong = (int[])htbPhong[sk.IDDM_MonHoc];
                        for (int i = 0; i < arrPhong.Length; i++)
                        {
                            if (htbPhanCongPhong.ContainsKey(sk.IDDM_PhongHoc.ToString() + "_" + sk.CaHoc.ToString()))
                            {
                                if (int.Parse(htbPhanCongPhong[arrPhong[i].ToString() + "_" + sk.CaHoc.ToString()].ToString()) < objThamSoTKB.SO_NHOMTIET_CA)
                                {
                                    sk.IDDM_PhongHoc = arrPhong[i];
                                    sk.IdxPhong      = phs.SearchIndexPhong(sk.IDDM_PhongHoc);
                                    sk.TenPhong      = phs[sk.IdxPhong].TenPhongHoc;

                                    htbPhanCongPhong[arrPhong[i].ToString() + "_" + sk.CaHoc.ToString()] = int.Parse(htbPhanCongPhong[arrPhong[i].ToString() + "_" + sk.CaHoc.ToString()].ToString()) + 1;
                                    break;
                                }
                            }
                            else
                            {
                                sk.IDDM_PhongHoc = arrPhong[i];
                                sk.IdxPhong      = phs.SearchIndexPhong(sk.IDDM_PhongHoc);
                                sk.TenPhong      = phs[sk.IdxPhong].TenPhongHoc;

                                htbPhanCongPhong.Add(sk.IDDM_PhongHoc.ToString() + "_" + sk.CaHoc.ToString(), 1);
                                break;
                            }
                        }
                    }
                }
                else
                {
                    if ("" + dr["IDDM_PhongHoc"] != "")
                    {
                        sk.IDDM_PhongHoc = int.Parse(dr["IDDM_PhongHoc"].ToString());
                        sk.IdxPhong      = phs.SearchIndexPhong(sk.IDDM_PhongHoc);
                        sk.TenPhong      = dr["TenPhongHoc"].ToString();
                    }
                }
            }
            sk.IDNS_GiaoVien = int.Parse(dr["IDNS_GiaoVien"].ToString());
            sk.IdxGiaoVien   = gvs.SearchIndexGV(sk.IDNS_GiaoVien);
            sk.TenGiaoVien   = dr["HoTen"].ToString();
            sk.TenVietTat    = dr["TenVietTat"].ToString();
            sk.Thu           = int.Parse(dr["Thu"].ToString());
            sk.TietDau       = int.Parse(dr["TietDau"].ToString());
            sk.SoTiet        = int.Parse(dr["SoTiet"].ToString());
            sk.LoaiTiet      = (LOAI_TIET)dr["LoaiTiet"];
            sk.DaXepLich     = bool.Parse(dr["DaXepLich"].ToString());
            sk.Locked        = false;
            sks.Add(sk);
        }