ElectionsMandateCalculator.Models.MandatesCalculator.PrepareWorkingDataForNationalMandateGiving C# (CSharp) Method

PrepareWorkingDataForNationalMandateGiving() private method

private PrepareWorkingDataForNationalMandateGiving ( int mirsCount, int partiesCountTable1, bool workingPartyFlagsTable1, int votesTable1, int &partiesCountInTable2, int &votesTable2, Party &partiesTable2, int &partiesCountTable2, int &allMandatesAfterStep0, int &allVotesTable2 ) : void
mirsCount int
partiesCountTable1 int
workingPartyFlagsTable1 bool
votesTable1 int
partiesCountInTable2 int
votesTable2 int
partiesTable2 Party
partiesCountTable2 int
allMandatesAfterStep0 int
allVotesTable2 int
return void
        private void PrepareWorkingDataForNationalMandateGiving(int mirsCount, int partiesCountTable1, bool[] workingPartyFlagsTable1, int[,] votesTable1, out int partiesCountInTable2, out int[,] votesTable2, out Party[] partiesTable2, out int partiesCountTable2, out int allMandatesAfterStep0, out int allVotesTable2)
        {
            //GENERATE TABLE2
            partiesCountInTable2 = workingPartyFlagsTable1.Count(f => f);

            //Votes table
            votesTable2 = new int[mirsCount, partiesCountInTable2];
            int[,] givenMandatesTable2 = new int[mirsCount, partiesCountInTable2];
            List<Party> partiesListTable2 = new List<Party>();
            int partyIndexTable2 = 0;
            for (int j = 0; j < partiesCountTable1; j++)//TO DO - optimize by j
            {
                if (workingPartyFlagsTable1[j])
                {
                    for (int i = 0; i < mirsCount; i++)
                    {
                        votesTable2[i, partyIndexTable2] = votesTable1[i, j];
                        givenMandatesTable2[i, partyIndexTable2] = 0;//_givenMandatesTable1[i, j];
                    }

                    partiesListTable2.Add(_partiesAll[j]);
                    partyIndexTable2++;
                }
            }

            partiesTable2 = partiesListTable2.ToArray();//indexed array with parties in Table2
            partiesCountTable2 = partiesListTable2.Count;
            //calculatae new quote - Hare
            allMandatesAfterStep0 = _mirMandatesAvailable.Sum();
            allVotesTable2 = 0;//chl.14-chl16
            for (int i = 0; i < mirsCount; i++)
            {
                for (int j = 0; j < partiesCountTable2; j++)
                {
                    allVotesTable2 += votesTable2[i, j];
                }
            }
        }