public async Task ReserveSpotAsync(ReserveParams param, int userId)
        {
            var spot = await GetParkingSpotAsync(param.ParkingId, param.SpotNumber);

            if (!spot.IsAvailableDuring(param.From, param.To))
            {
                throw new ParkingSpotAlreadyReservedException(param.ParkingId, (await parkingRepository.GetByIdAsync(param.ParkingId)).Name, param.SpotNumber);
            }
            var reservation = new Reservation
            {
                ReservedBy                = await userRepository.GetByIdAsync(userId),
                ReservedFrom              = param.From.ToUniversalTime(),
                ReservedUntil             = param.To.ToUniversalTime(),
                VehicleRegistrationNumber = param.VehicleRegistrationNumber
            };

            await AddAsync(reservation);

            spot.Reservations.Add(reservation);
            await parkingSpotRepository.UpdateAsync(spot);
        }
Esempio n. 2
0
 public async Task <ParkingGetByIdDto> GetById(int id)
 {
     return(mapper.Map <Parking, ParkingGetByIdDto>(await parkingRepository.GetByIdAsync(id)));
 }