public async Task <DataAccessResponse <string> > Update(string friendId, Guid purchasedItemId, PurchasedItem purchasedItem) { DataAccessResponse <string> response = new DataAccessResponse <string>(); if (friendId == null) { return(response.NotFound()); } if (purchasedItemId == null) { return(response.NotFound()); } DataAccessResponse <Friend> friendResponse = await _friendRepo.Get(friendId); if (friendResponse.Status != HttpStatusCode.OK) { return(response.NotFound()); } Friend friend = friendResponse.Payload; if (friend.PurchasedItems == null) { return(response.BadRequest()); } PurchasedItem purchasedItemToUpdate = friend.PurchasedItems.FirstOrDefault(p => p.Id == purchasedItemId); if (purchasedItemToUpdate == null) { return(response.NotFound()); } purchasedItem.Id = purchasedItemId; friend.PurchasedItems.Remove(purchasedItemToUpdate); friend.PurchasedItems.Add(purchasedItem); IUpdateResponse <Friend> updateResponse = await _esClient.UpdateAsync <Friend>(friendId, d => d .Index(FriendRepository.Index) .Type(FriendRepository.Type) .Doc(friend)); if (!updateResponse.IsValid) { return(response.InternalServerError()); } if (updateResponse.Id == null) { return(response.InternalServerError()); } return(response.NoContent(updateResponse.Id)); }