Exemple #1
0
        public List <FilmDetailModel> GetListFilmDetails(int filmId, int numberOfFilms)
        {
            var listFilmDetails        = new List <FilmDetailModel>();
            var listFilmDetailEntities = _filmOnlineRepository.GetAll()
                                         .Where(x => x.Id != filmId).Take(numberOfFilms).ToList();
            var listCategoryOfFilms = _categoryOfFilmRepository.GetAll()
                                      .Where(x => listFilmDetailEntities.Any(i => i.Id == x.FilmOnlineId));
            var listCategoryEntities = _filmCategoryRepository.GetAll()
                                       .Where(x => listCategoryOfFilms.Any(i => i.FilmCategoryId == x.Id)).ToList();

            foreach (var item in listFilmDetailEntities)
            {
                var filmDetail = new FilmDetailModel();
                filmDetail = item.MapTo <FilmDetailModel>();

                var categoryNames = listCategoryEntities
                                    .Where(x => listCategoryOfFilms
                                           .Any(i => i.FilmOnlineId == item.Id))
                                    .Select(x => x.Name);

                filmDetail.Categories = string.Join(", ", categoryNames);
                filmDetail.Date       = item.ReleaseDate.Value.ToString("dd MMMM yyyy");

                listFilmDetails.Add(filmDetail);
            }

            return(listFilmDetails);
        }
Exemple #2
0
        public void NewFilm_InsertOrUpdate_FilmAdded()
        {
            var film = new FilmDetailModel()
            {
                Id           = Guid.Empty,
                OriginalName = "A",
                Genre        = GenreEnum.Action,
                CzechName    = "B",
                TitleFotoUrl = "titlefoto.png",
                Description  = "A film!",
                Country      = "Murica",
                Reviews      = new List <ReviewListModel>(),
                Actors       = new List <ActedInFilmDetailModel>(),
                Directors    = new List <DirectedFilmDetailModel>()
            };

            using var dbxAssert = _dbContextFactory.CreateDbContext();

            film = _filmRepositorySUT.InsertOrUpdate(film);

            var filmFromDb = dbxAssert.Films.Single(i => i.Id == film.Id);
            var film2      = FilmMapper.MapToDetailModel(filmFromDb);

            Assert.Equal(film, film2, FilmDetailModel.FilmDetailModelComparer);
            Assert.Equal(film.Reviews, film2.Reviews, ReviewListModel.ReviewListModelComparer);
            Assert.Equal(film.Actors, film2.Actors, ActedInFilmDetailModel.ActedInFilmDetailModelComparer);
            Assert.Equal(film.Directors, film2.Directors, DirectedFilmDetailModel.DirectedFilmDetailModelComparer);
        }
Exemple #3
0
        public static FilmEntity MapToEntity(FilmDetailModel detailModel, IEntityFactory entityFactory)
        {
            var entity = (entityFactory ??= new EntityFactory()).Create <FilmEntity>(detailModel.Id);

            entity.Id           = detailModel.Id;
            entity.OriginalName = detailModel.OriginalName;
            entity.CzechName    = detailModel.CzechName;
            entity.Genre        = (GenreEnum)detailModel.Genre;
            entity.TitleFotoUrl = detailModel.TitleFotoUrl;
            entity.Country      = detailModel.Country;
            entity.Duration     = detailModel.Duration;
            entity.Description  = detailModel.Description;

            if (detailModel.Reviews != null)
            {
                entity.Reviews = detailModel.Reviews
                                 .Select(model => ReviewMapper.MapToEntity(model, entityFactory)).ToList();
            }

            if (detailModel.Actors != null)
            {
                entity.Actors = detailModel.Actors
                                .Select(model => ActedInFilmMapper.MapToEntity(model, entityFactory)).ToList();
            }

            if (detailModel.Directors != null)
            {
                entity.Directors = detailModel.Directors
                                   .Select(model => DirectedFilmMapper.MapToEntity(model, entityFactory)).ToList();
            }

            return(entity);
        }
Exemple #4
0
        public void Insert_NewFilmWithActor()
        {
            var filmDetail = new FilmDetailModel()
            {
                OriginalName    = "Resident Evil 5",
                CzechName       = "Resident Evil 5",
                CountryOfOrigin = "USA",
                Description     = "Film about apocalypse with zombies",
                ImageFilePath   = "C:/users/photo/ResidentEvilPhoto",
                GenreOfFilm     = Genre.ActionFilm,
                LengthInMinutes = new TimeSpan(1, 35, 0),
                Actors          = new List <FilmActorListModel>()
                {
                    new FilmActorListModel()
                    {
                        ActorId = DataSeeds.Actor_GarrethClark.Id
                    }
                },
            };

            var returnedDetailModel = facadeTestUnit.Save(filmDetail);

            // TODO: FilmActorEntity ( transition table ) has still Id = Guid.Empty ( zeros )

            // Synchronizing informations which are automatically assigned by EF during updating DB
            filmDetail.Id = returnedDetailModel.Id;
            filmDetail.Actors.ElementAt(0).Id        = returnedDetailModel.Actors.ElementAt(0).Id;
            filmDetail.Actors.ElementAt(0).FilmId    = returnedDetailModel.Actors.ElementAt(0).FilmId;
            filmDetail.Actors.ElementAt(0).ActorName = returnedDetailModel.Actors.ElementAt(0).ActorName;
            filmDetail.Actors.ElementAt(0).FilmName  = returnedDetailModel.Actors.ElementAt(0).FilmName;

            Assert.NotNull(returnedDetailModel);
            Assert.Equal(filmDetail, returnedDetailModel, FilmDetailModel.FilmDetailModelComparer);
        }
