public PartialViewResult GetNewBucketListMovie(string title)
        {
            var movieModel = new Provider.MovieDetailProvider().GetMovieModelByTitle(title);

            if(movieModel!= null && movieModel.Title != null)
            {
                return PartialView("~/Views/Interaction/MovieModelPartial.cshtml", movieModel);
            }

            return null;
        }
        public IActionResult MovieDetail(string objectId, string bucketListId)
        {
            //Angemeldeter User checken
            var signedInUser = GetSignedInUser();

            //unangemeldet -> Fehler
            if (signedInUser == null)
            {
                return(View("NonTechnicalError", Const.ErrorConst.InvalidSession));
            }
            //angemeldet -> session verlängern
            else
            {
                RefreshCookieSession();
            }

            var provider = new Provider.MovieDetailProvider();

            //Filmdetails aus DB laden
            var movieViewModel = provider.GetMovieViewModel(new ObjectId(objectId), new ObjectId(bucketListId), signedInUser);

            return(View("MovieDetail", movieViewModel));
        }
        public ActionResult SaveBucketList([FromBody]BucketListMinCreateModel saveModel)
        {
            //Leeres Model -> Bad Request
            if(saveModel == null)
            {
                return StatusCode(400);
            }

            var dbProvider = new Provider.MongoDbProvider();
            var movProvider = new Provider.MovieDetailProvider();
            BucketList bucketListToSave;
            List<User> existingUsers = new List<User>();
            List<ObjectId> previousUsers = new List<ObjectId>();
            bool isNewList = saveModel.ListId.All(s => s == '0');

            //ListId ist nur 0 -> neue id -> neue Liste
            if (isNewList){
                bucketListToSave = new BucketList();
            }
            else
            {
                //Aktuelle Bucketlist lesen -> Beweis, dass sie existiert
                bucketListToSave = dbProvider.GetBucketList(new MongoDB.Bson.ObjectId(saveModel.ListId));
            }

            ///(neuen) Titel setzen 
            bucketListToSave.Name = saveModel.ListTitle;

            //gucken, welche Nutzer existieren
            foreach (var userId in saveModel.UserIds)
            {
                var tmpUser = dbProvider.GetByObjectId<User>(new MongoDB.Bson.ObjectId(userId), Const.MongoDbConst.CollectionUsers);
                if(tmpUser != null)
                {
                    existingUsers.Add(tmpUser);
                }
            }

            //alle vorherigen nutzer merken -> müssen mit neuen abgeglichen werden und fehlende entfernen
            previousUsers = new List<ObjectId>(bucketListToSave.UsersInListId);

            //Liste leer machen
            bucketListToSave.UsersInListId.Clear();
            //Alle Ids existierender User hinzufügen
            bucketListToSave.UsersInListId.AddRange(existingUsers.Select(m => m.Id));

            //Usern Liste zuweisen

            bucketListToSave.MoviesToWatchIds.Clear();
            foreach(var movieId in saveModel.MovieImdbIds)
            {
                //suche Film in DB
                var tmpMovie = dbProvider.GetMovieByImdbId(movieId);
                //muss angelegt werden
                if(tmpMovie == null)
                {
                    //Film aus API lesen
                    tmpMovie = movProvider.GetMovieModelByImdbId(movieId);
                    //eigene Id setzen
                    tmpMovie.Id = MongoDB.Bson.ObjectId.GenerateNewId();
                    //Film in eingener MongoDb ablegen
                    dbProvider.AddAsync<MovieModel>(tmpMovie, Const.MongoDbConst.CollectionMovies).Wait();
                }

                //Id wieder an Bucketlist anhängen
                bucketListToSave.MoviesToWatchIds.Add(tmpMovie.Id);
            }

            if (isNewList)
            {
                //neue Id setzen für bucketlist
                bucketListToSave.ListId = MongoDB.Bson.ObjectId.GenerateNewId();
                //BucketList schreiben
                dbProvider.AddAsync<BucketList>(bucketListToSave, Const.MongoDbConst.CollectionBucketList).Wait();
            }
            else
            {
                dbProvider.ReplaceBucketList(bucketListToSave).Wait();
            }

            ObjectId bucketlistId = bucketListToSave.ListId;

            //Allen Usern der Bucketlist diese zuweisen
            foreach(var userId in bucketListToSave.UsersInListId)
            {
                dbProvider.AddBucketListToUser(userId, bucketlistId);
            }

            //alle User, die rausfliegen unhooken
            foreach (var userId in bucketListToSave.UsersInListId.Where(u => !previousUsers.Contains(u)))
            {
                dbProvider.RemoveBucketListFromUser(userId, bucketlistId);
            }

            return StatusCode(202, bucketlistId.ToString());
        }