public async Task <DataAccessResponse <string> > Add(string friendId, PurchasedItem item)
        {
            DataAccessResponse <string> response = new DataAccessResponse <string>();

            if (friendId == null)
            {
                return(response.NotFound());
            }
            if (item == null)
            {
                return(response.NotFound());
            }

            DataAccessResponse <Friend> friendResponse = await _friendRepo.Get(friendId);

            if (friendResponse.Status != HttpStatusCode.OK)
            {
                return(response.NotFound());
            }

            Friend friend = friendResponse.Payload;

            item.Id = Guid.NewGuid();

            friend.PurchasedItems = friend.PurchasedItems == null ? new List <PurchasedItem>() : friend.PurchasedItems;

            friend.PurchasedItems.Add(item);

            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.Created(item.Id.ToString()));
        }
Example #2
0
        public async Task <DataAccessResponse <string> > Add(Friend friend)
        {
            DataAccessResponse <string> response = new DataAccessResponse <string>();

            if (friend == null)
            {
                return(response.NotFound());
            }

            if (friend.PurchasedItems != null)
            {
                friend.PurchasedItems.ForEach(p => p.Id = Guid.NewGuid());
            }

            IIndexResponse indexResponse = await _esClient.IndexAsync <Friend>(friend, d => d.Index(Index).Type(Type));

            if (!indexResponse.IsValid)
            {
                return(response.InternalServerError());
            }

            return(response.Created(indexResponse.Id));
        }