private Dictionary <SeasonDivisionsModel, TeamModel[]> doTeamStuff(SeasonDivisionsModel sdm, DivisionModel d)
        {
            d.DivisionTeams = GlobalConfig.Connection.GetDivisionTeams(sdm);
            // TODO work out where teams is best places division or sdm
            sdm.teams = d.DivisionTeams;
            int arraySize = d.DivisionTeams.Count;

            teamsArray = new TeamModel[arraySize];

            if ((arraySize % 2) == 1)
            {
                TeamModel bye = GlobalConfig.Connection.GetBye();
                teamsArray            = new TeamModel[arraySize + 1];
                teamsArray[arraySize] = bye;
            }
            int i = 0;

            foreach (TeamModel team in d.DivisionTeams)
            {
                team.TeamMembers = GlobalConfig.Connection.GetSeasonDivisionTeamMembers(seasonID, d.DivisionID, team.TeamID);
                teamsArray[i]    = team;
                i++;
            }
            // add skipped dates to divisionModel
            List <SkippedDatesModel> skDates = GlobalConfig.Connection.GetSkippedDates(sdm);

            foreach (SkippedDatesModel sk in skDates)
            {
                d.DivisionSkippedDates.Add(sk.DateToSkip);
            }
            sdm.skippedDates = skDates;
            divTeams.Add(sdm, teamsArray);

            return(divTeams);
        }
Beispiel #2
0
        private void createDivisionButton_Click(object sender, EventArgs e)
        {
            {
                // make sure form is valid
                // == "" checks incase data was valid but was deleted before pressing create
                if ((nameValid == true) && (DivisionNameTextbox.Text != "") &&
                    (numberValid == true) && (DivisionNumberTextbox.Text != "") &&
                    (startDateValid == true))
                {
                    // create a division model
                    DivisionModel model = createDivision();
                    sdm = createSeasonDivisionsModel(model);

                    createSkippedDates(sdm);
                    //GlobalConfig.Connection.createSeasonDivisions(sdm);
                    callingForm.DivisionComplete(model);
                    updateData();
                    MessageBox.Show("Division Successfully Created");
                    if (method == "createNewDivisionLinkLabel_LinkClicked")
                    {
                        this.Close();
                        //MessageBox.Show("From Create Division Form");
                    }
                    //clearForm();
                }
                else
                {
                    formFilledIn();
                }
            }
        }
Beispiel #3
0
 /// <summary>
 /// When dates have been successfully added to Division "frame"
 /// </summary>
 /// <param name="model"></param>t
 public void DatesComplete(SeasonDivisionsModel model)
 {
     sdm.StartDate = model.StartDate;
     wireUpDivisionListBox();
     wireUpTeamsDivisionComboBox();
     WireUpDivisionComboBox();
 }
        /// <summary>
        /// What happens when user makes a Division selection
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DivisionNameComboBox_SelectedValueChanged(object sender, EventArgs e)
        {
            //clears team listbox
            teamsListBox.DataSource = null;
            // i.e. if a Division has been selected
            if (formReady() == true)
            {
                // Get/Create Division Model that has been selected
                dm  = (DivisionModel)DivisionNameComboBox.SelectedItem;
                sdm = GlobalConfig.Connection.GetSeasonDivisionModel(dm);
                //Display Division details
                DisplayDivisionNumber(dm);
                sdm.skippedDates = getSkippedDates(sdm);
                updateSkippedDatesBox();
                DisplayDivisionStartDate(sdm);

                originalDivName = dm.DivisionName;
                divNames.Clear();
                getDivNames(divs);
                originalDivNumber = dm.DivisionNumber;
                divNumbers.Clear();
                getDivNumbers(divs);
                selectedTeams  = getDivisionTeams(sdm);
                teamsAvailable = getAvailableTeams(sdm);
                WireupTeamLists(teamsAvailable, selectedTeams);
                UpdateDivName(DivisionNameComboBox);
                UpdateDivNumber(DivNumberLabel);
            }
            else
            {
                resetForm();
            }
        }
        // TODO : make it so available teams only includes those not assigned to a division
        /// <summary>
        /// removes teams already assigned to divison from
        /// list of all teams
        /// </summary>
        /// <param name="dm"></param>
        private List <TeamModel> getAvailableTeams(SeasonDivisionsModel sdm)
        {
            // Get ALL teams
            teamsAvailable = GlobalConfig.Connection.GetAllTeams();
            //// Add Selected Teams to a temp list.
            //// WHY???? no idea but cant make it work without doing this.
            //// I thought foreach in selected remove from available would work but nope
            //foreach (TeamModel team in selectedTeams)
            //{
            //    int id = team.TeamID;
            //    foreach(TeamModel aTeam in teamsAvailable)
            //    {
            //        if(id == aTeam.TeamID)
            //        {
            //            tempTeamsList.Add(aTeam);
            //        }
            //    }
            //}
            //// if teamsAvailable list has any of the teams in the temp list remove them from
            //// teamsAvailable list
            //foreach (TeamModel temp in tempTeamsList)
            //{
            //    teamsAvailable.Remove(temp);
            //}

            //11:42pm 11/1/18 learning Linq is a must saved a lot of thinking and coding
            teamsAvailable.RemoveAll(x => selectedTeams.Any(y => y.TeamID == x.TeamID));
            return(teamsAvailable);
        }
