Пример #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
        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());
        }
Пример #3
0
 internal ResultsReturn[] GetResults(
     Structs.ResultWeaponsClass wclass,
     Structs.ShootersClass uclass,
     Structs.Competition competition)
 {
     return(GetResults(
                wclass,
                uclass,
                competition,
                false));
 }
Пример #4
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());
        }
Пример #5
0
        private void getCurrentResults()
        {
            Structs.ShootersClass temp =
                (Structs.ShootersClass) this.currentUClass;

            Structs.Competition comp = CommonCode.GetCompetitions()[0];

            results =
                CommonCode.ResultsGet(wclass, temp,
                                      comp,
                                      !printPrelResults);
        }
Пример #6
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;
 }
Пример #7
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);
        }
Пример #8
0
        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);
        }
Пример #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
        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;
        }
		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;
		}
        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));
        }
Пример #13
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]);
            }
        }
Пример #14
0
        private bool moreClassesPages()
        {
            if (uclass != Structs.ShootersClass.Okänd)
            {
                return(false);
            }

            bool nextClass = false;

            // We're talking multiple classes here...
            for (int i = 0; i <= Structs.ShootersClassMax; i++)
            {
                Structs.ShootersClass thisuclass =
                    (Structs.ShootersClass)i;
                try
                {
                    int.Parse(thisuclass.ToString());
                }
                catch (Exception)
                {
                    // A class, since we couldn't parse int
                    if (nextClass)
                    {
                        if (CommonCode.GetCompetitorResultsCount(
                                wclass, thisuclass) > 0)
                        {
                            competitorsDone    = -1;
                            this.currentUClass = (int)thisuclass;
                            getCurrentResults();
                            return(true);
                        }
                    }

                    // Check if next class should be checked
                    if ((int)thisuclass == this.currentUClass)
                    {
                        nextClass = true;
                    }
                }
            }
            return(false);
        }
Пример #15
0
        private Structs.ShootersClass getCurrentShootersClass()
        {
            try
            {
                if (this.ddUClasses.SelectedIndex == -1)
                {
                    return(Structs.ShootersClass.Okänd);
                }

                int selectedValue = (int)this.ddUClasses.SelectedValue;
                Structs.ShootersClass thisClass =
                    (Structs.ShootersClass)selectedValue;

                return(thisClass);
            }
            catch (System.Exception exc)
            {
                Trace.WriteLine("FResultsView.getCurrentShootersClass " +
                                "Exception:\r\n" + exc.ToString());
                throw;
            }
        }
Пример #16
0
        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);
        }
Пример #17
0
        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());
        }
Пример #18
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());
        }
Пример #19
0
        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;
                }
            }
        }
Пример #20
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");
            }
        }
