using System.Collections.Generic; using Portoa.Persistence; using VideoGameQuotes.Api; namespace VideoGameQuotes.Web.Services { public interface IQuoteService { Game GetGame(int id); IEnumerable GetAllGames(); IEnumerable GetAllSystems(); IEnumerable GetAllPublishers(); Quote SaveQuote(Quote quote); Quote GetQuote(int id); Publisher GetPublisher(int id); GamingSystem GetSystem(int systemId); } public class QuoteService : IQuoteService { private readonly IRepository quoteRepository; private readonly IRepository gameRepository; private readonly IRepository systemRepository; private readonly IRepository publisherRepository; public QuoteService( IRepository quoteRepository, IRepository gameRepository, IRepository systemRepository, IRepository publisherRepository ) { this.quoteRepository = quoteRepository; this.gameRepository = gameRepository; this.systemRepository = systemRepository; this.publisherRepository = publisherRepository; } [UnitOfWork] public Game GetGame(int id) { return gameRepository.FindById(id); } [UnitOfWork] public IEnumerable GetAllGames() { return gameRepository.Records; } [UnitOfWork] public IEnumerable GetAllSystems() { return systemRepository.Records; } [UnitOfWork] public IEnumerable GetAllPublishers() { return publisherRepository.Records; } [UnitOfWork] public Quote SaveQuote(Quote quote) { return quoteRepository.Save(quote); } [UnitOfWork] public Quote GetQuote(int id) { return quoteRepository.FindById(id); } [UnitOfWork] public Publisher GetPublisher(int id) { return publisherRepository.FindById(id); } [UnitOfWork] public GamingSystem GetSystem(int systemId) { return systemRepository.FindById(systemId); } } }