Ejemplo n.º 1
0
        private View getView()
        {
            _listView = new ListView()
            {
                ItemTemplate    = new DataTemplate(typeof(MieiCorsiCell)),
                VerticalOptions = LayoutOptions.FillAndExpand,
                SeparatorColor  = Color.Transparent,
                HasUnevenRows   = true,
                ItemsSource     = _db.GetAllMieiCorsi()
            };
//			_listView.SetBinding(ListView.ItemsSourceProperty, "ListaLezioni");
            _listView.ItemSelected += (sender, e) => {
                ((ListView)sender).SelectedItem = null;
            };

            var layout = new StackLayout()
            {
                Padding           = new Thickness(15, 10, 15, 10),
                Spacing           = 5,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                Children          =
                {
                    _listView
                }
            };

            MessagingCenter.Subscribe <MieiCorsiCell> (this, "delete_corso_fav_impostazioni", (sender) => {
                _listView.ItemsSource = _db.GetAllMieiCorsi();
            });

            return(layout);
        }
Ejemplo n.º 2
0
        async void RemoveAction_Clicked(object sender, EventArgs e)
        {
            var mi        = ((Xamarin.Forms.MenuItem)sender);
            var preferito = mi.CommandParameter as Preferiti;
            //var corso = _db.GetAllMieiCorsi().FirstOrDefault(x => x.Insegnamento == orario.Insegnamento);
            var corso = new Corso()
            {
                Insegnamento = preferito.Insegnamento, Codice = preferito.Codice, Docente = preferito.Docente,
            };

            var toast = DependencyService.Get <IToastNotificator>();

            //**NON C'E CONNESSIONE INTERNET**
            if (!CrossConnectivity.Current.IsConnected)
            {   //non connesso a internet
                await toast.Notify(ToastNotificationType.Error, "Errore", "Nessun accesso a internet", TimeSpan.FromSeconds(3));

                return;
            }

            corso = await _service.GetCorso(preferito);

            preferito.IdCorso = corso.Id;
            await _service.DeletePreferito(preferito);

            _db.DeleteMieiCorsi(preferito);

            MessagingCenter.Send <MieiCorsiCell>(this, "delete_corso_fav_impostazioni");

            //var toast = DependencyService.Get<IToastNotificator>();
            await toast.Notify(ToastNotificationType.Error, "Complimenti", corso.Insegnamento + " rimosso dai preferiti!", TimeSpan.FromSeconds(3));

            Settings.MieiCorsiCount = _db.GetAllMieiCorsi().Count();
        }
Ejemplo n.º 3
0
        protected override void OnAppearing()
        {
            base.OnAppearing();
            Settings.MieiCorsiCount = _db.GetAllMieiCorsi().Count();
            getPreferitiString();
            _lblLastUpdate.Text = Settings.LastUpdate;

            getFileString();
        }
Ejemplo n.º 4
0
        private async Task updateDbOrariUtenza()
        {
            var _listOrariGiorno = _db.GetAllOrari(); //Elimina gli orari già passati

            foreach (var l in _listOrariGiorno)
            {
                if (l.Date < _oggi.Data)
                {
                    _db.DeleteSingleOrari(l.IdOrario);
                }
            }
            ;

            if (!CrossConnectivity.Current.IsConnected)
            { //non connesso a internet
                var toast = DependencyService.Get <IToastNotificator>();
                await toast.Notify(ToastNotificationType.Error, "Errore", "Nessun accesso a internet", TimeSpan.FromSeconds(3));

                return;
            }


            foreach (var day in listGiorni)
            {
                //Corsi generale, utenza + corsi
                var    db = Settings.FacoltaDB;
                string s  = await Web.GetOrarioGiornaliero(Settings.FacoltaDB, Settings.FacoltaId, 0, day.DateString);

                List <CorsoGiornaliero> listaCorsi = Web.GetSingleOrarioGiornaliero(s, 0, day.Data);

                if (listaCorsi.Count() != 0)
                {
                    updateSingleCorso(_db, listaCorsi);
                }
            }

            Settings.MieiCorsiCount = _db.GetAllMieiCorsi().Count();
            _db.CheckUtenzeDoppioni();
        }
