public async Task <IActionResult> Post([FromBody] ItemEditRequest request)
        {
            Item item;

            if (request.Id == null)
            {
                item = new Item();
                _dbContext.Items.Add(item);
            }
            else
            {
                item = await _dbContext
                       .Items
                       .FirstOrDefaultAsync(x => x.Id == request.Id);
            }

            if (item == null)
            {
                return(HttpNotFound());
            }

            item.Name      = request.Name;
            item.FunnyName = request.FunnyName;
            item.ParentId  = request.ParentId;

            await _dbContext.SaveChangesAsync();

            return(Ok(item.ToNodeModel()));
        }
        public async Task <IActionResult> PostWithImage(ItemEditRequest request)
        {
            //http://damienbod.com/2015/12/05/asp-net-5-mvc-6-file-upload-with-ms-sql-server-filetable/

            Item item;

            if (request.Id == null)
            {
                item = new Item();
                _dbContext.Items.Add(item);
            }
            else
            {
                item = await _dbContext
                       .Items
                       .FirstOrDefaultAsync(x => x.Id == request.Id);
            }

            if (item == null)
            {
                return(HttpNotFound());
            }

            item.Name      = request.Name;
            item.FunnyName = request.FunnyName;
            item.ParentId  = request.ParentId;

            // read stream
            var file = request.ImageFile;

            if (file != null)
            {
                var fileBytes = new byte[file.Length];
                await file.OpenReadStream().ReadAsync(fileBytes, 0, (int)file.Length);

                // get file name
                var parsedContentDisposition = ContentDispositionHeaderValue.Parse(file.ContentDisposition);
                var fileName = parsedContentDisposition.FileName;

                // drop existing file so new file has new id this is important so the url changes and the
                // new image is shown in the UI.
                if (item.File != null)
                {
                    _dbContext.Files.Remove(item.File);
                }

                item.File = new File
                {
                    Content     = fileBytes,
                    ContentType = request.ImageFile.ContentType,
                    Name        = fileName,
                    FileType    = FileType.Thumbnail
                };
            }


            await _dbContext.SaveChangesAsync();

            return(Ok(item.ToNodeModel()));
        }
        public ActionResult <ItemResponse> CreateItem(ItemEditRequest request)
        {
            var result   = _itemsService.Create(request);
            var response = result.ToApiModel();

            return(response);
        }
        public Item Create(ItemEditRequest request)
        {
            var entity = request.ToModel(null);

            _items.Add(entity.Id, entity);
            return(entity);
        }
        public Item Edit(Item item, ItemEditRequest request)
        {
            var entity = request.ToModel(item);

            _items[item.Id] = entity;
            return(entity);
        }
        public ActionResult <ItemResponse> EditItem(Guid id, ItemEditRequest request)
        {
            var item = _itemsService.Exists(id);

            if (item == null)
            {
                return(NotFound());
            }

            var result   = _itemsService.Edit(item, request);
            var response = result.ToApiModel();

            return(response);
        }
Beispiel #7
0
 private void AddItem()
 {
     ItemEditRequest.Raise(new ItemConfirmation(new Item(), SelectedCategory), x =>
     {
         if (x.Confirmed)
         {
             _itemService.Add(x.Item);
             if (SelectedCategory.ID == x.Category.ID)
             {
                 Items.Add(x.Item);
                 SelectedItem = x.Item;
             }
         }
     });
 }
Beispiel #8
0
 private void UpdateItem()
 {
     ItemEditRequest.Raise(new ItemConfirmation(SelectedItem, SelectedCategory), x =>
     {
         if (x.Confirmed)
         {
             _itemService.Update(SelectedItem);
             if (x.Item.CategoryID != SelectedCategory.ID)
             {
                 Items.Remove(x.Item);
             }
         }
         else
         {
             DataUtils.Copy(SelectedItem, _itemService.Find(SelectedItem.ID));
         }
     });
 }