Exemplo n.º 1
0
        public SoLuotThamGiaHdTrongThang LaySoLuotTgTungThangChoLop(List <LuotThamGiaHoatDongLopForDataTable> danhSachLuotThamGia,
                                                                    int namHocLay = 0)
        {
            //Lấy số lượt tham gia hoạt động từng tháng của sinh viên lớp và của sinh viên học viện (để so sánh)
            var      soLuotThamGiaHdTrongThang = new SoLuotThamGiaHdTrongThang();
            DateTime batDauNamHoc = new DateTime();
            DateTime tgDungTinh   = new DateTime();

            //^ Mốc thời gian để dừng lấy  số lượt tham gia hoạt động, nếu là lấy số lượt năm nay thì dừng tới tháng hiện tại
            //Nếu lấy số lượt tham gia hoạt động của một năm học cụ thể thì đó là 31/7/năm học

            if (namHocLay == 0) //Nếu ta lấy số lượt tham gia của năm học hiện tại
            {
                tgDungTinh = DateTime.Today;
                var thisYear = tgDungTinh.Year;

                if (DateTime.Today.Month < 8) //Nghĩa là đang là tháng 1-7 của năm học này, sẽ phải lấy từ tháng 8 năm trước
                {
                    batDauNamHoc = new DateTime(thisYear - 1, 8, 1);
                }
                else      //Nếu là đang trong tháng 8 -12 thì lấy luôn năm nay
                {
                    batDauNamHoc = new DateTime(thisYear, 8, 1);
                }
            }

            else  //Nếu ta lấy hoạt động trong 1 năm cụ thể
            {
                tgDungTinh   = new DateTime(namHocLay + 1, 7, 31);
                batDauNamHoc = new DateTime(namHocLay, 8, 1);
            }

            for (var time = batDauNamHoc; time <= tgDungTinh;)
            {
                soLuotThamGiaHdTrongThang.DanhSachThang.Add(time.Month + "-" + time.Year);
                var soLuotThamGiaLop = danhSachLuotThamGia
                                       .Where(LayHdSvThamGiaTrongThangFunc(time))         //Trong tháng đó
                                       .Sum(tg => tg.SoLuotThamGiaLop);                   //Tổng lượt tham gia từng hoạt động của lớp
                var soLuotThamGiaToanHocVien = danhSachLuotThamGia
                                               .Where(LayHdSvThamGiaTrongThangFunc(time)) //Trong tháng đó
                                               .Sum(tg => tg.SoLuotThamGiaToanHoatDong);  //Lấy tổng lượt tham gia từng hoạt động
                soLuotThamGiaHdTrongThang.SoLuotThamGiaLop.Add(soLuotThamGiaLop);
                soLuotThamGiaHdTrongThang.SoLuotThamGiaHocVien.Add(soLuotThamGiaToanHocVien);
                time = time.AddMonths(1);
            }

            return(soLuotThamGiaHdTrongThang);
        }
Exemplo n.º 2
0
        public SoLuotThamGiaHdTrongThang LaySoLuotTgTungThangChoHocVien(IList <HoatDongDtoForTable> hoatDong,
                                                                        int namHocLay = 0)
        {
            //Lấy số lượt tham gia hoạt động trong từng tháng của sinh viên học viện
            var      soLuotThamGiaHdTrongThang = new SoLuotThamGiaHdTrongThang();
            DateTime batDauNamHoc = new DateTime();

            DateTime tgDungTinh = new DateTime();

            //^ Mốc thời gian để dừng lấy  số lượt tham gia hoạt động, nếu là lấy số lượt năm nay thì dừng tới tháng hiện tại
            //Nếu lấy số lượt tham gia hoạt động của một năm học cụ thể thì đó là 31/7/năm học

            if (namHocLay == 0) //Nếu ta lấy số lượt tham gia của năm học hiện tại
            {
                tgDungTinh = DateTime.Today;
                var thisYear = tgDungTinh.Year;


                if (DateTime.Today.Month < 8) //Nghĩa là đang là tháng 1-7 của năm học này, sẽ phải lấy từ tháng 8 năm trước
                {
                    batDauNamHoc = new DateTime(thisYear - 1, 8, 1);
                }
                else      //Nếu là đang trong tháng 8 -12 thì lấy luôn năm nay
                {
                    batDauNamHoc = new DateTime(thisYear, 8, 1);
                }
            }

            else  //Nếu ta lấy hoạt động trong 1 năm cụ thể
            {
                tgDungTinh   = new DateTime(namHocLay + 1, 7, 31);
                batDauNamHoc = new DateTime(namHocLay, 8, 1);
            }
            //Lặp qua từng tháng để đếm số lượng tham gia hoạt động tháng đó
            for (var time = batDauNamHoc; time <= tgDungTinh;)
            {
                soLuotThamGiaHdTrongThang.DanhSachThang.Add(time.Month + "-" + time.Year);
                soLuotThamGiaHdTrongThang.SoLuotThamGiaHocVien.Add(hoatDong.Where(LayHoatDongThang_HoatDongDtoFunc(time)).Sum(hd => hd.SoLuotThamGia));
                time = time.AddMonths(1);
            }
            return(soLuotThamGiaHdTrongThang);
        }