Calculate() public method

public Calculate ( ) : void
return void
Ejemplo n.º 1
0
        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
        }
Ejemplo n.º 2
0
        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();
        }