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));
        }
예제 #2
0
        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));
        }
예제 #4
0
        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));
        }