Ejemplo n.º 5
0
//		void RemoveAction_Clicked (object sender, EventArgs e)
//		{
//			var mi = ((Xamarin.Forms.MenuItem)sender);
//			var orario = mi.CommandParameter as Orari;
//
//			var corso = _db.GetAllMieiCorsi().FirstOrDefault(x => x.Insegnamento == orario.Insegnamento);
//			_db.DeleteMieiCorsi(corso);
//
//			MessagingCenter.Send<OrarioGiornCell>(this, "delete_corso_context");
//			Debug.WriteLine(orario.Insegnamento);
//		}

        async void AddAction_Clicked(object sender, EventArgs e)
        {
            var mi     = ((Xamarin.Forms.MenuItem)sender);
            var orario = mi.CommandParameter as CorsoGiornaliero;
            var x      = _db.GetAllMieiCorsi();

            var toast = DependencyService.Get <IToastNotificator>();

            //if (_db.CheckAppartieneMieiCorsi (orario)) {
            //	await toast.Notify (ToastNotificationType.Error, "Attenzione!", orario.Insegnamento + " è già stato aggiunto ai tuoi preferiti!", TimeSpan.FromSeconds (3));
            //} else {
            //	_db.Insert(new Preferiti() { Codice = orario.Codice, Docente = orario.Docente, Insegnamento = orario.Insegnamento });
            //	await toast.Notify (ToastNotificationType.Success, "Complimenti", orario.Insegnamento + " aggiunto ai preferiti!", TimeSpan.FromSeconds (3));
            //}

            if (_db.CheckAppartieneMieiCorsi(orario))
            {
                await toast.Notify(ToastNotificationType.Error, "Attenzione!", orario.Insegnamento + " è già stato aggiunto ai tuoi preferiti!", TimeSpan.FromSeconds(3));
            }
            else
            {
                //**NON C'E CONNESSIONE INTERNET**
                if (!CrossConnectivity.Current.IsConnected)
                {   //non connesso a internet
                    await toast.Notify(ToastNotificationType.Error, "Errore", "Nessun accesso a internet", TimeSpan.FromSeconds(3));

                    return;
                }
                //await _service.Initialize();
                var preferito = new Preferiti()
                {
                    Codice = orario.Codice, Docente = orario.Docente, Insegnamento = orario.Insegnamento
                };
                var corso = new Corso()
                {
                    Insegnamento = preferito.Insegnamento, Codice = preferito.Codice, Docente = preferito.Docente,
                };

                await _service.AddCorso(corso);

                corso = await _service.GetCorso(corso);

                preferito.IdCorso = corso.Id;
                await _service.AddPreferito(preferito);

                _db.Insert(preferito);
                await toast.Notify(ToastNotificationType.Success, "Complimenti", orario.Insegnamento + " aggiunto ai preferiti!", TimeSpan.FromSeconds(3));
            }
        }
Ejemplo n.º 6
0
        //private ToolbarItem tbiSync;
        #endregion

        #region Constructor
        public TabbedHomeView()
        {
            _db      = new DbSQLite();
            _service = new AzureDataService();

            Logcat.Write("COUNT: " + _db.GetAllMieiCorsi().Count());
            this.Title = "Home";

            //IdentifyingUser (); //IDENTIFYING USER DISABLE!!

            //BackgroundColor = ColorHelper.White;

            Logcat.Write(string.Format("{0}: {1}", "TabbedHomeView", "costruttore"));

            checkDays();  //controllo che giorni sono necessari nelle tab

            //RIMOSSO PER DEBUG!!
            //loadListCorsiGiorno(); //carico la lista dei giorni

            this.ItemTemplate = new DataTemplate(() =>
            {
                return(new TabbedDayView());
            });

            //tbiSync = new ToolbarItem("Sync", "ic_sync.png", sync, 0, 0);
            //ToolbarItems.Add(tbiSync);

            MessagingCenter.Subscribe <TabbedDayView>(this, "delete_corso", (sender) => {
                loadListCorsiGiorno();
            });
            MessagingCenter.Subscribe <OrarioFavCell> (this, "delete_corso_fav", (sender) => {
                loadListCorsiGiorno();
            });

            MessagingCenter.Subscribe <OrarioFavCell> (this, "delete_corso_fav_impostazioni", (sender) => {
                loadListCorsiGiorno();
            });

            MessagingCenter.Subscribe <TabbedDayView, int>(this, "pullToRefresh", (sender, x) =>
            {
                //serve per refreshare i corsi nella tabbed day view
                //this.SelectedItem = null;
                loadListCorsiGiorno();
            });

            //MessagingCenter.Subscribe<OrarioGiornCell>(this, "delete_corso_context", deleteMioCorsoContext);
            //MessagingCenter.Subscribe<TabbedDayView>(this, "delete_corso", loadListCorsiGiorno());
        }
