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); }
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); }
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); }
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); }
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); } }
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); } }
// 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); }
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; }
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); }
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(); }
public void Delete(XL_SuKienTKBInfo pXL_SuKienTKBInfo) { oDXL_SuKienTKB.Delete(pXL_SuKienTKBInfo); mErrorMessage = oDXL_SuKienTKB.ErrorMessages; mErrorNumber = oDXL_SuKienTKB.ErrorNumber; }
public DataTable Get(XL_SuKienTKBInfo pXL_SuKienTKBInfo) { return(oDXL_SuKienTKB.Get(pXL_SuKienTKBInfo)); }
public void Add(XL_SuKienTKBInfo sk) { arrSuKienTKB.Add(sk); }
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); }