vgquotes/Src/VideoGameQuotes.Web/Services/AdministrationService.cs
2011-02-19 23:15:36 +00:00

46 lines
1.2 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Portoa.Persistence;
using VideoGameQuotes.Api;
namespace VideoGameQuotes.Web.Services {
public interface IAdministrationService {
User SaveUser(User user);
IEnumerable<Quote> GetFlaggedQuotes();
User GetUser(int id);
IEnumerable<User> GetAllUsers();
}
public class AdministrationService : IAdministrationService {
private readonly IRepository<User> userRepository;
private readonly IRepository<Quote> quoteRepository;
public AdministrationService(IRepository<User> userRepository, IRepository<Quote> quoteRepository) {
this.userRepository = userRepository;
this.quoteRepository = quoteRepository;
}
[UnitOfWork]
public User SaveUser(User user) {
return userRepository.Save(user);
}
[UnitOfWork]
public IEnumerable<Quote> GetFlaggedQuotes() {
return quoteRepository.Records
.Where(quote => quote.Flags.Any())
.ToArray()
.OrderByDescending(quote => quote.Flags.Count());
}
[UnitOfWork]
public User GetUser(int id) {
return userRepository.FindById(id);
}
[UnitOfWork]
public IEnumerable<User> GetAllUsers() {
return userRepository.Records;
}
}
}