Ejemplo n.º 7
0
        private async Task updateDbOrariUtenza()
        {
            var _listOrariGiorno = _db.GetAllOrari(); //Elimina gli orari già passati

            //***TO CHECK!
            foreach (var l in _listOrariGiorno)
            {
                if (l.Date < DateTime.Today.Date) //se l'orario è di ieri lo cancello
                {
                    _db.DeleteSingleOrari(l.IdOrario);
                }
            }
            ;

            if (!CrossConnectivity.Current.IsConnected)
            { //non connesso a internet
                var toast = DependencyService.Get <IToastNotificator>();
                await toast.Notify(ToastNotificationType.Error, "Errore", "Nessun accesso a internet", TimeSpan.FromSeconds(3));

                return;
            }

            foreach (var day in _viewModel.ListGiorni)
            {
                //Corsi generale, utenza + corsi
                var    db = Settings.FacoltaDB;
                string s  = await Web.GetOrarioGiornaliero(Settings.FacoltaDB, Settings.FacoltaId, 0, day.DateString);

                List <CorsoGiornaliero> listaCorsi = Web.GetSingleOrarioGiornaliero(s, 0, day.Data);

                if (listaCorsi.Count() != 0)
                {
                    updateSingleCorso(_db, listaCorsi);
                }
            }

            Settings.MieiCorsiCount = _db.GetAllMieiCorsi().Count();
            _db.CheckUtenzeDoppioni();

            //Settings.LastUpdate = DateTime.Now.ToString ("R");
            //Settings.ToUpdate = false;
            Settings.LastUpdate = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
        }
Ejemplo n.º 8
0
        private async void toolbarItem_next()
        {
            ToolbarItems.Remove(tbiNext);
            _activityIndicator.IsRunning = true;
            _activityIndicator.IsVisible = true;

            //**NON C'E CONNESSIONE INTERNET**
            if (!CrossConnectivity.Current.IsConnected)
            {   //non connesso a internet
                var toast = DependencyService.Get <IToastNotificator>();
                await toast.Notify(ToastNotificationType.Error, "Errore", "Nessun accesso a internet", TimeSpan.FromSeconds(3));

                return;
            }

            foreach (var preferito in _preferiti)
            {
                //add corso
                var corso = new Corso()
                {
                    Insegnamento = preferito.Insegnamento, Codice = preferito.Codice, Docente = preferito.Docente,
                };
                await _service.AddCorso(corso);

                corso = await _service.GetCorso(corso);

                preferito.IdCorso = corso.Id;
                //add preferito
                await _service.AddPreferito(preferito);

                _db.Insert(preferito);
            }


            Settings.MieiCorsiCount = _db.GetAllMieiCorsi().Count();

            if (DateTime.Now.Hour > Settings.UpdateHour)             // && DateTime.Now.Minute > Settings.UpdateMinute)
            {
                _oggi = new DayViewModel()
                {
                    Data = DateTime.Today.AddDays(1)
                };
                _domani = new DayViewModel()
                {
                    Data = _oggi.Data.AddDays(1)
                };
                _dopodomani = new DayViewModel()
                {
                    Data = _domani.Data.AddDays(1)
                };
            }
            else
            {
                _oggi = new DayViewModel()
                {
                    Data = DateTime.Today
                };
                _domani = new DayViewModel()
                {
                    Data = _oggi.Data.AddDays(1)
                };
                _dopodomani = new DayViewModel()
                {
                    Data = _domani.Data.AddDays(1)
                };
            }

            DateTime[] arrayDate = new DateTime[] { _oggi.Data, _domani.Data, _dopodomani.Data };

            if (!CrossConnectivity.Current.IsConnected)               //non connesso a internet
            {
                var toast = DependencyService.Get <IToastNotificator>();
                await toast.Notify(ToastNotificationType.Error, "Errore", "Nessun accesso a internet", TimeSpan.FromSeconds(3));

                return;
            }
            else                //CONNESSIONE A INTERNET
            {
                foreach (var d in arrayDate)
                {
                    //Corsi generale, utenza + corsi
                    string s = await Web.GetOrarioGiornaliero(Settings.FacoltaDB, Settings.FacoltaId, 0, d.ToString("dd'/'MM'/'yyyy"));

                    List <CorsoGiornaliero> listaCorsi = Web.GetSingleOrarioGiornaliero(s, 0, d);

                    if (listaCorsi.Count() != 0)
                    {
                        TabbedHomeView.updateSingleCorso(_db, listaCorsi);
                    }
                }
            }

            _activityIndicator.IsRunning = false;
            _activityIndicator.IsVisible = false;

            if (Settings.BackgroundSync)
            {
                DependencyService.Get <INotification> ().BackgroundSync();
            }

            await Navigation.PushModalAsync(new MasterDetailView()
            {
                Service = _service
            });
        }