Beispiel #6
0
 /// <summary>
 /// Wires up Teams List Box to display selected teams names
 /// </summary>
 private void wireupTeamsListBox()
 {
     dm  = (DivisionModel)teamsDivisionComboBox.SelectedItem;
     sdm = GlobalConfig.Connection.GetSeasonDivisionModel(dm);
     teamsListBox.DataSource    = null;
     teamsListBox.DataSource    = GlobalConfig.Connection.GetDivisionTeams(sdm);
     teamsListBox.DisplayMember = "TeamName";
 }
        private Dictionary <DivisionModel, List <RoundModel> > doRoundStuff(SeasonDivisionsModel sdm, DivisionModel d)
        {
            List <RoundModel> rounds = new List <RoundModel>();
            DateTime          startDate;
            int      RoundNumber = 1;
            DateTime roundDate;

            // Start Date of Division
            startDate = sdm.StartDate;
            // New Round Model for each Round in Division
            RoundModel rm = new RoundModel();

            // Division ID for round Model
            rm.SeasonDivisionsID = sdm.SeasonDivisionsID;
            // intial date of current date providing date is not a skipped date
            roundDate = startDate;
            int roundLength;

            // If divisionTeamsCount is Odd means a bye is added
            if (d.DivisionTeams.Count % 2 == 1)
            {
                roundLength = d.DivisionTeams.Count;
            }
            else
            // If no bye added number of rounds is one less than number of teams
            {
                roundLength = d.DivisionTeams.Count - 1;
            }
            for (int i = 0; i < roundLength; i++)
            {
                // Iterate round number
                rm.RoundNumber = RoundNumber++;
                // if RoundDate is a skipped date
                if (isSkippedDate(d, roundDate))
                {
                    // could be mutiple skipped dates in a row
                    while (isSkippedDate(d, roundDate))
                    {
                        roundDate    = roundDate.AddDays(7);
                        rm.RoundDate = roundDate;
                    }
                }
                else
                {
                    rm.RoundDate = roundDate;
                }
                GlobalConfig.Connection.CreateRound(rm);
                rounds.Add(rm);

                roundDate = roundDate.AddDays(7);
            }
            d.DivisionRounds = rounds;

            divRounds.Add(d, rounds);

            return(divRounds);
        }
 public DivisionDatesForm(IDivisionDatesRequester caller, SeasonDivisionsModel sd, DivisionModel dm)
 {
     callingForm = caller;
     InitializeComponent();
     sdm      = sd;
     division = dm;
     seasonID = sdm.SeasonID;
     WireUpLabels();
 }
Beispiel #9
0
        private SeasonDivisionsModel createSeasonDivisionsModel(DivisionModel model)
        {
            SeasonDivisionsModel sdm = new SeasonDivisionsModel();

            sdm.SeasonID   = model.SeasonID;
            sdm.DivisionID = model.DivisionID;
            sdm.StartDate  = model.StartDate;
            return(GlobalConfig.Connection.createSeasonDivisions(sdm));
        }
Beispiel #10
0
        public void AddStartDate(SeasonDivisionsModel sdm)
        {
            using (IDbConnection connection = new MySqlConnection(GlobalConfig.CnnString(db)))
            {
                var p = new DynamicParameters();
                p.Add("InSeasonDivisionsID", sdm.SeasonDivisionsID);
                p.Add("@InStartDate", sdm.StartDate);

                connection.Execute("spAddStartDate", p, commandType: CommandType.StoredProcedure);
            }
        }
        /// <summary>
        /// Gets skipped date for division from the DB
        /// Converts skipped date field into List of DateTime
        /// populates the skipped dates list box
        /// which can be manipulated
        /// </summary>
        private List <SkippedDatesModel> getSkippedDates(SeasonDivisionsModel sdm)
        {
            List <SkippedDatesModel> sd = GlobalConfig.Connection.GetSkippedDates(sdm);

            skippedDates = new List <DateTime>();
            foreach (SkippedDatesModel skm in sd)
            {
                skippedDates.Add(skm.DateToSkip);
                OriginalskippedDates.Add(skm.DateToSkip);
            }
            return(sd);
        }
