public async Task GetApartmentsById_ReturnApartment()
        {
            // Arrange
            string expected = JsonConvert.SerializeObject(testApartments[0]);
            string actual;

            ApartmentRequest apartmentRequest = new ApartmentRequest
            {
                Apartment = testApartments[0],
                token     = Security.Token
            };
            StringContent content = new StringContent(JsonConvert.SerializeObject(apartmentRequest), Encoding.UTF8, "application/json");

            // Act
            var response = await _client.PostAsync("api/apartments", content);

            response.EnsureSuccessStatusCode();
            var responseString = await response.Content.ReadAsStringAsync();

            var actualObj = JsonConvert.DeserializeObject <Apartment>(responseString);

            int apartmentId = actualObj.Id;

            response = await _client.GetAsync("api/apartments/" + apartmentId.ToString());

            response.EnsureSuccessStatusCode();
            responseString = await response.Content.ReadAsStringAsync();

            actualObj    = JsonConvert.DeserializeObject <Apartment>(responseString);
            actualObj.Id = 0;
            actual       = JsonConvert.SerializeObject(actualObj);

            // Assert
            Assert.Equal(expected, actual);
        }
        public async Task <IActionResult> PutApartment(int id, ApartmentRequest apartmentRequest)
        {
            Apartment apartment = apartmentRequest.Apartment;
            string    token     = apartmentRequest.token;

            if (!Security.TokenIsValid(token))
            {
                return(StatusCode(401));
            }

            if (id != apartment.Id)
            {
                return(BadRequest());
            }

            _context.Entry(apartment).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ApartmentExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <ActionResult <Apartment> > PostApartment(ApartmentRequest apartmentRequest)
        {
            Apartment apartment = apartmentRequest.Apartment;
            string    token     = apartmentRequest.token;

            if (!Security.TokenIsValid(token))
            {
                return(StatusCode(401));
            }
            _context.Apartments.Add(apartment);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetApartment", new { id = apartment.Id }, apartment));
        }