Ejemplo n.º 1
0
        // GET: EventCompetitors/Create
        public ActionResult Create(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Event eventObject = db.Events.Include(e => e.Game).FirstOrDefault(e => e.eventID == id);

            if (eventObject == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            EventCompetitor eventCompetitor = new EventCompetitor
            {
                Event   = eventObject,
                eventID = eventObject.eventID
            };
            SelectList allCompetitors = new SelectList(eventObject.Game.Competitors, "competitorID", "competitorName");
            EventCompetitorViewModel eventCompetitorViewModel = new EventCompetitorViewModel()
            {
                EventCompetitor = eventCompetitor,
                AllCompetitors  = allCompetitors
            };

            ViewBag.Medals = GetMedals();

            return(View(eventCompetitorViewModel));
        }
Ejemplo n.º 2
0
        // GET: EventCompetitors/Edit/1/2
        public ActionResult Edit(int?id, int?competitorID)
        {
            if (id == null || competitorID == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // Get the event competitor from the database based on the route parameters
            EventCompetitor eventCompetitor = db.EventCompetitors
                                              .Include(ec => ec.Competitor)
                                              .Include(ec => ec.Event)
                                              .Where(ec => ec.eventID == id && ec.competitorID == competitorID)
                                              .Single();

            if (eventCompetitor == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            EventCompetitorViewModel eventCompetitorViewModel = new EventCompetitorViewModel()
            {
                EventCompetitor = eventCompetitor,
            };

            ViewBag.Medals = GetMedals();

            return(View(eventCompetitorViewModel));
        }
Ejemplo n.º 3
0
        public ActionResult DeleteConfirmed(int?id, int?competitorID)
        {
            EventCompetitor eventCompetitor = db.EventCompetitors
                                              .Include(ec => ec.Competitor)
                                              .Include(ec => ec.Event)
                                              .Where(ec => ec.eventID == id && ec.competitorID == competitorID)
                                              .Single();

            db.EventCompetitors.Remove(eventCompetitor);
            db.SaveChanges();
            return(RedirectToAction("Index", "Events", new { id = eventCompetitor.eventID }));
        }
Ejemplo n.º 4
0
        public ActionResult Create(EventCompetitorViewModel eventCompetitorViewModel)
        {
            if (ModelState.IsValid)
            {
                // Get existing competitor and event from database
                Competitor competitor = db.Competitors
                                        .Find(eventCompetitorViewModel.EventCompetitor.competitorID);
                Event @event = db.Events
                               .Find(eventCompetitorViewModel.EventCompetitor.eventID);
                // Assign the secondary propertues
                var competitorPosition = eventCompetitorViewModel.EventCompetitor.competitorPosition;
                var competitorMedal    = eventCompetitorViewModel.EventCompetitor.competitorMedal;

                if (competitor != null & @event != null)
                {
                    // Create a new object
                    EventCompetitor eventCompetitor = new EventCompetitor()
                    {
                        Event              = @event,
                        Competitor         = competitor,
                        competitorMedal    = competitorMedal,
                        competitorPosition = competitorPosition
                    };

                    // Add to the DbContext and save the changes
                    db.EventCompetitors.Add(eventCompetitor);
                    db.SaveChanges();
                    return(RedirectToAction("Index", "Events", new { id = eventCompetitor.eventID }));
                }
                else
                {
                    ModelState.AddModelError("", "Invalid event or competitor!");
                }
            }

            // Repopulate in case of validation error
            Event eventObject = db.Events
                                .Include(e => e.Game)
                                .FirstOrDefault(e => e.eventID == eventCompetitorViewModel.EventCompetitor.eventID);
            SelectList allCompetitors = new SelectList(eventObject.Game.Competitors,
                                                       "competitorID", "competitorName");

            eventCompetitorViewModel.AllCompetitors = allCompetitors;
            ViewBag.Medals = GetMedals();

            return(View(eventCompetitorViewModel));
        }
Ejemplo n.º 5
0
        // GET: EventCompetitors/Delete/1/2
        public ActionResult Delete(int?id, int?competitorID)
        {
            if (id == null || competitorID == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // Get the event competitor from the database based on the route parameters
            EventCompetitor eventCompetitor = db.EventCompetitors
                                              .Include(ec => ec.Competitor)
                                              .Include(ec => ec.Event)
                                              .Where(ec => ec.eventID == id && ec.competitorID == competitorID)
                                              .Single();

            if (eventCompetitor == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            return(View(eventCompetitor));
        }
Ejemplo n.º 6
0
        public ActionResult Edit(EventCompetitorViewModel eventCompetitorViewModel)
        {
            if (ModelState.IsValid)
            {
                Competitor competitor = db.Competitors
                                        .Find(eventCompetitorViewModel.EventCompetitor.competitorID);
                Event @event = db.Events
                               .Find(eventCompetitorViewModel.EventCompetitor.eventID);
                var competitorPosition = eventCompetitorViewModel.EventCompetitor.competitorPosition;
                var competitorMedal    = eventCompetitorViewModel.EventCompetitor.competitorMedal;
                if (competitorMedal == "None")
                {
                    competitorMedal = null;
                }

                if (competitor != null & @event != null)
                {
                    EventCompetitor eventCompetitor = new EventCompetitor()
                    {
                        Event              = @event,
                        Competitor         = competitor,
                        competitorMedal    = competitorMedal,
                        competitorPosition = competitorPosition
                    };

                    db.Entry(eventCompetitor).State = EntityState.Modified;
                    db.SaveChanges();
                    return(RedirectToAction("Index", "Events", new { id = eventCompetitor.eventID }));
                }
                else
                {
                    ModelState.AddModelError("", "Invalid event or competitor!");
                }
            }

            ViewBag.Medals = GetMedals();

            return(View(eventCompetitorViewModel));
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            Console.WindowHeight = Console.LargestWindowHeight >= 40 ? 40 : Console.LargestWindowHeight;
            Console.Title        = "Ski jumping points calculator tester";
            Console.WriteLine("Ski jumping points calculator tester!");

            //Load event information, parameters and competitors from a file
            Event competitionEvent = EventLoader.LoadXML("../../../../Testevent.xml");

            Console.WriteLine("\nEvent:{0}", competitionEvent.ToString());
            Console.WriteLine("\nEvent parameters:\n{0}", competitionEvent.Parameters.ToString());
            Console.WriteLine("\nEvent competitors:");
            foreach (EventCompetitor c in competitionEvent.Competitors)
            {
                Console.WriteLine("\nCompetitor:{0}", c.ToString());
            }

            //Test data
            Random          rng                = new Random();
            EventCompetitor testCompetitor     = new EventCompetitor("0000", "Test", "Jumper", "FIN");
            double          length             = 124;
            double          windCorrection     = 1.4;
            double          platformCorrection = -1.4;
            IList <double>  stylePoints        = new List <double>()
            {
                18, 18.5, 18.5, 19, 19
            };
            JumpData singleJumpData = new JumpData(length, windCorrection, platformCorrection, stylePoints);

            //Make and score a single test jump
            Jump singleJump = new Jump(testCompetitor);

            singleJump.ScoreJump(singleJumpData, competitionEvent.Parameters);
            Console.WriteLine("\nSingle jump test:\n{0}", singleJump.ToString());

            //Event starts
            //Event has 1..n EventRound(s) and has 1 EventResult(s)
            //EventRound has 1..n Jumps that have 1 Competitor, 1 Jump data and 1 Jump score
            //Event.Parameters are used together with Jump data to calculate Jump score

            //This is not necessarily the best approach, depending on the application type
            //Alternative handle rounds in application and set round data to the Event, after the round has been completed
            //Alternatively, update round jump data at the Event after each jump
            //First round
            EventRound firstRound = competitionEvent.GetFirstRound();

            //Now done by Event in previous step

            /*
             * //Add competitors to the round
             * //Competitors are simply ordered according to their order in the Event
             * //Could be potentially hidden from application by Event and EventRound methods
             * foreach (EventCompetitor c in competitionEvent.Competitors)
             * {
             *  firstRound.AddJump(new Jump(c));
             * }
             */

            //Make first round test jumps, set data about jump and calculate and set score
            //Could be potentially partially hidden from application by an Event method
            //Consider during application design
            foreach (Jump jump in firstRound.Jumps)
            {
                JumpData jumpData = new JumpData(rng.Next(100, 130 + 1), windCorrection, platformCorrection, stylePoints);
                jump.ScoreJump(jumpData, competitionEvent.Parameters);
                //Previous implementation, not compatible with library changes
                //competitionEvent.AddResult(jump.Competitor, jump.Score);
                //New implementation, update result, following library changes
                competitionEvent.UpdateResult(jump.Competitor, jump.Score);
                //Console.WriteLine("\nFirst round jump:\nCompetitor:{0}\nJump:{1}\nScore: {2:F2}", jump.Competitor.ToString(), jump.Data.ToString(), jump.Score);
            }

            /*
             * //Display first round results
             * //Could be potentially partially hidden from application by an Event method
             * foreach (EventResult r in competitionEvent.Results)
             * {
             *  Console.WriteLine("\nFirst round results:\nCompetitor:{0}\nScore: {1:F2}", r.Competitor.ToString(), r.Score);
             * }
             */

            //Second round
            //Second round is currently not fully supported after library changes, see below
            //EventRound secondRound = competitionEvent.GetNextRound();

            //Now done by Event in previous step

            /*
             * //Add competitors to the round, based on their first round score, in reverse order
             * foreach (EventResult r in competitionEvent.Results.Reverse().ToList())
             * {
             *  secondRound.AddJump(new Jump(r.Competitor));
             * }
             */

            //Previous implementation, not compatible with library changes
            //Current update method just updates the existing score with the new one, instead of incrementing the score
            //If suppport for multiple rounds is later required, increment functionality can be added to the library

            /*
             * //Make second round test jumps, set data about jump and calculate and set score
             * foreach (Jump j in secondRound.Jumps)
             * {
             *  JumpData jumpData = new JumpData(rng.Next(100, 130 + 1), windCorrection, platformCorrection, stylePoints);
             *  j.ScoreJump(jumpData, competitionEvent.Parameters);
             *  competitionEvent.UpdateResult(j.Competitor, j.Score);
             *  //Console.WriteLine("\nSecond round jump:\nCompetitor:{0}\nJump:{1}\nScore: {2:F2}", j.Competitor.ToString(), j.Data.ToString(), j.Score);
             * }
             */

            //Display jumps by round
            foreach (EventRound r in competitionEvent.Rounds)
            {
                Console.WriteLine("\n{0} jumps:", r.RoundName);
                foreach (Jump j in r.Jumps)
                {
                    //Console.WriteLine("\nCompetitor:{0}\nJump:{1}\nScore: {2}", j.Competitor.ToString(), j.Data.ToString(), j.Score);
                    Console.WriteLine("{0}", j.ToString());
                }
            }

            //Display event final results
            Console.WriteLine("\nFinal results:");
            foreach (EventResult r in competitionEvent.Results)
            {
                Console.WriteLine("\n{0}\nScore: {1:F2}", r.Competitor.ToString(), r.Score);
            }

            Console.ReadLine();
        }