public async Task <IActionResult> Create(CreateViewModel input)
        {
            // verwerk input vanuit webformulier
            NoviArtPiece piece = new NoviArtPiece {
                Artist = input.Artist, Description = input.Description, Dimensions = input.Dimensions, Frame = input.Frame, Price = input.Price, Title = input.Title
            };

            // voeg aanmaakdatum, beschikbaarheidsinfo, en aanbieder toe aan item
            piece.Lesser = await _userManager.GetUserAsync(HttpContext.User);

            piece.CreationDate = piece.AvailableFrom = DateTime.UtcNow;

            // upload de afbeelding
            using (var memoryStream = new MemoryStream())
            {
                // lees bestand in
                input.Image.CopyTo(memoryStream);

                // verifieer bestand
                if (!FileHelperExtensions.IsValidFile(input.Image.FileName, memoryStream, new string[] { ".gif", ".png", ".jpg", ".jpeg" }, 2097152))
                {
                    // Toon foutmelding indien afbeelding niet valide
                    ModelState.AddModelError("Image", Localization.MSG_IMAGE_FORMAT);
                }

                // controleer of er zich geen problemen hebben voorgedaan,
                if (!ModelState.IsValid)
                {
                    return(View("Create", piece));
                }

                // alles ok voeg afbeelding toe aan item
                piece.ImageContent = memoryStream.ToArray();

                // file extension opslaan
                piece.ImageType = Path.GetExtension(input.Image.FileName).ToLowerInvariant().TrimStart('.');
            }

            // Voeg resultaat toe aan de database
            _dbcontext.Add <NoviArtPiece>(piece);
            _dbcontext.SaveChanges();

            // logging
            _logger.LogInformation("User created a new artpiece with id: {0}", piece.Id);

            // en keer terug naar de collectie-pagina
            return(RedirectToAction("Index"));
        }
        // constructor
        public IndexViewModel(List <NoviArtPiece> dbpieces)
        {
            // initialisatie
            ArtPieces = dbpieces;

            // willekeurig item selecteren uit de beschikbare items als highlighted item
            var availableArtPieces = ArtPieces.Where(a => a.Available).ToList();

            if (availableArtPieces.Count > 0)
            {
                HighlightedArtPiece = availableArtPieces[rnd.Next(availableArtPieces.Count)];
            }
            else
            {
                HighlightedArtPiece = null;
            }
        }
        public async Task <IActionResult> DeleteArtPiece(int id)
        {
            // haal artpiece op uit database
            NoviArtPiece entity = await _dbcontext.NoviArtPieces.Include(a => a.Lesser).Where(a => a.Id == id).FirstOrDefaultAsync();

            NoviArtUser user = await _userManager.GetUserAsync(User);

            if (entity != null)
            {
                // controleer of gebruiker het object mag verwijderen
                if (user.Type != NoviUserType.Admin && user.Type != NoviUserType.Root && entity.Lesser.Id != user.Id)
                {
                    return(View("Message", new MessageViewModel {
                        Message = Localization.MSG_UNAUTHORIZED_REMOVAL, ReturnToController = "Manage", ReturnToAction = "Manage"
                    }));
                }

                // controleer of het object momenteel niet verhuurd is
                if (!entity.Available)
                {
                    return(View("Message", new MessageViewModel {
                        Message = Localization.MSG_ARTPIECE_LOCKED, ReturnToController = "Manage", ReturnToAction = "Manage"
                    }));
                }

                // verwijder item uit database
                _dbcontext.NoviArtPieces.Remove(entity);
                await _dbcontext.SaveChangesAsync();

                // logging
                _logger.LogInformation("A user deleted artpiece with id: {0}", id);
            }

            // en herlaadt pagina
            return(RedirectToAction("Manage"));
        }