public IEnumerable <ExchangeRequestDTO> GetRequestsByResponder(Guid responderId)
        {
            IEnumerable <ExchangeRequest> MyRequests  = IExchangeRequestRepository.GetRequestsByResponder(responderId);
            List <ExchangeRequestDTO>     RequestsDTO = new List <ExchangeRequestDTO>();
            DateTime now = DateTime.Now;

            foreach (ExchangeRequest e in MyRequests)
            {
                ExchangeRequestDTO requestDTO = new ExchangeRequestDTO()
                {
                    id                   = e.id,
                    requesterId          = e.requesterId,
                    responderId          = e.responderId,
                    responderApartmentId = e.responderApartmentId,
                    requesterApartmentId = e.requesterApartmentId,
                    checkIn              = e.checkIn,
                    checkOut             = e.checkOut,
                    numberOfPersons      = e.numberOfPersons,
                    status               = e.status
                };
                if (requestDTO.checkIn.AddDays(-1) < now)
                {
                    requestDTO.status = "Overtime";
                    Put(requestDTO.id, requestDTO);
                }
                RequestsDTO.Add(requestDTO);
            }
            return(RequestsDTO);
        }
        // Exchange the code for a jwt access token
        public async Task <bool> DoExchangeAsync(string code)
        {
            if (string.IsNullOrEmpty(code))
            {
                return(false);
            }

            string uri = _trueLayerCredentials.Value.BaseAuthUrl + "/connect/token";

            ExchangeRequestDTO exchangeDTO = new ExchangeRequestDTO()
            {
                GrantType    = "authorization_code",
                ClientId     = _trueLayerCredentials.Value.ClientId,
                ClientSecret = _trueLayerCredentials.Value.ClientSecret,
                RedirectUri  = _trueLayerCredentials.Value.RedirectUrl,
                Code         = code
            };

            ExchangeResponseDTO responseObj = (ExchangeResponseDTO) await DoRequest <ExchangeResponseDTO>(HttpMethod.Post, uri, false, exchangeDTO);

            if (responseObj == null)
            {
                return(false);
            }

            Cache cache = new Cache {
                ExchangeResponseDTO = responseObj
            };

            _cacheService.SetCache(cache);

            return(true);
        }
        public ExchangeRequest Post(ExchangeRequestDTO value)
        {
            ExchangeRequest model = new ExchangeRequest()
            {
                requesterId          = value.requesterId,
                responderId          = value.responderId,
                requesterApartmentId = value.requesterApartmentId,
                responderApartmentId = value.responderApartmentId,
                checkIn         = value.checkIn.ToLocalTime(),
                checkOut        = value.checkOut.ToLocalTime(),
                numberOfPersons = value.numberOfPersons,
                status          = "Pending"
            };

            return(IExchangeRequestRepository.Create(model));
        }
        public ExchangeRequest Put(Guid id, ExchangeRequestDTO value)
        {
            ExchangeRequest model = IExchangeRequestRepository.Get(id);

            if (value.requesterId != null)
            {
                model.requesterId = value.requesterId;
            }
            if (value.responderId != null)
            {
                model.responderId = value.responderId;
            }
            if (value.requesterApartmentId != null)
            {
                model.requesterApartmentId = value.requesterApartmentId;
            }
            if (value.responderApartmentId != null)
            {
                model.responderApartmentId = value.responderApartmentId;
            }
            if (value.checkIn != null)
            {
                model.checkIn = value.checkIn;
            }
            if (value.checkOut != null)
            {
                model.checkOut = value.checkOut;
            }
            if (value.numberOfPersons != 0)
            {
                model.numberOfPersons = value.numberOfPersons;
            }
            if (value.status != null)
            {
                model.status = value.status;
            }
            return(IExchangeRequestRepository.Update(model));
        }