Пример #1
0
        private void btCapNhat_Click(object sender, RoutedEventArgs e)
        {
            //Khởi chạy CSDL
            MyEntity db = new MyEntity();
            //Nếu lớp chủ nhiệm không bị trùng thì cho đổi và môn dạy không bị trùng thì cho đổi
            var danhSachLop = from lopNao in db.TGiaoViens
                              where tbLopChuNhiem.Text.ToUpper() == lopNao.LopChuNhiem.ToUpper()
                              select lopNao;
            List <GiaoVien> dayLopNay = danhSachLop.ToList();

            //Xem lớp đó có ai dạy môn mà giáo viên này đang chủ nhiệm không ?
            var monDangDuocDay = from monNao in db.TGiaoVienDayHocSinhs
                                 where monNao.MonMaLopDuocDay == cbMonDay.Text && monNao.MaLopCuaSV == tbLopChuNhiem.Text
                                 select monNao;
            List <GiaoVienDayHocSinh> coGiaoVienDay = monDangDuocDay.ToList();

            if (dayLopNay.Count != 0 && dayLopNay[0].MaGV.ToUpper() != maGVTrongNay.ToUpper())
            {
                if (MessageBox.Show("Lớp này đã có giáo viên chủ nhiệm vui lòng kiểm tra lại", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK) == MessageBoxResult.OK)
                {
                    var a = from ai in db.TGiaoViens
                            where maGVTrongNay == ai.MaGV
                            select ai;
                    List <GiaoVien> giaoViens = a.ToList();
                    foreach (var item in giaoViens)
                    {
                        if (maGVTrongNay.ToUpper() == item.MaGV)
                        {
                            tbLopChuNhiem.Text = item.LopChuNhiem;
                            break;
                        }
                    }
                    tbLopChuNhiem.Focus();
                }
            }
            else if (!(tbLopChuNhiem.Text.Substring(0, 3).ToUpper() == "10A" || tbLopChuNhiem.Text.Substring(0, 3).ToUpper() == "11A" || tbLopChuNhiem.Text.Substring(0, 3).ToUpper() == "12A") || tbLopChuNhiem.Text.Length < 4 || tbLopChuNhiem.Text.Length > 5)
            {
                if (MessageBox.Show("Mã lớp không hợp lệ!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK) == MessageBoxResult.OK)
                {
                    tbLopChuNhiem.Text = "";
                    tbLopChuNhiem.Focus();
                }
            }
            else if (coGiaoVienDay.Count != 0)
            {
                MessageBox.Show("Lớp này đã có giáo viên: " + coGiaoVienDay[0].MaCuaGV + " dạy môn " + coGiaoVienDay[0].MonMaLopDuocDay, "Thông báo!!!", MessageBoxButton.OK);
            }
            else
            {
                //Tạo ra 1 giáo viên với thông tin từ các textbox trên giao diện
                GiaoVien a = new GiaoVien(tbMaGV.Text, tbHoTenGV.Text, dpNgaySinhGV.DisplayDate, tbQueQuanGV.Text, tbDiaChiGV.Text, tbSDTGV.Text, cbMonDay.Text, tbLopChuNhiem.Text);
                //Tìm giáo viên cần sửa
                var canKiem = from ai in db.TGiaoViens
                              where maGVTrongNay == ai.MaGV
                              select ai;
                List <GiaoVien> giaoViens = canKiem.ToList();
                GiaoVien        b         = giaoViens[0];
                //Tìm giáo viên này chủ nhiệm lớp nào dạy môn gì
                var timKiemGVDayHS = from timKiem in db.TGiaoVienDayHocSinhs
                                     where b.MaGV == timKiem.MaCuaGV
                                     select timKiem;
                List <GiaoVienDayHocSinh> nhungLopGiaoVienNayDay = timKiemGVDayHS.ToList();
                //Lưu lại thông tin chỉnh sửa
                DateTime            thoiDiemNhap = DateTime.Now;
                string[]            gioPhutGiay  = thoiDiemNhap.ToString("HH:mm:ss").Split(':');
                string              nam          = thoiDiemNhap.Year.ToString();
                string              taoKey       = nam[2].ToString() + nam[3].ToString() + "TS" + gioPhutGiay[0] + gioPhutGiay[1] + gioPhutGiay[2];
                LuuTruThongTinGVSua truocKhiSua  = new LuuTruThongTinGVSua(taoKey, b, thoiDiemNhap);
                db.TLuuTruThongTinGVSuas.Add(truocKhiSua);
                taoKey = nam[2].ToString() + nam[3].ToString() + "SS" + gioPhutGiay[0] + gioPhutGiay[1] + gioPhutGiay[2];
                LuuTruThongTinGVSua sauKhiSua = new LuuTruThongTinGVSua(taoKey, a, thoiDiemNhap);
                db.TLuuTruThongTinGVSuas.Add(sauKhiSua);
                //Lưu lại CSDL
                db.SaveChanges();
                //Xóa giáo viên cũ add giáo viên mới
                db.TGiaoViens.Attach(b);
                db.TGiaoViens.Remove(b);
                db.TGiaoViens.Add(a);

                //Nếu giáo viên này đổi môn học
                if (nhungLopGiaoVienNayDay.Count != 0)
                {
                    if (nhungLopGiaoVienNayDay[0].MonMaLopDuocDay != a.MonDay)
                    {
                        //Những lớp mà giáo viên này dạy không còn giáo viên này dạy môn đó nữa
                        foreach (var lopDays in nhungLopGiaoVienNayDay)
                        {
                            db.TGiaoVienDayHocSinhs.Remove(lopDays);
                        }
                    }
                }
                //Vì giáo viên chủ nhiệm lớp nào thì cũng dạy lớp đó môn của mình
                GiaoVienDayHocSinh lienKetMoi = new GiaoVienDayHocSinh(a.MaGV, a.LopChuNhiem, a.MonDay);
                db.TGiaoVienDayHocSinhs.Add(lienKetMoi);

                //Lưu lại CSDL
                db.SaveChanges();
                MessageBox.Show("Cập nhật thành công!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                //Cập nhật lại các textbox trên giao diện
                tbHoTenGV.Text     = a.HoTenGV;
                tbDiaChiGV.Text    = a.DiaChiGV;
                tbMaGV.Text        = a.MaGV;
                tbQueQuanGV.Text   = a.QueQuanGV;
                tbSDTGV.Text       = a.SDT;
                cbMonDay.Text      = a.MonDay;
                dpNgaySinhGV.Text  = a.NgaySinhGV.ToString();
                tbLopChuNhiem.Text = a.LopChuNhiem;
            }
        }
Пример #2
0
        private void btOK_Click(object sender, RoutedEventArgs e)
        {
            if (tbLop.Text != "" && tbLop.Text.Substring(0, 3).ToUpper() == "10A" || tbLop.Text != "" && tbLop.Text.Length > 4 || tbLop.Text != "" && tbLop.Text.Length < 5 || tbLop.Text != "" && tbLop.Text.Substring(0, 3).ToUpper() == "11A" || tbLop.Text != "" && tbLop.Text.Substring(0, 3).ToUpper() == "12A")
            {
                //Kiếm các lớp có trong CSDL
                MyEntity db   = new MyEntity();
                var      lops = (from lopNao in db.THocSinhs
                                 select lopNao.LopCuaHS).Distinct();
                List <string> dslops          = lops.ToList();
                bool          chuaCoTrongCSDL = true;

                foreach (var lop in dslops)
                {
                    if (tbLop.Text.ToUpper() == lop.ToUpper())
                    {
                        chuaCoTrongCSDL = false;
                        //Kiểm tra xem lớp đó đã có giáo viên nào dạy môn này chưa?
                        var kiemTra = (from coChua in db.TGiaoVienDayHocSinhs
                                       where coChua.MaLopCuaSV == tbLop.Text.ToUpper()
                                       select coChua.MonMaLopDuocDay).Distinct();
                        List <string> cacMonDuocDay = kiemTra.ToList();
                        bool          chuaCoAiDay   = true;

                        if (cacMonDuocDay.Count != 0)
                        {
                            foreach (var mon in cacMonDuocDay)
                            {
                                if (monDayTrongNay == mon)
                                {
                                    chuaCoAiDay = false;
                                    break;
                                }
                            }
                            if (chuaCoAiDay)
                            {
                                GiaoVienDayHocSinh a = new GiaoVienDayHocSinh(maGVTrongNay, tbLop.Text.ToUpper(), monDayTrongNay);
                                db.TGiaoVienDayHocSinhs.Add(a);
                                break;
                            }
                            else
                            {
                                MessageBox.Show("Lớp này đã có giáo viên dạy môn: " + monDayTrongNay, "Thông báo!!!", MessageBoxButton.OK, MessageBoxImage.Information);
                                break;
                            }
                        }
                        else
                        {
                            chuaCoTrongCSDL = false;
                            GiaoVienDayHocSinh a = new GiaoVienDayHocSinh(maGVTrongNay, tbLop.Text.ToUpper(), monDayTrongNay);
                            db.TGiaoVienDayHocSinhs.Add(a);
                        }
                    }
                }
                //Chưa có trong CSDL thì cho người dùng tùy chọn thêm hoặc không
                if (chuaCoTrongCSDL)
                {
                    if (MessageBox.Show("Vẫn chưa có lớp đó trong CSDL bạn muốn nhập file?", "Thông báo!!!", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes) == MessageBoxResult.Yes)
                    {
                        //Mở ra giao diện chọn file
                        OpenFileDialog openFileDialog = new OpenFileDialog();
                        openFileDialog.Filter = "Các tệp Excel (*.xls;*.xlsx)|*.xls;*.xlsx|All files (*.*)|*.*";
                        openFileDialog.ShowDialog();
                        //Xử lí
                        //Tạo cái list để tạm lưu trữ thông tin học sinh , điểm và loại điểm
                        List <HocSinh>            hocSinhs            = new List <HocSinh>();
                        List <Diem>               diems               = new List <Diem>();
                        List <LoaiDiemCuaTungMon> loaiDiemCuaTungMons = new List <LoaiDiemCuaTungMon>();

                        if (openFileDialog.FileName != "")
                        {
                            //Tạo đối tượng Excel
                            Excel.Application app = new Excel.Application();
                            //Mở file Excel Học Sinh
                            Excel.Workbook wb = app.Workbooks.Open(openFileDialog.FileName);
                            //Mở sheet đầu tiên là sheet thông tin học sinh
                            try
                            {
                                //Trong này chỉ số đầu tiên bắt đầu từ 1
                                Excel._Worksheet sheetCanMo = wb.Sheets[1];
                                //Truy cập vùng dữ liệu sử dụng
                                Excel.Range range = sheetCanMo.UsedRange;
                                //Bắt đầu đọc dữ liệu
                                int dong = range.Rows.Count;
                                //Chúng ta bắt đầu đọc dữ liệu từ dòng 2 vì dòng 1 là tiêu đề
                                for (int i = 2; i <= dong; i++)
                                {
                                    HocSinh a = new HocSinh(range.Cells[i, 1].Value.ToString().ToUpper(), range.Cells[i, 2].Value.ToString(), range.Cells[i, 3].Value, range.Cells[i, 4].Value.ToString(), range.Cells[i, 5].Value.ToString(), range.Cells[i, 6].Value.ToString(), tbLop.Text);
                                    //Còn thiếu điểm TB và học lực
                                    hocSinhs.Add(a);
                                }

                                //Tiếp theo kiểm tra mã của môn giáo viên này dạy
                                var mons = from monNao in db.TMonHocs
                                           where monNao.TenMH == monDayTrongNay
                                           select monNao.MaMH;
                                List <string> monTimDC = mons.ToList();
                                string        maMonDay = monTimDC[0];

                                //Mở sheet tiếp theo là điểm Môn giáo viên này dạy
                                sheetCanMo = wb.Sheets[2];
                                //Truy cập vùng dữ liệu sử dụng
                                range = sheetCanMo.UsedRange;
                                //Bắt đầu đọc dữ liệu
                                dong = range.Rows.Count;
                                for (int i = 2; i <= dong; i++)
                                {
                                    //Ta có được các loại điểm của 1 học sinh
                                    LoaiDiemCuaTungMon diem15 = new LoaiDiemCuaTungMon("D" + maMonDay + "15" + range.Cells[i, 1].Value.ToString().ToUpper(), double.Parse(range.Cells[i, 2].Value.ToString()), "D" + maMonDay + range.Cells[i, 1].Value.ToString().ToUpper());
                                    loaiDiemCuaTungMons.Add(diem15);
                                    LoaiDiemCuaTungMon diem45 = new LoaiDiemCuaTungMon("D" + maMonDay + "45" + range.Cells[i, 1].Value.ToString().ToUpper(), double.Parse(range.Cells[i, 3].Value.ToString()), "D" + maMonDay + range.Cells[i, 1].Value.ToString().ToUpper());
                                    loaiDiemCuaTungMons.Add(diem45);
                                    LoaiDiemCuaTungMon diemHK = new LoaiDiemCuaTungMon("D" + maMonDay + "HK" + range.Cells[i, 1].Value.ToString().ToUpper(), double.Parse(range.Cells[i, 4].Value.ToString()), "D" + maMonDay + range.Cells[i, 1].Value.ToString().ToUpper());
                                    loaiDiemCuaTungMons.Add(diemHK);

                                    //Ta có được điểm trung bình của loại điểm đó
                                    Diem diemMH = new Diem();
                                    diemMH.MaDiem       = "D" + maMonDay + range.Cells[i, 1].Value.ToString().ToUpper();
                                    diemMH.MaHSCuaDiemA = range.Cells[i, 1].Value.ToString().ToUpper();
                                    diemMH.SoDiem       = Math.Round((diem15.SoDiem + diem45.SoDiem * 2 + diemHK.SoDiem * 2) / 5, 2);
                                    diems.Add(diemMH);
                                }

                                //Thêm vào CSDL
                                foreach (var hocSinh in hocSinhs)
                                {
                                    db.THocSinhs.Add(hocSinh);
                                    //Tìm các điểm của HS này
                                    List <Diem> listDiemCuaHocSinh = new List <Diem>();
                                    foreach (var diem in diems)
                                    {
                                        if (diem.MaHSCuaDiemA == hocSinh.MaSoHS)
                                        {
                                            listDiemCuaHocSinh.Add(diem);
                                        }
                                    }
                                    foreach (var diemCuaHSNay in listDiemCuaHocSinh)
                                    {
                                        db.TDiems.Add(diemCuaHSNay);
                                    }

                                    //Tìm các loại điểm của học sinh này
                                    List <LoaiDiemCuaTungMon> listLoaiDiemTungMon = new List <LoaiDiemCuaTungMon>();
                                    foreach (var loaiDiem in loaiDiemCuaTungMons)
                                    {
                                        if (loaiDiem.MaDiemCuaLoaiDiem.Substring(3).ToUpper() == hocSinh.MaSoHS.ToUpper())
                                        {
                                            listLoaiDiemTungMon.Add(loaiDiem);
                                        }
                                    }
                                    foreach (var loaiDiemHSNay in listLoaiDiemTungMon)
                                    {
                                        db.TLoaiDiemCuaTungMons.Add(loaiDiemHSNay);
                                    }
                                    db.SaveChanges();
                                }
                                MessageBox.Show("Thêm thành công!", "Thông báo!!!", MessageBoxButton.OK, MessageBoxImage.Information);
                                GiaoVienDayHocSinh lienKetMoi = new GiaoVienDayHocSinh(maGVTrongNay, tbLop.Text.ToUpper(), monDayTrongNay);
                                db.TGiaoVienDayHocSinhs.Add(lienKetMoi);
                                db.SaveChanges();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message, "Có lỗi xảy ra!!!", MessageBoxButton.OK, MessageBoxImage.Error);
                            }
                            finally
                            {
                                app.Quit();
                                wb = null;
                            }
                        }
                    }
                }
                db.SaveChanges();
                Close();
            }
            else
            {
                if (MessageBox.Show("Mã lớp không hợp lệ!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK) == MessageBoxResult.OK)
                {
                    tbLop.Text = "";
                    tbLop.Focus();
                }
            }
        }