Exemple #5
0
        public FilmDetailModel GetFilmDetail(int filmId)
        {
            var filmDetail = new FilmDetailModel();

            var filmDetailEntity       = _filmOnlineRepository.FirstOrDefault(x => x.Id == filmId);
            var listCategoryIdEntities = _categoryOfFilmRepository.GetAll()
                                         .Where(x => x.FilmOnlineId == filmId);
            var listCategoryNameEntities = _filmCategoryRepository.GetAll()
                                           .Where(x => listCategoryIdEntities.Any(i => i.FilmCategoryId == x.Id)).Select(x => x.Name).ToArray();

            filmDetail            = filmDetailEntity.MapTo <FilmDetailModel>();
            filmDetail.Categories = string.Join(", ", listCategoryNameEntities);
            filmDetail.Date       = filmDetailEntity.ReleaseDate.Value.ToString("dd MMMM yyyy");

            return(filmDetail);
        }
Exemple #6
0
        public void SeedFilm_InsertOrUpdate_FilmUpdated()
        {
            var film = new FilmDetailModel()
            {
                Id           = Seed.InterstellarFilm.Id,
                OriginalName = Seed.InterstellarFilm.OriginalName + "updated",
            };

            film = _filmRepositorySUT.InsertOrUpdate(film);

            var film2 = _filmRepositorySUT.GetById(film.Id);

            Assert.Equal(film, film2, FilmDetailModel.FilmDetailModelComparer);
            Assert.Equal(film.Reviews, film2.Reviews, ReviewListModel.ReviewListModelComparer);
            Assert.Equal(film.Actors, film2.Actors, ActedInFilmDetailModel.ActedInFilmDetailModelComparer);
            Assert.Equal(film.Directors, film2.Directors, DirectedFilmDetailModel.DirectedFilmDetailModelComparer);
        }
Exemple #7
0
        public void Create_WithNonExistingItem_DoesNotThrow()
        {
            var model = new FilmDetailModel()
            {
                Id           = Guid.Empty,
                OriginalName = "The Avengers",
                Country      = "USA",
                CzechName    = "Avengers",
                Description  = "Marvelovka",
                Genre        = GenreEnum.SciFi,
                TitleFotoUrl = "avangers",
                Reviews      = new List <ReviewListModel>(),
                Actors       = new List <ActedInFilmDetailModel>(),
                Directors    = new List <DirectedFilmDetailModel>()
            };
            var returnedModel = _filmRepositorySUT.InsertOrUpdate(model);

            Assert.NotNull(returnedModel);
        }
        //
        // GET: /Film/View/id

        public ActionResult View(int?ID)
        {
            if (ID == null)
            {
                return(RedirectToAction("Home", "HomePage"));
            }
            int             filmId     = ID ?? 1;
            FilmDAO         fiDao      = new FilmDAO();
            AccountDAO      accDao     = new AccountDAO();
            CategoryDAO     cDao       = new CategoryDAO();
            CommentDAO      commentDao = new CommentDAO();
            FilmDetailModel model      = new FilmDetailModel
            {
                ListCategory = cDao.GetAllCategory(),
                Account      = null,
                Film         = fiDao.GetDetailAFilm(filmId),
                ListComment  = commentDao.GetAllCommentOfAFilm(filmId)
            };

            return(View(model));
        }
        //
        // GET: /Film/View/id

        public ActionResult View(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Home", "HomePage"));
            }
            int             filmId     = id ?? 1;
            FilmDAO         fiDao      = new FilmDAO();
            AccountDAO      accDao     = new AccountDAO();
            CategoryDAO     cDao       = new CategoryDAO();
            CommentDAO      commentDao = new CommentDAO();
            FilmDetailModel model      = new FilmDetailModel
            {
                ListCategory = cDao.GetAllCategory(),
                Account      = null,
                Film         = fiDao.GetDetailAFilm(filmId),
                ListComment  = commentDao.GetAllCommentOfAFilm(filmId),
                TopFilm      = fiDao.GetTopFilm(5),
                NewFilm      = fiDao.GetTopNewestFilm(5)
            };

            fiDao.IncreaseViewCount(filmId);//increase viewcount
            return(View(model));
        }