using AutoMapper; using System.Linq.Expressions; using Template.Shared.Core.Dto; using Template.Shared.Core.Entity; using Template.Shared.Core.Helpers.Enum; using Template.Shared.Core.Interface; namespace Template.Maui.Core.Services; public class ManageDataService(LocalDbService localDb, IMapper mapper) : IManageDataService { public Task> GetAnagClie(Expression>? whereCond = null) => localDb.Get(whereCond); public Task> GetJtbComt(Expression>? whereCond = null) => localDb.Get(whereCond); public Task> GetPtbPros(Expression>? whereCond = null) => localDb.Get(whereCond); public Task> GetPtbProsRif(Expression>? whereCond = null) => localDb.Get(whereCond); public Task> GetStbActivity(Expression>? whereCond = null) => localDb.Get(whereCond); public Task> GetVtbCliePersRif(Expression>? whereCond = null) => localDb.Get(whereCond); public Task> GetVtbDest(Expression>? whereCond = null) => localDb.Get(whereCond); public async Task> GetActivity(Expression>? whereCond = null) { var activities = await localDb.Get(whereCond); var codJcomList = activities .Select(x => x.CodJcom) .Where(x => !string.IsNullOrEmpty(x)) .Distinct() .ToList(); var jtbComtList = await localDb.Get(x => codJcomList.Contains(x.CodJcom)); var commesseDict = jtbComtList.ToDictionary(x => x.CodJcom, x => x.Descrizione); var returnDto = activities .Select(activity => { var dto = mapper.Map(activity); if (activity.CodJcom != null) { dto.Category = ActivityCategoryEnum.Commessa; } else { dto.Category = activity.CodAnag != null ? ActivityCategoryEnum.Interna : ActivityCategoryEnum.Memo; } dto.Commessa = activity.CodJcom != null && commesseDict.TryGetValue(activity.CodJcom, out var descr) ? descr : null; return dto; }) .ToList(); return returnDto; } public async Task ClearDb() => await localDb.ResetDb(); }