Bonjour,
J'ai dans mon application, une partie qui affiche des entrées d'un log. J'ai ajouté sur mon masque la possibilité de filtrer les entrées du logs, en sélectionnant un ou plusieurs utilisateurs, une ou plusieurs catégories.
pour l'instant ça fonctionne, mais je trouve le code pas beau... et je cherche à le simplifier.
Ma question, j'aimerai savoir si il y a un moyen de partir par exemple sur un context de base qui retourne par défaut la totalité, et mettre une condition si j'ai un utilisateur ou plusieurs de sélectionné, tu ajoutes une clause where, même chose pour la catégorie si j'en trouve une ou plusieurs.
voici mon code actuel :
Le pire c'est que j'aimerai ajouté par la suite, la possibilité de filtrer sur les dates également, et si je pars sur mon code actuel, il va faire 300 km de long en testant toutes les possibilités.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public static List<MDAOffice_Logs> GetLogList(string _SelectedUsers = null, string _SelectedCategories = null) { if (_SelectedUsers == null && _SelectedCategories == null) { // On affiche tout le log using (var context = new MDAOfficeEntities()) { return context.MDAOffice_Logs.Include("Admin_Users") .OrderByDescending(o => o.DateLog).ThenByDescending(o => o.HeureLog) .ToList(); } } else if (_SelectedUsers != null && _SelectedCategories == null) { // On affiche les entrées pour un ou plusieurs utilisateurs de sélectionnés int[] findUser = _SelectedUsers.Split(',').Select(int.Parse).ToArray(); using (var context = new MDAOfficeEntities()) { return context.MDAOffice_Logs.Include("Admin_Users") .Where(f => findUser.Any(s => f.Id_User.Equals(s))) .OrderByDescending(o => o.DateLog).ThenByDescending(o => o.HeureLog) .ToList(); } } else if (_SelectedUsers != null && _SelectedCategories != null && _DateOperationFilter == null) { // On affiche un ou plusieurs utilisateurs et une ou plusieurs catégories de sélectionnées int[] findUser = _SelectedUsers.Split(',').Select(int.Parse).ToArray(); string[] findCategorie = _SelectedCategories.Split(';'); using (var context = new MDAOfficeEntities()) { return context.MDAOffice_Logs.Include("Admin_Users") .Where(f => findCategorie.Any(s => f.Categorie.Contains(s))) .Where(f => findUser.Any(s => f.Id_User.Equals(s))) .OrderByDescending(o => o.DateLog).ThenByDescending(o => o.HeureLog) .ToList(); } } else if (_SelectedUsers == null && _SelectedCategories != null) { // On affiche les entrées pour une ou plusieurs catégories de sélectionnées string[] findCategorie = _SelectedCategories.Split(';'); using (var context = new MDAOfficeEntities()) { return context.MDAOffice_Logs.Include("Admin_Users") .Where(f => findCategorie.Any(s => f.Categorie.Contains(s))) .OrderByDescending(o => o.DateLog).ThenByDescending(o => o.HeureLog) .ToList(); } } else { return null; } }
Merci pour votre aide.
Alex
Partager