Esempio n. 1
0
        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);
        }
Esempio n. 2
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);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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));
        }
Esempio n. 6
0
        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());
        }
Esempio n. 7
0
        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));
        }