Skip to content

Commit 83d5bcd

Browse files
committed
SumAsync bug was fixed
1 parent 058b055 commit 83d5bcd

File tree

1 file changed

+15
-28
lines changed

1 file changed

+15
-28
lines changed

CarWash.PWA/Controllers/ReservationsController.cs

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public async Task<ActionResult<ReservationViewModel>> PutReservation([FromRoute]
184184
return BadRequest("Company limit has been met for this day or there is not enough time at all.");
185185

186186
// Check if there is enough time in that slot
187-
if (!IsEnoughTimeInSlot(dbReservation.StartDate, dbReservation.TimeRequirement))
187+
if (!await IsEnoughTimeInSlotAsync(dbReservation.StartDate, dbReservation.TimeRequirement))
188188
return BadRequest("There is not enough time in that slot.");
189189
}
190190
#endregion
@@ -311,7 +311,7 @@ public async Task<ActionResult<ReservationViewModel>> PostReservation([FromBody]
311311
return BadRequest("Company limit has been met for this day or there is not enough time at all.");
312312

313313
// Check if there is enough time in that slot
314-
if (!IsEnoughTimeInSlot(reservation.StartDate, reservation.TimeRequirement))
314+
if (!await IsEnoughTimeInSlotAsync(reservation.StartDate, reservation.TimeRequirement))
315315
return BadRequest("There is not enough time in that slot.");
316316
#endregion
317317

@@ -1134,12 +1134,10 @@ public async Task<NotAvailableDatesAndTimesViewModel> GetNotAvailableDatesAndTim
11341134

11351135
if (!notAvailableDates.Contains(DateTime.Today))
11361136
{
1137-
// Cannot use SumAsync because of this EF issue:
1138-
// https://github.com/aspnet/EntityFrameworkCore/issues/12314
1139-
// Current milestone to be fixed is EF 2.1.3
1140-
var toBeDoneTodayTime = _context.Reservation
1137+
var toBeDoneTodayTime = await _context.Reservation
11411138
.Where(r => r.StartDate >= DateTime.Now && r.StartDate.Date == DateTime.Today)
1142-
.Sum(r => r.TimeRequirement);
1139+
.SumAsync(r => r.TimeRequirement);
1140+
11431141
if (toBeDoneTodayTime >= GetRemainingSlotCapacityToday() * _configuration.Reservation.TimeUnit) notAvailableDates.Add(DateTime.Today);
11441142
}
11451143
#endregion
@@ -1581,36 +1579,28 @@ private async Task<bool> IsEnoughTimeOnDateAsync(DateTime date, int timeRequirem
15811579
{
15821580
var allCompanyLimit = await _context.Company.SumAsync(c => c.DailyLimit);
15831581

1584-
// Cannot use SumAsync because of this EF issue:
1585-
// https://github.com/aspnet/EntityFrameworkCore/issues/12314
1586-
// Current milestone to be fixed is EF 2.1.3
1587-
var reservedTimeOnDate = _context.Reservation
1582+
var reservedTimeOnDate = await _context.Reservation
15881583
.Where(r => r.StartDate.Date == date.Date)
1589-
.Sum(r => r.TimeRequirement);
1584+
.SumAsync(r => r.TimeRequirement);
15901585

15911586
if (reservedTimeOnDate + timeRequirement > allCompanyLimit * _configuration.Reservation.TimeUnit) return false;
15921587
}
15931588
else
15941589
{
15951590

1596-
// Cannot use SumAsync because of this EF issue:
1597-
// https://github.com/aspnet/EntityFrameworkCore/issues/12314
1598-
// Current milestone to be fixed is EF 2.1.3
1599-
var reservedTimeOnDate = _context.Reservation
1591+
var reservedTimeOnDate = await _context.Reservation
16001592
.Where(r => r.StartDate.Date == date.Date && r.User.Company == _user.Company)
1601-
.Sum(r => r.TimeRequirement);
1593+
.SumAsync(r => r.TimeRequirement);
16021594

16031595
if (reservedTimeOnDate + timeRequirement > userCompanyLimit * _configuration.Reservation.TimeUnit) return false;
16041596
}
16051597

16061598
if (date.Date == DateTime.Today)
16071599
{
1608-
// Cannot use SumAsync because of this EF issue:
1609-
// https://github.com/aspnet/EntityFrameworkCore/issues/12314
1610-
// Current milestone to be fixed is EF 2.1.3
1611-
var toBeDoneTodayTime = _context.Reservation
1600+
var toBeDoneTodayTime = await _context.Reservation
16121601
.Where(r => r.StartDate >= DateTime.Now && r.StartDate.Date == DateTime.Today)
1613-
.Sum(r => r.TimeRequirement);
1602+
.SumAsync(r => r.TimeRequirement);
1603+
16141604
if (toBeDoneTodayTime + timeRequirement > GetRemainingSlotCapacityToday() * _configuration.Reservation.TimeUnit) return false;
16151605
}
16161606

@@ -1623,16 +1613,13 @@ private async Task<bool> IsEnoughTimeOnDateAsync(DateTime date, int timeRequirem
16231613
/// <param name="dateTime">Date and time of reservation</param>
16241614
/// <param name="timeRequirement">time requirement of the reservation in minutes</param>
16251615
/// <returns>true if there is enough time left or user is carwash admin</returns>
1626-
private bool IsEnoughTimeInSlot(DateTime dateTime, int timeRequirement)
1616+
private async Task<bool> IsEnoughTimeInSlotAsync(DateTime dateTime, int timeRequirement)
16271617
{
16281618
if (_user.IsCarwashAdmin) return true;
16291619

1630-
// Cannot use SumAsync because of this EF issue:
1631-
// https://github.com/aspnet/EntityFrameworkCore/issues/12314
1632-
// Current milestone to be fixed is EF 2.1.3
1633-
var reservedTimeInSlot = _context.Reservation
1620+
var reservedTimeInSlot = await _context.Reservation
16341621
.Where(r => r.StartDate == dateTime)
1635-
.Sum(r => r.TimeRequirement);
1622+
.SumAsync(r => r.TimeRequirement);
16361623

16371624
return reservedTimeInSlot + timeRequirement <=
16381625
_configuration.Slots.Find(s => s.StartTime == dateTime.Hour)?.Capacity * _configuration.Reservation.TimeUnit;

0 commit comments

Comments
 (0)