1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
public ObservableCollection<Operation> Operations
{
get { return GetFilteredOperations(FilteredOperations); }
}
public ObservableCollection<Operation> FilteredOperations { get; set; }
private string _operationNameFilter;
public string OperationNameFilter
{
get
{
return _operationNameFilter;
}
set
{
_operationNameFilter = value;
RaisePropertyChanged("OperationNameFilter");
RaisePropertyChanged("Operations");
}
}
public OperationListViewModel()
{
FilteredOperations = new ObservableCollection<Operation>();
// TODO : Chargement des opérations
// Filters
var sites = OperationUIService.LoadCountries();
SelectedSitesFilter = new List<SiteViewModel>();
sites.ForEach(s =>
{
var site = new SiteViewModel {CurrentSite = s};
site.PropertyChanged += SitePropertyChanged;
SelectedSitesFilter.Add(site);
});
OperationNameFilter = string.Empty;
}
void SitePropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
RaisePropertyChanged("Operations");
}
/// <summary>
/// Filter operations by name, code, ...
/// </summary>
/// <param name="listBase"></param>
/// <returns></returns>
private ObservableCollection<Operation> GetFilteredOperations(IEnumerable<Operation> listBase)
{
var filteredOperation = new ObservableCollection<Operation>();
var list = from p in listBase
where
FilterNameMethod(p, OperationNameFilter) &&
FilterSitesMethod(p, SelectedSitesFilter.ToList())
select p;
foreach (var u in list)
filteredOperation.Add(u);
return filteredOperation;
}
/// <summary>
/// Filter by name
/// </summary>
/// <param name="operation"></param>
/// <param name="name"></param>
/// <returns></returns>
public static bool FilterNameMethod(Operation operation, string name)
{
if (operation == null) return false;
if (name == null) return false;
if (name.Equals(string.Empty)) return true;
return (operation.LongName.ToUpper().StartsWith(name.ToUpper()));
}
/// <summary>
/// Filter by site
/// </summary>
/// <param name="operation"></param>
/// <param name="sites"></param>
/// <returns></returns>
public static bool FilterSitesMethod(Operation operation, List<SiteViewModel> sites)
{
var activeSites = sites.Where(s => s.IsActive);
foreach (var site in activeSites)
{
// TODO
}
return true;
} |
Partager