public ServiceResponse <List <MovieDTO> > GetMoviesBySerachCriteria(MovieSearchCriteriaFields searchCriteria) { IQueryable <MovieVenueInfo> result = this._context.MovieVenueInfo.AsQueryable(); if (!string.IsNullOrEmpty(searchCriteria.MovieName)) { result = result.Where(x => x.MovieName.Contains(searchCriteria.MovieName)); } if (!string.IsNullOrEmpty(searchCriteria.MovieLanguage)) { result = result.Where(x => x.MovieLanguage.Contains(searchCriteria.MovieLanguage)); } if (!string.IsNullOrEmpty(searchCriteria.MovieType)) { result = result.Where(x => x.MovieType.Contains(searchCriteria.MovieType)); } if (!string.IsNullOrEmpty(searchCriteria.MultiplexName)) { result = result.Where(x => x.MultiplexName.Contains(searchCriteria.MultiplexName)); } if (!string.IsNullOrEmpty(searchCriteria.City)) { result = result.Where(x => x.City.Contains(searchCriteria.City)); } List <MovieDTO> moviesCol = new List <MovieDTO>(); //TODO : We can make use of Automapper for object to object data copy.. foreach (MovieVenueInfo item in result) { var bookedSeatsCount = this._context.CustomersTicketBookingHistory.Where(x => x.MovieIDFK == item.ID && x.BookedDate == DateTime.Now.Date).ToList().Select(x => x.BookedSeatsCount).Sum(); moviesCol.Add(new MovieDTO { ID = item.ID, AvilableSeatCount = 100 - bookedSeatsCount, MovieName = item.MovieName, MovieLanguage = item.MovieLanguage, MultiplexName = item.MultiplexName, MovieType = item.MovieType, City = item.City }); } ServiceResponse <List <MovieDTO> > movies = new ServiceResponse <List <MovieDTO> >(); movies.Data = moviesCol; movies.Message = "List of Movies"; return(movies); }
public ServiceResponse <List <MovieDTO> > GetMoviesBySerachCriteria(MovieSearchCriteriaFields searchCriteria) => this._customerRepo.GetMoviesBySerachCriteria(searchCriteria);