Added base interface and service
This commit is contained in:
parent
e2b55ada11
commit
4aea17277a
@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SessionCompanion.Services.Base
|
||||
{
|
||||
public interface IServiceBase<TViewModel, TEntity> : IDisposable
|
||||
{
|
||||
IEnumerable<TViewModel> Get();
|
||||
Task<TViewModel> Get(int id);
|
||||
Task<IEnumerable<TEntity>> Get(Expression<Func<TEntity, bool>> expresssion);
|
||||
Task Create(TViewModel viewModel);
|
||||
Task Update(int id, TViewModel viewModel);
|
||||
Task Delete(int id);
|
||||
Task SaveAsync();
|
||||
}
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
using SessionCompanion.Database.Tables;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using AutoMapper;
|
||||
using System.Threading.Tasks;
|
||||
using SessionCompanion.Database.Repositories.Base;
|
||||
using System.Linq.Expressions;
|
||||
using System.Linq;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace SessionCompanion.Services.Base
|
||||
{
|
||||
public class ServiceBase<TViewModel, TEntity> : IServiceBase<TViewModel, TEntity> where TEntity : BaseEntity
|
||||
{
|
||||
protected IMapper Mapper { get; private set; }
|
||||
protected IRepository<TEntity> Repository { get; private set; }
|
||||
|
||||
|
||||
public ServiceBase(IMapper mapper, IRepository<TEntity> repository)
|
||||
{
|
||||
Mapper = mapper;
|
||||
Repository = repository;
|
||||
}
|
||||
|
||||
public virtual IEnumerable<TViewModel> Get()
|
||||
{
|
||||
var models = Repository.Get();
|
||||
return Mapper.Map<IEnumerable<TViewModel>>(models);
|
||||
}
|
||||
|
||||
public virtual async Task<TViewModel> Get(int id)
|
||||
{
|
||||
var result = await Repository.Get(id);
|
||||
return Mapper.Map<TViewModel>(result);
|
||||
}
|
||||
|
||||
public virtual async Task<IEnumerable<TEntity>> Get(Expression<Func<TEntity, bool>> expression)
|
||||
{
|
||||
var result = await Repository.Get(expression).ToListAsync();
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual async Task Create(TViewModel viewModel)
|
||||
{
|
||||
var model = Mapper.Map<TEntity>(viewModel);
|
||||
await Repository.Create(model);
|
||||
}
|
||||
|
||||
public virtual async Task Update(int id, TViewModel viewModel)
|
||||
{
|
||||
var model = Mapper.Map<TEntity>(viewModel);
|
||||
model.Id = id;
|
||||
await Repository.Update(model);
|
||||
}
|
||||
|
||||
public virtual async Task Delete(int id)
|
||||
{
|
||||
var model = await Repository.Get(id);
|
||||
Repository.Delete(model);
|
||||
}
|
||||
|
||||
public virtual async Task SaveAsync()
|
||||
{
|
||||
await Repository.Save();
|
||||
}
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
Repository.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace SessionCompanion.Services
|
||||
{
|
||||
public class Class1
|
||||
{
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user