Exemple #1
0
        public IActionResult Create([FromBody] ReservationApplied reservation)
        {
            LogRequestToDebug();

            if (reservation == null)
            {
                return(BadRequestExtension("Reservation is empty."));
            }

            if (reservation.ReservedDevices == null || !reservation.ReservedDevices.Any())
            {
                return(BadRequestExtension("RequestedDevices property is empty."));
            }

            try
            {
                _reservationsAppliedRepository.Add(reservation);
            }
            catch (Exception ex)
            {
                return(StatusCodeExtension(500, "Failed to Add reservation in database. " + ex.Message));
            }

            _logger.Debug(string.Format("Created new applied reservation: [{0}]",
                                        JsonConvert.SerializeObject(reservation)));

            return(CreatedAtRoute("getAppliedReservation", new { id = reservation.Id }, reservation));
        }
Exemple #2
0
        /// <inheritdoc />
        /// <summary>
        /// Applies the reservation.
        /// </summary>
        /// <returns>The reservation.</returns>
        /// <param name="reservation">Reservation.</param>
        public async Task <ReservationApplied> ApplyReservation(ReservationApplied reservation)
        {
            var serializedReservation = JsonConvert.SerializeObject(reservation);
            var httpContent           = new StringContent(serializedReservation, Encoding.UTF8, "application/json");

            var response = await _client.PostAsync("api/v1/reservation/applied", httpContent);

            if (!response.IsSuccessStatusCode)
            {
                _logger.Error(response.ToString());
                throw new HttpRequestException(response.StatusCode.ToString());
            }

            return(await GetAppliedReservation(reservation.Id));
        }
Exemple #3
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the applied reservation.
        /// </summary>
        /// <returns>The applied reservation.</returns>
        /// <param name="id">Identifier.</param>
        public async Task <ReservationApplied> GetAppliedReservation(string id)
        {
            ReservationApplied reservation = null;

            _logger.Debug("GetAppliedReservation: " + _client.BaseAddress + "api/v1/reservation/applied/" + id);
            var response = await _client.GetAsync("api/v1/reservation/applied/" + id);

            if (response.IsSuccessStatusCode)
            {
                var stream = await response.Content.ReadAsStringAsync();

                reservation = JsonConvert.DeserializeObject <ReservationApplied>(stream);
            }

            return(reservation);
        }
Exemple #4
0
        private async Task <ICollection <ReservationApplied> > AddAppliedReservation(
            ICollection <ReservationApplied> appliedReservations, Reservation reservation,
            List <ReservedDevice> reservedDevices)
        {
            _logger.Debug(
                $"Applying reservation - all devices are locked: {JsonConvert.SerializeObject(reservedDevices)}");
            reservation.Available = true;
            var reservationToBeApplied = new ReservationApplied(reservation.Id)
            {
                ReservedDevices = reservedDevices,
                Available       = true
            };

            _logger.Debug(
                $"Applying reservation - adding reservation applied: {JsonConvert.SerializeObject(reservationToBeApplied)}");
            var appliedReservation = await RestClient.ApplyReservation(reservationToBeApplied);

            appliedReservations.Add(appliedReservation);

            return(appliedReservations);
        }