//		public SampleSchedulingService() : base("SchedulingIntentService")
//		{ }

        protected async override void OnHandleIntent(Android.Content.Intent intent)
        {
            Logcat.Write("ALARM: " + DateTime.Now.ToLongTimeString());

            _db = App.Database;

            if (_db == null)
            {
                App.Init(new DbSQLite(new SQLite_Android().GetConnection()));
                _db = App.Database;
//				if (_db == null)
//					Logcat.Write ("_db ancora NULL dopo INIT");
//				else
//					Logcat.Write ("_db NOT NULL dopo INIT");
            }
            else
            {
                Logcat.Write("_db NOT NULL");
            }

            Logcat.WriteDB(_db, "Allarme attivato");
            Logcat.Write("NUMERO MIEI CORSI: " + _db.GetAllMieiCorsi().Count());

            _intent = intent;
            //_listOrariGiorno = _db.GetAllOrari();

            Logcat.Write("Updating Date Time");
            if (DateTime.Now.Hour > Settings.UpdateHour) // && DateTime.Now.Minute > Settings.UpdateMinute)
            {
                _oggi = new DayViewModel()
                {
                    Data = DateTime.Today.AddDays(1)
                };
                _domani = new DayViewModel()
                {
                    Data = _oggi.Data.AddDays(1)
                };
                _dopodomani = new DayViewModel()
                {
                    Data = _domani.Data.AddDays(1)
                };
            }
            else
            {
                _oggi = new DayViewModel()
                {
                    Data = DateTime.Today
                };
                _domani = new DayViewModel()
                {
                    Data = _oggi.Data.AddDays(1)
                };
                _dopodomani = new DayViewModel()
                {
                    Data = _domani.Data.AddDays(1)
                };
            }


            if (!CrossConnectivity.Current.IsConnected)
            { //non connesso a internet
                Logcat.WriteDB(_db, "*************ERRORE");
                Logcat.WriteDB(_db, "AGGIORNAMENTO NON RIUSCITO, nessun accesso a internet");
                Logcat.Write("AGGIORNAMENTO NON RIUSCITO, nessun accesso a internet");
                //var toast = DependencyService.Get<IToastNotificator>();
                //await toast.Notify (ToastNotificationType.Error, "Errore", "Nessun accesso a internet", TimeSpan.FromSeconds (3));
                return;
            }

            /*SYNCRONIZZAZIONE BACKGROUND
             * lista dei corsi salvati. Scandisco ogni elemento della lista con la lista di tutti i corsi di giornata
             * se insegnamento+ora sono uguali, verifico se le Note cambiano. Se cambiano, la salvo nel database e invio la notifica
             * */
            try
            {
                for (int i = 0; i < 3; i++)
                {
                    Logcat.WriteDB(_db, string.Format("Tentativo {0} - SyncAzure", i + 1));
                    var success = await _db.SynchronizeAzureDb();

                    if (!success)
                    {
                        Logcat.WriteDB(_db, "*************ERRORE");
                        Logcat.WriteDB(_db, "SINCRONIZZAZIONE AZURE NON RIUSCITA, nessun accesso a internet");
                        //RETRYING??
                        continue; //riprovo
                        //return;
                    }
                    Logcat.WriteDB(_db, "---Autenticazione avvenuta con succeso!");

                    await updateDbOrariUtenza();

                    break; //se autenticazione avvenuta con successo, esco dal ciclo
                }
            }
            catch (Exception ex)
            {
                Logcat.WriteDB(_db, ex.Message);
                Logcat.Write(ex.Message);
            }

            // Release the wake lock provided by the BroadcastReceiver.
            SampleAlarmReceiver.CompleteWakefulIntent(intent);
        }