Beispiel #12
0
        public List <TeamModel> GetTeamsNotInSeason(SeasonDivisionsModel model)
        {
            List <TeamModel> output;

            using (IDbConnection connection = new MySqlConnection(GlobalConfig.CnnString(db)))
            {
                var p = new DynamicParameters();
                p.Add("@InSeasonDivisionsID", model.SeasonDivisionsID);
                output = connection.Query <TeamModel>("spGetTeamsNotInThisSeason", p, commandType: CommandType.StoredProcedure).ToList();
            }
            return(output);
        }
        private void doDivisionStuff()
        {
            divs = GlobalConfig.Connection.GetSeasonDivisions(seasonID);
            foreach (DivisionModel d in divs)
            {
                SeasonDivisionsModel sdm = GlobalConfig.Connection.GetSeasonDivisionModel(d);
                // Do team Stuff
                divTeams = doTeamStuff(sdm, d);

                divRounds = doRoundStuff(sdm, d);
                divGames  = GenerateGames(sdm, d, teamsArray);
            }
        }
Beispiel #14
0
        public List <PersonModel> GetSeasonPlayers(SeasonDivisionsModel sdm)
        {
            List <PersonModel> output;

            using (IDbConnection connection = new MySqlConnection(GlobalConfig.CnnString(db)))
            {
                var p = new DynamicParameters();
                p.Add("@InSeasonID", sdm.SeasonID);
                output = connection.Query <PersonModel>("spGetSeasonPlayers", p, commandType: CommandType.StoredProcedure).ToList();

                //}
            }
            return(output);
        }
Beispiel #15
0
        /// <summary>
        /// Create SkippedDates Model and Update DB et.al
        /// </summary>
        /// <param name="model"></param>
        private void createSkippedDates(SeasonDivisionsModel model)
        {
            List <SkippedDatesModel> skModels = new List <SkippedDatesModel>();

            foreach (DateTime date in skippedDates)
            {
                SkippedDatesModel skDates = new SkippedDatesModel(model.SeasonDivisionsID, date);
                //skDates.SeasonDivisionsID = model.SeasonDivisionsID;
                //skDates.DateToSkip = date;
                GlobalConfig.Connection.CreateSkippedDates(skDates);
                skModels.Add(skDates);
            }
            sdm.skippedDates = skModels;
            skippedDates     = new List <DateTime>();
        }
        public CreateTeamForm(ITeamRequester caller)
        {
            InitializeComponent();
            callingForm = caller;
            //createSampleData();
            HeadingLabel.Text = callingForm.DivisionName();
            sdm = callingForm.SeasonDivision();

            StackFrame frame = new StackFrame(1, true);

            method = (frame.GetMethod().Name);

            //  wireUpPlayerDropDown();
            WireupVenueDropDown();
            getTeamNames(teams);
        }
        private Dictionary <DivisionModel, List <GameModel> > GenerateGames
            (SeasonDivisionsModel sdm, DivisionModel d, TeamModel[] teams)
        {
            divGames = new Dictionary <DivisionModel, List <GameModel> >();
            // Create a List to hold games in the division
            List <GameModel> roundGames = new List <GameModel>();
            // New Game Model for each game
            GameModel game          = new GameModel();
            int       numberOfTeams = teams.Length;
            //
            int numberofGamesPerRound = numberOfTeams / 2;
            // round robin number of rounds is one less than the number of teams
            int numberOfRounds = numberOfTeams - 1;

            RoundModel rm = new RoundModel();


            Console.WriteLine($"{d.DivisionName}");
            for (int i = 0; i < numberOfRounds; i++)
            {
                Console.WriteLine($"Round Number {i + 1}");
                // g + 1 else get a blank team team rounds start at 1
                rm = GlobalConfig.Connection.getRoundModel(sdm, i + 1);

                for (int g = 0; g < numberofGamesPerRound; g++)
                {
                    game.RoundID  = rm.RoundID;
                    game.GameDate = rm.RoundDate;
                    //Console.WriteLine($"Round {a + 1}");
                    Console.WriteLine($"{teams[g].TeamName} PLAYS {teams[numberOfTeams - 1 - g].TeamName} ");
                    game.HomeTeamModel   = teams[g];
                    game.HomeTeamPlayers = teams[g].TeamMembers;
                    game.AwayTeamModel   = teams[numberOfTeams - 1 - g];
                    game.AwayTeamPlayers = teams[numberOfTeams - 1 - g].TeamMembers;

                    roundGames.Add(game);
                    GlobalConfig.Connection.CreateGame(game);
                }

                RotateTeams(teams);
            }
            divGames.Add(d, roundGames);
            return(divGames);
        }