Пример #21
0
        private void ImportDatasetThread()
        {
            Trace.WriteLine("CFileImport: ImportDatasetThread started " +
                            "on thread \"" + Thread.CurrentThread.Name + "\" ( " +
                            System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

            int i = -1;

            foreach (DataRow row in this.ViewDatatable.Rows)
            {
                i++;
                string classString = null;

                Trace.WriteLine("CFileImport: ImportDatasetThread calling " +
                                "updatedFileImportCount(" + i.ToString() + ", " +
                                ViewDatatable.Rows.Count.ToString() + ")");
                myInterface.updatedFileImportCount(
                    i, ViewDatatable.Rows.Count);

                // Get shooter
                string shooterCard = (string)row[viewTableColumnNames.Skyttekort.ToString().Trim()];

                // Get shooter from DB
                Structs.Shooter shooter;
                try
                {
                    shooter = myInterface.GetShooter(shooterCard);

                    classString = (string)row[viewTableColumnNames.Klass.ToString()];
                    if (classString.IndexOf("1") >= 0)
                    {
                        shooter.Class = Structs.ShootersClass.Klass1;
                    }
                    if (classString.IndexOf("2") >= 0)
                    {
                        shooter.Class = Structs.ShootersClass.Klass2;
                    }
                    if (classString.IndexOf("3") >= 0)
                    {
                        shooter.Class = Structs.ShootersClass.Klass3;
                    }

                    myInterface.UpdateShooter(shooter);
                }
                catch (CannotFindIdException)
                {
                    // Add user to DB with values from file.
                    shooter = new Structs.Shooter();
                    // What class?
                    classString = (string)row[viewTableColumnNames.Klass.ToString()];
                    Structs.ShootersClass sclass = Structs.ShootersClass.Klass1;
                    if (classString.IndexOf("1") >= 0)
                    {
                        sclass = Structs.ShootersClass.Klass1;
                    }
                    if (classString.IndexOf("2") >= 0)
                    {
                        sclass = Structs.ShootersClass.Klass2;
                    }
                    if (classString.IndexOf("3") >= 0)
                    {
                        sclass = Structs.ShootersClass.Klass3;
                    }

                    if (shooterCard == "")
                    {
                        try
                        {
                            Random rnd = new Random();
                            while (true)
                            {
                                shooterCard = (-rnd.Next(100000)).ToString();
                                myInterface.GetShooter(shooterCard);
                            }
                        }
                        catch (CannotFindIdException)
                        {
                        }
                    }
                    // Create shooter and insert into database
                    shooter.Automatic   = false;
                    shooter.CardNr      = shooterCard.ToString();
                    shooter.Class       = sclass;
                    shooter.ClubId      = ((string)row[viewTableColumnNames.Klubb.ToString()]).Trim();
                    shooter.Email       = ((string)row[viewTableColumnNames.Epost.ToString()]).Trim();
                    shooter.Givenname   = ((string)row[viewTableColumnNames.Efternamn.ToString()]).Trim();
                    shooter.Surname     = ((string)row[viewTableColumnNames.Fornamn.ToString()]).Trim();
                    shooter.Payed       = 0;
                    shooter.ToAutomatic = false;

                    shooter.ShooterId = myInterface.NewShooter(shooter, false);
                    if (shooter.ShooterId < 0)
                    {
                        throw new ApplicationException("ShooterId is " + shooter.ShooterId);
                    }
                }

                // Ok, shooter is done. Create competitor
                classString = (string)row[viewTableColumnNames.Klass.ToString().ToUpper()];
                Structs.ShootersClass cclass = shooter.Class;
                if (classString.IndexOf("D") >= 0)
                {
                    cclass = (Structs.ShootersClass)(
                        (int)Structs.ShootersClass.Damklass1 - 1 +
                        (int)cclass);
                }
                if (classString.IndexOf("J") >= 0)
                {
                    cclass = Structs.ShootersClass.Juniorklass;
                }
                if (classString.IndexOf("VY") >= 0)
                {
                    cclass = Structs.ShootersClass.VeteranklassYngre;
                }
                if (classString.IndexOf("VÄ") >= 0)
                {
                    cclass = Structs.ShootersClass.VeteranklassÄldre;
                }
                if (classString.IndexOf("Ö") >= 0)
                {
                    cclass = Structs.ShootersClass.Öppen;
                }

                // Phu, class is done. Continue with competitor
                Structs.Competitor competitor = new Structs.Competitor();
                competitor.CompetitionId = myInterface.GetCompetitions()[0].CompetitionId;
                competitor.ShooterId     = shooter.ShooterId;
                competitor.WeaponId      = (string)row[viewTableColumnNames.Vapen.ToString()];
                competitor.PatrolId      = -1;
                competitor.Lane          = -1;
                competitor.ShooterClass  = cclass;

                if (!row.IsNull(viewTableColumnNames.Patrull.ToString()) &&
                    ((string)row[viewTableColumnNames.Patrull.ToString()]).Trim() != "")
                {
                    try
                    {
                        // Patrol defined in importfile
                        string patrolString = (string)row[viewTableColumnNames.Patrull.ToString()];
                        int    patrolId     = -1;
                        patrolId = int.Parse(patrolString);
                        while (patrolId > myInterface.GetPatrolsCount())
                        {
                            myInterface.PatrolAddEmpty(false);
                        }
                        competitor.PatrolId = patrolId;
                        string laneString = null;
                        if (!row.IsNull(viewTableColumnNames.Bana.ToString()))
                        {
                            laneString = (string)row[viewTableColumnNames.Bana.ToString()];
                        }

                        if (laneString != null &&
                            laneString.Trim() != "")
                        {
                            competitor.Lane = int.Parse(laneString);
                        }
                        else
                        {
                            competitor.Lane = myInterface.PatrolGetNextLane(patrolId);
                        }
                    }
                    catch (System.FormatException)
                    {
                        // If this occurres, just ignore. It really shouldn't, since
                        // it has already been checked
                    }
                }

                myInterface.NewCompetitor(competitor, false);
            }

            myInterface.updatedFileImportCount(
                ViewDatatable.Rows.Count,
                ViewDatatable.Rows.Count);
            myInterface.updatedShooter(new Structs.Shooter());
            myInterface.updatedCompetitor(new Structs.Competitor());
            myInterface.updatedPatrol();
        }