예제 #1
0
 private void FillCrewHash(IEnumerable <Profiler.CrewMember> crewMembers)
 {
     foreach (var crewMember in crewMembers)
     {
         CastAndCrew.Add(new PersonKey(crewMember));
     }
 }
예제 #2
0
        private void InsertCastAndCrew()
        {
            ReportStart(_cache.CastAndCrew, "Cast & Crew");

            var currentProgress = 0;

            foreach (var item in _cache.CastAndCrew)
            {
                var entity = new Entity.tCastAndCrew()
                {
                    LastName   = item.LastName,
                    MiddleName = item.MiddleName,
                    FirstName  = item.FirstName,
                    BirthYear  = item.BirthYear != 0 ? item.BirthYear : (int?)null,
                };

                _context.tCastAndCrew.Add(entity);

                CastAndCrew.Add(item, entity);

                IncreaseCurrent(ref currentProgress);
            }

            ReportFinish();
        }
예제 #3
0
        public ContentReference CreateProduct(MovieDetails movieDetails, CastAndCrew castAndCrew, ContentReference linkToParentNode)
        {
            var name = $"{movieDetails.title.TruncateString(50)} ({ movieDetails.release_date.ToYear()})";
            //Create a new instance of CatalogContentTypeSample that will be a child to the specified parentNode.
            var assetLink = ContentReference.EmptyReference;

            if (!string.IsNullOrEmpty(movieDetails.poster_path))
            {
                try
                {
                    var imageData = _movieDbClient.GetImage(movieDetails.poster_path).Result;
                    assetLink = _imageRepository.Insert($"MovieBackdrop/{movieDetails.title.First()}/{name}", Path.GetExtension(movieDetails.poster_path), imageData);
                }
                catch
                {
                    Debug.WriteLine($"{movieDetails.title} is missing image");
                }
            }
            var product = _contentRepository.GetDefault <MovieProduct>(linkToParentNode);

            product.Name                = name;
            product.StartPublish        = DateTime.UtcNow.Subtract(new TimeSpan(1, 0, 0, 0));
            product.Code                = movieDetails.id.ToString();
            product.SeoUri              = $"{movieDetails.id}.aspx";
            product.DisplayName         = NameFix(movieDetails.title);
            product.ImdbId              = movieDetails.imdb_id;
            product.OriginalTitle       = movieDetails.original_title;
            product.Title               = movieDetails.title;
            product.Overview            = movieDetails.overview;
            product.TheMovieDbId        = movieDetails.id.ToString();
            product.Adult               = movieDetails.adult;
            product.ReleaseDate         = movieDetails.release_date.HasValue ? movieDetails.release_date.Value : DateTime.MinValue;
            product.VoteAverage         = movieDetails.vote_average;
            product.VoteCount           = movieDetails.vote_count.HasValue ? movieDetails.vote_count.Value : int.MinValue;
            product.Genres              = movieDetails?.genres?.FirstOrDefault()?.name ?? "Unkown";
            product.OrginalLang         = movieDetails.original_language;
            product.BelongsToCollection = movieDetails?.belongs_to_collection?.name ?? string.Empty;
            product.SpokenLanguages     = movieDetails?.spoken_languages?.FirstOrDefault()?.name ?? string.Empty;
            product.Casts               = castAndCrew?.Cast.Select(x => new MovieShop.Domain.Commerce.Products.Cast()
            {
                CharacterName = x.Character, Gender = x.Gender, Name = x.Name
            }).ToList();
            product.Crews = castAndCrew?.Crew.Select(x => new MovieShop.Domain.Commerce.Products.Crew()
            {
                Job = x.Job, Gender = x.Gender, Name = x.Name
            }).ToList();

            if (!ContentReference.IsNullOrEmpty(assetLink))
            {
                product.CommerceMediaCollection.Add(new CommerceMedia()
                {
                    AssetLink = assetLink,
                    AssetType = "Image",
                    GroupName = "Poster",
                    SortOrder = 1,
                });
            }
            return(_contentRepository.Save(product, SaveAction.Publish, AccessLevel.NoAccess));
        }
예제 #4
0
        public void GetMovieCredits(int movieId)
        {
            var castAndCrew = new CastAndCrew(movieId);
            var castInfo    = castAndCrew.GetCredits();

            // IEnumerable to ObservableCollection
            Cast = new ObservableCollection <Cast>(castInfo.Cast.DistinctBy(i => i.Name));
            Crew = new ObservableCollection <Crew>(castInfo.Crew.DistinctBy(i => i.Name));
        }
예제 #5
0
        private void FillCastHash(IEnumerable <object> castList)
        {
            if (castList == null)
            {
                return;
            }

            var valid = castList.OfType <Profiler.CastMember>();

            foreach (var castMember in valid)
            {
                CastAndCrew.Add(new PersonKey(castMember));
            }
        }
예제 #6
0
        private async Task <double> Prediction(MovieShort movie)
        {
            var credits     = new CastAndCrew(movie.Id);
            var castList    = credits.GetCredits();
            var countToTake = castList.Cast.Count > _maxCounter ? _maxCounter : castList.Cast.Count;
            var rateAvg     = 0D;

            return(await Task.Run(() =>
            {
                foreach (var cast in castList.Cast.Take(countToTake))
                {
                    var person = new ProfileInfo(cast.Id);
                    var resume = person.GetHistory();
                    rateAvg += resume.Cast.Select(i => i.VoteAverage).Average();
                }

                rateAvg = rateAvg / countToTake;

                return Math.Round(rateAvg, 2);
            }));
        }
예제 #7
0
        //For Edit and Create Actors (POST)
        private void CreateOfUpdateActorsInMovie(string[] selectedActors, MovieViewModel movieViewModel)
        {
            if (selectedActors == null)
            {
                movieViewModel.CastAndCrews = new List <CastAndCrew>();
                return;
            }

            if (movieViewModel.CastAndCrews == null)
            {
                movieViewModel.CastAndCrews = new List <CastAndCrew>();
            }

            var selectedActorsHs = new HashSet <string>(selectedActors);
            var actorsInMovie    = new HashSet <Guid>(movieViewModel.CastAndCrews.Select(c => c.PeopleId));

            foreach (var actor in _peopleService.GetAll())
            {
                var addActor = new CastAndCrew
                {
                    MovieId  = movieViewModel.Id,
                    PeopleId = actor.Id,
                    CareerId = _careerService.GetCareerByTitle("Actor").Id
                };
                if (selectedActorsHs.Contains(actor.Id.ToString()))
                {
                    if (!actorsInMovie.Contains(actor.Id))
                    {
                        movieViewModel.CastAndCrews.Add(addActor);
                    }
                }
                else
                {
                    if (actorsInMovie.Contains(actor.Id))
                    {
                        movieViewModel.CastAndCrews.Remove(addActor);
                    }
                }
            }
        }
예제 #8
0
 public void Edit(CastAndCrew castAndCrew)
 {
     _repo.Update(castAndCrew);
     _repo.Save();
 }
예제 #9
0
 public void AddCastAndCrew(CastAndCrew castAndCrew)
 {
     _repo.Insert(castAndCrew);
     _repo.Save();
 }
예제 #10
0
 public PeopleManager(ISitecoreService masterService)
 {
     _masterService          = masterService;
     _peopleRootFolder       = masterService.GetItem <People>(RebootConstants.PeopleRootID.Guid);
     _castAndCreweRootFolder = masterService.GetItem <CastAndCrew>(RebootConstants.CastCrewRootID.Guid);
 }