protected override async void OnViewAttached(object view, object context) { base.OnViewAttached(view, context); if (Settings.Instance.AnagraficaUtente == null) { await new MessageDialog("Anagrafica non trovata per l'utente corrente. Contattare l'assistenza.", "Errore").ShowAsync(); BarLogout(); } UserWelcome = String.Format("Benvenut{0} {1}", Settings.Instance.AnagraficaUtente.Sesso ? "o" : "a", Settings.Instance.AnagraficaUtente.Nome); dbMan = new DBManager(); posAPI = new PosizioneAPI(Settings.Instance.AccessToken); parAPI = new PartecipantiAPI(Settings.Instance.AccessToken); anaAPI = new AnagraficaAPI(Settings.Instance.AccessToken); dipAPI = new DipendenteAPI(Settings.Instance.AccessToken); viaAPI = new ViaggioAPI(Settings.Instance.AccessToken); }
private async Task <bool> DownloadUserData() { bool toRet = false; ShowLoading = true; LoadingMessage = "Istanziazione delle librerie per l'accesso ad Acheronte"; await Task.Delay(TimeSpan.FromSeconds(1)); anAPI = new AnagraficaAPI(Settings.Instance.AccessToken); diAPI = new DipendenteAPI(Settings.Instance.AccessToken); viAPI = new ViaggioAPI(Settings.Instance.AccessToken); paAPI = new PartecipantiAPI(Settings.Instance.AccessToken); LoadingMessage = "Caricamento dei dati relativi al dipendente"; await Task.Delay(TimeSpan.FromSeconds(1)); Settings.Instance.DipendenteInfo = Dipendente.ToEntity(await diAPI.GetDipendenteByUsername(Settings.Instance.Username)); Settings.Instance.AnagraficaUtente = Anagrafica.ToEntity(await anAPI.GetAnagrafica(Settings.Instance.DipendenteInfo.FKIDAnagrafica.Value)); LoadingMessage = "Caricamento dei viaggi pianificati"; await Task.Delay(TimeSpan.FromSeconds(1)); var viaggi = await viAPI.GetViaggiByAutista(Settings.Instance.DipendenteInfo.IDDipendente); List <PartecipanteDTO> totParts = new List <PartecipanteDTO>(); foreach (ViaggioDTO viaggio in viaggi) { LoadingMessage = String.Format("Caricamento dei dati passeggeri per il viaggio:\n{0}", viaggio.DescrizioneViaggio); totParts.AddRange(await paAPI.GetPartecipantiViaggio(viaggio.IDViaggio)); await Task.Delay(TimeSpan.FromSeconds(1)); } LoadingMessage = "Salvataggio dei dati in corso"; if (await dbMan.cmDB.Table <Dipendente>().Where(d => d.IDDipendente == Settings.Instance.DipendenteInfo.IDDipendente).CountAsync() > 0) { await dbMan.cmDB.UpdateAsync(Settings.Instance.DipendenteInfo); } else { await dbMan.cmDB.InsertAsync(Settings.Instance.DipendenteInfo); } if (await dbMan.cmDB.Table <Anagrafica>().Where(a => a.IDAnagrafica == Settings.Instance.AnagraficaUtente.IDAnagrafica).CountAsync() > 0) { await dbMan.cmDB.UpdateAsync(Settings.Instance.AnagraficaUtente); } else { await dbMan.cmDB.InsertAsync(Settings.Instance.AnagraficaUtente); } List <int> idNuoviViaggi = viaggi.Select(v => v.IDViaggio).ToList(); List <Viaggio> viaggiPresenti = await dbMan.cmDB.Table <Viaggio>().Where(v => idNuoviViaggi.Contains(v.IDViaggio)).ToListAsync(); List <int> idViaggiEditabili = viaggiPresenti.Where(x => x.FKIDStato == 1).Select(x => x.IDViaggio).ToList(); List <int> idViaggiNonEdit = viaggiPresenti.Select(x => x.IDViaggio).Except(idViaggiEditabili).ToList(); foreach (Viaggio viag in viaggi.Select(v => Viaggio.ToEntity(v)).ToList()) { if (!idViaggiNonEdit.Contains(viag.IDViaggio)) { if (idViaggiEditabili.Contains(viag.IDViaggio)) { await dbMan.cmDB.UpdateAsync(viag); } else { await dbMan.cmDB.InsertAsync(viag); } } } List <Partecipante> partecipantiPresenti = await dbMan.cmDB.Table <Partecipante>().ToListAsync(); List <int> idPassEdit = partecipantiPresenti.Where(p => idViaggiEditabili.Contains(p.FKIDViaggio.Value)) .Select(x => x.IDSpostamento).ToList(); List <int> idPassNonEdit = partecipantiPresenti.Where(p => idViaggiNonEdit.Contains(p.FKIDViaggio.Value)) .Select(x => x.IDSpostamento).ToList(); foreach (Partecipante part in totParts.Select(p => Partecipante.ToEntity(p)).ToList()) { if (!idPassNonEdit.Contains(part.IDSpostamento)) { if (idPassEdit.Contains(part.IDSpostamento)) { await dbMan.cmDB.UpdateAsync(part); } else { await dbMan.cmDB.InsertAsync(part); } } } ShowLoading = false; return(toRet); }