Beispiel #18
0
        public RoundModel getRoundModel(SeasonDivisionsModel sdm, int g)
        {
            List <RoundModel> output;
            RoundModel        model = new RoundModel();

            using (IDbConnection connection = new MySqlConnection(GlobalConfig.CnnString(db)))
            {
                var p = new DynamicParameters();
                p.Add("@InSeasonDivisionsID", sdm.SeasonDivisionsID);
                p.Add("@InRoundNumber", g);
                output = connection.Query <RoundModel>("spGetRoundModel", p, commandType: CommandType.StoredProcedure).ToList();
            }

            foreach (RoundModel r in output)
            {
                model = r;
            }
            return(model);
        }
Beispiel #19
0
        public List <DivisionTeamsModel> GetSeasonTeams(SeasonDivisionsModel sdm)
        {
            List <DivisionTeamsModel> output;

            using (IDbConnection connection = new MySqlConnection(GlobalConfig.CnnString(db)))
            {
                var p = new DynamicParameters();
                p.Add("@InSeasonID", sdm.SeasonID);
                output = connection.Query <DivisionTeamsModel>("spGetSeasonTeams", p, commandType: CommandType.StoredProcedure).ToList();

                //foreach (TeamModel team in output)
                //{
                //    p = new DynamicParameters();
                //    p.Add("@TeamID", team.TeamID);
                //    team.TeamMembers = connection.Query<PersonModel>("spGetRoster", p, commandType: CommandType.StoredProcedure).ToList();
                //}
            }
            return(output);
        }
Beispiel #20
0
        public SeasonDivisionsModel createSeasonDivisions(SeasonDivisionsModel model)
        {
            using (IDbConnection connection = new MySqlConnection(GlobalConfig.CnnString(db)))
            {
                var p = new DynamicParameters();
                p.Add("@SeasonDivisionsID", 0, dbType: DbType.Int32, direction: ParameterDirection.Output);
                p.Add("@SeasonID", model.SeasonID);
                p.Add("@DivisionID", model.DivisionID);
                p.Add("@StartDate", model.StartDate.Date);
                connection.Execute("spSeasonDivisions", p, commandType: CommandType.StoredProcedure);


                // grabs newly created ID from database and returns it as part of the current Model
                // https://stackoverflow.com/questions/13151861/fetch-last-inserted-id-form-stored-procedure-in-mysql
                var id = p.Get <int?>("SeasonDivisionsID");
                model.SeasonDivisionsID = Convert.ToInt32(id);

                return(model);
            }
        }
Beispiel #21
0
        public SeasonDivisionsModel GetSeasonDivisionModel(DivisionModel model)
        {
            List <SeasonDivisionsModel> output;

            using (IDbConnection connection = new MySqlConnection(GlobalConfig.CnnString(db)))
            {
                var p = new DynamicParameters();
                p.Add("@InDivisionID", model.DivisionID);
                p.Add("@InSeasonID", model.SeasonID);
                output = connection.Query <SeasonDivisionsModel>("spGetSeasonDivisionsModel", p, commandType: CommandType.StoredProcedure).ToList();
            }
            SeasonDivisionsModel sm = new SeasonDivisionsModel();

            foreach (SeasonDivisionsModel x in output)
            {
                sm.SeasonDivisionsID = x.SeasonDivisionsID;
                sm.SeasonID          = model.SeasonID;
                sm.DivisionID        = model.DivisionID;
                sm.StartDate         = x.StartDate;
            }
            return(sm);
        }
Beispiel #22
0
 public List <TeamModel> GetTeamsNotInSeason(SeasonDivisionsModel model)
 {
     throw new NotImplementedException();
 }
Beispiel #23
0
 public SeasonDivisionsModel createSeasonDivisions(SeasonDivisionsModel model)
 {
     throw new NotImplementedException();
 }
Beispiel #24
0
 public List <SkippedDatesModel> GetSkippedDates(SeasonDivisionsModel model)
 {
     throw new NotImplementedException();
 }
Beispiel #25
0
 public List <DivisionTeamsModel> GetSeasonTeams(SeasonDivisionsModel sdm)
 {
     throw new NotImplementedException();
 }
Beispiel #26
0
 public void AddStartDate(SeasonDivisionsModel sdm)
 {
     throw new NotImplementedException();
 }
Beispiel #27
0
 public List <PersonModel> GetPlayersNotInThisSeason(SeasonDivisionsModel sdm)
 {
     throw new NotImplementedException();
 }
 public void DivisionComplete(SeasonDivisionsModel model)
 {
     throw new NotImplementedException();
 }
Beispiel #29
0
 public RoundModel getRoundModel(SeasonDivisionsModel sdm, int g)
 {
     throw new NotImplementedException();
 }
 /// <summary>
 /// Gets Division Teams from datasource
 /// </summary>
 /// <param name="dm"></param>
 private List <TeamModel> getDivisionTeams(SeasonDivisionsModel sdm)
 {
     selectedTeams = GlobalConfig.Connection.GetDivisionTeams(sdm);
     return(selectedTeams);
 }