コード例 #1
0
        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));
        }