Esempio n. 1
0
        private int GetCourseHandicap(TournamentPlayer p, Tournament t)
        {
            int TournamentHandicapId = 0;


            if (p.Gender == Gender.Mann)
            {
                TournamentHandicapId = t.HandicapTableMaleId;
            }
            else
            {
                TournamentHandicapId = t.HandicapTableFemaleId;
            }

            IDataStore <CourseHandicapTable> DataStore = DependencyService.Get <IDataStore <CourseHandicapTable> >();
            var CourseHandicapTask = DataStore.GetItemsAsync();
            List <CourseHandicapTable> CourseHandicaps = CourseHandicapTask.Result.ToList();

            CourseHandicapTable currentTable = CourseHandicaps.Where(x => x.Id == TournamentHandicapId).FirstOrDefault();

            double currentHdcp = p.Handicap;

            try
            {
                if (TournamentEvent.HandicapType == HandicapTypeEnum.DGVHandicap)
                {
                    currentHdcp = p.DGVHandicap;
                }

                if (currentHdcp <= 36)
                {
                    // calculate course handicap, take negativ hdcp to use old formula
                    if (currentHdcp > 0)
                    {
                        currentHdcp *= -1;
                    }

                    int currentCourseHdcp = (int)Math.Round((((double)currentHdcp * currentTable.Slope / ((double)113)) - (double)currentTable.CR + (double)currentTable.Par));
                    if (currentCourseHdcp < 0)
                    {
                        currentCourseHdcp *= -1;
                    }

                    return(currentCourseHdcp);
                }
                else
                {
                    currentHdcp = (int)Math.Round(currentHdcp + currentTable.HandicapStrokes);
                }
            }
            catch (Exception)
            {
                return((int)Math.Round(currentHdcp));
            }


            return((int)Math.Round(currentHdcp));
        }
