using IntegryApiClient.Core.Domain.Abstraction.Contracts.Account; using IntegryApiClient.Core.Domain.Abstraction.Contracts.Device; using SteUp.Shared.Core.Data.Contracts; using SteUp.Shared.Core.Dto; using SteUp.Shared.Core.Dto.PageState; using SteUp.Shared.Core.Helpers; using SteUp.Shared.Core.Interface.IntegryApi; using SteUp.Shared.Core.Interface.LocalDb; using SteUp.Shared.Core.Interface.System; using SteUp.Shared.Core.Interface.System.Network; namespace SteUp.Shared.Core.Data; public class SteupDataService( IIntegrySteupService integrySteupService, IUserSession userSession, IDeviceService deviceService, IGenericSystemService genericSystemService, IIspezioniService ispezioniService, IDbInitializer dbInitializer) : ISteupDataService { public async Task Init() { await dbInitializer.InitializeAsync(); await LoadDataAsync(); await CheckAndUpdateStatus(); RegisterAppVersion(); } public void RegisterAppVersion() { deviceService.RegisterAppVersion( genericSystemService.GetCurrentAppVersion() ); } private async Task CheckAndUpdateStatus() { var ispezioni = await ispezioniService.GetAllIspezioniWithSchedeAsync(); var listActivityId = ispezioni .Where(x => x.ActivityId != null) .Select(x => x.ActivityId!) .ToList(); if (!listActivityId.IsNullOrEmpty()) { var stati = await integrySteupService.RetrieveStatoIspezioni( new RetrieveStatoIspezioniRequestDto { ActivityIdList = listActivityId } ); if (stati != null) { foreach (var stato in stati) { var ispezione = ispezioni.Find(x => x.ActivityId != null && x.ActivityId.EqualsIgnoreCase(stato.ActivityId) ); var newStatus = StatusEnumHelper.ConvertToStatusEnum(stato.ActivityResultId); if (ispezione != null && ispezione.Stato != newStatus) { await ispezioniService.UpdateStatoIspezioneAsync( ispezione.CodMdep, ispezione.Data, ispezione.Rilevatore, newStatus ); } } } } } private async Task LoadDataAsync() { if (!await userSession.IsLoggedIn()) return; PuntiVenditaList = await integrySteupService.RetrievePuntiVendita(); Reparti = await integrySteupService.RetrieveReparti(); TipiAttività = await integrySteupService.RetrieveActivityType(); } public InspectionPageState InspectionPageState { get; set; } = new(); public List PuntiVenditaList { get; private set; } = []; public List Reparti { get; private set; } = []; public List TipiAttività { get; private set; } = []; }