File: WinSplitsLapDataSource.cs

package info (click to toggle)
quickroute-gps 2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 19,576 kB
  • sloc: cs: 74,488; makefile: 72; sh: 43
file content (75 lines) | stat: -rw-r--r-- 2,295 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Collections.Generic;
using QuickRoute.BusinessEntities.WinSplitsWebService;

namespace QuickRoute.BusinessEntities.ExternalLapDataSources.WinSplits
{
  public class WinSplitsLapDataSource : IExternalLapDataSource
  {
    private readonly WebServices service = new WebServices();

    public IEnumerable<Event> GetEvents(DateTime startDate, DateTime endDate, string country)
    {
      var events = service.GetEvents(startDate, endDate, country);
      var translatedEvents = new List<Event>();
      foreach(var e in events)
      {
        translatedEvents.Add(TranslateEvent(e));
      }
      return translatedEvents;
    }

    public IEnumerable<Category> GetCategories(string eventId)
    {
      var categories = service.GetCategories(int.Parse(eventId));
      var translatedCategories = new List<Category>();
      foreach (var c in categories)
      {
        translatedCategories.Add(TranslateCategory(c));
      }
      return translatedCategories;
    }

    public IEnumerable<Runner> GetRunnersAndSplits(string eventId, int categoryIndex)
    {
      var runners = service.GetRunnersAndSplits(int.Parse(eventId), (short)categoryIndex);
      var translatedRunners = new List<Runner>();
      foreach (var r in runners)
      {
        translatedRunners.Add(TranslateRunner(r));
      }
      return translatedRunners;
    }

    private static Event TranslateEvent(WinSplitsWebService.Event e)
    {
      return new Event()
               {
                 DatabaseId = e.DatabaseId.ToString(),
                 Name = e.Name,
                 Organiser = e.Organiser,
                 StartDate = e.StartDate
               };
    }

    private static Category TranslateCategory(WinSplitsWebService.Category c)
    {
      return new Category()
               {
                 Name = c.Name
               };
    }

    private static Runner TranslateRunner(WinSplitsWebService.Runner r)
    {
      return new Runner()
               {
                 Name = r.Name,
                 Club = r.Club,
                 Splits = new List<DateTime>(r.Splits),
                 StartTime = r.StartTime,
                 FinishTime = r.FinishTime,
               };
    }
  }
}