Example #1
0
        public async Task <CreatedItemAcknowledgment> AddAsync(RestItemData itemData)
        {
            if (!_context.AuthorizationChecker.CanAddItem())
            {
                throw new NotAuthorizedForItemException(AuthorizableVerb.Add);
            }

            _context.Transaction.StartTransaction();
            await _context.Repository.InitializeAsync();

            TItem newItem = _context.Repository.CreateAndAttachItem();

            var setter = new QueryableFieldSetter <TItem>(_context);
            await setter.SetMappedValuesAsync(new PostedNewItem <TItem>(newItem), itemData);

            await _context.Transaction.SaveChangesAsync();

            object identifier = _context.Identifiers.GetInfo(null).GetValue(newItem);

            return(new CreatedItemAcknowledgment(identifier));
        }
Example #2
0
        public async Task <Acknowledgment> EditAsync(RestItemData itemData)
        {
            if (!_context.AuthorizationChecker.CanEditItem(_item))
            {
                throw new NotAuthorizedForItemException(AuthorizableVerb.Edit);
            }

            var setter = new QueryableFieldSetter <TItem>(_context);
            await setter.SetMappedValuesAsync(_item, itemData);

            await _item.LoadAsync();

            _context.Repository.MarkUpdated(_item.LoadedItem);

            await _context.Transaction.SaveChangesAsync();

            if (_item.WasCreated)
            {
                return(new CreatedItemAcknowledgment(_item.Identifier));
            }

            return(new Acknowledgment());
        }
Example #3
0
 public QueryableFieldSetterTests()
 {
     Setter = new QueryableFieldSetter <Artist>(new CodedArtistEntityContext(null));
 }