using System.Linq; using Abp.Application.Services.Dto; using Abp.Authorization; using Abp.Domain.Entities; using Abp.Domain.Repositories; using Abp.UI; namespace Abp.Application.Services { public abstract class CrudAppService : CrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto { protected CrudAppService(IRepository repository) : base(repository) { } } public abstract class CrudAppService : CrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto { protected CrudAppService(IRepository repository) : base(repository) { } } public abstract class CrudAppService : CrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto { protected CrudAppService(IRepository repository) : base(repository) { } } public abstract class CrudAppService : CrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto where TCreateInput : IEntityDto { protected CrudAppService(IRepository repository) : base(repository) { } } public abstract class CrudAppService : CrudAppService> where TEntity : class, IEntity where TEntityDto : IEntityDto where TUpdateInput : IEntityDto { protected CrudAppService(IRepository repository) : base(repository) { } } public abstract class CrudAppService : CrudAppService> where TEntity : class, IEntity where TEntityDto : IEntityDto where TUpdateInput : IEntityDto where TGetInput : IEntityDto { protected CrudAppService(IRepository repository) : base(repository) { } } public abstract class CrudAppService : CrudAppServiceBase, ICrudAppService where TEntity : class, IEntity where TEntityDto : IEntityDto where TUpdateInput : IEntityDto where TGetInput : IEntityDto where TDeleteInput : IEntityDto { protected CrudAppService(IRepository repository) : base(repository) { } public virtual TEntityDto Get(TGetInput input) { CheckGetPermission(); var entity = GetEntityById(input.Id); return MapToEntityDto(entity); } public virtual PagedResultDto GetAll(TGetAllInput input) { CheckGetAllPermission(); var query = CreateFilteredQuery(input); var totalCount = query.Count(); query = ApplySorting(query, input); query = ApplyPaging(query, input); var entities = query.ToList(); return new PagedResultDto( totalCount, entities.Select(MapToEntityDto).ToList() ); } public virtual TEntityDto Create(TCreateInput input) { CheckCreatePermission(); var entity = MapToEntity(input); Repository.Insert(entity); CurrentUnitOfWork.SaveChanges(); return MapToEntityDto(entity); } public virtual TEntityDto Update(TUpdateInput input) { CheckUpdatePermission(); var entity = GetEntityById(input.Id); MapToEntity(input, entity); CurrentUnitOfWork.SaveChanges(); return MapToEntityDto(entity); } public virtual void Delete(TDeleteInput input) { CheckDeletePermission(); Repository.Delete(input.Id); } protected virtual TEntity GetEntityById(TPrimaryKey id) { return Repository.Get(id); } } }