public ActionResult Put(string emailAddress, UserUpdateRequest userUpdateRequest) { User existingUser = new User(); existingUser = _userRepository.GetUserByEmailAddressAsync(emailAddress).Result; if (existingUser == null) { return(NotFound($"Cannot update [{emailAddress}], does not exist")); } try { var user = _mapper.Map <User>(userUpdateRequest); user.Id = existingUser.Id; user.EmailAddress = existingUser.EmailAddress; var userUpdated = _userRepository.UpdateUser(emailAddress, user).Result; var userResponse = _mapper.Map <UserResponse>(userUpdated); _logger.LogInformation($"updated user: {userResponse}"); } catch (Exception ex) { _logger.LogError(ex.ToString()); return(Problem($"There was a problem processing your request:{ex}")); } return(NoContent()); }
public ActionResult <UserResponse> Post(UserRequest userCreateRequest) { User user = new User(); user = _mapper.Map <User>(userCreateRequest); user.Id = Guid.NewGuid().ToString(); var userResponse = new UserResponse(); var isUserExists = _userRepository.GetUserByEmailAddressAsync(userCreateRequest.EmailAddress).Result; if (isUserExists != null) { return(Conflict($"Email: {userCreateRequest.EmailAddress} already in use")); } try { var userCreated = _userRepository.CreateUser(user).Result; userResponse = _mapper.Map <UserResponse>(userCreated); } catch (Exception ex) { _logger.LogError(ex.ToString()); return(Problem($"There was a problem processing your request:{ex}")); } return(CreatedAtAction(nameof(Get), new { id = user.Id }, userResponse)); }
public async Task <ApiDemo.Domain.User> GetUserByEmailAddressAsync(string emailAddress) { try { ApiDemo.Domain.User user = _container.GetItemLinqQueryable <ApiDemo.Domain.User>(true) .Where(b => b.EmailAddress == emailAddress) .AsEnumerable() .FirstOrDefault(); return(user); } catch (CosmosException ex) when(ex.StatusCode == System.Net.HttpStatusCode.NotFound) { return(null); } }
public async Task <ApiDemo.Domain.User> UpdateUser(string emailAddress, ApiDemo.Domain.User user) { ItemResponse <ApiDemo.Domain.User> res = await _container.UpsertItemAsync <ApiDemo.Domain.User>(user, new PartitionKey(emailAddress)); return(res.Resource); }
public async Task <ApiDemo.Domain.User> CreateUser(ApiDemo.Domain.User user) { ItemResponse <ApiDemo.Domain.User> res = await this._container.CreateItemAsync <ApiDemo.Domain.User>(user, new PartitionKey(user.EmailAddress)); return(res.Resource); }