public ActionResult TaggingAnalysisWeb(ICollection <ArtworkTag> taggings) { var modelGroupedByImage = new List <TagAnalysisImage>(); var model = new List <TagList>(); foreach (var tag in taggings) { var imageTags = new TagAnalysisImage { Artwork = tag.Artwork.Title, ArtworkID = tag.ArtworkId.Value, ImagePoolName = tag.Artwork.ArtworkPool.Name, }; var tam = new TagList { Tag = tag.Tag, Anzahl = 1, }; if (modelGroupedByImage.Exists(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName)) { model = modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).Tags.ToList(); if (model.Exists(x => x.Tag.ToLower().Equals(tam.Tag.ToLower()))) { model.Find(x => x.Tag.ToLower().Equals(tam.Tag.ToLower())).Anzahl++; } else { model.Add(tam); } modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).Tags = model; } else { var taglist = new List <TagList>(); taglist.Add(tam); imageTags.Tags = taglist; modelGroupedByImage.Add(imageTags); } } ; // Bilder alphabetisch sortieren modelGroupedByImage = modelGroupedByImage.OrderBy(x => x.Artwork).ToList(); // tags nach Anzahl der Nennungen sortieren foreach (var image in modelGroupedByImage) { image.Tags = image.Tags.OrderByDescending(x => x.Anzahl).ToList(); } ; return(PartialView("_TagList", modelGroupedByImage)); }
public PartialViewResult DeleteTag(int id) { var sessionControl = GetSessionControl(); var idm = sessionControl.GetCurrentImage(); // zuerst den Tag speichern var tag = db.Taggings.SingleOrDefault(t => t.ArtworkTagId == id); if (tag != null) { db.Taggings.Remove(tag); db.SaveChanges(); // Das Objekt tag gibt es nicht in der Liste, sondern ein Duplikat davon!!! var tag2 = idm.Tags.SingleOrDefault(t => t.ArtworkTagId == id); // Jetzt noch in der Session ablegen idm.Tags.Remove(tag2); } // 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 ActionResult Index(TagSearchStateModel searchData) { // Alle Tags der ausgewählten Gruppe in eine Liste schreiben ICollection <ArtworkTag> taggings = null; taggings = db.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => t.TaggingGroupId == searchData.TaggingGroupId).ToList(); // Alle bilder des Bilderpools der ausgewählten Gruppe in eine Liste schreiben ICollection <Artwork> imagesForGroup = null; imagesForGroup = db.Artworks.Where(t => t.ArtworkPoolId == db.TaggingGroups .FirstOrDefault(g => g.TaggingGroupId == searchData.TaggingGroupId).ArtworkPoolId).ToList(); // Bilder in ein Analyse Model schreiben var modelGroupedByImage = new List <TagAnalysisImage>(); foreach (Artwork image in imagesForGroup) { var newImage = new TagAnalysisImage { Artwork = image.Title, ArtworkID = image.ArtworkId, ImagePoolName = image.ArtworkPool.Name, numberTags = 0, numberDifferentTags = 0, }; modelGroupedByImage.Add(newImage); } // Tags nach Images gruppieren und nach anzahl der tags und verischidenen tags auswerten var model = new List <TagList>(); foreach (var tag in taggings) { var imageTags = new TagAnalysisImage { Artwork = tag.Artwork.Title, ArtworkID = tag.ArtworkId.Value, ImagePoolName = tag.Artwork.ArtworkPool.Name, numberTags = 0, numberDifferentTags = 0, }; var tam = new TagList { Tag = tag.Tag, Anzahl = 1, }; if (modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).Tags != null) { model = modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).Tags.ToList(); if (model.Exists(x => x.Tag == tam.Tag)) { model.Find(x => x.Tag == tam.Tag).Anzahl++; modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).numberTags++; } else { model.Add(tam); modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).numberTags++; modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).numberDifferentTags++; } } else { model.Add(tam); modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).numberTags++; modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).numberDifferentTags++; } modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).Tags = model; } // Bilder alphabetisch sortieren modelGroupedByImage = modelGroupedByImage.OrderBy(x => x.Artwork).ToList(); ViewBag.GroupId = db.TaggingGroups.FirstOrDefault(t => t.TaggingGroupId == searchData.TaggingGroupId).UserName.ToString(); return(PartialView("_TaggingState", modelGroupedByImage)); }
public ActionResult TaggingAnalysisWeb(TagSearchModel searchData) { var TaggingStartTime = searchData.TaggingDateBegin.Add(searchData.TaggingTimeBegin); var TaggingEndTime = searchData.TaggingDateEnd.Add(searchData.TaggingTimeEnd); var context = new TagDbContext(); ICollection <ArtworkTag> taggings = null; if (searchData.IsArtworkSelection == true && searchData.IsTimeSpanSelection == true && searchData.IsGroupTagSelection == true) { taggings = context.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => t.TaggingTime >= TaggingStartTime && t.TaggingTime <= TaggingEndTime && searchData.ArtworkPoolId.Contains(t.Artwork.ArtworkPool.ArtworkPoolId) && t.TaggingGroup.GroupTags.Any(g => searchData.GroupTagId.Contains(g.GroupTagId)) ).ToList(); } // ArtworkId == Auswahl && TimeSpan == Zeitraum && GroupTagId == Alle else if (searchData.IsArtworkSelection == true && searchData.IsTimeSpanSelection == true && searchData.IsGroupTagSelection == false) { taggings = context.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => t.TaggingTime >= TaggingStartTime && t.TaggingTime <= TaggingEndTime && searchData.ArtworkPoolId.Contains(t.Artwork.ArtworkPool.ArtworkPoolId)).ToList(); } // ArtworkId == Auswahl && TimeSpan == keine Einschränkung && GroupTagId == Auswahl else if (searchData.IsArtworkSelection == true && searchData.IsTimeSpanSelection == false && searchData.IsGroupTagSelection == true) { taggings = context.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => t.TaggingGroup.GroupTags.Any(g => searchData.GroupTagId.Contains(g.GroupTagId) && searchData.ArtworkPoolId.Contains(t.Artwork.ArtworkPool.ArtworkPoolId)) ).ToList(); } // ArtworkId == Alle && TimeSpan == Zeitraum && GroupTagId == Auswahl else if (searchData.IsArtworkSelection == false && searchData.IsTimeSpanSelection == true && searchData.IsGroupTagSelection == true) { taggings = context.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => t.TaggingTime >= TaggingStartTime && t.TaggingTime <= TaggingEndTime && t.TaggingGroup.GroupTags.Any(g => searchData.GroupTagId.Contains(g.GroupTagId)) ).ToList(); } // ArtworkId == Auswahl && TimeSpan == keine Einschränkung && GroupTagId == Alle else if (searchData.IsArtworkSelection == true && searchData.IsTimeSpanSelection == false && searchData.IsGroupTagSelection == false) { taggings = context.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => searchData.ArtworkPoolId.Contains(t.Artwork.ArtworkPool.ArtworkPoolId)) .ToList(); } // ArtworkId == Alle && TimeSpan == Zeitraum && GroupTagId == Alle else if (searchData.IsArtworkSelection == false && searchData.IsTimeSpanSelection == true && searchData.IsGroupTagSelection == false) { taggings = context.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => t.TaggingTime >= TaggingStartTime && t.TaggingTime <= TaggingEndTime ).ToList(); } // ArtworkId == Alle && TimeSpan == keine Einschränkung && GroupTagId == Auswahl else if (searchData.IsArtworkSelection == false && searchData.IsTimeSpanSelection == false && searchData.IsGroupTagSelection == true) { taggings = context.Taggings.Include("Artwork").Include("TaggingGroup") .Where(t => t.TaggingGroup.GroupTags.Any(g => searchData.GroupTagId.Contains(g.GroupTagId)) ).ToList(); } // ArtworkId == Alle && TimeSpan == keine Einschränkung && GroupTagId == Alle else if (searchData.IsArtworkSelection == false && searchData.IsTimeSpanSelection == false && searchData.IsGroupTagSelection == false) { taggings = context.Taggings.Include("Artwork").Include("TaggingGroup") .ToList(); } var modelGroupedByImage = new List <TagAnalysisImage>(); var model = new List <TagList>(); foreach (var tag in taggings) { var imageTags = new TagAnalysisImage { Artwork = tag.Artwork.Title, ArtworkID = tag.ArtworkId.Value, ImagePoolName = tag.Artwork.ArtworkPool.Name, }; var tam = new TagList { Tag = tag.Tag, Anzahl = 1, }; if (modelGroupedByImage.Exists(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName)) { model = modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).Tags.ToList(); if (model.Exists(x => x.Tag == tam.Tag)) { model.Find(x => x.Tag == tam.Tag).Anzahl++; } else { model.Add(tam); } modelGroupedByImage.First(x => x.ArtworkID == imageTags.ArtworkID && x.ImagePoolName == imageTags.ImagePoolName).Tags = model; } else { var taglist = new List <TagList>(); taglist.Add(tam); imageTags.Tags = taglist; modelGroupedByImage.Add(imageTags); } } ; // Bilder alphabetisch sortieren modelGroupedByImage = modelGroupedByImage.OrderBy(x => x.Artwork).ToList(); // tags nach Anzahl der Nennungen sortieren foreach (var image in modelGroupedByImage) { image.Tags = image.Tags.OrderByDescending(x => x.Anzahl).ToList(); } ; TagDbContext db = new TagDbContext(); var img_model = db.Images.ToList(); ViewBag.Taglist = modelGroupedByImage; return(View(img_model)); }