Beispiel #1
0
        public async Task <IActionResult> BuyChildTicket(int movieId)
        {
            var result = await _unitOfWork.Repository <Movie>().GetAsync(movieId);

            if (result is null)
            {
                return(NotFound());
            }
            var specification = new MovieForKidsSpecification();

            if (!specification.IsSatisfiedBy(result))
            {
                return(Conflict("The mvie is not sutable for children"));
            }
            return(Ok(result));
        }
Beispiel #2
0
        private void BuyChildTicket(long movieId)
        {
            Maybe <Movie> movieOrNothing = _repository.GetOne(movieId);

            if (movieOrNothing.HasNoValue)
            {
                return;
            }

            Movie movie = movieOrNothing.Value;
            var   spec  = new MovieForKidsSpecification();

            if (!spec.IsSatisfiedBy(movie))
            {
                MessageBox.Show("The movie is not suitable for children", "Error",
                                MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            MessageBox.Show("You've bought a ticket", "Success",
                            MessageBoxButton.OK, MessageBoxImage.Information);
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            //strongly typed specification with and ,or,not
            StronglyTypedMovieRepository stronglyTypedMovieRepository = new StronglyTypedMovieRepository();

            var kidsSpecification = new MovieForKidsSpecification();
            var hasCdMovies       = new HasCDSpecification();
            Specification <StronglyTypedMovie> spec = Specification <StronglyTypedMovie> .All;

            spec = spec.And(new MovieForKidsSpecification());
            //spec = spec.Or(new HasCDSpecification());

            //and take which movies not have a cd in this time
            var hasCD = new HasCDSpecification();

            spec = hasCD.Not();

            var movieList = stronglyTypedMovieRepository.Find(spec);

            foreach (var movie in movieList)
            {
                Console.WriteLine($"this movie for kids and has not cd :{movie.Name}");
            }
            //==================================================================================

            //Strongly Typed Specification
            //StronglyTypedMovieRepository stronglyTypedMovieRepository = new StronglyTypedMovieRepository();


            //StronglyTypedMovie storynglyTypedMovie = stronglyTypedMovieRepository.GetOne(1);
            //var stronglyTypedMovieSpecification = new MovieForKidsSpecification();

            //if (!stronglyTypedMovieSpecification.IsSatisfiedBy(storynglyTypedMovie))
            //{
            //    Console.WriteLine($"this movie is suitable for children : {storynglyTypedMovie.Name}");
            //}
            //Console.WriteLine("----------------------------------------------");

            //var kidsSpecification = new MovieForKidsSpecification();
            //foreach (var stronglyTypedMovie in stronglyTypedMovieRepository.Find(kidsSpecification))
            //{
            //    Console.WriteLine($"these movie are for children : {stronglyTypedMovie.Name}");
            //}
            //Console.WriteLine("----------------------------------------------");

            //var hasCdMovies =new HasCDSpecification();
            //foreach (var movie in stronglyTypedMovieRepository.Find(hasCdMovies))
            //{
            //    Console.WriteLine($"this movie has cd :{movie.Name}");
            //}
            //==================================================================================

            //Generic Neive
            //GenericNeiveMovieRepository genericNeiveRepo = new GenericNeiveMovieRepository();

            //var genericNeiveMovie = genericNeiveRepo.GetOne(1);
            //var genericDelegateNeiveMovie =
            //    new GenericNeiveSpecification<GenericNeiveMovie>
            //        (x=>x.MpaaRating <= GenericNeiveMpaaRating.PG13);
            //if (!genericDelegateNeiveMovie.IsSatisfiedBy(genericNeiveMovie))
            //{
            //    Console.WriteLine($"this movie is suitable for children : {genericNeiveMovie.Name}");
            //}
            //Console.WriteLine("----------------------------------------------");


            //var genericNeiveForChildrenMovies =
            //    genericNeiveRepo.Find(GenericNeiveMovieRepository.isSuitableForChildren);

            //foreach (var movie in genericNeiveForChildrenMovies)
            //{
            //    Console.WriteLine($"Movie name is :{movie.Name}");
            //}
            //Console.WriteLine("----------------------------------------------");

            //var genericNeiveForHasCdMovies = genericNeiveRepo.Find(GenericNeiveMovieRepository.hasCD);
            //foreach (var movie in genericNeiveForHasCdMovies)
            //{
            //    Console.WriteLine($"this movie has cd :{movie.Name}");
            //}

            //==================================================================================

            //Naive
            //NeiveMovieRepository neiveRepo = new NeiveMovieRepository();

            ////check expression here
            //NeiveMovie neiveMovie = neiveRepo.GetOne(1);
            //    //expression to delegate
            //Func<NeiveMovie, bool> delegateNeiveMovie =
            //    NeiveMovieRepository.isSuitableForChildren.Compile();
            //if (!delegateNeiveMovie(neiveMovie))
            //{
            //    Console.WriteLine($"this movie is suitable for children : {neiveMovie.Name}");
            //}
            //Console.WriteLine("----------------------------------------------");

            //var neiveForChildrenMovies =
            //    neiveRepo.Find(NeiveMovieRepository.isSuitableForChildren);

            //foreach (var movie in neiveForChildrenMovies)
            //{
            //    Console.WriteLine($"Movie name is :{movie.Name}");
            //}
            //Console.WriteLine("----------------------------------------------");

            //var neiveForHasCdMovies = neiveRepo.Find(NeiveMovieRepository.hasCD);
            //foreach (var movie in neiveForHasCdMovies)
            //{
            //    Console.WriteLine($"this movie has cd :{movie.Name}");
            //}

            //==================================================================================
            //Problem
            //ProblemMovieRepository problemRepo = new ProblemMovieRepository();
            //var problemForChildrendMovies = problemRepo.isSuitableForChildren();

            //foreach (var movie in problemForChildrendMovies)
            //{
            //    Console.WriteLine($"for children Movie name is :{movie.Name}");
            //}

            //Console.WriteLine("----------------------------------------------");
            //var problemForHasCdMovies = problemRepo.HasCDVersion();
            //foreach (var movie in problemForHasCdMovies)
            //{
            //    Console.WriteLine($"has cd Movie name is :{movie.Name}");
            //}



            Console.ReadKey();
        }