Guest User

Untitled

a guest
Jul 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 15.70 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Runtime.Serialization;
  4.  
  5. namespace DragoonService
  6. {    
  7.     public class Controller : IController
  8.     {
  9.         private readonly DataModelContainer _db;
  10.  
  11.         public Controller()
  12.         {
  13.             _db = new DataModelContainer();
  14.             _db.Database.Initialize(false);
  15.         }
  16.  
  17.  
  18.         public ELoginResult Login(string username, string password)
  19.         {
  20.             return _db.Logins.Any(login => login.Name == username && login.Password == password) ? ELoginResult.Success : ELoginResult.Failed;
  21.         }
  22.  
  23.         public ERegisterResult Register(string username, string password)
  24.         {
  25.             if (!_db.Logins.Any(login => login.Name == username))
  26.             {
  27.                 _db.Logins.Add(new Login {IsAdmin = false, Name = username, Password = password});
  28.                 _db.SaveChanges();
  29.                 return ERegisterResult.Success;
  30.             }
  31.             return ERegisterResult.UsernameExists;
  32.         }
  33.  
  34.         public List<CompactHighscore> GetHighscores()
  35.         {
  36.             return _db.Highscores.Select(highscore => new CompactHighscore { Id = highscore.Id, Name = highscore.Name, Score = highscore.Score, Level = highscore.Level.Id}).ToList();
  37.         }
  38.  
  39.         public EActionResult AddHighscore(CompactHighscore highscore)
  40.         {
  41.             _db.Highscores.Add(new Highscore
  42.                                    {
  43.                                        Level = _db.Levels.FirstOrDefault(l => l.Id == highscore.Level),
  44.                                        Login = _db.Logins.FirstOrDefault(login => login.Name == highscore.Name)
  45.                                    });
  46.             _db.SaveChanges();
  47.             return EActionResult.Success;
  48.         }
  49.  
  50.         public List<CompactLevel> GetLevels()
  51.         {
  52.             return _db.Levels.Select(level => new CompactLevel { Id = level.Id, Name = level.Name, Author = level.Author, MapType = level.MapType, Version = level.MapVersion.Version, XML = level.XML}).ToList();
  53.         }
  54.  
  55.         public List<CompactLevel> GetLevelsByName(string name)
  56.         {
  57.             return _db.Levels.Where(l => l.Name == name).Select(level => new CompactLevel { XML = level.XML, Id = level.Id, Name = level.Name, Author = level.Author, MapType = level.MapType, Version = level.MapVersion.Version }).ToList();
  58.         }
  59.  
  60.         public CompactLevel GetLevelByNameAndVersion(string name, double version)
  61.         {
  62.             var level = _db.Levels.First(l => l.Name == name && l.MapVersion.Version == version);
  63.             return new CompactLevel
  64.                        {
  65.                            Id = level.Id,
  66.                            Name = level.Name,
  67.                            Author = level.Author,
  68.                            MapType = level.MapType,
  69.                            Version = level.MapVersion.Version,
  70.                            XML = level.XML,
  71.                        };
  72.         }
  73.  
  74.         public CompactLevel GetLevelById(int id)
  75.         {
  76.             var level = _db.Levels.First(l => l.Id == id);
  77.             return new CompactLevel
  78.                        {
  79.                            Author = level.Author,
  80.                            Id = level.Id,
  81.                            MapType = level.MapType,
  82.                            Name = level.Name,
  83.                            Version = level.MapVersion.Version,
  84.                            XML = level.XML,
  85.                        };
  86.         }
  87.  
  88.         public EActionResult AddLevel(CompactLevel level, bool overwriteIfExists, bool allowOfficialVSUnofficalDuplicate)
  89.         {
  90.             if (_db.Levels.Any(l => l.Name == level.Name && level.Version == l.MapVersion.Version))
  91.             {
  92.                 if (!_db.Levels.Any(l => l.MapType == level.MapType))
  93.                 {
  94.                     if (allowOfficialVSUnofficalDuplicate)
  95.                     {
  96.                         _db.Levels.Add(new Level
  97.                                            {
  98.                                                Author = level.Author,
  99.                                                MapType = level.MapType,
  100.                                                MapVersion =
  101.                                                    _db.MapVersions.FirstOrDefault(mv => mv.Version == level.Version),
  102.                                                Name = level.Name,
  103.                                                XML = level.XML
  104.                                            });
  105.                     }
  106.                 }
  107.                 else if (overwriteIfExists)
  108.                 {
  109.                     _db.Levels.Remove(
  110.                         _db.Levels.FirstOrDefault(
  111.                             l =>
  112.                             l.Name == level.Name && level.Version == l.MapVersion.Version && l.MapType == level.MapType));
  113.                     _db.Levels.Add(new Level
  114.                                        {
  115.                                            Author = level.Author,
  116.                                            MapType = level.MapType,
  117.                                            MapVersion =
  118.                                                _db.MapVersions.FirstOrDefault(mv => mv.Version == level.Version),
  119.                                            Name = level.Name,
  120.                                            XML = level.XML
  121.                                        });
  122.                 }
  123.  
  124.             }
  125.             else
  126.             {
  127.                 _db.Levels.Add(new Level
  128.                 {
  129.                     Author = level.Author,
  130.                     MapType = level.MapType,
  131.                     MapVersion =
  132.                         _db.MapVersions.FirstOrDefault(mv => mv.Version == level.Version),
  133.                     Name = level.Name,
  134.                     XML = level.XML
  135.                 });
  136.             }
  137.             _db.SaveChanges();
  138.             return EActionResult.Success;
  139.         }
  140.  
  141.  
  142.         public List<CompactLevel> GetDefaultLevels()
  143.         {
  144.             return _db.Levels.Where(l => l.MapType == EMapType.Default).Select(level => new CompactLevel { XML = level.XML, Id = level.Id, Name = level.Name, Author = level.Author, MapType = level.MapType, Version = level.MapVersion.Version }).ToList();
  145.         }
  146.  
  147.         public List<CompactLevel> GetCustomLevels()
  148.         {
  149.             return _db.Levels.Where(l => l.MapType == EMapType.Custom).Select(level => new CompactLevel { XML = level.XML, Id = level.Id, Name = level.Name, Author = level.Author, MapType = level.MapType, Version = level.MapVersion.Version }).ToList();
  150.         }
  151.  
  152.         public List<CompactLevel> GetDefaultLevelByName(string name)
  153.         {
  154.             return _db.Levels.Where(l => l.MapType == EMapType.Default && l.Name == name).Select(level => new CompactLevel { XML = level.XML, Id = level.Id, Name = level.Name, Author = level.Author, MapType = level.MapType, Version = level.MapVersion.Version }).ToList();
  155.         }
  156.  
  157.         public CompactLevel GetDefaultLevelByNameAndVersion(string name, double version)
  158.         {
  159.             var level = _db.Levels.FirstOrDefault(
  160.                 l => l.MapType == EMapType.Default && l.Name == name && l.MapVersion.Version == version);
  161.             return new CompactLevel
  162.                        {
  163.                            Id = level.Id,
  164.                            Name = level.Name,
  165.                            Author = level.Author,
  166.                            MapType = level.MapType,
  167.                            Version = level.MapVersion.Version,
  168.                            XML = level.XML
  169.                        };
  170.         }
  171.  
  172.         public List<CompactLevel> GetCustomLevelByName(string name)
  173.         {
  174.             return _db.Levels.Where(l => l.MapType == EMapType.Custom && l.Name == name).Select(level => new CompactLevel { XML = level.XML, Id = level.Id, Name = level.Name, Author = level.Author, MapType = level.MapType, Version = level.MapVersion.Version }).ToList();
  175.         }
  176.  
  177.         public CompactLevel GetCustomLevelByNameAndVersion(string name, double version)
  178.         {
  179.             var level = _db.Levels.FirstOrDefault(
  180.                     l => l.MapType == EMapType.Custom && l.Name == name && l.MapVersion.Version == version);
  181.             return new CompactLevel
  182.             {
  183.                 Id = level.Id,
  184.                 Name = level.Name,
  185.                 Author = level.Author,
  186.                 MapType = level.MapType,
  187.                 Version = level.MapVersion.Version,
  188.                 XML = level.XML,
  189.             };
  190.         }
  191.  
  192.         public List<CompactLevel> GetLevelsByType(EMapType mapType)
  193.         {
  194.             return _db.Levels.Where(l => l.MapType == mapType).Select(level => new CompactLevel { XML = level.XML, Id = level.Id, Name = level.Name, Author = level.Author, MapType = level.MapType, Version = level.MapVersion.Version }).ToList();
  195.         }
  196.  
  197.         public EActionResult DeleteLevelById(int id)
  198.         {
  199.             _db.Levels.Remove(_db.Levels.FirstOrDefault(l => l.Id == id));
  200.             _db.SaveChanges();
  201.             return EActionResult.Success;
  202.         }
  203.  
  204.         public EActionResult DeleteLevelByNameAndType(string name, EMapType mapType)
  205.         {
  206.             var toDelete = _db.Levels.Where(l => l.Name == name && l.MapType == mapType);
  207.             foreach (var level in toDelete)
  208.             {
  209.                 _db.Levels.Remove(level);
  210.             }
  211.             return EActionResult.Success;
  212.         }
  213.  
  214.         public bool IsAdmin(string name)
  215.         {
  216.             return _db.Logins.Any(l => l.Name == name && l.IsAdmin);
  217.         }
  218.  
  219.         public EAdminVerifyResult RegisterAsAdmin(string name, string adminkey)
  220.         {
  221.             throw new System.NotImplementedException();
  222.         }
  223.  
  224.         public CompactGameVersion GetCurrentGameVersion()
  225.         {
  226.             var versions = _db.GameVersions;
  227.             var sortedVersions = versions.OrderBy(v => v.Version).Reverse();
  228.             var wanted = sortedVersions.FirstOrDefault();
  229.             return new CompactGameVersion
  230.                        {Id = wanted.Id, Version = wanted.Version, Time = wanted.Time, URL = wanted.URL, LauncherVersionId = wanted.LauncherVersion.Id, MapVersionId = wanted.MapVersions.Id };
  231.         }
  232.  
  233.         public CompactLauncherVersion GetCurrentLauncherVersion()
  234.         {
  235.             var versions = _db.LauncherVersions;
  236.             var sortedVersions = versions.OrderBy(v => v.Version).Reverse();
  237.             var wanted = sortedVersions.FirstOrDefault();
  238.             var list = wanted.GameVersions.Select(gv => gv.Id).ToList();
  239.             return new CompactLauncherVersion { Id = wanted.Id, Version = wanted.Version, Time = wanted.Time, URL = wanted.URL, GameVersionIds = list  };
  240.         }
  241.  
  242.         public bool IsGameCurrentVersion(double currentVersion)
  243.         {
  244.             var versions = _db.GameVersions;
  245.             var sortedVersions = versions.OrderBy(v => v.Version).Reverse();
  246.             var wanted = sortedVersions.FirstOrDefault();
  247.             return currentVersion == wanted.Version;
  248.         }
  249.  
  250.         public bool IsLauncherCurrentVersion(double currentVersion)
  251.         {
  252.             var versions = _db.LauncherVersions;
  253.             var sortedVersions = versions.OrderBy(v => v.Version).Reverse();
  254.             var wanted = sortedVersions.FirstOrDefault();
  255.             return currentVersion == wanted.Version;
  256.         }
  257.  
  258.         public string GetGameUpdateUrl()
  259.         {
  260.             var versions = _db.GameVersions;
  261.             var sortedVersions = versions.OrderBy(v => v.Version).Reverse();
  262.             var wanted = sortedVersions.FirstOrDefault();
  263.             return wanted.URL;
  264.         }
  265.  
  266.         public string GetLauncherUpdateUrl()
  267.         {
  268.             var versions = _db.LauncherVersions;
  269.             var sortedVersions = versions.OrderBy(v => v.Version).Reverse();
  270.             var wanted = sortedVersions.FirstOrDefault();
  271.             return wanted.URL;
  272.         }
  273.  
  274.         public List<CompactGameVersion> GetGameVersions()
  275.         {
  276.             return _db.GameVersions.Select(gv => new CompactGameVersion{ Id = gv.Id, LauncherVersionId =  gv.LauncherVersion.Id, MapVersionId = gv.MapVersions.Id, Time = gv.Time, URL = gv.URL, Version = gv.Version}).ToList();
  277.         }
  278.  
  279.         public List<CompactMapVersion> GetMapVersions()
  280.         {
  281.             List<CompactMapVersion> toReturn = new List<CompactMapVersion>();
  282.             foreach (var mv in _db.MapVersions)
  283.             {
  284.                 List<int> gameversions = mv.GameVersion.Select(gameversion => gameversion.Id).ToList();
  285.                 List<int> levels = mv.Level.Select(l => l.Id).ToList();
  286.                 toReturn.Add(new CompactMapVersion
  287.                                  {
  288.                                      Id = mv.Id,
  289.                                      GameVersionIds = gameversions,
  290.                                      LevelIds = levels,
  291.                                      Time = mv.Time,
  292.                                      Version = mv.Version
  293.                                  });
  294.             }
  295.             return toReturn;
  296.         }
  297.  
  298.         public List<CompactLauncherVersion> GetLauncherVersions()
  299.         {
  300.             var list = (from v in _db.LauncherVersions from gv in v.GameVersions select gv.Id).ToList();
  301.             return _db.LauncherVersions.Select(lv => new CompactLauncherVersion { Id = lv.Id, GameVersionIds = list, Time = lv.Time, URL = lv.URL, Version = lv.Version }).ToList();
  302.            
  303.         }
  304.  
  305.         public EActionResult AddNewGameVersion(CompactGameVersion newVersion)
  306.         {
  307.             _db.GameVersions.Add(new GameVersion
  308.                                      {
  309.                                          LauncherVersion =
  310.                                              _db.LauncherVersions.FirstOrDefault(
  311.                                                  lv => lv.Id == newVersion.LauncherVersionId),
  312.                                          MapVersions =
  313.                                              _db.MapVersions.FirstOrDefault(lv => lv.Id == newVersion.MapVersionId),
  314.                                          Time = newVersion.Time,
  315.                                          URL = newVersion.URL,
  316.                                          Version = newVersion.Version
  317.                                      });
  318.             _db.SaveChanges();
  319.             return EActionResult.Success;
  320.         }
  321.  
  322.         public EActionResult AddNewLauncherVersion(CompactLauncherVersion newVersion)
  323.         {
  324.             var list = (from gameVersion in _db.GameVersions from version in newVersion.GameVersionIds where gameVersion.Id == version select gameVersion).ToList();
  325.             ;
  326.             List<GameVersion> gameVersions = list;
  327.             _db.LauncherVersions.Add(new LauncherVersion
  328.             {
  329.                 Time = newVersion.Time,
  330.                 URL = newVersion.URL,
  331.                 Version = newVersion.Version,
  332.                 GameVersions = gameVersions,
  333.             });
  334.             _db.SaveChanges();
  335.             return EActionResult.Success;
  336.         }
  337.  
  338.         public EActionResult AddNewMapVersion(CompactMapVersion newVersion)
  339.         {
  340.             List<Level> levels = (from level in _db.Levels from l in newVersion.LevelIds where level.Id == l select level).ToList();
  341.             List<GameVersion> gameVersions = (from gameVersion in _db.GameVersions from version in newVersion.GameVersionIds where gameVersion.Id == version select gameVersion).ToList();
  342.             _db.MapVersions.Add(new MapVersion
  343.             {
  344.                 Time = newVersion.Time,
  345.                 GameVersion = gameVersions,
  346.                 Version = newVersion.Version,
  347.                 Level = levels,
  348.             });
  349.             _db.SaveChanges();
  350.             return EActionResult.Success;
  351.         }
  352.     }
  353. }
Add Comment
Please, Sign In to add comment