// WingsEmu // // Developed by NosWings Team using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using PhoenixLib.DAL; using PhoenixLib.Logging; using Plugin.Database.DB; using WingsAPI.Data.Bazaar; using WingsEmu.DTOs.Bazaar; namespace Plugin.Database.Bazaar { public class BazaarItemDAO : IBazaarItemDAO { private readonly IDbContextFactory _contextFactory; private readonly IMapper _mapper; private readonly IGenericAsyncLongRepository _repository; public BazaarItemDAO(IDbContextFactory contextFactory, IGenericAsyncLongRepository repository, IMapper mapper) { _contextFactory = contextFactory; _repository = repository; _mapper = mapper; } public async Task> GetAllAsync() => await _repository.GetAllAsync(); public async Task GetByIdAsync(long id) => await _repository.GetByIdAsync(id); public async Task> GetByIdsAsync(IEnumerable ids) => await _repository.GetByIdsAsync(ids); public async Task SaveAsync(BazaarItemDTO obj) => await _repository.SaveAsync(obj); public async Task> SaveAsync(IReadOnlyList objs) => await _repository.SaveAsync(objs); public async Task DeleteByIdAsync(long id) { await _repository.DeleteByIdAsync(id); } public async Task DeleteByIdsAsync(IEnumerable ids) { await _repository.DeleteByIdsAsync(ids); } public async Task> GetAllNonDeletedBazaarItems() { try { await using GameContext context = _contextFactory.CreateDbContext(); var tmp = context.BazaarItem.Where(s => s.DeletedAt == null).ToList(); return _mapper.Map(tmp); } catch (Exception e) { Log.Error("GetBazaarItemByItemInstanceId", e); return null; } } public async Task> GetBazaarItemsByCharacterId(long characterId) { try { await using GameContext context = _contextFactory.CreateDbContext(); var list = new List(); IQueryable tmp = context.BazaarItem.Where(s => s.CharacterId == characterId); foreach (DbBazaarItemEntity item in tmp) { list.Add(_mapper.Map(item)); } return list.AsReadOnly(); } catch (Exception e) { Log.Error("GetBazaarItemsByCharacterId", e); return null; } } } }