コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: BoSo.cs プロジェクト: ngochoaitn/QuanLyDoi
 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();
 }
コード例 #3
0
        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++;
                }
            }
        }