-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathComparers.cs
More file actions
69 lines (55 loc) · 2.39 KB
/
Copy pathComparers.cs
File metadata and controls
69 lines (55 loc) · 2.39 KB
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
using System;
using System.Collections;
using System.Collections.Generic;
using DevExpress.XtraScheduler;
namespace SchedulerSortResources {
public abstract class ResourceBaseComparer : IComparer<Resource>, IComparer {
#region IComparer Members
int IComparer.Compare(object x, object y) {
return CompareCore(x, y);
}
public int Compare(Resource x, Resource y) {
return CompareCore(x, y);
}
#endregion
protected virtual int CompareCore(object x, object y) {
Resource xRes = (Resource)x;
Resource yRes = (Resource)y;
if (xRes == null || yRes == null)
return 0;
if (ResourceEmpty.Resource.Equals(xRes) || ResourceEmpty.Resource.Equals(yRes))
return 0;
return CompareResources(xRes, yRes);
}
protected abstract int CompareResources(Resource xRes, Resource yRes);
}
public class ResourceCaptionComparer : ResourceBaseComparer {
protected override int CompareResources(Resource xRes, Resource yRes) {
return String.Compare(xRes.Caption, yRes.Caption);
}
}
public class ResourceCaptionReverseComparer : ResourceBaseComparer {
protected override int CompareResources(Resource xRes, Resource yRes) {
return String.Compare(yRes.Caption, xRes.Caption);
}
}
public class ResourceNOfAppointmentsComparer : ResourceBaseComparer {
private SchedulerStorage schedulerStorage;
public ResourceNOfAppointmentsComparer(SchedulerStorage schedulerStorage) {
this.schedulerStorage = schedulerStorage;
}
protected override int CompareResources(Resource xRes, Resource yRes) {
// "Unassigned" resource
if (Convert.ToInt32(yRes.Id) == -1)
return 1;
// "Unassigned" resource
if (Convert.ToInt32(xRes.Id) == -1)
return -1;
int order = schedulerStorage.Appointments.Items.FindAll(e => e.ResourceId.Equals(yRes.Id)).Count -
schedulerStorage.Appointments.Items.FindAll(e => e.ResourceId.Equals(xRes.Id)).Count;
if (order == 0)
return schedulerStorage.Resources.Items.IndexOf(xRes) - schedulerStorage.Resources.Items.IndexOf(yRes);
return order;
}
}
}