Skip to content

Commit c5ee653

Browse files
handle waiting list limitation #33
1 parent f3ce8eb commit c5ee653

5 files changed

Lines changed: 115 additions & 75 deletions

File tree

Controllers/EventRegistrationController.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ private List<EventRegistrationModel> GetAvailableEvents(string ref_id = null)
8686
if (today >= e.StartDate)
8787
{
8888
EventRegistrationModel model = new EventRegistrationModel(e);
89+
model.NumberOfRegistration = erManager.GetAllRegistrationsNotDeletedByEvent(e.Id).Count;
90+
model.NrOfRegistrationWaitingList = erManager.GetAllWaitingListRegsByEvent(e.Id).Count;
91+
92+
if((model.NrOfRegistrationWaitingList >= e.WaitingListLimitation) && (model.NrOfRegistrationWaitingList>= e.ParticipantsLimitation) )
93+
{
94+
model.Closed = true;
95+
}
96+
8997
//check if user already registered (if logged in)
9098
if (user != null)
9199
{

Controllers/EventRegistrationResultController.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ public ActionResult MoveFromWaitingList(long id, long eventId)
159159
erManager.UpdateEventRegistration(registration);
160160
}
161161

162+
163+
162164
return RedirectToAction("OnSelectTreeViewItem", new { id = eventId });
163165
}
164166

Models/EventRegistrationModel.cs

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,50 @@ public class EventRegistrationModel
1919
{
2020
public EventModel Event { get; set; }
2121

22-
public string Participants { get; set; } //number of participants limitation
23-
24-
public int NumberOfRegistration { get; set; } //number of already registered participants
25-
26-
public bool EditAllowed { get; set; } // edit allowed by user
27-
28-
public bool AlreadyRegistered { get; set; } //user already registered, this will find out via user email
29-
30-
public bool Deleted { get; set; } //is registration deleted by user
31-
32-
public string AlreadyRegisteredRefId { get; set; } //Already registered RefId
33-
34-
public string Message { get; set; } //
22+
/// <summary>
23+
/// Number of participants limitation
24+
/// </summary>
25+
public string Participants { get; set; }
26+
27+
/// <summary>
28+
/// Number of already registered participants
29+
/// </summary>
30+
public int NumberOfRegistration { get; set; }
31+
32+
/// <summary>
33+
/// Number of already registered participants on waiting list
34+
/// </summary>
35+
public int NrOfRegistrationWaitingList { get; set; }
36+
37+
/// <summary>
38+
/// edit allowed by user
39+
/// </summary>
40+
public bool EditAllowed { get; set; }
41+
42+
/// <summary>
43+
/// user already registered, this will find out via user email
44+
/// </summary>
45+
public bool AlreadyRegistered { get; set; }
46+
47+
/// <summary>
48+
/// is registration deleted by user
49+
/// </summary>
50+
public bool Deleted { get; set; }
51+
52+
/// <summary>
53+
///true if ParticipantsLimitation and WaitingListLimitation is reached
54+
/// </summary>
55+
public bool Closed { get; set; }
56+
57+
/// <summary>
58+
///Already registered RefId
59+
/// </summary>
60+
public string AlreadyRegisteredRefId { get; set; }
61+
62+
/// <summary>
63+
///
64+
/// </summary>
65+
//public string Message { get; set; }
3566

3667
public EventRegistrationModel()
3768
{
@@ -43,10 +74,6 @@ public EventRegistrationModel(Event e)
4374
Event = new EventModel(e);
4475
EditAllowed = e.EditAllowed;
4576

46-
using (EventRegistrationManager erManger = new EventRegistrationManager())
47-
{
48-
NumberOfRegistration = erManger.GetAllRegistrationsNotDeletedByEvent(e.Id).Count;
49-
}
5077
}
5178
}
5279

Services/BExIS.Emm.Services/Event/EventRegistrationManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public E.EventRegistration UpdateEventRegistration(E.EventRegistration eventRegi
119119

120120
public List<E.EventRegistration> GetAllWaitingListRegsByEvent(long id)
121121
{
122-
return EventRegistrationRepo.Query(a => a.Event.Id == id && a.WaitingList == true).ToList();
122+
return EventRegistrationRepo.Query(a => a.Event.Id == id && a.WaitingList == true && a.Deleted == false).ToList();
123123
}
124124

125125

Views/EventRegistration/AvailableEventsList.cshtml

Lines changed: 60 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -11,70 +11,68 @@
1111
</p>-->
1212
}
1313

14-
@{
15-
GridPagerStyles pagerStyles = GridPagerStyles.PageSizeDropDown;
16-
pagerStyles |= GridPagerStyles.NextPreviousAndNumeric;
17-
pagerStyles |= GridPagerStyles.Numeric;
18-
}
19-
2014
<span style="color:green">@ViewBag.Message</span>
2115

