コード例 #1
0
        internal ResultsReturn[] GetResults(
            Structs.ResultWeaponsClass wclass,
            Structs.ShootersClass uclass,
            Structs.Competition competition,
            bool finalResults)
        {
            lock (resultHolders)
            {
                foreach (CResultHolder holder in resultHolders)
                {
                    if (holder.WClass == wclass &&
                        holder.UClass == uclass &&
                        holder.NorwegianCount == competition.NorwegianCount &&
                        holder.FinalResults == finalResults)
                    {
                        return(holder.Results);
                    }
                }

                ResultsReturn[] results = result.GetResults(wclass,
                                                            uclass,
                                                            competition,
                                                            finalResults);

                CResultHolder newHolder = new CResultHolder(
                    wclass,
                    uclass,
                    competition.NorwegianCount,
                    finalResults,
                    results);
                resultHolders.Add(newHolder);

                return(results);
            }
        }
コード例 #2
0
ファイル: CResult.cs プロジェクト: dasca/WinShooter-Legacy
        /*private ResultsReturn[] convertIntoArray(ResultsReturn results)
         * {
         *      ResultsReturn[] returnArray =
         *              new ResultsReturn[results.Count];
         *      int i = 0;
         *      Structs.Competition competition = myInterface.GetCompetitions()[0];
         *      foreach(DSResults.ResultsRow row in results)
         *      {
         *              returnArray[i] = new ResultsReturn(competition.Type, competition.NorwegianCount);
         *              returnArray[i].ClubId = row.ClubId;
         *              returnArray[i].CompetitorId = row.CompetitorId;
         *              returnArray[i].HitsTotal = row.Hits;
         *              returnArray[i].Medal = row.Medal;
         *              returnArray[i].PointsTotal = row.Points;
         *              returnArray[i].ShooterName = row.ShooterName;
         *              returnArray[i].FigureHitsTotal = row.FigureHits;
         *              returnArray[i].HitsPerStnString = row.HitsPerStn;
         *              returnArray[i].FinalShootingPlace = row.FinalShootingPlace;
         *              returnArray[i].PriceMoney = row.PriceMoney;
         *              i++;
         *      }
         *      return returnArray;
         * }*/

        internal Structs.ResultWeaponsClass[] ResultsGetWClasses()
        {
            database = myInterface.databaseClass.Database;

            ArrayList list = new ArrayList();

            for (int i = 1; i <= Structs.ResultWeaponsClassMax; i++)
            {
                Structs.ResultWeaponsClass thisClass =
                    (Structs.ResultWeaponsClass)i;

                try
                {
                    int.Parse(thisClass.ToString());
                }
                catch (Exception)
                {
                    // thisClass is a string, which means it is a valid class
                    if (myInterface.GetCompetitorResultsExist(thisClass))
                    {
                        list.Add(thisClass);
                    }
                }
            }

            return((Structs.ResultWeaponsClass[])list.ToArray(typeof(Structs.ResultWeaponsClass)));
        }
コード例 #3
0
        internal string ExportResults(bool finalResults)
        {
            //database = myInterface.databaseClass.database;
            StringBuilder html = new StringBuilder();

            html.Length = 0;
            html.Append(createHtmlHeader());
            html.Append(createCompetitionHeader());

            html.Append("<h1>Individuella resultat</h1>");

            // Get results for the competitors
            for (int i = 1; i < Structs.ResultWeaponsClassMax; i++)
            {
                Structs.ResultWeaponsClass wclass =
                    (Structs.ResultWeaponsClass)i;

                if (i.ToString() != wclass.ToString())
                {
                    // A real resultweaponsclass
                    for (int j = 1; j <= Structs.ShootersClassMax; j++)
                    {
                        Structs.ShootersClass uclass =
                            (Structs.ShootersClass)j;

                        if (j.ToString() != uclass.ToString())
                        {
                            // TODO fixa en bättre räknare
                            if (myInterface.GetCompetitorResultsExist(wclass, uclass))
                            {
                                html.Append(createCompetitorResults(wclass,
                                                                    uclass, finalResults));
                            }
                        }
                    }
                }
            }

            // Get results for the teams
            for (int i = 1; i < Structs.ResultWeaponsClassMax; i++)
            {
                Structs.ResultWeaponsClass wclass =
                    (Structs.ResultWeaponsClass)i;
                if (i.ToString() != wclass.ToString())
                {
                    // A real resultweaponsclass
                    Structs.ResultsReturnTeam[] teamresults =
                        myInterface.resultTeamClass.GetTeamResults(wclass, myInterface.GetCompetitions()[0].NorwegianCount);
                    if (teamresults.Length > 0)
                    {
                        html.Append(createTeamResults(teamresults, wclass));
                    }
                }
            }
            html.Append(createHtmlFooter());
            return(html.ToString());
        }
コード例 #4
0
        private byte[] ExportTeamResults(Structs.ResultWeaponsClass wclass,
                                         bool finalResults, bool returnDocument,
                                         ref pdfPage page, ref double yPos)
        {
            if (yPos + conversionPixelsToMM * 3 * fontSize >= bottomMargin)
            {
                page = this.getNewPage(ref yPos);
            }

            ResultsReturnTeam[] results = myInterface.ResultsGetTeams(wclass,
                                                                      myInterface.GetCompetitions()[0]);

            if (results.Length == 0)
            {
                if (returnDocument)
                {
                    return(returnPdfInBytes());
                }
                else
                {
                    return(new byte[0]);
                }
            }

            // Write headers
            yPos = writeResultsPageTeamHeader(page, yPos, wclass);
            yPos = writeResultsTeamHeader(page, yPos);

            int i = 0;

            foreach (ResultsReturnTeam result in results)
            {
                if (yPos + calculateTeamHeight(result) >= bottomMargin)
                {
                    page = this.getNewPage(ref yPos);
                    yPos = writeResultsPageTeamHeader(page, yPos, wclass);
                    if (yPos < TextStart)
                    {
                        yPos = TextStart;
                    }
                    yPos = writeResultsTeamHeader(page, yPos);
                }
                i++;
                yPos = writeResultsTeam(page, yPos, result, i);
            }

            // Return what we've created
            if (returnDocument)
            {
                return(returnPdfInBytes());
            }
            else
            {
                return(new byte[0]);
            }
        }
コード例 #5
0
 internal ResultsReturn[] GetResults(
     Structs.ResultWeaponsClass wclass,
     Structs.ShootersClass uclass,
     Structs.Competition competition)
 {
     return(GetResults(
                wclass,
                uclass,
                competition,
                false));
 }
コード例 #6
0
        internal string ExportResults(Structs.ResultWeaponsClass wclass,
                                      Structs.ShootersClass uclass, bool finalResults)
        {
            StringBuilder html = new StringBuilder();

            html.Append(createHtmlHeader());
            html.Append(createCompetitionHeader());
            html.Append(createCompetitorResults(wclass, uclass, finalResults));
            html.Append(createHtmlFooter());
            return(html.ToString());
        }
