@@ -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,16 +92,17 @@ public IOrderedQueryable<@event> SortEventsByActivity()
57
92
}
58
93
59
94
60
- [ HttpGet ]
95
+ [ HttpPost ]
61
96
[ ResponseType ( typeof ( List < EventModel > ) ) ]
62
- [ Route ( "api/events/bydate/{datefilter}" ) ]
63
97
[ Authorize ( Roles = "Manager, Member" ) ]
64
- public async Task < IHttpActionResult > SortEventsByDate ( string filter )
98
+ [ Route ( "api/events/bydate" ) ]
99
+ public async Task < IHttpActionResult > SortEventsByDate ( EventDateModel filter )
65
100
{
66
- var datefilter = DateTime . Parse ( filter . Replace ( "!" , ":" ) ) ;
101
+ var datefilter = filter . eventdate ;
67
102
var sortedEvents = new List < EventModel > ( ) ;
68
103
//Sorting punctual events;
69
- var punctualEvents = await db . ponctualEvent . Where ( pe => pe . eventDate == datefilter ) . ToListAsync ( ) ;
104
+ var punctuals = await db . ponctualEvent . ToListAsync ( ) ;
105
+ var punctualEvents = punctuals . Where ( pe => pe . eventDate . Value . Date == datefilter . Date ) ;
70
106
if ( punctualEvents . Any ( ) )
71
107
{
72
108
foreach ( ponctualEvent pe in punctualEvents )
@@ -88,18 +124,41 @@ public async Task<IHttpActionResult> SortEventsByDate(string filter)
88
124
}
89
125
}
90
126
91
- //sorting regular events
92
- var regularEvents = await db . regularEvent . ToListAsync ( ) ;
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
+
93
154
if ( regularEvents . Any ( ) )
94
155
{
95
156
foreach ( regularEvent re in regularEvents )
96
157
{
97
158
//creating EventModel from punctaul events
98
159
var eventmodel = new EventModel ( ) ;
99
- var eventdate = eventmodel . GetRegularEventDate ( re . dateDay ) ;
100
- if ( eventdate . Equals ( datefilter ) )
101
160
{
102
- eventmodel . eventDate = eventdate ;
161
+ eventmodel . eventDate = datefilter ;
103
162
eventmodel . eventId = re . eventId ;
104
163
eventmodel . activityId = re . @event . activityId ;
105
164
eventmodel . eventDescription = re . @event . eventDescription ;
@@ -108,10 +167,11 @@ public async Task<IHttpActionResult> SortEventsByDate(string filter)
108
167
eventmodel . eventName = re . @event . eventName ;
109
168
eventmodel . eventPrice = re . @event . eventPrice ;
110
169
eventmodel . roomId = re . @event . roomId ;
111
- sortedEvents . Add ( eventmodel ) ;
112
170
}
171
+ sortedEvents . Add ( eventmodel ) ;
113
172
}
114
173
}
174
+
115
175
return Ok ( sortedEvents ) ;
116
176
}
117
177
@@ -178,7 +238,7 @@ public async Task<IHttpActionResult> PostRegisterToEvent(int userId, int eventId
178
238
myEvent . user . Add ( myUser ) ;
179
239
db . Entry ( myEvent ) . State = EntityState . Modified ;
180
240
await db . SaveChangesAsync ( ) ;
181
- return CreatedAtRoute ( "DefaultApi" , new { id = userId } , new EventRegistrationModel ( ) { userId = userId , eventId = eventId } ) ;
241
+ return Created ( "api/users/{ userId}/events/{eventId}/registration" , new EventRegistrationModel ( ) { userId = userId , eventId = eventId } ) ;
182
242
}
183
243
catch ( DbUpdateException )
184
244
{
0 commit comments