public void OpprettNyttLag(Guid matchId, string hemmeligKode, string navn) { using (var context = _dataContextFactory.Create()) { var match = context.Matcher.Single(x => x.MatchId == matchId); var lag = new Lag { LagId = Guid.NewGuid().ToString(), Navn = navn, HemmeligKode = hemmeligKode }; match.LeggTil(lag); context.SaveChanges(); } _tilgangsKontroll.Nullstill(); _gameStateService.Calculate(); // For å få laget med på resultatlista }
private void RegistrerNyPostSynkront(string deltakerId, string lagId, string postkode, string bruktVåpen) { var matchId = _currentMatchProvider.GetMatchId(); using (var context = _dataContextFactory.Create()) { using (var transaction = context.Database.BeginTransaction()) { try { if (string.IsNullOrEmpty(postkode)) { return; } postkode = postkode.Trim(); var lagIMatch = (from lm in context.LagIMatch.Include(x => x.Lag) where lm.Lag.LagId == lagId && lm.Match.MatchId == matchId select lm).SingleOrDefault(); if (lagIMatch == null) { return; } var post = (from pim in context.PosterIMatch.Include(x => x.Post).Include(x => x.Match) where pim.Post.HemmeligKode == postkode && pim.Match.MatchId == matchId select pim).SingleOrDefault(); if (post == null) { _eventPublisher.PrøvdeÅRegistrereEnPostMedFeilKode(lagId, deltakerId); return; // Feil kode eller post - straff? } if (!post.ErSynlig) { _eventPublisher.PrøvdeÅRegistrereEnPostSomIkkeErSynlig(lagId, deltakerId); } else { if (context.PostRegisteringer.Any(x => x.RegistertForLag.Id == lagIMatch.Id && x.RegistertPost.Id == post.Id)) { _eventPublisher.AlleredeRegistrert(lagId, deltakerId); return; // Allerede registrert post denne matchen } var deltaker = context.Deltakere.Single(x => x.DeltakerId == deltakerId); var poeng = post.HentPoengOgInkrementerIndex(); if (!string.IsNullOrEmpty(post.RiggetVåpen)) { poeng = KjørRiggedeVåpenOgReturnerPoeng(post, poeng, bruktVåpen, lagId, deltakerId); bruktVåpen = null; // bruker ikke eget våpen når felle går av } else { _eventPublisher.PoengScoret(lagId, deltakerId, poeng); } lagIMatch.PoengSum += poeng; var registrering = new PostRegistrering { PoengForRegistrering = poeng, RegistertForLag = lagIMatch, RegistrertAvDeltaker = deltaker, RegistertPost = post, BruktVaapenId = bruktVåpen, RegistertTidspunkt = TimeService.Now }; context.PostRegisteringer.Add(registrering); if (!string.IsNullOrEmpty(bruktVåpen)) { var brukt = (from v in context.VåpenBeholdning where v.VaapenId == bruktVåpen && v.LagIMatchId == lagIMatch.Id && v.BruktIPostRegistrering == null select v).FirstOrDefault(); // Har prøvd å bruke noe laget ikke har if (brukt != null) { brukt.BruktIPostRegistrering = registrering; if (bruktVåpen == Constants.Våpen.Bombe) { post.SynligFraTid = TimeService.Now.AddSeconds(_settings.PostSkjulesISekunderEtterVåpen); _eventPublisher.BrukteBombe(lagId, deltakerId); } if (bruktVåpen == Constants.Våpen.Felle) { post.RiggetVåpen = Constants.Våpen.Felle; post.RiggetVåpenParam = lagId; _eventPublisher.RiggetEnFelle(lagId, deltakerId); } } } } context.SaveChanges(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } } _gameState.Calculate(); }