private void Filter_donvi() { if (List.Count() != 0) { for (int i = 0; i < List.Count(); i++) { while (FilterList_donvi.Where(x => x == List[i].mathang.DONVITINH).Count() == 0) { if (List[i] == List[List.Count() - 1]) { List.Remove(List[i]); break; } else { List.Remove(List[i]); } } } } }
public Thongke_ViewModel() { List = new ObservableCollection <Model.Thongke>(); DeleteList = new ObservableCollection <Model.Thongke>(); List_nhacungcap = new ObservableCollection <Model.NHACUNGCAP>(Model.DataProvider.Ins.DB.NHACUNGCAPs.Where(x => x.IsDeleted == false)); FilterList_nhacungcap = new ObservableCollection <Model.NHACUNGCAP>(); List_loaihang = new ObservableCollection <Model.LOAIHANG>(Model.DataProvider.Ins.DB.LOAIHANGs.Where(x => x.IsDeleted == false)); FilterList_loaihang = new ObservableCollection <Model.LOAIHANG>(); List_donvi = new ObservableCollection <Model.DONVITINH>(Model.DataProvider.Ins.DB.DONVITINHs.Where(x => x.IsDeleted == false)); FilterList_donvi = new ObservableCollection <Model.DONVITINH>(); IscheckAll = true; IsOpen = false; CloseDialog_Command = new RelayCommand <MaterialDesignThemes.Wpf.DialogHost>(p => { return(true); }, p => { p.IsOpen = false; }); Load_Command = new RelayCommand <object>(p => { return(true); }, p => { List = new ObservableCollection <Model.Thongke>(); DeleteList = new ObservableCollection <Model.Thongke>(); List_nhacungcap = new ObservableCollection <Model.NHACUNGCAP>(Model.DataProvider.Ins.DB.NHACUNGCAPs.Where(x => x.IsDeleted == false)); FilterList_nhacungcap = new ObservableCollection <Model.NHACUNGCAP>(); List_loaihang = new ObservableCollection <Model.LOAIHANG>(Model.DataProvider.Ins.DB.LOAIHANGs.Where(x => x.IsDeleted == false)); FilterList_loaihang = new ObservableCollection <Model.LOAIHANG>(); List_donvi = new ObservableCollection <Model.DONVITINH>(Model.DataProvider.Ins.DB.DONVITINHs.Where(x => x.IsDeleted == false)); FilterList_donvi = new ObservableCollection <Model.DONVITINH>(); IsOpen = false; }); #region Them / xoa khoi FilterList_nhacungcap AddtoFilterNCC_Command = new RelayCommand <CheckBox>(p => { return(true); }, p => { string id = p.Uid.ToString(); var item = List_nhacungcap.Where(x => x.ma_nhacungcap == id).SingleOrDefault(); FilterList_nhacungcap.Add(item); }); DeletefromFilterNCC_Command = new RelayCommand <CheckBox>(p => { return(true); }, p => { string id = p.Uid.ToString(); var item = List_nhacungcap.Where(x => x.ma_nhacungcap == id).SingleOrDefault(); FilterList_nhacungcap.Remove(item); }); #endregion #region Them / xoa khoi FilterList_loaihang AddtoFilterLH_Command = new RelayCommand <CheckBox>(p => { return(true); }, p => { string id = p.Uid.ToString(); var item = List_loaihang.Where(x => x.ma_loaihang == id).SingleOrDefault(); FilterList_loaihang.Add(item); }); DeletefromFilterLH_Command = new RelayCommand <CheckBox>(p => { return(true); }, p => { string id = p.Uid.ToString(); var item = List_loaihang.Where(x => x.ma_loaihang == id).SingleOrDefault(); FilterList_loaihang.Remove(item); }); #endregion #region Them / xoa khoi FilterList_donvi AddtoFilterDV_Command = new RelayCommand <CheckBox>(p => { return(true); }, p => { string id = p.Uid.ToString(); var item = List_donvi.Where(x => x.ma_donvi == id).SingleOrDefault(); FilterList_donvi.Add(item); }); DeletefromFilterDV_Command = new RelayCommand <CheckBox>(p => { return(true); }, p => { string id = p.Uid.ToString(); var item = List_donvi.Where(x => x.ma_donvi == id).SingleOrDefault(); FilterList_donvi.Remove(item); }); #endregion #region Phan xoa AddDeleteList_Command = new RelayCommand <CheckBox>(p => { return(true); }, p => { DeleteList.Add(List.Where(x => x.mathang.ma_mathang == p.Uid.ToString()).SingleOrDefault()); }); RemoveDeleteList_Command = new RelayCommand <CheckBox>(p => { return(true); }, p => { DeleteList.Remove(List.Where(x => x.mathang.ma_mathang == p.Uid.ToString()).SingleOrDefault()); }); DeleteShow_Command = new RelayCommand <object>(p => { if (DeleteList.Count() == 0) { return(false); } if (IsOpen == true) { return(false); } return(true); }, p => { IsOpen = true; Content = " Xóa các bản ghi được chọn ???"; }); Delete_Command = new RelayCommand <object>(p => { if (DeleteList.Count() == 0) { return(false); } return(true); }, p => { for (int i = 0; i < List.Count(); i++) { while (DeleteList.Where(x => x == List[i]).Count() != 0) { if (List[i] == List[List.Count() - 1]) { List.Remove(List[i]); break; } else { List.Remove(List[i]); } } ; } DeleteList = new ObservableCollection <Model.Thongke>(); IsOpen = false; }); #endregion #region Thong ke Statistic_Command = new RelayCommand <object>(p => { if (string.IsNullOrEmpty(Date_Start) || string.IsNullOrEmpty(Date_End)) { return(false); } DateTime date_start = Convert.ToDateTime(Date_Start); DateTime date_end = Convert.ToDateTime(Date_End); if ((date_start > date_end) && DateTime.TryParse(Date_Start, out date_start) && DateTime.TryParse(Date_End, out date_end)) { return(false); } return(true); }, p => { List = new ObservableCollection <Model.Thongke>(); Filter_ngaythang(MyStaticMethods.FormatDateString(Date_Start), MyStaticMethods.FormatDateString(Date_End)); if (IscheckAll == false) { UncheckAll_Filter(); } if (FilterList_nhacungcap.Count() != 0) { Filter_nhacungcap(); } if (FilterList_loaihang.Count() != 0) { Filter_loaimathang(); } if (FilterList_donvi.Count() != 0) { Filter_donvi(); } }); #endregion #region Xuat Excel Excel_Command = new RelayCommand <object>(p => { if (List.Count() == 0) { return(false); } return(true); }, p => { string filePath = "*.xlsx"; // tạo SaveFileDialog để lưu file excel SaveFileDialog dialogs = new SaveFileDialog(); // chỉ lọc ra các file có định dạng Excel dialogs.Filter = "Excel | *.xlsx | Excel 2003 | *.xls"; // Nếu mở file và chọn nơi lưu file thành công sẽ lưu đường dẫn lại dùng if (dialogs.ShowDialog() == true) { filePath = dialogs.FileName; } // nếu đường dẫn null hoặc rỗng thì báo không hợp lệ và return hàm if (string.IsNullOrEmpty(filePath)) { MessageBox.Show("Đường dẫn báo cáo không hợp lệ"); return; } try { using (ExcelPackage pk = new ExcelPackage()) { // đặt tên người tạo file pk.Workbook.Properties.Author = ViewModel.Taikhoan_ViewModel.getCurrent(); // đặt tiêu đề cho file pk.Workbook.Properties.Title = "Báo cáo thống kê"; //Tạo một sheet để làm việc trên đó pk.Workbook.Worksheets.Add("BCTK sheet"); // lấy sheet vừa add ra để thao tác ExcelWorksheet ws = pk.Workbook.Worksheets[1]; // đặt tên cho sheet ws.Name = "BCTK sheet"; // fontsize mặc định cho cả sheet ws.Cells.Style.Font.Size = 11; // font family mặc định cho cả sheet ws.Cells.Style.Font.Name = "Calibri"; // Tạo danh sách các column header string[] arrColumnHeader = { (Date_Start + " - " + Date_End), "Mã mặt hàng", "Tên mặt hàng", "Loại mặt hàng", "Nhà cung cấp", "Số lượng nhập", "Số lượng xuất", "Số lượng tồn", "Đơn vị tính" }; // lấy ra số lượng cột cần dùng dựa vào số lượng header var countColHeader = arrColumnHeader.Count(); // merge các column lại từ column 1 đến số column header // gán giá trị cho cell vừa merge là Thống kê thông tni User Kteam ws.Cells[1, 1].Value = "Thống kê hàng hóa"; ws.Cells[1, 1, 1, countColHeader].Merge = true; // in đậm ws.Cells[1, 1, 1, countColHeader].Style.Font.Bold = true; // căn giữa ws.Cells[1, 1, 1, countColHeader].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; int colIndex = 1; int rowIndex = 2; //tạo các header từ column header đã tạo từ bên trên foreach (var item in arrColumnHeader) { var cell = ws.Cells[rowIndex, colIndex]; //set màu thành gray var fill = cell.Style.Fill; fill.PatternType = ExcelFillStyle.Solid; fill.BackgroundColor.SetColor(System.Drawing.Color.LightBlue); //căn chỉnh các border var border = cell.Style.Border; border.Bottom.Style = border.Top.Style = border.Left.Style = border.Right.Style = ExcelBorderStyle.Thin; //gán giá trị cell.Value = item; colIndex++; } // lấy ra danh sách UserInfo từ ItemSource của DataGrid List <Model.Thongke> userList = List.Cast <Model.Thongke>().ToList(); // với mỗi item trong danh sách sẽ ghi trên 1 dòng foreach (var item in userList) { // bắt đầu ghi từ cột 1. Excel bắt đầu từ 1 không phải từ 0 colIndex = 1; // rowIndex tương ứng từng dòng dữ liệu rowIndex++; //gán giá trị cho từng cell ws.Cells[rowIndex, colIndex++].Value = ""; ws.Cells[rowIndex, colIndex++].Value = item.mathang.ma_mathang; ws.Cells[rowIndex, colIndex++].Value = item.mathang.ten_mathang; ws.Cells[rowIndex, colIndex++].Value = item.mathang.LOAIHANG.ten_loaihang; ws.Cells[rowIndex, colIndex++].Value = item.mathang.NHACUNGCAP.ten_nhacungcap; ws.Cells[rowIndex, colIndex++].Value = item.soluongnhap; ws.Cells[rowIndex, colIndex++].Value = item.soluongxuat; ws.Cells[rowIndex, colIndex++].Value = item.tonkho; ws.Cells[rowIndex, colIndex++].Value = item.mathang.DONVITINH.ten_donvi; } //Lưu file lại Byte[] bin = pk.GetAsByteArray(); File.WriteAllBytes(filePath, bin); } MessageBox.Show("Thành công !!!", "THÔNG BÁO"); Process.Start(filePath); } catch (Exception) { MessageBox.Show("Có lỗi khi lưu file !!!", "THÔNG BÁO"); } }); #endregion #region Sap xep OrderbyNhap_Command = new RelayCommand <object>(p => { if (List.Count() == 0) { return(false); } return(true); }, p => { ObservableCollection <Model.Thongke> chkList = new ObservableCollection <Model.Thongke>(List.OrderByDescending(x => x.soluongnhap)); if (List[0] == chkList[0]) { List = new ObservableCollection <Model.Thongke>(List.OrderBy(x => x.soluongnhap)); } else { List = new ObservableCollection <Model.Thongke>(chkList); } }); OrderbyXuat_Command = new RelayCommand <object>(p => { if (List.Count() == 0) { return(false); } return(true); }, p => { ObservableCollection <Model.Thongke> chkList = new ObservableCollection <Model.Thongke>(List.OrderByDescending(x => x.soluongxuat)); if (List[0] == chkList[0]) { List = new ObservableCollection <Model.Thongke>(List.OrderBy(x => x.soluongxuat)); } else { List = new ObservableCollection <Model.Thongke>(chkList); } }); OrderbyTon_Command = new RelayCommand <object>(p => { if (List.Count() == 0) { return(false); } return(true); }, p => { ObservableCollection <Model.Thongke> chkList = new ObservableCollection <Model.Thongke>(List.OrderByDescending(x => x.tonkho)); if (List[0] == chkList[0]) { List = new ObservableCollection <Model.Thongke>(List.OrderBy(x => x.tonkho)); } else { List = new ObservableCollection <Model.Thongke>(chkList); } }); OrderbyTenMathang_Command = new RelayCommand <object>(p => { if (List.Count() == 0) { return(false); } return(true); }, p => { ObservableCollection <Model.Thongke> chkList = new ObservableCollection <Model.Thongke>(List.OrderByDescending(x => x.mathang.ten_mathang)); if (List[0] == chkList[0]) { List = new ObservableCollection <Model.Thongke>(List.OrderBy(x => x.mathang.ten_mathang)); } else { List = new ObservableCollection <Model.Thongke>(chkList); } }); OrderbyTennhacungcap_Command = new RelayCommand <object>(p => { if (List.Count() == 0) { return(false); } return(true); }, p => { ObservableCollection <Model.Thongke> chkList = new ObservableCollection <Model.Thongke>(List.OrderByDescending(x => x.mathang.NHACUNGCAP.ten_nhacungcap)); if (List[0] == chkList[0]) { List = new ObservableCollection <Model.Thongke>(List.OrderBy(x => x.mathang.NHACUNGCAP.ten_nhacungcap)); } else { List = new ObservableCollection <Model.Thongke>(chkList); } }); OrderbyTenloai_Command = new RelayCommand <object>(p => { if (List.Count() == 0) { return(false); } return(true); }, p => { ObservableCollection <Model.Thongke> chkList = new ObservableCollection <Model.Thongke>(List.OrderByDescending(x => x.mathang.LOAIHANG.ten_loaihang)); if (List[0] == chkList[0]) { List = new ObservableCollection <Model.Thongke>(List.OrderBy(x => x.mathang.LOAIHANG.ten_loaihang)); } else { List = new ObservableCollection <Model.Thongke>(chkList); } }); OrderbyTendonvi_Command = new RelayCommand <object>(p => { if (List.Count() == 0) { return(false); } return(true); }, p => { ObservableCollection <Model.Thongke> chkList = new ObservableCollection <Model.Thongke>(List.OrderByDescending(x => x.mathang.DONVITINH.ten_donvi)); if (List[0] == chkList[0]) { List = new ObservableCollection <Model.Thongke>(List.OrderBy(x => x.mathang.DONVITINH.ten_donvi)); } else { List = new ObservableCollection <Model.Thongke>(chkList); } }); #endregion }