示例#1
0
        public async Task <bool> SyncMFWeb()
        {
            try
            {
                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri($"https://demo.portivity.de/mfweb/api/");

                bool IsConnected = Connectivity.NetworkAccess == NetworkAccess.Internet;
                if (IsConnected)
                {
                    var json = await client.GetStringAsync($"MyAppData/GetMyAppData/");

                    MFWebAPIData item = (MFWebAPIData)await Task.Run(() => JsonConvert.DeserializeObject <MFWebAPIData>(json));

                    #region golfclubs
                    try
                    {
                        conn.Execute("DELETE FROM Golfclub");
                    }
                    catch (Exception) { }

                    IDataStore <Golfclub> DataStore = DependencyService.Get <IDataStore <Golfclub> >();
                    foreach (Golfclub golfclub in item.Golfclubs)
                    {
                        DataStore.AddItemAsync(golfclub);
                    }
                    #endregion

                    #region Event
                    try
                    {
                        conn.Execute("DELETE FROM Event");
                    }
                    catch (Exception) { }

                    IDataStore <Event> DataStoreEvent = DependencyService.Get <IDataStore <Event> >();
                    foreach (Event e in item.Events)
                    {
                        DataStoreEvent.AddItemAsync(e);
                    }
                    #endregion

                    #region Tournaments
                    try
                    {
                        conn.Execute("DELETE FROM Tournament");
                    }
                    catch (Exception) { }

                    IDataStore <Tournament> DataStoreTournament = DependencyService.Get <IDataStore <Tournament> >();
                    foreach (Tournament t in item.Tournaments)
                    {
                        DataStoreTournament.AddItemAsync(t);
                    }
                    #endregion

                    #region Course
                    try
                    {
                        conn.Execute("DELETE FROM Course");
                    }
                    catch (Exception) { }

                    IDataStore <Course> DataStoreCourse = DependencyService.Get <IDataStore <Course> >();
                    foreach (Course c in item.Courses)
                    {
                        DataStoreCourse.AddItemAsync(c);
                    }
                    #endregion

                    #region Tee
                    try
                    {
                        conn.Execute("DELETE FROM Tee");
                    }
                    catch (Exception) { }

                    IDataStore <Tee> DataStoreTee = DependencyService.Get <IDataStore <Tee> >();
                    foreach (Tee t in item.Tees)
                    {
                        DataStoreTee.AddItemAsync(t);
                    }
                    #endregion

                    #region TeeInfo
                    try
                    {
                        conn.Execute("DELETE FROM TeeInfo");
                    }
                    catch (Exception) { }

                    IDataStore <TeeInfo> DataStoreTeeinfo = DependencyService.Get <IDataStore <TeeInfo> >();
                    foreach (TeeInfo t in item.TeeInfos)
                    {
                        DataStoreTeeinfo.AddItemAsync(t);
                    }
                    #endregion

                    #region Flight
                    try
                    {
                        conn.Execute("DELETE FROM Flight2Player Where Id < 100000");
                    }
                    catch (Exception) { }
                    try
                    {
                        conn.Execute("DELETE FROM Flight Where Id < 10000");
                    }
                    catch (Exception) { }

                    IDataStore <Flight>        DataStoreFlight        = DependencyService.Get <IDataStore <Flight> >();
                    IDataStore <Flight2Player> DataStoreFlight2Player = DependencyService.Get <IDataStore <Flight2Player> >();

                    foreach (MFAppFlight t in item.Flights)
                    {
                        Flight f = new Flight()
                        {
                            Id           = t.Id,
                            FlightNumber = t.FlightNumber,
                            FlightName   = t.FlightName,
                            TournamentId = t.TournamentId
                        };

                        DataStoreFlight.AddItemAsync(f);

                        foreach (Player p in t.Players)
                        {
                            Flight2Player f2p = new Flight2Player()
                            {
                                Id       = (t.Id * 10000) + p.Id,
                                FlightId = t.Id,
                                PlayerId = p.Id
                            };

                            DataStoreFlight2Player.AddItemAsync(f2p);
                        }
                    }
                    #endregion

                    #region CourseHandicapTable
                    try
                    {
                        conn.Execute("DELETE FROM CourseHandicap");
                    }
                    catch (Exception) { }
                    try
                    {
                        conn.Execute("DELETE FROM CourseHandicapTable");
                    }
                    catch (Exception) { }

                    IDataStore <CourseHandicapTable> DataStoreCourseHandicapTable = DependencyService.Get <IDataStore <CourseHandicapTable> >();
                    IDataStore <CourseHandicap>      DataStoreCourseHandicap      = DependencyService.Get <IDataStore <CourseHandicap> >();

                    foreach (MFAppCourseHandicapTable ct in item.CourseHandicapTables)
                    {
                        CourseHandicapTable cht = new CourseHandicapTable
                        {
                            Id        = ct.Id,
                            TeeColour = ct.TeeColour,
                            TeeGender = ct.TeeGender,
                            CourseId  = ct.CourseId,
                            Par       = ct.Par,
                            CR        = ct.CR,
                            Slope     = ct.Slope
                        };

                        DataStoreCourseHandicapTable.AddItemAsync(cht);

                        foreach (CourseHandicap ch in ct.CourseHandicaps)
                        {
                            DataStoreCourseHandicap.AddItemAsync(ch);
                        }
                    }
                    #endregion


                    try
                    {
                        conn.Execute("DELETE FROM Player");
                    }
                    catch (Exception) { }

                    IDataStore <Player> DataStorePlayer = DependencyService.Get <IDataStore <Player> >();
                    foreach (Player player in item.AllPlayers)
                    {
                        DataStorePlayer.AddItemAsync(player);
                    }
                }
            }
            catch (Exception exp)
            {
                return(await Task.FromResult(false));
            }

            return(await Task.FromResult(true));
        }