コード例 #7
0
        internal ResultsReturnTeam[] GetTeamResults(Structs.ResultWeaponsClass wclass,
                                                    Structs.Competition competition)
        {
            Trace.WriteLine("CResults.GetResults(" + wclass.ToString() +
                            ") started on thread \"" +
                            System.Threading.Thread.CurrentThread.Name + "\" ( " +
                            System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

            while (resultsAlreadyRunning)
            {
                System.Threading.Thread.Sleep(50);
            }

            Trace.WriteLine("CResults: GetResults() " +
                            " locking \"GetResultsLock\" on thread \"" +
                            Thread.CurrentThread.Name + "\" ( " +
                            System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

            lock (GetResultsLock)
            {
                Trace.WriteLine("CResults: GetResults() " +
                                " locked \"GetResultsLock\" on thread \"" +
                                Thread.CurrentThread.Name + "\" ( " +
                                System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

                try
                {
                    resultsAlreadyRunning = true;
                    CompetitionType       = myInterface.CompetitionCurrent.Type;
                    database = myInterface.databaseClass.Database;

                    useNorwegianCount = competition.NorwegianCount;

                    // Ok, now lets count the real ones
                    DSResults results = getAllTeams(wclass);
                    results = sortTeams(results);

                    ResultsReturnTeam[] toReturn =
                        convertIntoArray(results);

                    return(toReturn);
                }
                finally
                {
                    Trace.WriteLine("CResultsTeam: GetResults() " +
                                    " unlocking \"GetResultsLock\" on thread \"" +
                                    Thread.CurrentThread.Name + "\" ( " +
                                    System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

                    Trace.WriteLine("CResults.GetResults ended.");
                    resultsAlreadyRunning = false;
                }
            }
        }
コード例 #8
0
 internal CResultHolder(Structs.ResultWeaponsClass wclass,
                        Structs.ShootersClass uclass,
                        bool norwegianCount,
                        bool finalResults,
                        ResultsReturn[] results)
 {
     WClass         = wclass;
     UClass         = uclass;
     NorwegianCount = norwegianCount;
     FinalResults   = finalResults;
     Results        = results;
 }
コード例 #9
0
        internal byte[] ExportResults(Structs.ResultWeaponsClass wclass,
                                      Structs.ShootersClass uclass, bool finalResults)
        {
            if (finalResults != true)
            {
                throw new ApplicationException("Not implemented yet");
            }

            double yPos = topMargin;

            sharpPDF.pdfPage page = null;

            return(ExportResults(wclass, uclass, finalResults, true, ref page, ref yPos));
        }
コード例 #10
0
ファイル: CResult.cs プロジェクト: dasca/WinShooter-Legacy
        private void calculateStandardMedals(Structs.ResultWeaponsClass wclass,
                                             Structs.ShootersClass uclass)
        {
            List <ResultsReturn> results;

            Structs.Competition competition = myInterface.CompetitionCurrent;
            results = getAllCompetitors(
                wclass,
                uclass,
                true);

            results.Sort();
            calculateMedals(results);
        }
コード例 #11
0
        private double writeResultsClassHeader(pdfPage page, double yPos,
                                               Structs.ResultWeaponsClass wclass, Structs.ShootersClass uclass)
        {
            Structs.ShootersClassShort uclassshort = (Structs.ShootersClassShort)(int) uclass;
            string klass = uclassshort.ToString().Replace("Klass", "") +
                           wclass.ToString();

            addText(page, "Klass:", leftMargin, yPos, fontCompetitionHeader, fontCompetitionHeaderSize);
            yPos = addText(page, klass,
                           leftMargin + 30, yPos, fontCompetitionHeader, fontCompetitionHeaderSize);

            yPos = yPos + 4;
            return(yPos);
        }
コード例 #12
0
		internal CPrintResultlist(ref Common.Interface newCommon, 
			Structs.ResultWeaponsClass wclasswanted,
			Structs.ShootersClass uclasswanted,
			bool prelResults,
			string clubIdwanted) : base ()  
		{
			CommonCode = newCommon;
			wclass = wclasswanted;
			uclass = uclasswanted;
			printPrelResults = prelResults;
			clubId = clubIdwanted;

			competition = CommonCode.GetCompetitions()[0];
			CompetitionType = competition.Type;
		}
コード例 #13
0
        internal CPrintResultlist(ref Common.Interface newCommon,
                                  Structs.ResultWeaponsClass wclasswanted,
                                  Structs.ShootersClass uclasswanted,
                                  bool prelResults,
                                  string clubIdwanted) : base()
        {
            CommonCode       = newCommon;
            wclass           = wclasswanted;
            uclass           = uclasswanted;
            printPrelResults = prelResults;
            clubId           = clubIdwanted;

            competition     = CommonCode.GetCompetitions()[0];
            CompetitionType = competition.Type;
        }
コード例 #14
0
        internal byte[] ExportResults(Structs.ResultWeaponsClass wclass,
                                      Structs.ShootersClass uclass, bool finalResults)
        {
            ResultsReturn[] results =
                myInterface.resultClass.GetResults(
                    wclass,
                    uclass,
                    myInterface.CompetitionCurrent);

            string resultString = RenderResults(results);

            Encoding enc = ASCIIEncoding.GetEncoding(1252);

            return(enc.GetBytes(resultString));
        }
コード例 #15
0
        private byte[] ExportResults(Structs.ResultWeaponsClass wclass,
                                     Structs.ShootersClass uclass, bool finalResults, bool returnDocument,
                                     ref pdfPage page, ref double yPos)
        {
            if (yPos + conversionPixelsToMM * 3 * fontSize >= bottomMargin)
            {
                page = this.getNewPage(ref yPos);
            }

            // Write headers
            yPos = writeResultsClassHeader(page, yPos, wclass, uclass);
            if (yPos < TextStart)
            {
                yPos = TextStart;
            }
            yPos = writeResultsHeader(page, yPos);

            ResultsReturn[] results = myInterface.resultClass.GetResults(wclass, uclass,
                                                                         myInterface.CompetitionCurrent, true);

            int i = 0;

            foreach (ResultsReturn result in results)
            {
                if (yPos + conversionPixelsToMM * fontSize >= bottomMargin)
                {
                    page = this.getNewPage(ref yPos);
                    yPos = writeResultsClassHeader(page, yPos, wclass, uclass);
                    if (yPos < TextStart)
                    {
                        yPos = TextStart;
                    }
                    yPos = writeResultsHeader(page, yPos);
                }
                i++;
                yPos = writeResultsUser(page, yPos, result, i);
            }

            // Return what we've created
            if (returnDocument)
            {
                return(returnPdfInBytes());
            }
            else
            {
                return(new byte[0]);
            }
        }
コード例 #16
0
ファイル: CResult.cs プロジェクト: dasca/WinShooter-Legacy
        internal Structs.ResultWeaponsClass[] GetResultWeaponClassesWithResults()
        {
            string select = "SELECT DISTINCT weapons.class " +
                            "FROM (weapons RIGHT JOIN Competitors ON weapons.WeaponId = Competitors.WeaponId) " +
                            "INNER JOIN CompetitorResults ON Competitors.CompetitorId = CompetitorResults.CompetitorId;";

            System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(
                select, myInterface.databaseClass.Conn);

            if (myInterface.databaseClass.Conn.State != ConnectionState.Open)
            {
                myInterface.databaseClass.Conn.Open();
            }

            System.Data.OleDb.OleDbDataReader r = cmd.ExecuteReader();

            List <Structs.WeaponClass> wclasses = new List <Structs.WeaponClass>();

            while (r.Read())
            {
                wclasses.Add((Structs.WeaponClass)r.GetInt32(0));
            }


            r.Dispose();
            cmd.Dispose();

            List <Structs.ResultWeaponsClass> rwclasses = new List <Structs.ResultWeaponsClass>();

            foreach (Structs.WeaponClass wclass in wclasses)
            {
                // Check for duplicates
                Structs.ResultWeaponsClass rwc =
                    CConvert.ConvertWeaponsClassToResultClass(
                        wclass,
                        myInterface.CompetitionCurrent.Type);
                if (!rwclasses.Contains(rwc))
                {
                    rwclasses.Add(rwc);
                }
            }

            // Sort
            rwclasses.Sort();

            return(rwclasses.ToArray());
        }
コード例 #17
0
ファイル: FTeams.cs プロジェクト: dasca/WinShooter-Legacy
        private void populateWeaponsClassDropDown()
        {
            Trace.WriteLine("FCompetitors: populateWeaponsClassDropDown() " +
                            "started on thread \"" +
                            Thread.CurrentThread.Name +
                            "\" ( " +
                            Thread.CurrentThread.ManagedThreadId.ToString() +
                            " )");

            Structs.Competition[] comps = CommonCode.GetCompetitions();
            if (comps.Length == 0)
            {
                return;
            }

            Structs.Competition comp = comps[0];

            DatasetTeams ds = new DatasetTeams();

            for (int i = 1; i <= Structs.ResultWeaponsClassMax; i++)
            {
                Structs.ResultWeaponsClass wc = (Structs.ResultWeaponsClass)i;
                try
                {
                    int test = int.Parse(wc.ToString());
                }
                catch (System.FormatException)
                {
                    DatasetTeams.WeaponClassRow row =
                        ds.WeaponClass.NewWeaponClassRow();
                    row.ClassId   = i;
                    row.ClassName = wc.ToString() + "-vapen";
                    if ((comp.Type != Structs.CompetitionTypeEnum.MagnumField &
                         row.ClassName.IndexOf("M") == -1) |
                        (comp.Type == Structs.CompetitionTypeEnum.MagnumField &
                         row.ClassName.IndexOf("M") > -1 &
                         row.ClassName != "M-vapen"))
                    {
                        ds.WeaponClass.AddWeaponClassRow(row);
                    }
                }
                this.ddWeaponClass.DataSource    = ds.WeaponClass;
                this.ddWeaponClass.DisplayMember = "ClassName";
                this.ddWeaponClass.ValueMember   = "ClassId";
            }
            Trace.WriteLine("FCompetitors: populateWeaponsClassDropDown() ended.");
        }
コード例 #18
0
ファイル: FTeams.cs プロジェクト: dasca/WinShooter-Legacy
        private void populateCompetitors()
        {
            Trace.WriteLine("FCompetitors: DdClubs_SelectedIndexChanged() " +
                            "started on thread \"" +
                            Thread.CurrentThread.Name +
                            "\" ( " +
                            Thread.CurrentThread.ManagedThreadId.ToString() +
                            " )");

            Structs.Club club =
                CommonCode.GetClub(
                    (string)this.DdClubs.SelectedValue);
            Structs.ResultWeaponsClass wclass =
                (Structs.ResultWeaponsClass)
                    (int) this.ddWeaponClass.SelectedValue;

            // Get all shooters that belong to the current club and
            // have a competitor with the current class
            //Structs.Shooter[] shooters = CommonCode.GetShooters(club, wclass);
            Structs.Competitor[] comps = CommonCode.GetCompetitors(club, wclass, "Surname, Givenname");

            DatasetTeams ds1 = new DatasetTeams();
            DatasetTeams ds2 = new DatasetTeams();
            DatasetTeams ds3 = new DatasetTeams();
            DatasetTeams ds4 = new DatasetTeams();
            DatasetTeams ds5 = new DatasetTeams();

            shooters = new Hashtable();
            addShootersToDS(ds1, comps);
            addShootersToDS(ds2, comps);
            addShootersToDS(ds3, comps);
            addShootersToDS(ds4, comps);
            addShootersToDS(ds5, comps);

            // Bind the dropdowns to the datatable
            this.ddCompetitor1.DataSource = ds1.Competitors;
            this.ddCompetitor2.DataSource = ds2.Competitors;
            this.ddCompetitor3.DataSource = ds3.Competitors;
            this.ddCompetitor4.DataSource = ds4.Competitors;
            this.ddCompetitor5.DataSource = ds5.Competitors;

            Trace.WriteLine("FCompetitors: DdClubs_SelectedIndexChanged() ended.");
        }
コード例 #19
0
        private double writeResultsPageTeamHeader(pdfPage page, double yPos,
                                                  Structs.ResultWeaponsClass wclass)
        {
            Structs.Competition comp = myInterface.GetCompetitions()[0];

            addText(page, "Tävling:", leftMargin, yPos, fontCompetitionHeader, fontCompetitionHeaderSize);
            yPos = addText(page, comp.Name + ", " + comp.StartTime.ToShortDateString(),
                           leftMargin + 30, yPos, fontCompetitionHeader, fontCompetitionHeaderSize);

            addText(page, "Vapen:", leftMargin, yPos, fontCompetitionHeader, fontCompetitionHeaderSize);
            yPos = addText(page, wclass.ToString(),
                           leftMargin + 30, yPos, fontCompetitionHeader, fontCompetitionHeaderSize);

            /*addText(page, "Klass:", leftMargin, yPos, fontCompetitionHeader, fontCompetitionHeaderSize);
             * yPos = addText(page, uclass.ToString(),
             *      leftMargin + 30, yPos , fontCompetitionHeader, fontCompetitionHeaderSize);*/

            yPos = yPos + 4;
            return(yPos);
        }
コード例 #20
0
        private Structs.ResultWeaponsClass getCurrentWeaponClass()
        {
            try
            {
                if (this.ddWClasses.SelectedIndex == -1)
                {
                    return(Structs.ResultWeaponsClass.Unknown);
                }



                int selectedValue = (int)this.ddWClasses.SelectedValue;
                Structs.ResultWeaponsClass thisClass =
                    (Structs.ResultWeaponsClass)selectedValue;

                return(thisClass);
            }
            catch (System.Exception exc)
            {
                Trace.WriteLine("FResultsView.getCurrentWeaponClass " +
                                "Exception:\r\n" + exc.ToString());
                throw;
            }
        }
コード例 #21
0
        private string createTeamResults(ResultsReturnTeam[] results,
                                         Structs.ResultWeaponsClass wclass)
        {
            StringBuilder html = new StringBuilder();

            html.Append("<h1>Lagtävling</h1>");
            html.Append("Vapengrupp " + wclass.ToString() + ":");
            html.Append("<table>\r\n");
            html.Append("<tr>" +
                        "<td><b>Pl</b></td>" +
                        "<td><b>Klubb</b></td>" +
                        "<td><b>Lag</b></td>" +
                        "<td><b>Resultat</b></td>" +
                        "</tr>\r\n");

            int place = 0;

            foreach (ResultsReturnTeam result in results)
            {
                place++;
                html.Append("<tr>");
                html.Append("<td class=\"resultevenline\">" + place.ToString() + "</td>");
                html.Append("<td class=\"resultevenline\">" + myInterface.GetClub(result.ClubId).Name + "</td>");
                html.Append("<td class=\"resultevenline\">" + result.TeamName + "</td>");
                switch (myInterface.GetCompetitions()[0].Type)
                {
                case Structs.CompetitionTypeEnum.Field:
                {
                    if (myInterface.GetCompetitions()[0].NorwegianCount)
                    {
                        html.Append("<td class=\"resultevenline\">" + (result.Hits + result.FigureHits).ToString() + "</td>");
                    }
                    else
                    {
                        html.Append("<td class=\"resultevenline\">" + result.Hits.ToString() + "/" + result.FigureHits.ToString() + "</td>");
                    }
                    break;
                }

                case Structs.CompetitionTypeEnum.Precision:
                {
                    html.Append("<td class=\"resultevenline\">" + result.Hits.ToString() + "</td>");
                    break;
                }
                }
                html.Append("</tr>\r\n");

                // The total results
                html.Append("<tr><td colspan=2></td>");
                html.Append("<td colspan=2>" + result.HitsPerStn.Replace(";", " ") + "</td>");
                html.Append("</tr>\r\n");

                Structs.Team team = myInterface.GetTeam(result.TeamId);

                foreach (int compId in (int[])team.CompetitorIds.ToArray(typeof(int)))
                {
                    Structs.Competitor comp = myInterface.GetCompetitor(compId);
                    html.Append("<tr><td colspan=2></td>");
                    html.Append("<td>" + GetNameForCompetitor(comp) + "</td>");
                    html.Append("<td>" + GetResultForCompetitor(comp) + "</td>");
                    html.Append("</tr>\r\n");
                }
            }
            html.Append("</table>");
            return(html.ToString());
        }
コード例 #22
0
        private string createTeamResults(Structs.ResultsReturnTeam[] results,
                                         Structs.ResultWeaponsClass wclass)
        {
            StringBuilder html = new StringBuilder();

            html.Append("<h1>Lagtävling</h1>");
            html.Append("Vapenklass " + wclass.ToString() + ":");
            html.Append("<table>\r\n");
            html.Append("<tr>" +
                        "<td><b>Pl</b></td>" +
                        "<td><b>Klubb</b></td>" +
                        "<td><b>Lag</b></td>" +
                        "<td><b>Resultat</b></td>" +
                        "</tr>\r\n");

            int place = 0;

            foreach (Structs.ResultsReturnTeam result in results)
            {
                place++;
                html.Append("<tr>");
                html.Append("<td class=\"resultevenline\">" + place.ToString() + "</td>");
                html.Append("<td class=\"resultevenline\">" + myInterface.GetClub(result.ClubId).Name + "</td>");
                html.Append("<td class=\"resultevenline\">" + result.TeamName + "</td>");
                if (myInterface.GetCompetitions()[0].NorwegianCount)
                {
                    html.Append("<td class=\"resultevenline\">" + (result.Hits + result.FigureHits).ToString() + "</td>");
                }
                else
                {
                    html.Append("<td class=\"resultevenline\">" + result.Hits.ToString() + "/" + result.FigureHits.ToString() + "</td>");
                }
                html.Append("</tr>\r\n");

                // The total results
                html.Append("<tr><td colspan=2></td>");
                html.Append("<td colspan=2>" + result.HitsPerStn.Replace(";", " ") + "</td>");
                html.Append("</tr>\r\n");

                Structs.Team team  = myInterface.GetTeam(result.TeamId);
                ArrayList    comps = new ArrayList();
                if (team.CompetitorId1 != -1)
                {
                    comps.Add(team.CompetitorId1);
                }
                if (team.CompetitorId2 != -1)
                {
                    comps.Add(team.CompetitorId2);
                }
                if (team.CompetitorId3 != -1)
                {
                    comps.Add(team.CompetitorId3);
                }
                if (team.CompetitorId4 != -1)
                {
                    comps.Add(team.CompetitorId4);
                }

                foreach (int compId in (int[])comps.ToArray(typeof(int)))
                {
                    Structs.Competitor comp = myInterface.GetCompetitor(compId);
                    html.Append("<tr><td colspan=2></td>");
                    html.Append("<td>" + GetNameForCompetitor(comp) + "</td>");
                    html.Append("<td>" + GetResultForCompetitor(comp) + "</td>");
                    html.Append("</tr>\r\n");
                }
            }
            html.Append("</table>");
            return(html.ToString());
        }
コード例 #23
0
        private string createCompetitorResults(Structs.ResultWeaponsClass wclass,
                                               Structs.ShootersClass uclass, bool finalResults)
        {
            StringBuilder html = new StringBuilder();

            html.Append("<p><table>");
            html.Append("<tr>");
            html.Append("<td width=" + internalTableWidthcol1.ToString() +
                        "><b>Vapenklass:</b></td>");
            html.Append("<td>" + wclass.ToString() + "</td>");
            html.Append("</tr>");
            html.Append("<tr>");
            html.Append("<td width=" + internalTableWidthcol1.ToString() +
                        "><b>Klass:</b></td>");
            html.Append("<td>" + uclass.ToString() + "</td>");
            html.Append("</tr>");

            html.Append("</table>");
            if (this.useWidth)
            {
                html.Append("<table width=100% border=0 cellspacing=5 cellpadding=0>");
            }
            else
            {
                html.Append("<table border=0 cellspacing=0>");
            }
            foreach (string columnName in this.colOrder)
            {
                html.Append("<th");
                if (useWidth)
                {
                    html.Append(" width=");
                }
                switch (columnName)
                {
                case "Place":
                    if (useWidth)
                    {
                        html.Append(this.colPlaceWidth.ToString() + "%");
                    }
                    html.Append(" align=center>Pl");
                    break;

                case "Name":
                    if (useWidth)
                    {
                        html.Append(this.colNameWidth.ToString() + "%");
                    }
                    html.Append(" align=left>Namn");
                    break;

                case "Club":
                    if (useWidth)
                    {
                        html.Append(this.colClubWidth.ToString() + "%");
                    }
                    html.Append(" align=left>Klubb");
                    break;

                case "Result":
                    if (useWidth)
                    {
                        html.Append(this.colResultWidth.ToString() + "%");
                    }
                    html.Append(" align=left colSpan=" +
                                (3 + myInterface.GetStationsCount()).ToString() +
                                ">Result");
                    break;

                case "ResultTot":
                    if (useWidth)
                    {
                        html.Append(this.colResultTotWidth.ToString() + "%");
                    }
                    html.Append(" align=center>Tot");
                    break;

                case "Points":
                    if (useWidth)
                    {
                        html.Append(this.colPointsWidth.ToString() + "%");
                    }
                    html.Append(" align=center>" + HttpUtility.HtmlEncode("Poäng"));
                    break;

                case "StdMed":
                    if (useWidth)
                    {
                        html.Append(this.colStdMedWidth.ToString() + "%");
                    }
                    html.Append(" align=center>Stm");
                    break;

                case "PriceMoney":
                    if (finalResults)
                    {
                        html.Append(" align=center>Pris");
                    }
                    else
                    {
                        html.Append(">");
                    }
                    break;
                }
                html.Append("</th>");
            }

            Structs.ResultsReturn[] results =
                myInterface.resultClass.GetResults(
                    wclass,
                    uclass,
                    myInterface.GetCompetitions()[0].NorwegianCount, finalResults);

            int place = 0;

            foreach (Structs.ResultsReturn result in results)
            {
                place++;
                html.Append("<tr>");
                foreach (string columnName in this.colOrder)
                {
                    html.Append("<td");
                    if (place % 2 == 0)
                    {
                        html.Append(" class=\"resultevenline\" ");
                    }
                    else
                    {
                        html.Append(" class=\"resultoddline\" ");
                    }

                    if (useWidth)
                    {
                        html.Append(" width=");
                    }
                    switch (columnName)
                    {
                    case "Place":
                        if (useWidth)
                        {
                            html.Append(this.colPlaceWidth.ToString() + "%");
                        }
                        html.Append(" align=center>" + place.ToString());
                        break;

                    case "Name":
                        if (useWidth)
                        {
                            html.Append(this.colNameWidth.ToString() + "%");
                        }
                        html.Append(" align=left>" +
                                    HttpUtility.HtmlEncode(result.ShooterName));
                        break;

                    case "Club":
                        if (useWidth)
                        {
                            html.Append(this.colClubWidth.ToString() + "%");
                        }
                        html.Append(" align=left>" +
                                    HttpUtility.HtmlEncode(
                                        myInterface.GetClub(result.ClubId).Name));
                        break;

                    case "Result":
                        if (useWidth)
                        {
                            html.Append(this.colResultWidth.ToString() + "%");
                        }

                        if (myInterface.GetCompetitions()[0].NorwegianCount)
                        {
                            html.Append(" align=left></td>");
                            foreach (string str in result.HitsPerStn.Split(';'))
                            {
                                if (str.Length > 0)
                                {
                                    string[] resparts = str.Split('/');
                                    int      temp     = int.Parse(resparts[0]) +
                                                        int.Parse(resparts[1]);
                                    html.Append("<td");
                                    if (place % 2 == 0)
                                    {
                                        html.Append(" class=\"resultevenline\"");
                                    }
                                    else
                                    {
                                        html.Append(" class=\"resultoddline\"");
                                    }

                                    html.Append(" align=right>" +
                                                temp.ToString() + "</td>");
                                }
                            }
                        }
                        else
                        {
                            html.Append(" align=left></td>");
                            foreach (string str in result.HitsPerStn.Split(';'))
                            {
                                html.Append("<td");
                                if (place % 2 == 0)
                                {
                                    html.Append(" class=\"resultevenline\"");
                                }
                                else
                                {
                                    html.Append(" class=\"resultoddline\"");
                                }
                                html.Append(" align=right>" + str + "</td>");
                            }
                        }
                        html.Append("<td");
                        if (place % 2 == 0)
                        {
                            html.Append(" class=\"resultevenline\"");
                        }
                        else
                        {
                            html.Append(" class=\"resultoddline\"");
                        }

                        html.Append(" align=right>");
                        if (result.FinalShootingPlace < 100 &
                            result.FinalShootingPlace > 0)
                        {
                            html.Append("( " + result.FinalShootingPlace.ToString() +
                                        " )");
                        }
                        html.Append("</td>");

                        break;

                    case "Points":
                        if (useWidth)
                        {
                            html.Append(this.colPointsWidth.ToString() + "%");
                        }
                        html.Append(" align=center>" + result.Points);
                        break;

                    case "ResultTot":
                        if (useWidth)
                        {
                            html.Append(this.colResultTotWidth.ToString() + "%");
                        }
                        if (myInterface.GetCompetitions()[0].NorwegianCount)
                        {
                            html.Append(" align=center>" +
                                        (result.Hits + result.FigureHits).ToString());
                        }
                        else
                        {
                            html.Append(" align=center>" +
                                        result.Hits.ToString() + "/" +
                                        result.FigureHits.ToString());
                        }
                        break;

                    case "StdMed":
                        if (useWidth)
                        {
                            html.Append(this.colStdMedWidth.ToString() + "%");
                        }
                        html.Append(" align=center>");
                        switch (result.Medal)
                        {
                        case (int)Structs.Medal.StandardSilver:
                            html.Append("S");
                            break;

                        case (int)Structs.Medal.StardardBrons:
                            html.Append("B");
                            break;
                        }
                        break;

                    case "PriceMoney":
                        if (finalResults)
                        {
                            html.Append(" align=right>");
                            if (result.PriceMoney > 0)
                            {
                                html.Append(result.PriceMoney.ToString() + ":-");
                            }
                        }
                        else
                        {
                            html.Append(">");
                        }
                        break;
                    }
                    if (columnName != "Result")
                    {
                        html.Append("</td>");
                    }
                }
                html.Append("</tr>");
            }
            html.Append("</table></p>");
            return(html.ToString());
        }
コード例 #24
0
ファイル: CResult.cs プロジェクト: dasca/WinShooter-Legacy
        private List <ResultsReturn> markMedals(List <ResultsReturn> results)
        {
            int i = 0;

            Structs.Competition competition = myInterface.CompetitionCurrent;
            switch (competition.Type)
            {
            case Structs.CompetitionTypeEnum.Field:
            {
                if (useNorwegianCount)
                {
                    foreach (ResultsReturn row in results)
                    {
                        i++;
                        if (row.NorwegianPoints >= standardSilverMedal)
                        {
                            row.Medal = Structs.Medal.StandardSilver;
                        }
                        else if (row.NorwegianPoints >= standardBronsMedal)
                        {
                            row.Medal = Structs.Medal.StardardBrons;
                        }
                        else
                        {
                            row.Medal = Structs.Medal.None;
                        }
                    }
                }
                else
                {
                    foreach (ResultsReturn row in results)
                    {
                        i++;
                        if (row.HitsTotal >= standardSilverMedal)
                        {
                            row.Medal = Structs.Medal.StandardSilver;
                        }
                        else if (row.HitsTotal >= standardBronsMedal)
                        {
                            row.Medal = Structs.Medal.StardardBrons;
                        }
                        else
                        {
                            row.Medal = Structs.Medal.None;
                        }
                    }
                }
                break;
            }

            case Structs.CompetitionTypeEnum.MagnumField:
            {
                foreach (ResultsReturn row in results)
                {
                    i++;
                    if (row.HitsTotal >= standardSilverMedal)
                    {
                        row.Medal = Structs.Medal.StandardSilver;
                    }
                    else if (row.HitsTotal >= standardBronsMedal)
                    {
                        row.Medal = Structs.Medal.StardardBrons;
                    }
                    else
                    {
                        row.Medal = Structs.Medal.None;
                    }
                }
                break;
            }

            case Structs.CompetitionTypeEnum.Precision:
            {
                int series = myInterface.GetStationsCount();
                foreach (ResultsReturn row in results)
                {
                    i++;
                    if (row.HitsTotal >= standardSilverMedal)
                    {
                        row.Medal = Structs.Medal.StandardSilver;
                    }
                    else if (row.HitsTotal >= standardBronsMedal)
                    {
                        row.Medal = Structs.Medal.StardardBrons;
                    }
                    else
                    {
                        row.Medal = Structs.Medal.None;
                    }

                    Structs.Competitor         competitor = myInterface.GetCompetitor(row.CompetitorId);
                    Structs.Weapon             weapon     = myInterface.GetWeapon(competitor.WeaponId);
                    Structs.ResultWeaponsClass wclass     =
                        CConvert.ConvertWeaponsClassToResultClass(
                            weapon.WClass, competition.Type);
                    switch (series)
                    {
                    case 6:
                    {
                        switch (wclass)
                        {
                        case Structs.ResultWeaponsClass.A:
                        {
                            if (row.HitsTotal >= 277)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 267 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }

                        case Structs.ResultWeaponsClass.B:
                        {
                            if (row.HitsTotal >= 282)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 273 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }

                        case Structs.ResultWeaponsClass.C:
                        {
                            if (row.HitsTotal >= 283)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 276 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }
                        }
                        break;
                    }

                    case 7:
                    {
                        switch (wclass)
                        {
                        case Structs.ResultWeaponsClass.A:
                        {
                            if (row.HitsTotal >= 323)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 312 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }

                        case Structs.ResultWeaponsClass.B:
                        {
                            if (row.HitsTotal >= 329)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 319 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }

                        case Structs.ResultWeaponsClass.C:
                        {
                            if (row.HitsTotal >= 330)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 322 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }
                        }
                        break;
                    }

                    case 10:
                    {
                        switch (wclass)
                        {
                        case Structs.ResultWeaponsClass.A:
                        {
                            if (row.HitsTotal >= 461)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 445 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }

                        case Structs.ResultWeaponsClass.B:
                        {
                            if (row.HitsTotal >= 470)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 455 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }

                        case Structs.ResultWeaponsClass.C:
                        {
                            if (row.HitsTotal >= 471)
                            {
                                row.Medal = Structs.Medal.StandardSilver;
                            }
                            else if (row.HitsTotal >= 460 & row.Medal != Structs.Medal.StandardSilver)
                            {
                                row.Medal = Structs.Medal.StardardBrons;
                            }
                            break;
                        }
                        }
                        break;
                    }
                    }
                }
                break;
            }

            default:
                throw new ApplicationException("Unknown competition type");
            }

            return(results);
        }
コード例 #25
0
ファイル: CResult.cs プロジェクト: dasca/WinShooter-Legacy
        private List <ResultsReturn> getAllCompetitors(Structs.ResultWeaponsClass wclass,
                                                       Structs.ShootersClass uclass, bool standardMedalsCalculation)
        {
            List <ResultsReturn> results = new List <ResultsReturn>();

            Structs.Competition competition = myInterface.CompetitionCurrent;

            Hashtable shooters = new Hashtable();
            Hashtable weapons  = new Hashtable();

            string selectString  = "";
            string standardClass = "ShooterClass=" + ((int)Structs.ShootersClass.Klass1).ToString() +
                                   " or ShooterClass=" + ((int)Structs.ShootersClass.Klass2).ToString() +
                                   " or ShooterClass=" + ((int)Structs.ShootersClass.Klass3).ToString() +
                                   " or ShooterClass=" + ((int)Structs.ShootersClass.Öppen).ToString();
            string damClass = "ShooterClass=" + ((int)Structs.ShootersClass.Damklass1).ToString() +
                              " or ShooterClass=" + ((int)Structs.ShootersClass.Damklass2).ToString() +
                              " or ShooterClass=" + ((int)Structs.ShootersClass.Damklass3).ToString();
            string extraClasses = "ShooterClass=" + ((int)Structs.ShootersClass.Juniorklass).ToString() +
                                  " or ShooterClass=" + ((int)Structs.ShootersClass.VeteranklassYngre).ToString() +
                                  " or ShooterClass=" + ((int)Structs.ShootersClass.VeteranklassÄldre).ToString();

            if (standardMedalsCalculation)
            {
                if (wclass == Structs.ResultWeaponsClass.C &&
                    (competition.Championship == Structs.CompetitionChampionshipEnum.SM |
                     competition.Championship == Structs.CompetitionChampionshipEnum.Landsdel))
                {
                    switch (uclass)
                    {
                    case Structs.ShootersClass.Klass:
                        selectString = standardClass;
                        break;

                    case Structs.ShootersClass.Klass1:
                        selectString = standardClass;
                        break;

                    case Structs.ShootersClass.Klass2:
                        selectString = standardClass;
                        break;

                    case Structs.ShootersClass.Klass3:
                        selectString = standardClass;
                        break;

                    case Structs.ShootersClass.Öppen:
                        selectString = "ShooterClass=" + ((int)uclass).ToString();
                        break;

                    case Structs.ShootersClass.Damklass:
                        selectString = damClass;
                        break;

                    case Structs.ShootersClass.Damklass1:
                        selectString = damClass;
                        break;

                    case Structs.ShootersClass.Damklass2:
                        selectString = damClass;
                        break;

                    case Structs.ShootersClass.Damklass3:
                        selectString = damClass;
                        break;

                    case Structs.ShootersClass.Juniorklass:
                        selectString = "ShooterClass=" + ((int)Structs.ShootersClass.Juniorklass).ToString();
                        break;

                    case Structs.ShootersClass.VeteranklassYngre:
                        selectString = "ShooterClass=" + ((int)Structs.ShootersClass.VeteranklassYngre).ToString();
                        break;

                    case Structs.ShootersClass.VeteranklassÄldre:
                        selectString = "ShooterClass=" + ((int)Structs.ShootersClass.VeteranklassÄldre).ToString();
                        break;

                    default:
                        throw new NotImplementedException("uclass: " + uclass.ToString());
                    }
                }
                else
                {
                    selectString = "";                     // Everyone in one calculation
                }
            }
            else
            {
                // Fetch the shooters
                switch (uclass)
                {
                case Structs.ShootersClass.Damklass:
                    selectString = damClass;
                    break;

                case Structs.ShootersClass.Klass:
                    selectString = standardClass;
                    break;

                case Structs.ShootersClass.Okänd:
                    selectString = "";
                    break;

                default:
                    selectString = "ShooterClass=" + ((int)uclass).ToString();
                    break;
                }
            }


            foreach (DatabaseDataset.CompetitorsRow row in database.Competitors.Select(selectString))
            {
                // What shootersclass is current user?
#if DEBUG
                Structs.ShootersClass currentUclass =
                    (Structs.ShootersClass)row.ShooterClass;                     // TODO Remove
#endif

                // Setup a cache for weapons.
                Structs.Weapon weapon;
                if (weapons.ContainsKey(row.WeaponId))
                {
                    weapon = (Structs.Weapon)weapons[row.WeaponId];
                }
                else
                {
                    weapon = myInterface.GetWeapon(row.WeaponId);
                    weapons.Add(row.WeaponId, weapon);
                }

                // For each competitor, find the result (competitorresults)
                // and add together

                /*if ( (myInterface.ConvertWeaponsClassToResultClass(
                 *      weapon.WClass) == wclass |
                 *      wclass == Structs.ResultWeaponsClass.Unknown)
                 *      &
                 *      ( uclass == currentUclass | uclass == Structs.ShootersClass.Okänd))*/
                if (myInterface.ConvertWeaponsClassToResultClass(
                        weapon.WClass) == wclass |
                    wclass == Structs.ResultWeaponsClass.Unknown)
                {
                    ResultsReturn thisResult = ResultsGetCompetitor(row.CompetitorId);
                    if (thisResult.HitsTotal > 0)
                    {
                        results.Add(thisResult);
                    }
                }
            }
            return(results);
        }
コード例 #26
0
ファイル: CResult.cs プロジェクト: dasca/WinShooter-Legacy
        internal Structs.ShootersClass[] ResultsGetUClasses(
            Structs.ResultWeaponsClass wclass)
        {
            Trace.WriteLine("CResult.ResultsGetUClasses(\"" +
                            wclass.ToString() + "\") " +
                            "started on thread \"" +
                            System.Threading.Thread.CurrentThread.Name + "\" ( " +
                            System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");
            DateTime start = DateTime.Now;

            database = myInterface.databaseClass.Database;
            List <int> sClassesIntTable = new List <int>();
            List <Structs.ShootersClass> shooterClasses = new List <Structs.ShootersClass>();

            foreach (DatabaseDataset.CompetitorsRow row in
                     database.Competitors)
            {
                Structs.Weapon weapon = myInterface.GetWeapon(row.WeaponId);
                if (myInterface.ConvertWeaponsClassToResultClass(weapon.WClass) ==
                    wclass)
                {
                    if (row.GetChildRows("CompetitorsCompetitorResults").Length > 0)
                    {
                        if (!sClassesIntTable.Contains(row.ShooterClass))
                        {
                            sClassesIntTable.Add(row.ShooterClass);
                            Structs.ShootersClass uclass =
                                (Structs.ShootersClass)row.ShooterClass;
                            shooterClasses.Add(uclass);
                        }
                    }
                }
            }

            if (myInterface.CompetitionCurrent.OneClass)
            {
                if (shooterClasses.Contains(Structs.ShootersClass.Klass1) ||
                    shooterClasses.Contains(Structs.ShootersClass.Klass2) ||
                    shooterClasses.Contains(Structs.ShootersClass.Klass3))
                {
                    shooterClasses.Add(Structs.ShootersClass.Klass);
                    shooterClasses.Remove(Structs.ShootersClass.Klass1);
                    shooterClasses.Remove(Structs.ShootersClass.Klass2);
                    shooterClasses.Remove(Structs.ShootersClass.Klass3);
                }

                if (shooterClasses.Contains(Structs.ShootersClass.Damklass1) ||
                    shooterClasses.Contains(Structs.ShootersClass.Damklass2) ||
                    shooterClasses.Contains(Structs.ShootersClass.Damklass3))
                {
                    shooterClasses.Add(Structs.ShootersClass.Damklass);
                    shooterClasses.Remove(Structs.ShootersClass.Damklass1);
                    shooterClasses.Remove(Structs.ShootersClass.Damklass2);
                    shooterClasses.Remove(Structs.ShootersClass.Damklass3);
                }
            }

            /*for(int i=0 ; i<=Structs.ShootersClassMax ; i++)
             * {
             *      try
             *      {
             *              if (sClassesIntTable.Contains(i))
             *              {
             *                      int.Parse(((Structs.ShootersClass)i).ToString());
             *              }
             *      }
             *      catch(System.FormatException)
             *      {
             *              // Ok, we got a class
             *              Structs.ShootersClass uclass =
             *                      (Structs.ShootersClass)i;
             *              shooterClasses.Add(uclass);
             *      }
             * }*/

            shooterClasses.Sort();

            Trace.WriteLine("CResult.ResultsGetUClasses(\"" +
                            wclass.ToString() + "\") " +
                            "ending after " +
                            (DateTime.Now - start).TotalMilliseconds.ToString() +
                            " ms.");

            return(shooterClasses.ToArray());
        }
コード例 #27
0
        private DSResults getAllTeams(Structs.ResultWeaponsClass wclass)
        {
            DSResults results = new DSResults();

            // Add columns for each station (used later for sorting)
            int stationCount = myInterface.GetStationsCount();

            for (int stationNr = 1; stationNr <= stationCount; stationNr++)
            {
                results.TeamResults.Columns.Add("Station" + stationNr.ToString(), typeof(int));
            }
            if (myInterface.CompetitionCurrent.Type == Structs.CompetitionTypeEnum.Precision)
            {
                for (int stationNr = myInterface.GetStationsCount(); stationNr >= 1; stationNr--)
                {
                    for (int i = 10; i > 0; i--)
                    {
                        results.TeamResults.Columns.Add("Station" + stationNr.ToString() + "-" + i.ToString(), typeof(int));
                    }
                }
            }

            foreach (DatabaseDataset.TeamsRow teamrow in database.Teams)
            {
                if (teamrow.WClass == (int)wclass)
                {
                    ArrayList comps = new ArrayList();

                    if (!teamrow.IsCompetitorId1Null())
                    {
                        comps.Add((DatabaseDataset.CompetitorsRow)
                                  database.Competitors.Select("CompetitorId=" + teamrow.CompetitorId1.ToString())[0]);
                    }
                    if (!teamrow.IsCompetitorId2Null())
                    {
                        comps.Add((DatabaseDataset.CompetitorsRow)
                                  database.Competitors.Select("CompetitorId=" + teamrow.CompetitorId2.ToString())[0]);
                    }
                    if (!teamrow.IsCompetitorId3Null())
                    {
                        comps.Add((DatabaseDataset.CompetitorsRow)
                                  database.Competitors.Select("CompetitorId=" + teamrow.CompetitorId3.ToString())[0]);
                    }
                    if (!teamrow.IsCompetitorId4Null())
                    {
                        comps.Add((DatabaseDataset.CompetitorsRow)
                                  database.Competitors.Select("CompetitorId=" + teamrow.CompetitorId4.ToString())[0]);
                    }
                    if (!teamrow.IsCompetitorId5Null())
                    {
                        comps.Add((DatabaseDataset.CompetitorsRow)
                                  database.Competitors.Select("CompetitorId=" + teamrow.CompetitorId5.ToString())[0]);
                    }

                    Hashtable teamHits          = new Hashtable();
                    Hashtable teamFigureHits    = new Hashtable();
                    Hashtable teamCountNrOfTens = new Hashtable();

                    int totPoints = 0;
                    foreach (DatabaseDataset.CompetitorsRow compsRow in
                             (DatabaseDataset.CompetitorsRow[])
                             comps.ToArray(typeof(DatabaseDataset.CompetitorsRow)))
                    {
                        foreach (DatabaseDataset.CompetitorResultsRow compresrow in
                                 (DatabaseDataset.CompetitorResultsRow[])
                                 compsRow.GetChildRows("CompetitorsCompetitorResults"))
                        {
                            DatabaseDataset.StationsRow stationsRow =
                                (DatabaseDataset.StationsRow)database.Stations.Select("StationId=" + compresrow.StationId.ToString())[0];

                            int teamHitsThisStn = 0;
                            if (teamHits.ContainsKey(stationsRow.StationNr))
                            {
                                teamHitsThisStn = (int)teamHits[stationsRow.StationNr];
                            }

                            int teamFigureHitsThisStn = 0;
                            if (teamFigureHits.ContainsKey(stationsRow.StationNr))
                            {
                                teamFigureHitsThisStn = (int)teamFigureHits[stationsRow.StationNr];
                            }

                            teamHitsThisStn       += compresrow.Hits;
                            teamFigureHitsThisStn += compresrow.FigureHits;
                            totPoints             += compresrow.Points;

                            teamHits[stationsRow.StationNr]       = teamHitsThisStn;
                            teamFigureHits[stationsRow.StationNr] = teamFigureHitsThisStn;
                            if (CompetitionType == Structs.CompetitionTypeEnum.Precision)
                            {
                                foreach (string strn in compresrow.StationFigureHits.Split(';'))
                                {
                                    if (strn != "" && int.Parse(strn) != 0)
                                    {
                                        string columnName = "Station" + stationsRow.StationNr.ToString() + "-" +
                                                            strn;
                                        int thisValue = 0;
                                        if (teamCountNrOfTens.ContainsKey(columnName))
                                        {
                                            thisValue = (int)teamCountNrOfTens[columnName];
                                        }
                                        thisValue++;
                                        teamCountNrOfTens[columnName] = thisValue;
                                    }
                                }
                            }
                        }
                    }

                    int    totFigureHits = 0;
                    int    totHits       = 0;
                    string stnHits       = "";
                    DSResults.TeamResultsRow newTeamRow =
                        results.TeamResults.NewTeamResultsRow();

                    if (myInterface.GetCompetitions()[0].Type == Structs.CompetitionTypeEnum.Precision)
                    {
                        for (int stationNr = myInterface.GetStationsCount(); stationNr >= 1; stationNr--)
                        {
                            for (int i = 10; i > 0; i--)
                            {
                                newTeamRow["Station" + stationNr.ToString() + "-" + i.ToString()] = 0;
                            }
                        }
                    }

                    for (int stationNr = 1; stationNr <= stationCount; stationNr++)
                    {
                        int hitsThisStn       = 0;
                        int figureHitsThisStn = 0;
                        if (teamHits.ContainsKey(stationNr))
                        {
                            hitsThisStn = (int)teamHits[stationNr];
                        }
                        if (teamFigureHits.ContainsKey(stationNr))
                        {
                            figureHitsThisStn = (int)teamFigureHits[stationNr];
                        }

                        totHits       += hitsThisStn;
                        totFigureHits += figureHitsThisStn;
                        switch (CompetitionType)
                        {
                        case Structs.CompetitionTypeEnum.Field:
                        {
                            if (this.useNorwegianCount)
                            {
                                stnHits += (hitsThisStn + figureHitsThisStn).ToString() + ";";
                                newTeamRow["Station" + stationNr.ToString()] = hitsThisStn + figureHitsThisStn;
                            }
                            else
                            {
                                stnHits += hitsThisStn.ToString() + "/" + figureHitsThisStn.ToString() + ";";
                                newTeamRow["Station" + stationNr.ToString()] = hitsThisStn;
                            }
                            break;
                        }

                        case Structs.CompetitionTypeEnum.Precision:
                        {
                            stnHits += hitsThisStn.ToString() + ";";
                            newTeamRow["Station" + stationNr.ToString()] = hitsThisStn;
                            for (int i = 10; i >= 1; i--)
                            {
                                string columnName = "Station" + stationNr.ToString() + "-" +
                                                    i.ToString();
                                if (teamCountNrOfTens.ContainsKey(columnName))
                                {
                                    newTeamRow[columnName] = (int)teamCountNrOfTens[columnName];
                                }
                                else
                                {
                                    newTeamRow[columnName] = 0;
                                }
                            }
                            break;
                        }
                        }
                    }
                    newTeamRow.ClubId     = teamrow.ClubId;
                    newTeamRow.FigureHits = totFigureHits;
                    newTeamRow.Hits       = totHits;
                    newTeamRow.NorwPoints = totFigureHits + totHits;
                    newTeamRow.Points     = totPoints;
                    newTeamRow.TeamId     = teamrow.TeamId;
                    newTeamRow.TeamName   = teamrow.Name;
                    newTeamRow.HitsPerStn = stnHits;
                    results.TeamResults.AddTeamResultsRow(newTeamRow);
                }
            }
            return(results);
        }
コード例 #28
0
        private void updateDdUClassesWithThread()
        {
            Trace.WriteLine("FResultsView.updateDdUClassesWithThread() " +
                            "started on thread " +
                            Thread.CurrentThread.Name + "\" ( " +
                            Thread.CurrentThread.ManagedThreadId.ToString() + " )");

            try
            {
                if (UpdateDdUClassesInThreadsCount > 0)
                {
                    Trace.WriteLine("FResultsView.updateDdUClassesWithThread() " +
                                    " already has threads waiting");
                    return;
                }

                Interlocked.Increment(ref UpdateDdUClassesInThreadsCount);
                Trace.WriteLine("FResultsView.updateDdUClassesWithThread() locking \"" +
                                "lockObject\" on thread \"" +
                                Thread.CurrentThread.Name + "\" ( " +
                                Thread.CurrentThread.ManagedThreadId.ToString() + " )");
                lock (lockObject)
                {
                    Trace.WriteLine("FResultsView.updateDdUClassesWithThread() " +
                                    "locked \"lockObject\" on thread \"" +
                                    Thread.CurrentThread.Name + "\" ( " +
                                    Thread.CurrentThread.ManagedThreadId.ToString() + " )");

                    Structs.ResultWeaponsClass wclass = this.getCurrentWeaponClass();

                    Structs.ShootersClass[] uclasses =
                        CommonCode.ResultsGetUClasses(wclass);

                    tableUClasses = new DataTable();
                    DataColumn colUName1 = new DataColumn("Name", typeof(string));
                    tableUClasses.Columns.Add(colUName1);
                    DataColumn colUId1 = new DataColumn("Id", typeof(int));
                    tableUClasses.Columns.Add(colUId1);

                    foreach (Structs.ShootersClass uclass in uclasses)
                    {
                        tableUClasses.Rows.Add(
                            new object[] {
                            uclass.ToString(),
                            (int)uclass
                        });
                    }
                    if (this.InvokeRequired)
                    {
                        this.Invoke(BindDDUClasses);
                    }
                    else
                    {
                        BindDDUClasses();
                    }
                }
            }
            catch (Exception exc)
            {
                Trace.WriteLine("FResultsView.updateDdUClassesWithThread() " +
                                "Exception: \r\n" + exc.ToString());
            }
            finally
            {
                Interlocked.Decrement(ref UpdateDdUClassesInThreadsCount);
                Trace.WriteLine("FResultsView.updateDdUClassesWithThread() ended");
            }
        }
コード例 #29
0
        private void updateDatasetwithThread()
        {
            try
            {
                Trace.WriteLine("FResultsView.populateDatasetwithThread() " +
                                "started on thread \"" +
                                Thread.CurrentThread.Name + "\" ( " +
                                Thread.CurrentThread.ManagedThreadId.ToString() + " )");

                if (populateDatasetwithThreadsCount > 0)
                {
                    Trace.WriteLine("FResultsView.populateDatasetwithThread() " +
                                    " already has threads waiting");
                    return;
                }
                Interlocked.Increment(ref populateDatasetwithThreadsCount);

                Trace.WriteLine("FResultsView.populateDatasetwithThread() locking \"" +
                                "lockObject\" on thread \"" +
                                Thread.CurrentThread.Name + "\" ( " +
                                Thread.CurrentThread.ManagedThreadId.ToString() + " )");
                lock (lockObject)
                {
                    Trace.WriteLine("FResultsView.populateDatasetwithThread() locked \"" +
                                    "lockObject\" on thread \"" +
                                    Thread.CurrentThread.Name + "\" ( " +
                                    Thread.CurrentThread.ManagedThreadId.ToString() + " )");

                    Thread.Sleep(100);
                    DateTime start = DateTime.Now;

                    if (CommonCode.GetCompetitions().Length == 0)
                    {
                        return;
                    }

                    this.datasetResults1             = new DatasetResults();
                    this.datasetResults1.DataSetName = "DatasetResults";
                    this.datasetResults1.Locale      =
                        new System.Globalization.CultureInfo("sv");

                    Structs.ResultWeaponsClass wclass = getCurrentWeaponClass();
                    Structs.ShootersClass      uclass = getCurrentShootersClass();
                    if (uclass == Structs.ShootersClass.Okänd)
                    {
                        return;
                    }

                    ResultsReturn[] results = CommonCode.ResultsGet(wclass,
                                                                    uclass,
                                                                    CommonCode.GetCompetitions()[0],
                                                                    false);

                    datasetResults1 = new Allberg.Shooter.Windows.DatasetResults();

                    int       i            = 1;
                    bool      useNorwegian = CommonCode.GetCompetitions()[0].NorwegianCount;
                    Hashtable clubs        = new Hashtable();
                    foreach (ResultsReturn result in results)
                    {
                        DatasetResults.ResultsRow newRow =
                            this.datasetResults1.Results.NewResultsRow();

                        newRow.Place = i;
                        if (clubs.ContainsKey(result.ClubId))
                        {
                            newRow.Club = (string)clubs[result.ClubId];
                        }
                        else
                        {
                            string clubName = getClubName(result.ClubId);
                            newRow.Club = clubName;
                            clubs.Add(result.ClubId, clubName);
                        }
                        switch ((Structs.Medal)result.Medal)
                        {
                        case Structs.Medal.StandardSilver:
                            newRow.Medal = "S";
                            break;

                        case Structs.Medal.StardardBrons:
                            newRow.Medal = "B";
                            break;

                        default:
                            newRow.Medal = "";
                            break;
                        }
                        newRow.Points      = result.PointsTotal;
                        newRow.ShooterName = result.ShooterName;
                        switch (CommonCode.GetCompetitions()[0].Type)
                        {
                        case Structs.CompetitionTypeEnum.Field:
                        {
                            if (useNorwegian)
                            {
                                newRow.Hits           = (result.HitsTotal + result.FigureHitsTotal).ToString();
                                newRow.HitsPerStation = "";
                                foreach (string str in result.HitsPerStnString.Split(';'))
                                {
                                    if (str != "")
                                    {
                                        newRow.HitsPerStation += str + " ";
                                    }
                                }
                                newRow.HitsPerStation = newRow.HitsPerStation.TrimEnd();
                            }
                            else
                            {
                                newRow.Hits = result.HitsTotal.ToString() + " / " +
                                              result.FigureHitsTotal.ToString();
                                newRow.HitsPerStation =
                                    result.HitsPerStnString.Replace(";", " ");
                            }
                            break;
                        }

                        case Structs.CompetitionTypeEnum.MagnumField:
                        {
                            newRow.Hits = result.HitsTotal.ToString() + " / " +
                                          result.FigureHitsTotal.ToString();
                            newRow.HitsPerStation =
                                result.HitsPerStnString.Replace(";", " ");
                            break;
                        }

                        case Structs.CompetitionTypeEnum.Precision:
                        {
                            newRow.Hits           = result.HitsTotal.ToString();
                            newRow.HitsPerStation =
                                result.HitsPerStnString.Replace(";", " ");
                            break;
                        }

                        default:
                            throw new ApplicationException("Unknown CompetitionType");
                        }

                        if (result.FinalShootingPlace != 100)
                        {
                            newRow.HitsPerStation += " (" + result.FinalShootingPlace.ToString() + ")";
                        }

                        this.datasetResults1.Results.AddResultsRow(newRow);
                        i++;
                    }
                    if (this.InvokeRequired)
                    {
                        this.Invoke(DatasetBindToDataGrid);
                    }
                    else
                    {
                        DatasetBindToDataGrid();
                    }
                    Trace.WriteLine("FResultsView.populateDatasetwithThread took " +
                                    (DateTime.Now - start).TotalMilliseconds.ToString() +
                                    " ms.");
                }

                Trace.WriteLine("FResultsView.populateDatasetwithThread() unlocking \"" +
                                "lockObject\" on thread \"" +
                                Thread.CurrentThread.Name + "\" ( " +
                                Thread.CurrentThread.ManagedThreadId.ToString() + " )");
            }
            finally
            {
                Interlocked.Decrement(ref populateDatasetwithThreadsCount);
                Trace.WriteLine("FResultsView.populateDatasetwithThread() ended");
            }
        }
コード例 #30
0
ファイル: CResult.cs プロジェクト: dasca/WinShooter-Legacy
        internal ResultsReturn[] GetResults(
            Structs.ResultWeaponsClass wclass,
            Structs.ShootersClass uclass,
            Structs.Competition competition,
            bool finalResults)
        {
            Trace.WriteLine("CResults.GetResults(" + wclass.ToString()
                            + ", " + uclass.ToString() +
                            ") started on thread \"" +
                            System.Threading.Thread.CurrentThread.Name + "\" ( " +
                            System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

            while (resultsAlreadyRunning)
            {
                System.Threading.Thread.Sleep(50);
            }

            Trace.WriteLine("CResults: GetResults() " +
                            " locking \"GetResultsLock\" on thread \"" +
                            Thread.CurrentThread.Name + "\" ( " +
                            System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

            lock (GetResultsLock)
            {
                Trace.WriteLine("CResults: GetResults() " +
                                " locked \"GetResultsLock\" on thread \"" +
                                Thread.CurrentThread.Name + "\" ( " +
                                System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

                try
                {
                    resultsAlreadyRunning = true;

                    database = myInterface.databaseClass.Database;

                    useNorwegianCount = competition.NorwegianCount;

                    // First find out about the standard medals
                    calculateStandardMedals(wclass, uclass);

                    // Ok, now lets count the real ones
                    if (competition.OneClass)
                    {
                        switch (uclass)
                        {
                        case Structs.ShootersClass.Damklass:
                            uclass = Structs.ShootersClass.Damklass;
                            break;

                        case Structs.ShootersClass.Damklass1:
                            uclass = Structs.ShootersClass.Damklass;
                            break;

                        case Structs.ShootersClass.Damklass2:
                            uclass = Structs.ShootersClass.Damklass;
                            break;

                        case Structs.ShootersClass.Damklass3:
                            uclass = Structs.ShootersClass.Damklass;
                            break;

                        case Structs.ShootersClass.Juniorklass:
                            break;

                        case Structs.ShootersClass.Klass:
                            uclass = Structs.ShootersClass.Klass;
                            break;

                        case Structs.ShootersClass.Klass1:
                            uclass = Structs.ShootersClass.Klass;
                            break;

                        case Structs.ShootersClass.Klass2:
                            uclass = Structs.ShootersClass.Klass;
                            break;

                        case Structs.ShootersClass.Klass3:
                            uclass = Structs.ShootersClass.Klass;
                            break;

                        case Structs.ShootersClass.VeteranklassYngre:
                            break;

                        case Structs.ShootersClass.VeteranklassÄldre:
                            break;

                        case Structs.ShootersClass.Öppen:
                            break;

                        default:
                            throw new NotSupportedException("Structs.ShootersClass." +
                                                            uclass.ToString() + " is not supported");
                        }
                    }
                    List <ResultsReturn> results = getAllCompetitors(wclass, uclass, false);
                    results.Sort();
                    if (myInterface.CompetitionCurrent.Championship !=
                        Structs.CompetitionChampionshipEnum.Club)
                    {
                        results = markMedals(results);
                    }
                    else
                    {
                        // Mark all as not having medals
                        foreach (ResultsReturn row in results)
                        {
                            row.Medal = Structs.Medal.None;
                        }
                    }

                    if (finalResults)
                    {
                        results = markPriceMoney(results);
                    }

                    return(results.ToArray());
                }
                finally
                {
                    Trace.WriteLine("CResults: GetResults() " +
                                    " unlocking \"GetResultsLock\" on thread \"" +
                                    Thread.CurrentThread.Name + "\" ( " +
                                    System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

                    Trace.WriteLine("CResults.GetResults ended.");
                    resultsAlreadyRunning = false;
                }
            }
        }
コード例 #31
0
 internal Structs.ShootersClass[] ResultsGetUClasses(
     Structs.ResultWeaponsClass wclass)
 {
     return(result.ResultsGetUClasses(wclass));
 }