private async Task TaoDanhSachGiayMoi() { taoGiayDiDuong = new TaoGiayDiDuong(this.LayDanhSachXa(_cacXaCoDau)); _danhSachGiayDiDuong = new List <GIAY_DI_DUONG>(); _thang = Convert.ToInt32(txtThang.Text); _nam = Convert.ToInt32(txtNam.Text); string loi = ""; foreach (ChonDiaBanXa chon in chonDiaBanXaBindingSource) { List <MA_DIA_BAN_XA> danhSachXaDuocChonCuaNguoiNay = this.LayDanhSachXa(chon.THU_TU_CHON_XA); NhomNgay nhomNgay = new NhomNgay(_thang, _nam, this.LayNgayLoaiBo(chon.NGAY_LOAI_BO)); chon.GiayDiDuong = new GiayDiDuong(await _db.CAN_BO.FirstAsync(p => p.IdCanBo == chon.ID_CAN_BO), danhSachXaDuocChonCuaNguoiNay); try { taoGiayDiDuong.DienThongTin(chon.GiayDiDuong, nhomNgay); } catch { loi += $"{chon?.GiayDiDuong?.CanBo?.HoVaTen} không điền được thông tin\r\n"; } } if (loi != "") { ThongBao.BaoLoi(loi); } }
public BoSo(NhomNgay nhom_ngay, Func <List <int>, bool> validate = null) { _maxVal = new List <int>(); foreach (var nn in nhom_ngay.DanhSachNhomNgay) { _maxVal.Add(nn.Count); } _res = new List <int>(_maxVal); DanhSachKetQua = new List <List <int> >(); this.Validate = validate; this.TienHanhTao(); }
public void DienThongTin(GiayDiDuong giay, NhomNgay nhom_ngay) { //Mỗi tờ giấy đi đường là một bộ số vì nhóm ngày mỗi người là khác nhau BoSo nhomBoSo = new BoSo(nhom_ngay, validate); //Chọn ngẫu nhiên 1 bộ số trong các bộ số đã tạo List <int> boSo = nhomBoSo.DanhSachKetQua.GetRandomElement(); Debug.WriteLine(string.Join(", ", boSo)); int cuocHienTai = 0; for (int i = 0; i < boSo.Count; i++) { int soNgayCanLay = boSo[i]; if (soNgayCanLay != 0) { if (giay.Cuocs.Count == 0 || giay.Cuocs.Count <= cuocHienTai) { break; } Cuoc cuoc = giay.Cuocs[cuocHienTai]; //Chọn ngày List <int> danhSachNgay = nhom_ngay[i];//Lấy nhóm ngày if (soNgayCanLay < danhSachNgay.Count) { //Chọn ngày có lượt đến xã này ít nhất int indexNgay = 0, luongNguoiDenItNhat = ThongKeDiaBanXa[cuoc.Xa][danhSachNgay[0]].Count; for (int t = danhSachNgay.Count - soNgayCanLay; t >= 1; t--) { if (luongNguoiDenItNhat > ThongKeDiaBanXa[cuoc.Xa][danhSachNgay[t]].Count) { indexNgay = t; luongNguoiDenItNhat = ThongKeDiaBanXa[cuoc.Xa][danhSachNgay[t]].Count; } } cuoc.TuNgay = danhSachNgay[indexNgay]; cuoc.DenNgay = danhSachNgay[indexNgay + soNgayCanLay - 1]; } else { cuoc.TuNgay = danhSachNgay.First(); cuoc.DenNgay = danhSachNgay.Last(); } for (int n = cuoc.TuNgay; n <= cuoc.DenNgay; n++) { ThongKeDiaBanXa[cuoc.Xa][n].Add(giay.CanBo); } cuocHienTai++; } } }