internal static Game SaveGame(string sub, DateTime endGame, double latitude, double longitude, string[] clues, int[] user_ids, string photo) { using (var context = new Database.postgresContext()) { var user = context.User.FirstOrDefault(u => u.Sub == sub); if (user == null) { throw new Database.UserNotFoundException(); } var game = new Database.Game() { CreatorId = user.Id, Ended = false, Latitude = latitude, Longitude = longitude, Photo = photo, StartDatetime = DateTime.Now, EndDatetime = endGame, WinCode = GenerateRandomCode() }; context.Game.Add(game); context.SaveChanges(); foreach (string clue in clues) { Database.Clue c = new Database.Clue(); c.GameId = game.Id; c.Text = clue; context.Clue.Add(c); } foreach (int user_id in user_ids) { var u = context.User.Find(user_id); Database.GameUser gu = new Database.GameUser(); gu.GameId = game.Id; gu.UserId = user_id; context.GameUser.Add(gu); CloudMessagingService.GameInvitation(user.Sub, game.Id); } context.SaveChanges(); return(ParseGame(game)); } }
public static User SaveUser(string sub, string alias, string mail, string first_name, string last_name) { using (var context = new Database.postgresContext()) { var user = context.User.FirstOrDefault(u => u.Sub == sub); if (user == null) { user = new Database.User(); } user.Alias = alias; user.FirstName = first_name; user.LastName = last_name; user.Mail = mail; user.Sub = sub; if (user.Id == 0) { context.User.Add(user); } context.SaveChanges(); return(ParseUser(user)); } }
public static User SaveUser(User userNew) { using (var context = new Database.postgresContext()) { var user = context.User.FirstOrDefault(u => u.Sub == userNew.Sub); if (user == null) { user = new Database.User(); } user.Alias = userNew.Alias; user.FirstName = userNew.FirstName; user.LastName = userNew.LastName; user.Mail = userNew.Mail; user.Sub = userNew.Sub; if (user.Id == 0) { context.User.Add(user); } context.SaveChanges(); return(ParseUser(user)); } }
internal static Game UpdatePhoto(int game_id, string sub, string photo) { using (var context = new Database.postgresContext()) { var user = context.User.FirstOrDefault(u => u.Sub == sub); if (user == null) { throw new Database.UserNotFoundException(); } if (user.Sub != sub) { throw new Database.UserNotFoundException(); } var game = context.Game.Find(game_id); if (game == null) { throw new Database.GameNotFoundException(); } game.Photo = photo; context.SaveChanges(); return(ParseGame(game)); } }
internal static void JoinGame(string sub, int game_id) { using (var context = new Database.postgresContext()) { var user = context.User.FirstOrDefault(u => u.Sub == sub); if (user == null) { throw new Database.UserNotFoundException(); } var game = context.Game.FirstOrDefault(g => g.Id == game_id); if (game == null) { throw new Database.GameNotFoundException(); } Database.GameUser gu = new Database.GameUser(); gu.GameId = game.Id; gu.UserId = user.Id; context.GameUser.Add(gu); context.SaveChanges(); } }
internal static Game SaveGame(string sub, Game gameNew) { using (var context = new Database.postgresContext()) { var user = context.User.First(u => u.Sub == sub); var game = new Database.Game() { CreatorId = user.Id, Ended = false, Latitude = gameNew.Latitude, Longitude = gameNew.Longitude, Photo = gameNew.Photo, StartDatetime = DateTime.Now, EndDatetime = gameNew.EndDatetime, WinCode = GenerateRandomCode() }; context.Game.Add(game); context.SaveChanges(); foreach (string clue in gameNew.Clues) { Database.Clue c = new Database.Clue(); c.GameId = game.Id; c.Text = clue; context.Clue.Add(c); } foreach (int user_id in gameNew.UserIds) { var u = context.User.Find(user_id); Database.GameUser gu = new Database.GameUser(); gu.GameId = game.Id; gu.UserId = user_id; context.GameUser.Add(gu); CloudMessagingService.GameInvitation(user.Sub, game.Id); } context.SaveChanges(); return(ParseGame(game)); } }
public static Game WinGame(int game_id, string sub, string win_code) { using (var context = new Database.postgresContext()) { var user = context.User.FirstOrDefault(u => u.Sub == sub); if (user == null) { throw new Database.UserNotFoundException(); } using (var dbContextTransaction = context.Database.BeginTransaction()) { var game = context.Game.FirstOrDefault(g => g.Id == game_id); if (game == null) { throw new Database.GameNotFoundException(); } if (!game.Ended) { if (game.WinCode == win_code) { game.WinId = user.Id; game.WinTimestamp = DateTime.Now; game.Ended = true; context.SaveChanges(); CloudMessagingService.GameEnded(game_id, user); } } dbContextTransaction.Commit(); return(ParseGame(game)); } } }