コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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());
            }
        }
コード例 #3
0
        /// <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;
            }
        }
コード例 #4
0
        /// <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;
            }
        }
コード例 #5
0
        /// <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();
        }
コード例 #7
0
        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();
        }
コード例 #9
0
        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();
        }
コード例 #10
0
        /// <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;
            }
        }
コード例 #11
0
        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());
            }
        }
コード例 #12
0
        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());
            }
        }
コード例 #13
0
        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();
        }
コード例 #14
0
        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();
        }