namespace Bookstore.Domain.ReferenceData { public interface IReferenceDataService { Task> GetReferenceDataAsync(ReferenceDataFilters filters, int pageIndex, int pageSize); Task> GetAllReferenceDataAsync(); Task GetReferenceDataItemAsync(int id); Task CreateAsync(CreateReferenceDataItemDto createReferenceDataItemDto); Task UpdateAsync(UpdateReferenceDataItemDto createReferenceDataItemDto); } public class ReferenceDataService : IReferenceDataService { private readonly IReferenceDataRepository referenceDataRepository; public ReferenceDataService(IReferenceDataRepository referenceDataRepository) { this.referenceDataRepository = referenceDataRepository; } public async Task> GetReferenceDataAsync(ReferenceDataFilters filters, int pageIndex, int pageSize) { return await referenceDataRepository.ListAsync(filters, pageIndex, pageSize); } public async Task> GetAllReferenceDataAsync() { return await referenceDataRepository.FullListAsync(); } public async Task GetReferenceDataItemAsync(int id) { return await referenceDataRepository.GetAsync(id); } public async Task CreateAsync(CreateReferenceDataItemDto dto) { var referenceDataItem = new ReferenceDataItem(dto.ReferenceDataType, dto.Text); await referenceDataRepository.AddAsync(referenceDataItem); await referenceDataRepository.SaveChangesAsync(); } public async Task UpdateAsync(UpdateReferenceDataItemDto dto) { var referenceDataItem = await referenceDataRepository.GetAsync(dto.Id); referenceDataItem.DataType = dto.ReferenceDataType; referenceDataItem.Text = dto.Text; await referenceDataRepository.SaveChangesAsync(); } } }