public IEnumerable<TagModel> GetAll(
[ValueProvider(typeof(HeaderValueProviderFactory<string>))]string sessionKey)
{
var allTagModels = this.PerformOperation(() =>
{
UserValidator.ValidateSessionKey(sessionKey);
var context = new BloggingSystemContext();
using (context)
{
var loggedUserEntity = context.Users.FirstOrDefault<User>(u => u.SessionKey == sessionKey);
if (loggedUserEntity == null)
{
throw new InvalidOperationException("Invalid user or pasword!");
}
var tagModels = new List<TagModel>();
var tagEntities = context.Tags.Include("Posts").OrderBy(t => t.Name);
foreach (var tagEntity in tagEntities)
{
tagModels.Add(TagsMapper.ToModel(tagEntity));
}
return tagModels;
}
});
return allTagModels;
}