Esempio n. 2
0
        public TournamentPageData(Tournament tournament)
        {
            PlayerResults    = new ObservableCollection <TournamentResultSummary>();
            AllPlayerResults = new ObservableCollection <MFAppFullTournamentResult>();

            Tournament     = tournament;
            TournamentDate = tournament.Datum.ToString("dd.MM.yyyy hh:mm");
            // get event
            // get Tournament
            IDataStore <Event> DataStoreEvent = DependencyService.Get <IDataStore <Event> >();
            var          EventTask            = DataStoreEvent.GetItemsAsync();
            List <Event> Events = EventTask.Result.ToList();

            TournamentEvent = null;
            foreach (Event e in Events)
            {
                if (e.Id == tournament.EventId)
                {
                    TournamentEvent = e;
                    break;
                }
            }

            // get club
            IDataStore <Golfclub> DataStoreGolfclub = DependencyService.Get <IDataStore <Golfclub> >();
            var             GolfclubTask            = DataStoreGolfclub.GetItemsAsync();
            List <Golfclub> Golfclubs = GolfclubTask.Result.ToList();

            TournamentClub = Golfclubs.Where(x => x.Id == TournamentEvent.GolfclubId).FirstOrDefault();

            // get course
            IDataStore <Course> DataStoreCourse = DependencyService.Get <IDataStore <Course> >();
            var           CourseTask            = DataStoreCourse.GetItemsAsync();
            List <Course> Courses = CourseTask.Result.ToList();

            foreach (Course c in Courses)
            {
                if (Tournament.CourseId == c.Id)
                {
                    Course = c;
                    break;
                }
            }

            // get list of tees
            IDataStore <Tee> DataStoreTee = DependencyService.Get <IDataStore <Tee> >();
            var        TeeTask            = DataStoreTee.GetItemsAsync();
            List <Tee> Tees = TeeTask.Result.ToList();

            TeeList = Tees.Where(x => x.CourseId == Course.Id).OrderBy(y => y.Name).ToList();

            AllPlayers      = new ObservableCollection <TournamentPlayer>();
            SelectedPlayers = new ObservableCollection <TournamentPlayer>();

            // get current player
            Profile CurrentProfile = null;

            IDataStore <Profile> DataStoreProfile = DependencyService.Get <IDataStore <Profile> >();
            var profilesTask = DataStoreProfile.GetItemsAsync();
            var profiles     = profilesTask.Result;

            foreach (Profile p in profiles)
            {
                CurrentProfile = p;
                break;
            }

            // find existing flight
            List <int> FlightPlayerIds = new List <int>();

            IDataStore <Flight> DataStoreFlight = DependencyService.Get <IDataStore <Flight> >();
            var           FlightTask            = DataStoreFlight.GetItemsAsync();
            List <Flight> Flights = FlightTask.Result.ToList();

            IDataStore <Flight2Player> DataStoreFlight2Player = DependencyService.Get <IDataStore <Flight2Player> >();
            var Flight2PlayerTask = DataStoreFlight2Player.GetItemsAsync();
            List <Flight2Player> Flight2Players = Flight2PlayerTask.Result.ToList();

            if (!Tournament.ManagedFlights)
            {
                int flightNumber = Tournament.Id * 10000 + CurrentProfile.Id;

                FlightPlayerIds = Flight2Players.Where(x => x.FlightId == flightNumber).Select(x => x.PlayerId).ToList();

                if (FlightPlayerIds.Count() == 0)
                {
                    // no player in flight, add current player
                    FlightPlayerIds.Add(CurrentProfile.Id);
                }
                TournamentFlight = "Mein Flight";
            }
            else
            {
                // get my flight number
                List <Flight> flightList = Flights.Where(x => x.TournamentId == Tournament.Id).ToList();
                foreach (Flight f in flightList)
                {
                    // check if I am in flight
                    var flightPlayer = Flight2Players.Where(x => x.FlightId == f.Id).Where(y => y.PlayerId == CurrentProfile.Id).FirstOrDefault();
                    if (flightPlayer != null)
                    {
                        // flight found
                        TournamentFlight = "Flight " + f.FlightNumber.ToString() + ": " + f.FlightName;
                        FlightPlayerIds  = Flight2Players.Where(x => x.FlightId == f.Id).Select(x => x.PlayerId).ToList();
                        break;
                    }
                    else
                    {
                        // no flight found
                        TournamentFlight = "Aktuell noch kein Flight!";
                    }
                }
            }

            // Fill All Players
            IDataStore <Player> DataStore = DependencyService.Get <IDataStore <Player> >();
            var           PlayerTask      = DataStore.GetItemsAsync();
            List <Player> players         = PlayerTask.Result.ToList();

            players = players.OrderBy(x => x.Name).ToList();

            foreach (Player p in players)
            {
                TournamentPlayer tp = new TournamentPlayer
                {
                    Id             = p.Id,
                    UserName       = p.UserName,
                    Name           = p.Name,
                    Initials       = p.Initials,
                    Handicap       = p.Handicap,
                    DGVHandicap    = p.DGVHandicap,
                    Mail           = p.Mail,
                    Gender         = p.Gender,
                    CourseHandicap = (int)p.Handicap,
                    Selected       = false
                };

                tp.CourseHandicap = GetCourseHandicap(tp, Tournament);

                if (TournamentEvent.HandicapType == HandicapTypeEnum.DGVHandicap)
                {
                    tp.Handicap = p.DGVHandicap;
                }

                if (CurrentProfile.UserName.ToLower() == tp.UserName.ToLower())
                {
                    CurrentPlayer = p;
                }

                if (FlightPlayerIds.Count() > 0)
                {
                    foreach (int i in FlightPlayerIds)
                    {
                        if (i == tp.Id)
                        {
                            tp.Selected = true;
                            // add to selected players
                            SelectedPlayers.Add(tp);
                            break;
                        }
                    }
                }

                AllPlayers.Add(tp);
            }

            SelectedPlayers = SortFlightPlayer(SelectedPlayers);
        }