예제 #1
0
        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);
        }
예제 #2
0
        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);
        }