public void InsertTest() { Models.ArtworkTag artworkTag = new Octo.Net.Models.ArtworkTag(); artworkTag.ArtworkId = 1; artworkTag.TagId = 1; ArtworkTag blArtworkTag = new ArtworkTag(); int result = blArtworkTag.Insert(artworkTag); Assert.IsTrue(result > 0); }
public void DeleteTest() { ArtworkTag artworkTag = new ArtworkTag(); List <Models.ArtworkTag> artworkTags = new List <Models.ArtworkTag>(); artworkTags = artworkTag.Load(); Models.ArtworkTag row = artworkTags.Where(x => x.Id == 2).FirstOrDefault(); if (row != null) { bool actual = artworkTag.Delete(row.Id); Assert.IsTrue(actual == true); } }
public void UpdateTest() { ArtworkTag artworkTag = new ArtworkTag(); List <Models.ArtworkTag> artworkTags = new List <Models.ArtworkTag>(); artworkTags = artworkTag.Load(); Models.ArtworkTag row = artworkTags.Where(m => m.Id == 3).FirstOrDefault(); row.ArtworkId = 1; artworkTag.Update(row); List <Models.ArtworkTag> updated = new List <Models.ArtworkTag>(); updated = artworkTag.Load(); Models.ArtworkTag updatedArtworkTag = updated.Where(x => x.Id == 3).FirstOrDefault(); Assert.AreNotEqual(updatedArtworkTag, row); }
public void InitializeBeforeEachTest() { manager = new ArtworkTag(); }
public PartialViewResult SendTag(TagModel model) { var sessionControl = GetSessionControl(); var idm = sessionControl.GetCurrentImage(); var tag = new ArtworkTag() { ArtworkId = idm.ImageEntryID, Tag = model.Tag, TaggingTime = DateTime.Now, TaggingGroupId = sessionControl.Group.TaggingGroupId }; db.Taggings.Add(tag); db.SaveChanges(); // Jetzt noch in der Session ablegen idm.Tags.Add(tag); // Tamino: Aktuellen Status von der DB abfragen. Alle Tags des Bildes in eine Liste schreiben ICollection <ArtworkTag> taggings = null; taggings = db.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => t.TaggingGroupId == sessionControl.Group.TaggingGroupId && t.ArtworkId == idm.ImageEntryID).ToList(); // Tamino: Nach anzahl der tags und verischidenen tags auswerten var _image = new TagAnalysisImage { ArtworkID = idm.ImageEntryID, numberTags = 0, numberDifferentTags = 0, }; var tagList = new List <TagList>(); foreach (ArtworkTag _tag in taggings) { var tam = new TagList { Tag = _tag.Tag, Anzahl = 1, }; if (tagList.Exists(x => x.Tag == tam.Tag)) { tagList.Find(x => x.Tag == tam.Tag).Anzahl++; _image.numberTags++; } else { tagList.Add(tam); _image.numberTags++; _image.numberDifferentTags++; } } // Tamino: string für das Update bauen var writer = new StringBuilder(); writer.Append("<table class='table-condensed table-striped col-sm-12'>"); foreach (TagList tags in tagList) { writer.Append("<tr><td class='col-sm-6'>" + tags.Tag + "</td><td class='col-sm-6' style='text-align: right;'>" + tags.Anzahl + "</td></tr>"); } writer.Append("</table><div id='ImageId' style='display: none;'>" + idm.ImageEntryID + "</div>"); string[] pageUpdate = new string[] { _image.ArtworkID.ToString(), _image.numberTags.ToString(), _image.numberDifferentTags.ToString(), writer.ToString() }; // Tamino: Tags auf det Statusseite aktualisieren TaggingHub.UpdateTags(pageUpdate, HttpContext.User.Identity.Name); // Das Modell für die Anzeige der Liste aktualisieren return(PartialView("_TagList", idm)); }
public IActionResult SeedPicture() { int skipArtist; int skipCC; Artist artist; CreativeCommons cc; Artwork artwork; Document document; // Artwork for (int i = 1; i < 20; i++) { skipArtist = _rnd.Next(0, 15); artist = _userManager.Users.OrderBy(o => o.Id).Skip(skipArtist).Take(1).First(); skipCC = _rnd.Next(0, 6); cc = _context.CreativeCommons.OrderBy(o => o.CreativeCommonsId).Skip(skipCC).Take(1).First(); int booleanRdn = _rnd.Next(0, 3); string supplement = ""; string supplementSlug = ""; if (booleanRdn == 1) { supplement = " la nuit"; supplementSlug = "-la-nuit"; } if (i == 18 || i == 19) { artwork = new Artwork { Title = "PDF" + i + supplement, NormalizedTitle = "pdf-" + i + supplementSlug, Description = "Scelerisque tincamcorper finibus massa aliquet quis. Aenean dignissim mi vel tincidunt faucibus.", CreationDate = DateTime.Now, ReleaseDate = RandomDay(), Privacy = true, Category = Category.Writing, IsDerivating = false, CCLicense = cc, Artist = artist }; document = new Document { IsMainDocument = true, Position = 0, Media = DocumentMedia.PDF, FilePath = "pdf" + i + ".pdf", ContentType = "application/pdf", Artwork = artwork }; Tag pdf = new Tag { Name = "pdfSeed" }; ArtworkTag pdfArtworkTag = new ArtworkTag { Tag = pdf, Artwork = artwork }; _context.Tags.Add(pdf); _context.ArtworkTags.Add(pdfArtworkTag); } else { artwork = new Artwork { Title = "Title" + i + supplement, NormalizedTitle = "titre-" + i + supplementSlug, Description = "Curabitur tellus nunc, scelerisque et nunc ut, ullamcorper cursus magna. Fusce faucibus ligula vitae lobortis vestibulum. Sed scelerisque tincidunt velit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam nec iaculis metus, id tincidunt purus. Sed tempor metus odio, sed tempor neque commodo sit amet. Nam malesuada aliquam justo, ullamcorper finibus massa aliquet quis. Aenean dignissim mi vel tincidunt faucibus.", CreationDate = DateTime.Now, ReleaseDate = RandomDay(), Privacy = true, Category = Category.Photography, IsDerivating = false, CCLicense = cc, Artist = artist }; document = new Document { IsMainDocument = true, Position = 0, Media = DocumentMedia.Picture, FilePath = "photo" + i + ".jfif", ContentType = "image/jpeg", Artwork = artwork }; Tag tag = new Tag { Name = "seed" }; ArtworkTag artworkTag = new ArtworkTag { Tag = tag, Artwork = artwork }; _context.Tags.Add(tag); _context.ArtworkTags.Add(artworkTag); } _context.Artworks.Add(artwork); _context.Documents.Add(document); _context.SaveChanges(); } return(View()); }
public async Task <IActionResult> Publish([Bind("Artwork, Document, Tags, ArtworkTag, File, CreativeCommonsId")] ArtworkPublishViewModel viewModel) { // Reinitialisation IQueryable <CreativeCommons> creativeCommons = _context.CreativeCommons; viewModel.CreativeCommons = await creativeCommons.ToListAsync(); if (ModelState.IsValid) { // FILE UPLOAD string uniqueFileName = null; if (viewModel.File != null) { // Verifications content-type, mime-type, scripting etc bool isPicture = FormFileExtensions.IsPicture(viewModel.File, out string errorImage); bool isAudio = FormFileExtensions.IsAudio(viewModel.File, out string errorAudio); bool isPdf = FormFileExtensions.IsPDF(viewModel.File, out string errorPdf); string folder = null; if (isPicture) { folder = "artworks/picture/"; } else if (isAudio) { folder = "artworks/audio/"; } else if (isPdf) { folder = "artworks/pdf/"; } string uploadsFolder = Path.Combine(_hostingEnv.WebRootPath, folder); uniqueFileName = Guid.NewGuid().ToString() + "_" + viewModel.File.FileName; string filePath = Path.Combine(uploadsFolder, uniqueFileName); try { viewModel.File.CopyTo(new FileStream(filePath, FileMode.Create)); } catch (Exception e) { ModelState.AddModelError("error", $"An unexpected error occurred : + {e.Message}"); } // Creating thumbnails for pic if (isPicture) { string uploadsThumbnailAvatarFolder = Path.Combine(_hostingEnv.WebRootPath, "artworks/picture/thumbnails"); string thumbnailFilePath = Path.Combine(uploadsThumbnailAvatarFolder, uniqueFileName); Image image = Image.FromStream(viewModel.File.OpenReadStream(), true, true); double ratio = 200 * 1.0 / image.Width; int newHeight = (int)Math.Floor(image.Height * ratio); var newImage = new Bitmap(200, newHeight); using var thumbnail = Graphics.FromImage(newImage); thumbnail.CompositingQuality = CompositingQuality.HighSpeed; thumbnail.InterpolationMode = InterpolationMode.HighQualityBicubic; thumbnail.CompositingMode = CompositingMode.SourceCopy; thumbnail.DrawImage(image, 0, 0, 200, newHeight); newImage.Save(thumbnailFilePath); } } // SEO-friendly URL SlugHelper helper = new SlugHelper(); string normalizedTitle = helper.GenerateSlug(viewModel.Artwork.Title); Artwork artworkToAdd = new Artwork { Title = viewModel.Artwork.Title, NormalizedTitle = normalizedTitle, Description = viewModel.Artwork.Description, CreationDate = DateTime.Now, ReleaseDate = viewModel.Artwork.ReleaseDate, Privacy = viewModel.Artwork.Privacy, CCLicense = await _context.CreativeCommons.FirstAsync(x => x.CreativeCommonsId == viewModel.CreativeCommonsId), Category = viewModel.Artwork.Category, IsDerivating = viewModel.Artwork.IsDerivating, LinkDerivating = viewModel.Artwork.LinkDerivating, LicenseDerivating = viewModel.Artwork.LicenseDerivating, AuthorDerivating = viewModel.Artwork.AuthorDerivating, Artist = await _userManager.GetUserAsync(User) }; Document documentToAdd = new Document { Media = viewModel.Document.Media, FilePath = uniqueFileName, ContentType = viewModel.File.ContentType.ToLower(), Artwork = artworkToAdd }; _context.Add(artworkToAdd); _context.Add(documentToAdd); // Tag and linking many-to-many char[] delimiterChars = { ',', '.', ';' }; string[] tags = viewModel.Tags.Name.Split(delimiterChars); foreach (string tag in tags) { Tag tagToAdd = new Tag { Name = tag }; ArtworkTag artworkTagToAdd = new ArtworkTag { Artwork = artworkToAdd, Tag = tagToAdd }; _context.Add(tagToAdd); _context.Add(artworkTagToAdd); } await _context.SaveChangesAsync(); // We redirect on the new artwork page then return(RedirectToAction(nameof(Index), new { userName = _userManager.GetUserName(User), title = normalizedTitle })); } return(View(viewModel)); }