22-
@(Html.Telerik().Grid(Model)
23-
.Name("Events")
24-
.Columns(columns =>
25-
{
26-
columns.Template(
27-
@<text>
28-
@if (item.AlreadyRegistered == false || item.Deleted == true)
29-
{
30-
<div onclick="onClickRegister(@item.Event.Id)" class="bx bx-grid-function fa-sign-in" style="cursor: pointer;" title="Register for event"> Register</div>
31-
}
32-
<!--else
33-
{
34-
<div class="bx bx-grid-function fa-sign-in bx-disabled" disabled="disabled" title="Register for event"></div>
35-
}-->
36-
37-
@if (item.EditAllowed && item.AlreadyRegistered == true && item.Deleted == false && item.Event.Deadline >= DateTime.Now)
16+
<table id="events">
17+
<thead>
18+
<tr>
19+
<th>Actions</th>
20+
<th>Event name</th>
21+
<th>Deadline</th>
22+
<th>Participant number</th>
23+
</tr>
24+
</thead>
25+
<tbody>
26+
@for(int i = 0; i>Model.Count; i++)
27+
{
28+
<tr>
29+
<td>
30+
@if (Model[i].Closed)
31+
{
32+
<p>Booked out</p>
33+
}
34+
else if (Model[i].AlreadyRegistered == false || Model[i].Deleted == true)
35+
{
36+
<div onclick="onClickRegister(@Model[i].Event.Id)" class="bx bx-grid-function fa-sign-in" style="cursor: pointer;" title="Register for event"> Register</div>
37+
}
38+
39+
40+
@if (Model[i].EditAllowed && Model[i].AlreadyRegistered == true && Model[i].Deleted == false && Model[i].Event.Deadline >= DateTime.Now)
41+
{
42+
<div onclick="onClickEdit(@Model[i].Event.Id, '@Model[i].AlreadyRegisteredRefId')" class="bx bx-grid-function bx-edit" style="cursor: pointer;" title="Edit registration"></div>
43+
<div onclick="onClickDelete(@Model[i].Event.Id, '@Model[i].AlreadyRegisteredRefId')" class="bx bx-grid-function bx-trash" title="Delete registration"></div>
44+
45+
}
46+
else if (Model[i].AlreadyRegistered == true && Model[i].Deleted == false)
3847
{
39-
<div onclick="onClickEdit(@item.Event.Id, '@item.AlreadyRegisteredRefId')" class="bx bx-grid-function bx-edit" style="cursor: pointer;" title="Edit registration"></div>
40-
<div onclick="onClickDelete(@item.Event.Id, '@item.AlreadyRegisteredRefId')" class="bx bx-grid-function bx-trash" title="Delete registration"></div>
48+
<div onclick="onClickView(@Model[i].Event.Id, '@Model[i].AlreadyRegisteredRefId')" class="bx bx-grid-function fa-eye" style="cursor: pointer;" title="View registration"></div>
49+
<div onclick="onClickDelete(@Model[i].Event.Id, '@Model[i].AlreadyRegisteredRefId')" class="bx bx-grid-function bx-trash" style="cursor: pointer;" title="Delete registration"></div>
50+
}
4151

42-
}
43-
else if (item.AlreadyRegistered == true && item.Deleted == false)
52+
</td>
53+
<td>
54+
@Model[i].Event.Name
55+
</td>
56+
<td>
57+
@Model[i].Event.Deadline.ToString("dd-MM-yyyy")
58+
</td>
59+
<td>
60+
@Model[i].NumberOfRegistration/
61+
@if(Model[i].Event.ParticipantsLimitation == 0)
62+
{
63+
<span>no limitation</span>
64+
}
65+
else
4466
{
45-
<div onclick="onClickView(@item.Event.Id, '@item.AlreadyRegisteredRefId')" class="bx bx-grid-function fa-eye" style="cursor: pointer;" title="View registration"></div>
46-
<div onclick="onClickDelete(@item.Event.Id, '@item.AlreadyRegisteredRefId')" class="bx bx-grid-function bx-trash" style="cursor: pointer;" title="Delete registration"></div>
67+
@Model[i].Event.ParticipantsLimitation
4768
}
69+
</td>
70+
</tr>
71+
}
72+
</tbody>
73+
</table>
74+
4875

49-
</text>
50-
).Width(150);
51-
columns.Bound(r => r.Event.Name);
52-
columns.Bound(r => r.Event.Deadline).Format("{0: dd-MM-yyyy}").Width(200);
53-
columns.Template(
54-
@<text>
55-
@item.NumberOfRegistration/
56-
@if (item.Event.ParticipantsLimitation == 0)
57-
{
58-
<span>no limitation</span>
59-
}
60-
else {
61-
@item.Event.ParticipantsLimitation
62-
}
63-
</text>
64-
).Width(150);
65-
//columns.Bound(r => r.Event.ParticipantsLimitation);
66-
})
67-
.Pageable(paging =>
68-
paging
69-
.Style(pagerStyles)
70-
.PageSize(50)
71-
.Position(GridPagerPosition.Both)
72-
)
73-
.Filterable()
74-
//.Sortable(sortable => sortable
75-
// .OrderBy(orderby => orderby
76-
// .Add(r => r.Id).Descending()))
77-
)
7876
@(Html.Telerik().Window()
7977
.Name("Window_LogInToEvent")
8078
.Title("Event registration")
@@ -99,6 +97,11 @@
9997
//addTooltips();
10098
//}
10199
100+
$(document).ready(function () {
101+
$('#events').DataTable();
102+
103+
});
104+
102105
103106
function onClickRegister(id)
104107
{

0 commit comments

Comments
 (0)