public async Task <ActionResult <ReservationTimeSlot> > Reservation([FromBody] ReservationTimeSlot reservation) { string accountID = this.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value; if (accountID == null) { return(Unauthorized()); } try { ParkingSpot parkingSpot = await parkingSpotManager.GetFreeParkingSpot(reservation.startReservation, reservation.endReservation); if (parkingSpot == null) { return(NotFound("No parking spots available")); } reservation.parkingSpotID = parkingSpot.parkingSpotID; reservation.accountID = accountID; ReservationTimeSlot newReservation = await reservationTimeSlotManager.CreateReservationTimeSlot(reservation); return(Ok(newReservation)); } catch (Exception) { return(BadRequest()); } }
public async Task <ActionResult <ReservationTimeSlot> > PutReservationTimeSlot([FromBody] ReservationTimeSlot reservationTimeSlot) { try { string accountID = this.User.FindFirst(ClaimTypes.NameIdentifier).Value; reservationTimeSlot.accountID = accountID; ParkingSpot parkingSpot = await parkingSpotManager.GetFreeParkingSpot(reservationTimeSlot.startReservation, reservationTimeSlot.endReservation); if (parkingSpot == null) { return(NotFound()); } ReservationTimeSlot reservation = await reservationTimeSlotManager.UpdateReservationTimeSlot(reservationTimeSlot); if (reservation == null) { return(NotFound()); } return(Ok(reservation)); } catch (NullReferenceException) { return(NotFound()); } catch (Exception) { return(BadRequest()); } }
/// <summary> /// update timeslot /// </summary> /// <param name="reservationTimeSlot"></param> /// <returns>ReservationTimeSlot</returns> public async Task <ReservationTimeSlot> UpdateReservationTimeSlot(ReservationTimeSlot reservationTimeSlot) { try { ReservationTimeSlot oldReservationTimeSlot = await context.reservationTimeSlots.FirstOrDefaultAsync(r => r.reservationTimeSlotID == reservationTimeSlot.reservationTimeSlotID); if (oldReservationTimeSlot == null) { return(null); } context.Entry(oldReservationTimeSlot).State = EntityState.Detached; oldReservationTimeSlot = reservationTimeSlot; context.Entry(oldReservationTimeSlot).State = EntityState.Modified; context.reservationTimeSlots.Update(oldReservationTimeSlot); await context.SaveChangesAsync(); return(reservationTimeSlot); } catch (Exception ex) { string m = ex.Message; throw; } }
/// <summary> /// Gets reservation with id /// </summary> /// <param name="reservationTimeSlotID"></param> /// <returns>ReservationTimeSlot</returns> public async Task <ReservationTimeSlot> GetReservationTimeSlot(int reservationTimeSlotID) { try { ReservationTimeSlot reservation = await context.reservationTimeSlots.Where(r => r.reservationTimeSlotID == reservationTimeSlotID).AsNoTracking().FirstOrDefaultAsync(); return(reservation); } catch (Exception) { throw; } }
/// <summary> /// creates new reservation /// </summary> /// <param name="reservationTimeSlot"></param> /// <returns>ReservationTimeSlot</returns> public async Task <ReservationTimeSlot> CreateReservationTimeSlot(ReservationTimeSlot reservationTimeSlot) { try { await context.reservationTimeSlots.AddAsync(reservationTimeSlot); await context.SaveChangesAsync(); return(reservationTimeSlot); } catch (Exception) { throw; } }
public async Task GetTimeSlot_ReturnOk() { // Act var result = await controller.GetReservationTimeSlot(1); // Assert OkObjectResult actionResult = Assert.IsType <OkObjectResult>(result.Result); Assert.NotNull(actionResult); actionResult = (OkObjectResult)result.Result; ReservationTimeSlot model = (ReservationTimeSlot)actionResult.Value; Assert.Equal(1, model.reservationTimeSlotID); Dispose(); }
public async Task <ActionResult <ReservationTimeSlot> > PostReservationTimeSlot([FromBody] ReservationTimeSlot reservationTimeSlot) { try { ReservationTimeSlot reservation = await reservationTimeSlotManager.CreateReservationTimeSlot(reservationTimeSlot); if (reservation == null) { return(BadRequest()); } return(Ok(reservation)); } catch (Exception) { return(BadRequest()); } }
public async Task PutTimeSlot_ReturnNotFound() { // Act ReservationTimeSlot timeSlot = new ReservationTimeSlot() { startReservation = new DateTime(2021, 3, 26, 10, 30, 00), endReservation = new DateTime(2021, 3, 26, 11, 30, 00), licensePlateNumber = "A-111-AA", parkingSpotID = 1 }; var result = await controller.PutReservationTimeSlot(timeSlot); // Assert NotFoundResult actionResult = Assert.IsType <NotFoundResult>(result.Result); Assert.NotNull(actionResult); Dispose(); }
public async Task Reserve_ReturnUnAuthorized() { // Act controller.ControllerContext = new ControllerContext(); ReservationTimeSlot timeSlot = new ReservationTimeSlot() { startReservation = new DateTime(2021, 1, 1, 12, 0, 0), endReservation = new DateTime(2021, 1, 1, 13, 0, 0), licensePlateNumber = "AA-12-AA" }; var result = await controller.Reservation(timeSlot); // Assert UnauthorizedResult actionResult = Assert.IsType <UnauthorizedResult>(result.Result); Assert.NotNull(actionResult); Dispose(); }
/// <summary> /// Deletes reservation /// </summary> /// <param name="reservationTimeSlotID"></param> /// <returns>ReservationTimeSlot</returns> public async Task <ReservationTimeSlot> DeleteReservationTimeSlot(int reservationTimeSlotID) { try { ReservationTimeSlot reservation = await context.reservationTimeSlots.Where(r => r.reservationTimeSlotID == reservationTimeSlotID).FirstOrDefaultAsync(); if (reservation == null) { return(null); } context.reservationTimeSlots.Remove(reservation); await context.SaveChangesAsync(); return(reservation); } catch (Exception) { throw; } }
public async Task <ActionResult <ReservationTimeSlot> > DeleteReservationTimeSlot(int id) { ReservationTimeSlot reservation = await reservationTimeSlotManager.DeleteReservationTimeSlot(id); try { if (reservation == null) { return(NotFound()); } return(Ok(reservation)); } catch (NullReferenceException) { return(NotFound()); } catch (Exception) { return(BadRequest()); } }
public async Task <ActionResult <ReservationTimeSlot> > FreeSpots([FromBody] ReservationTimeSlot timeSlot) { try { int amount = await parkingSpotManager.GetAmountFreeParkingSpots(timeSlot.startReservation, timeSlot.endReservation); if (amount == -1) { return(NotFound()); } return(Ok(amount)); } catch (NullReferenceException) { return(NotFound()); } catch (Exception) { return(BadRequest()); } }
public async Task Reserve_ReturnOk() { // Act ReservationTimeSlot timeSlot = new ReservationTimeSlot() { startReservation = new DateTime(2021, 1, 1, 12, 0, 0), endReservation = new DateTime(2021, 1, 1, 13, 0, 0), licensePlateNumber = "AA-12-AA" }; var result = await controller.Reservation(timeSlot); // Assert OkObjectResult actionResult = Assert.IsType <OkObjectResult>(result.Result); Assert.NotNull(actionResult); actionResult = (OkObjectResult)result.Result; ReservationTimeSlot model = (ReservationTimeSlot)actionResult.Value; Assert.Equal(timeSlot.licensePlateNumber, model.licensePlateNumber); Dispose(); }
public async Task FreeParkingSpots_ReturnOk() { // Act DateTime start = new DateTime(2021, 1, 1, 12, 0, 0); DateTime end = new DateTime(2021, 1, 1, 13, 0, 0); ReservationTimeSlot timeSlot = new ReservationTimeSlot(); timeSlot.startReservation = start; timeSlot.endReservation = end; var result = await controller.FreeSpots(timeSlot); // Assert OkObjectResult actionResult = Assert.IsType <OkObjectResult>(result.Result); Assert.NotNull(actionResult); actionResult = (OkObjectResult)result.Result; int value = (int)actionResult.Value; Assert.Equal(3, value); Dispose(); }
public async Task PostTimeSlot_ReturnOk() { // Act ReservationTimeSlot timeSlot = new ReservationTimeSlot() { startReservation = new DateTime(2021, 3, 26, 10, 30, 00), endReservation = new DateTime(2021, 3, 26, 11, 30, 00), licensePlateNumber = "A-111-AA", parkingSpotID = 1 }; var result = await controller.PostReservationTimeSlot(timeSlot); // Assert OkObjectResult actionResult = Assert.IsType <OkObjectResult>(result.Result); Assert.NotNull(actionResult); actionResult = (OkObjectResult)result.Result; ReservationTimeSlot model = (ReservationTimeSlot)actionResult.Value; Assert.Equal(4, model.reservationTimeSlotID); Dispose(); }