Je dois afficher un rapport sur le nombre d'activité renseigné par un utilisateur classé par jour et type d'activité.
Actuellement, j'ai une classe regroupant une List<typeActivity> et une classe typeActivity ou je définis les différentes activités
Cela me permet d'inclure directement dans un Repeater le nombre d'activité
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 public class dsActivityReportUK2 : dsActivityReport { public List<typeActivityReportUK2> FirstAppointment { get; set; } public List<typeActivityReportUK2> SiteAssessment { get; set; } public List<typeActivityReportUK2> PrintAudit { get; set; } public List<typeActivityReportUK2> Validation { get; set; } public List<typeActivityReportUK2> FinalAppointment { get; set; } public List<typeActivityReportUK2> DecisionAppointment { get; set; } public List<typeActivityReportUK2> DecisionCall { get; set; } public List<typeActivityReportUK2> CustomerCare { get; set; } public List<typeActivityReportUK2> Sold { get; set; } public List<typeActivityReportUK2> ToContact { get; set; } public dsActivityReportUK2() { FirstAppointment = new List<typeActivityReportUK2>(); SiteAssessment= new List<typeActivityReportUK2>(); PrintAudit = new List<typeActivityReportUK2>(); Validation = new List<typeActivityReportUK2>(); FinalAppointment = new List<typeActivityReportUK2>(); DecisionAppointment = new List<typeActivityReportUK2>(); DecisionCall = new List<typeActivityReportUK2>(); CustomerCare= new List<typeActivityReportUK2>(); Sold = new List<typeActivityReportUK2>(); ToContact = new List<typeActivityReportUK2>(); } } public class typeActivityReportUK2 : typeActivityReport { public bool Booked { get; set; } public bool Cancelled { get; set; } public bool Completed { get; set; } public bool Negative { get; set; } public bool ToContact { get; set; } public bool OPA { get; set; } }
Cela m'a permis de creer des méthodes générique pour tous les pays (disposant chacun de type d'activité différentes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <td> <asp:LinkButton ID="LinknbFirstAppointmentCancelled1" CommandName="LinkActivity" OnCommand="Link_Click" CommandArgument="<%# GetActivityIdFiltered(((dsActivityReportUK2)Container.DataItem).FirstAppointment, ty => ty.Cancelled == true) %>" runat="server"> <%# GetFilteredResult(((dsActivityReportUK2)Container.DataItem).FirstAppointment, ty => ty.Cancelled == true) %> </asp:LinkButton> </td>
Du coté base de données, j'ai un service qui me ramène un DataSet avec une requête filtré sur l'utilisateur et une plage de date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public string GetFilteredResult<T>(List<T> lst, Func<T, bool> func) { if (lst == null) return String.Empty; string s = lst.Where(func).Count().ToString(); //if (s == "0") // return String.Empty; //else return s; }
Mon problème, est que j'aimerais rendre aussi le Service le plus générique possible afin d'utiliser 1 méthode pour tous les pays et non créér une méthode par pays (la requête ramène depuis les mêmes tables, c'est juste l'affectation dans les classes qui change).
Avec le nom du type de l'activité (FirstAppointmentBooked par ex.), cela me définisse ma classe typeActivityReport automatiquement.
Est ce possible ?
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 switch (activityReport.activityType) { case 206: /*FirstAppointmentBooked*/ { activityReport.Booked = true; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.FirstAppointment.Add(activityReport); break; } case 207: /*FirstAppointmentCancelled*/ { activityReport.Booked = false; activityReport.Cancelled = true; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.FirstAppointment.Add(activityReport); break; } case 208: /*FirstAppointmentCompleted*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = true; activityReport.Negative = false; activityReport.ToContact = false; lst.FirstAppointment.Add(activityReport); break; } case 209: /*FirstAppointmentNegative*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = true; activityReport.ToContact = false; lst.FirstAppointment.Add(activityReport); break; } case 210: /*SiteAssessmentBooked*/ { activityReport.Booked = true; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.SiteAssessment.Add(activityReport); break; } case 211: /*SiteAssessmentCompleted*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = true; activityReport.Negative = false; activityReport.ToContact = false; lst.SiteAssessment.Add(activityReport); break; } case 212: /*PrintAuditBooked*/ { activityReport.Booked = true; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.PrintAudit.Add(activityReport); break; } case 213: /*PrintAuditCompleted*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = true; activityReport.Negative = false; activityReport.ToContact = false; lst.PrintAudit.Add(activityReport); break; } case 214: /*ValidationBooked*/ { activityReport.Booked = true; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.Validation.Add(activityReport); break; } case 215: /*ValidationCompleted*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = true; activityReport.Negative = false; activityReport.ToContact = false; lst.Validation.Add(activityReport); break; } case 216: /*ValidationNegative*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = true; activityReport.ToContact = false; lst.Validation.Add(activityReport); break; } case 217: /*FinalAppointmentBooked*/ { activityReport.Booked = true; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.FinalAppointment.Add(activityReport); break; } case 218: /*FinalAppointmentCompleted*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = true; activityReport.Negative = false; activityReport.ToContact = false; lst.FinalAppointment.Add(activityReport); break; } case 219: /*FinalAppointmentNegative*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = true; activityReport.ToContact = false; lst.FinalAppointment.Add(activityReport); break; } case 220: /*DecisionAppointmentBooked*/ { activityReport.Booked = true; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.DecisionAppointment.Add(activityReport); break; } case 221: /*DecisionAppointmentCompleted*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = true; activityReport.Negative = false; activityReport.ToContact = false; lst.DecisionAppointment.Add(activityReport); break; } case 222: /*DecisionAppointmentNegative*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = true; activityReport.ToContact = false; lst.DecisionAppointment.Add(activityReport); break; } case 223: /*DecisionCallBooked*/ { activityReport.Booked = true; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.DecisionCall.Add(activityReport); break; } case 224: /*DecisionCallCompleted*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = true; activityReport.Negative = false; activityReport.ToContact = false; lst.DecisionCall.Add(activityReport); break; } case 225: /*DecisionCallNegative*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = true; activityReport.ToContact = false; lst.DecisionCall.Add(activityReport); break; } case 226: /*Sold*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.Sold.Add(activityReport); break; } case 227: /*Tocontact*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.ToContact.Add(activityReport); break; } case 228: /*ToContactforSite*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = true; lst.SiteAssessment.Add(activityReport); break; } case 229: /*SiteAssessmentCancelled*/ { activityReport.Booked = false; activityReport.Cancelled = true; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.SiteAssessment.Add(activityReport); break; } case 230: /*SiteAssessmentNegative*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = true; activityReport.ToContact = false; lst.SiteAssessment.Add(activityReport); break; } case 231: /*ToContactforPrint*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = true; lst.PrintAudit.Add(activityReport); break; } case 232: /*PrintAuditCancelled*/ { activityReport.Booked = false; activityReport.Cancelled = true; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.PrintAudit.Add(activityReport); break; } case 233: /*PrintAuditNegative*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = true; activityReport.ToContact = false; lst.PrintAudit.Add(activityReport); break; } case 234: /*ToContactforValidation*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = true; lst.Validation.Add(activityReport); break; } case 235: /*ValidationCancelled*/ { activityReport.Booked = false; activityReport.Cancelled = true; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.Validation.Add(activityReport); break; } case 236: /*ToContactforFinal*/ { activityReport.Booked = false; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = true; lst.FinalAppointment.Add(activityReport); break; } case 237: /*FinalAppointmentCancelled*/ { activityReport.Booked = false; activityReport.Cancelled = true; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.FinalAppointment.Add(activityReport); break; } case 238: /*DecisionAppointmentCancelled*/ { activityReport.Booked = false; activityReport.Cancelled = true; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.DecisionAppointment.Add(activityReport); break; } case 239: /*CustomerCareBooked*/ { activityReport.Booked = true; activityReport.Cancelled = false; activityReport.Completed = false; activityReport.Negative = false; activityReport.ToContact = false; lst.CustomerCare.Add(activityReport); break; } }
Partager