示例#2
0
        public async Task <bool> SyncMFWebSynchron()
        {
            Debug.Print("Start Sync: " + DateTime.Now.ToString("hh:mm:ss.fff"));
            try
            {
                // get current profile
                IDataStore <Profile> DataStoreProfile = DependencyService.Get <IDataStore <Profile> >();
                int     currentPlayerId = 0;
                Profile currentProfile  = null;
                try
                {
                    var profilesTask = DataStoreProfile.GetItemsAsync();
                    currentProfile = profilesTask.Result.FirstOrDefault();
                    if (currentProfile != null)
                    {
                        currentPlayerId = currentProfile.Id;
                    }
                }
                catch (Exception) { }

                Debug.Print("Start Sync mit Profil: " + DateTime.Now.ToString("hh:mm:ss.fff"));
                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri($"https://demo.portivity.de/mfweb/api/");

                bool IsConnected = Connectivity.NetworkAccess == NetworkAccess.Internet;
                if (IsConnected)
                {
                    string webCall = $"MyAppData/GetMyAppData/";
                    if (currentPlayerId > 0)
                    {
                        webCall = $"MyAppData/GetMyAppData?PlayerId=" + currentPlayerId.ToString();
                    }
                    var    ResultTask = client.GetStringAsync(webCall);
                    string json       = ResultTask.Result.ToString();
                    Debug.Print("Daten vom web: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    MFWebAPIData item = (MFWebAPIData)JsonConvert.DeserializeObject <MFWebAPIData>(json);

                    Debug.Print("Daten aufbereitet: " + DateTime.Now.ToString("hh:mm:ss.fff"));
                    #region golfclubs
                    try
                    {
                        conn.Execute("DELETE FROM Golfclub");
                    }
                    catch (Exception) { }

                    IDataStore <Golfclub> DataStore = DependencyService.Get <IDataStore <Golfclub> >();
                    foreach (Golfclub golfclub in item.Golfclubs)
                    {
                        DataStore.AddItemAsync(golfclub);
                    }
                    #endregion

                    Debug.Print("End Sync Golfclubs: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    #region Event
                    try
                    {
                        conn.Execute("DELETE FROM Event Where Id<1000000");
                        //string sqlString = "DELETE FROM Event where EventDate < '" + DateTime.Today.AddDays(-7).ToString("yyyy-MM-dd") + "'";
                        //conn.Execute(sqlString);
                    }
                    catch (Exception) { }

                    IDataStore <Event> DataStoreEvent = DependencyService.Get <IDataStore <Event> >();
                    foreach (Event e in item.Events)
                    {
                        DataStoreEvent.AddItemAsync(e);
                    }
                    #endregion
                    Debug.Print("End Sync Events: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    #region Tournaments
                    try
                    {
                        conn.Execute("DELETE FROM Tournament Where Id<1000000");
                        //string sqlString = "DELETE FROM Tournament where Datum < '" + DateTime.Today.AddDays(-7).ToString("yyyy-MM-dd") + "'";
                        //conn.Execute(sqlString);
                    }
                    catch (Exception) { }

                    IDataStore <Tournament> DataStoreTournament = DependencyService.Get <IDataStore <Tournament> >();
                    foreach (Tournament t in item.Tournaments)
                    {
                        DataStoreTournament.AddItemAsync(t);
                    }
                    #endregion

                    Debug.Print("End Sync Turniere: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    #region Course
                    try
                    {
                        conn.Execute("DELETE FROM Course");
                    }
                    catch (Exception) { }

                    IDataStore <Course> DataStoreCourse = DependencyService.Get <IDataStore <Course> >();
                    foreach (Course c in item.Courses)
                    {
                        DataStoreCourse.AddItemAsync(c);
                    }
                    #endregion

                    Debug.Print("End Sync Kurse: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    #region Tee
                    //try
                    //{
                    //    conn.Execute("DELETE FROM Tee");
                    //}
                    //catch (Exception) { }

                    IDataStore <Tee> DataStoreTee = DependencyService.Get <IDataStore <Tee> >();
                    var        TeeTask            = DataStoreTee.GetItemsAsync();
                    List <Tee> Tees = TeeTask.Result.ToList();

                    foreach (Tee t in item.Tees)
                    {
                        if (Tees.Where(x => x.Id == t.Id).FirstOrDefault() == null)
                        {
                            await DataStoreTee.AddItemAsync(t);
                        }
                        else
                        {
                            Tee currentTee = Tees.Where(x => x.Id == t.Id).FirstOrDefault();
                            currentTee.Length    = t.Length;
                            currentTee.LengthRed = t.LengthRed;
                            currentTee.Hcp       = t.Hcp;
                            currentTee.Name      = t.Name;
                            currentTee.Par       = t.Par;
                            currentTee.Textname  = t.Textname;

                            await DataStoreTee.UpdateItemAsync(currentTee);
                        }
                    }
                    #endregion

                    Debug.Print("End Sync Tees: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    #region TeeInfo
                    try
                    {
                        conn.Execute("DELETE FROM TeeInfo");
                    }
                    catch (Exception) { }

                    IDataStore <TeeInfo> DataStoreTeeinfo = DependencyService.Get <IDataStore <TeeInfo> >();
                    foreach (TeeInfo t in item.TeeInfos)
                    {
                        DataStoreTeeinfo.AddItemAsync(t);
                    }
                    #endregion

                    #region Flight
                    try
                    {
                        conn.Execute("DELETE FROM Flight2Player Where Id < 100000");
                    }
                    catch (Exception) { }
                    try
                    {
                        conn.Execute("DELETE FROM Flight Where Id < 10000");
                    }
                    catch (Exception) { }

                    IDataStore <Flight>        DataStoreFlight        = DependencyService.Get <IDataStore <Flight> >();
                    IDataStore <Flight2Player> DataStoreFlight2Player = DependencyService.Get <IDataStore <Flight2Player> >();

                    foreach (MFAppFlight t in item.Flights)
                    {
                        Flight f = new Flight()
                        {
                            Id           = t.Id,
                            FlightNumber = t.FlightNumber,
                            FlightName   = t.FlightName,
                            TournamentId = t.TournamentId
                        };

                        DataStoreFlight.AddItemAsync(f);

                        foreach (Player p in t.Players)
                        {
                            Flight2Player f2p = new Flight2Player()
                            {
                                Id       = (t.Id * 10000) + p.Id,
                                FlightId = t.Id,
                                PlayerId = p.Id
                            };

                            DataStoreFlight2Player.AddItemAsync(f2p);
                        }
                    }
                    #endregion

                    Debug.Print("End Sync Flights: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    #region CourseHandicapTable
                    try
                    {
                        conn.Execute("DELETE FROM CourseHandicap");
                    }
                    catch (Exception) { }
                    try
                    {
                        conn.Execute("DELETE FROM CourseHandicapTable");
                    }
                    catch (Exception) { }

                    IDataStore <CourseHandicapTable> DataStoreCourseHandicapTable = DependencyService.Get <IDataStore <CourseHandicapTable> >();
                    IDataStore <CourseHandicap>      DataStoreCourseHandicap      = DependencyService.Get <IDataStore <CourseHandicap> >();

                    var CourseHandicapTableTask = DataStoreCourseHandicapTable.GetItemsAsync();
                    List <CourseHandicapTable> CourseHandicapTables = CourseHandicapTableTask.Result.ToList();

                    foreach (MFAppCourseHandicapTable ct in item.CourseHandicapTables)
                    {
                        if (CourseHandicapTables.Where(x => x.Id == ct.Id).FirstOrDefault() == null)
                        {
                            CourseHandicapTable cht = new CourseHandicapTable
                            {
                                Id              = ct.Id,
                                TeeColour       = ct.TeeColour,
                                TeeGender       = ct.TeeGender,
                                CourseId        = ct.CourseId,
                                Par             = ct.Par,
                                CR              = ct.CR,
                                Slope           = ct.Slope,
                                HandicapStrokes = ct.HandicapStrokes
                            };

                            DataStoreCourseHandicapTable.AddItemAsync(cht);

                            //foreach (CourseHandicap ch in ct.CourseHandicaps)
                            //{
                            //    DataStoreCourseHandicap.AddItemAsync(ch);

                            //}
                        }
                    }
                    #endregion

                    Debug.Print("End Sync Vorgaben: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    try
                    {
                        conn.Execute("DELETE FROM Player");
                    }
                    catch (Exception) { }

                    Player currentPlayer = null;
                    IDataStore <Player> DataStorePlayer = DependencyService.Get <IDataStore <Player> >();
                    foreach (Player player in item.AllPlayers)
                    {
                        await DataStorePlayer.AddItemAsync(player);

                        if ((currentProfile != null) && (currentProfile.Id == player.Id))
                        {
                            currentPlayer = player;
                        }
                    }

                    Debug.Print("End Sync Spieler: " + DateTime.Now.ToString("hh:mm:ss.fff"));

                    try
                    {
                        // clean old result data
                        //string sqlString = "DELETE FROM Result where LastModified < '" + DateTime.Today.AddDays(-7).ToString("yyyy-MM-dd") + "'";
                        //conn.Execute(sqlString);
                    }
                    catch (Exception) { }

                    // save last sync date
                    if (currentProfile != null)
                    {
                        if (currentPlayer != null)
                        {
                            currentProfile.Handicap    = currentPlayer.Handicap;
                            currentProfile.DGVHandicap = currentPlayer.DGVHandicap;
                            currentProfile.Mail        = currentPlayer.Mail;
                            currentProfile.Name        = currentPlayer.Name;
                        }
                        currentProfile.LastSync = DateTime.Now;
                        DataStoreProfile.UpdateItemAsync(currentProfile);
                    }
                }
            }
            catch (Exception exp)
            {
                return(await Task.FromResult(false));
            }

            Debug.Print("End Sync: " + DateTime.Now.ToString("hh:mm:ss.fff"));

            return(await Task.FromResult(true));
        }