// GET: Admin/TaggingState
        public ActionResult Index()
        {
            var searchModel = new TagSearchStateModel();

            ViewBag.TaggingGroupId = new MultiSelectList(db.TaggingGroups, "TaggingGroupId", "Name", null);

            return(View(searchModel));
        }
        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));
        }