@@ -22,28 +22,63 @@ public class eventRegistrationsController : ApiController
22
22
23
23
// GET: api/events
24
24
[ HttpGet ]
25
- [ Route ( "api/events " ) ]
25
+ [ Route ( "api/eventregistrations " ) ]
26
26
[ Authorize ( Roles = "Admin, Manager" ) ]
27
- public IQueryable < @event > GetAllEventRegistrations ( )
27
+ [ ResponseType ( typeof ( EventRegistrationModel ) ) ]
28
+ public async Task < List < EventRegistrationModel > > GetAllEventRegistrations ( )
28
29
{
29
- return db . @event . Where ( e => e . user . Count != 0 ) ;
30
+ var registeredUsers = await db . user . Where ( u => u . @event . Count != 0 ) . ToListAsync ( ) ;
31
+ var events = new List < EventRegistrationModel > ( ) ;
32
+ if ( registeredUsers . Any ( ) )
33
+ {
34
+ foreach ( user registeredUser in registeredUsers )
35
+ {
36
+ foreach ( @event evt in registeredUser . @event )
37
+ {
38
+ var myevent = new EventRegistrationModel ( )
39
+ {
40
+ eventId = evt . eventId ,
41
+ eventname = evt . eventName ,
42
+ userId = registeredUser . userId ,
43
+ username = string . Format ( "{0} {1}" , registeredUser . firstname , registeredUser . lastname )
44
+ } ;
45
+ events . Add ( myevent ) ;
46
+ }
47
+ }
48
+ }
49
+ return events ;
50
+
30
51
}
31
52
32
53
33
54
//GET: api/events/GetRegistrationsByEvent?eventId=1
34
55
[ HttpGet ]
35
- [ ResponseType ( typeof ( EventRegistrationModel ) ) ]
56
+ [ ResponseType ( typeof ( EventRegistrationByEventModel ) ) ]
36
57
[ Authorize ( Roles = "Admin, Manager" ) ]
37
58
[ Route ( "api/eventsregistration/{eventId}" ) ]
38
59
public async Task < IHttpActionResult > GetRegistrationsByEvent ( int eventId )
39
60
{
40
- var myEvent = db . @event . Where ( e => e . eventId == eventId && e . user . Count != 0 ) ;
41
- if ( ! myEvent . Any ( ) )
61
+ var myEvent = db . @event . Where ( e => e . eventId == eventId && e . user . Count != 0 ) . FirstOrDefaultAsync ( ) . Result ;
62
+ if ( myEvent == null )
42
63
{
43
- return NotFound ( ) ;
64
+ return BadRequest ( "There are not registration to this event yet or event does not exist." ) ;
65
+ }
66
+
67
+ var registrations = new EventRegistrationByEventModel ( ) { eventId = myEvent . eventId , eventname = myEvent . eventName , registeredUsers = new List < RegisteredUser > ( ) } ;
68
+
69
+ var users = myEvent . user . ToList ( ) ;
70
+ foreach ( user usr in users )
71
+ {
72
+ var registeredUser = new RegisteredUser ( )
73
+ {
74
+ userId = usr . userId ,
75
+ firstname = usr . firstname ,
76
+ lastname = usr . lastname
77
+ } ;
78
+ registrations . registeredUsers . Add ( registeredUser ) ;
44
79
}
45
- var registeredUsers = myEvent . FirstAsync ( ) . Result . user . ToList ( ) ;
46
- return Ok ( new EventRegistrationByEventModel ( ) { eventId = eventId , registeredUsers = registeredUsers } ) ;
80
+
81
+ return Ok ( registrations ) ;
47
82
}
48
83
49
84
@@ -57,6 +92,91 @@ public IOrderedQueryable<@event> SortEventsByActivity()
57
92
}
58
93
59
94
95
+ [ HttpPost ]
96
+ [ ResponseType ( typeof ( List < EventModel > ) ) ]
97
+ [ Authorize ( Roles = "Manager, Member" ) ]
98
+ [ Route ( "api/events/bydate" ) ]
99
+ public async Task < IHttpActionResult > SortEventsByDate ( EventDateModel filter )
100
+ {
101
+ var datefilter = filter . eventdate ;
102
+ var sortedEvents = new List < EventModel > ( ) ;
103
+ //Sorting punctual events;
104
+ var punctuals = await db . ponctualEvent . ToListAsync ( ) ;
105
+ var punctualEvents = punctuals . Where ( pe => pe . eventDate . Value . Date == datefilter . Date ) ;
106
+ if ( punctualEvents . Any ( ) )
107
+ {
108
+ foreach ( ponctualEvent pe in punctualEvents )
109
+ {
110
+ //creating EventModel from punctaul events
111
+ var eventmodel = new EventModel ( )
112
+ {
113
+ eventId = pe . eventId ,
114
+ activityId = pe . @event . activityId ,
115
+ eventDate = pe . eventDate . Value ,
116
+ eventDescription = pe . @event . eventDescription ,
117
+ eventDurationHours = pe . @event . eventDurationHours ,
118
+ eventMaxPeople = pe . @event . eventMaxPeople ,
119
+ eventName = pe . @event . eventName ,
120
+ eventPrice = pe . @event . eventPrice ,
121
+ roomId = pe . @event . roomId
122
+ } ;
123
+ sortedEvents . Add ( eventmodel ) ;
124
+ }
125
+ }
126
+
127
+ //sorting regular events by day
128
+ var regularEvents = new List < regularEvent > ( ) ;
129
+ if ( datefilter . DayOfWeek . Equals ( DayOfWeek . Monday ) )
130
+ {
131
+ regularEvents = await db . regularEvent . Where ( re => re . dateDay . Equals ( "Monday" ) ) . ToListAsync ( ) ;
132
+ }
133
+ else if ( datefilter . Day . Equals ( DayOfWeek . Tuesday ) )
134
+ {
135
+ regularEvents = await db . regularEvent . Where ( re => re . dateDay . Equals ( "Tuesday" ) ) . ToListAsync ( ) ;
136
+ }
137
+ else if ( datefilter . Day . Equals ( DayOfWeek . Wednesday ) )
138
+ {
139
+ regularEvents = await db . regularEvent . Where ( re => re . dateDay . Equals ( "Wednesday" ) ) . ToListAsync ( ) ;
140
+ }
141
+ else if ( datefilter . Day . Equals ( DayOfWeek . Thursday ) )
142
+ {
143
+ regularEvents = await db . regularEvent . Where ( re => re . dateDay . Equals ( "Thursday" ) ) . ToListAsync ( ) ;
144
+ }
145
+ else if ( datefilter . Day . Equals ( DayOfWeek . Friday ) )
146
+ {
147
+ regularEvents = await db . regularEvent . Where ( re => re . dateDay . Equals ( "Friday" ) ) . ToListAsync ( ) ;
148
+ }
149
+ else if ( datefilter . Day . Equals ( DayOfWeek . Saturday ) )
150
+ {
151
+ regularEvents = await db . regularEvent . Where ( re => re . dateDay . Equals ( "Saturday" ) ) . ToListAsync ( ) ;
152
+ }
153
+
154
+ if ( regularEvents . Any ( ) )
155
+ {
156
+ foreach ( regularEvent re in regularEvents )
157
+ {
158
+ //creating EventModel from punctaul events
159
+ var eventmodel = new EventModel ( ) ;
160
+ {
161
+ eventmodel . eventDate = datefilter ;
162
+ eventmodel . eventId = re . eventId ;
163
+ eventmodel . activityId = re . @event . activityId ;
164
+ eventmodel . eventDescription = re . @event . eventDescription ;
165
+ eventmodel . eventDurationHours = re . @event . eventDurationHours ;
166
+ eventmodel . eventMaxPeople = re . @event . eventMaxPeople ;
167
+ eventmodel . eventName = re . @event . eventName ;
168
+ eventmodel . eventPrice = re . @event . eventPrice ;
169
+ eventmodel . roomId = re . @event . roomId ;
170
+ }
171
+ sortedEvents . Add ( eventmodel ) ;
172
+ }
173
+ }
174
+
175
+ return Ok ( sortedEvents ) ;
176
+ }
177
+
178
+
179
+
60
180
[ HttpGet ]
61
181
[ ResponseType ( typeof ( @event ) ) ]
62
182
[ Route ( "api/users/{userId}/events" ) ]
0 commit comments