public void WhenUserSendsAPUTRequest(Table table)
        {
            updatedUser     = table.CreateInstance <UserPUT>();
            _client.BaseUrl = _client.BaseUrl;
            _request        = new RestRequest(_client.BaseUrl);
            _request.AddParameter("application/json", JsonConvert.SerializeObject(updatedUser), ParameterType.RequestBody);

            _response = _client.Put(_request);
        }
        public async Task <IHttpActionResult> PutUser(UserPUT userPut)
        {
            Debug.WriteLine("\nUserPUT email: " + userPut.Email);
            Debug.WriteLine("UserPUT imageUrl: " + userPut.ImageUrl);
            Debug.WriteLine("UserPUT status: " + userPut.Status);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            User user = db.Users.Where(b => b.Email == userPut.Email).FirstOrDefault();

            if (user == null)
            {
                return(BadRequest("User " + userPut.Email + " doesn't exist. Please check your spelling."));
            }

            // if user didn't change imageUrl she leaves the string empty and we don't change it in database.
            if (!userPut.ImageUrl.Equals(""))
            {
                user.ImageUrl = userPut.ImageUrl;
            }

            // if user didn't change status she leaves the string empty and we don't change it in database.
            if (!userPut.Status.Equals(""))
            {
                user.Status = userPut.Status;
            }

            // if user comes online update lastLogin
            if (userPut.Status.Equals("Online"))
            {
                user.Lastlogin = DateTime.Now;
            }

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }

            return(Ok(userPut));
        }