Exemplo n.º 1
0
        public bool EvidentirajMec(EvidencijaMeca obj, int takmicenjeID)//potrebno je takmicenjeID
        {
            //nikad ne bi niti jedan tim trebao biti null da napomenem, to je rijeseno u evidencijimeca httpget
            using (var transakcija = db.Database.BeginTransaction())
            {
                try
                {
                    //obzirom da se implementacije razlikuju za web app i web api, i zbog problema sa serijalizacijom
                    //i dubinom, ovdje cu dodati jednu mini funkciju koja ce provjeriti da li su List<Igrac_Utakmica> za tim1 i
                    //tim2 prazne, ako jesu na osnovu imena timova(tj prijava) ce dobaviti igrac utakmice i setovati


                    int pobjednik = (obj.RezultatTim1.GetValueOrDefault() > obj.RezultatTim2.GetValueOrDefault()) ? 1 : 2;
                    UpdateIgracUtakmicaZapis(obj, pobjednik);
                    //potrebno mec postaviti na zavrsen
                    Igrac_Utakmica trenutniIg = db.IgraciUtakmice
                                                .AsNoTracking().Include(x => x.Utakmica).ThenInclude(x => x.Runda)
                                                .Where(x => x.IgID == obj.Tim1[0].IgID)
                                                .FirstOrDefault();

                    Utakmica trenutna = db.Utakmice.Include(x => x.UcescaNaUtakmici).Include(x => x.Runda)
                                        .Where(x => x.ID == trenutniIg.UtakmicaID).FirstOrDefault();

                    if (GetTakmicenjeSistem(takmicenjeID) == "Single elimination" &&
                        !ZadnjaUtakmica(obj.Tim1[0], takmicenjeID))
                    {
                        if (pobjednik == 1)
                        {
                            UnaprijediIgraceNaUtakmicu(obj.Tim1, trenutna);
                        }
                        else
                        {
                            UnaprijediIgraceNaUtakmicu(obj.Tim2, trenutna);
                        }
                    }
                    db.Utakmice.Where(x => x.ID == trenutna.ID).FirstOrDefault().IsEvidentirana = true;
                    db.Utakmice.Where(x => x.ID == trenutna.ID).FirstOrDefault().DatumVrijeme   = DateTime.Now;

                    db.SaveChanges();

                    if (ZadnjaUtakmica(obj.Tim1[0], takmicenjeID))
                    {
                        //prebaci takmicenje na zavrseno il whatever
                        Status_Takmicenja zavrseno = db.StatusiTakmicenja.Where(x => x.Opis == "Zavrseno" || x.Opis == "Završeno").FirstOrDefault();
                        db.Takmicenja.Where(x => x.ID == takmicenjeID).FirstOrDefault().StatusID = zavrseno.ID;
                        db.SaveChanges();
                    }
                    transakcija.Commit();
                    return(true);
                }
                catch (Exception err)
                {
                    transakcija.Rollback();
                }
            }
            return(false);
        }
Exemplo n.º 2
0
        public bool ZadnjaUtakmica(Igrac_Utakmica ucesce, int takmid)
        {
            int      brojUtakmica = BrojUtakmicaNaTakmicenju(takmid);
            Utakmica x            = db.IgraciUtakmice.AsNoTracking().Include(c => c.Utakmica).Where(c => c.IgID == ucesce.IgID)
                                    .Select(c => c.Utakmica)
                                    .FirstOrDefault();

            return(x.BrojUtakmice == brojUtakmica);
        }
Exemplo n.º 3
0
        public void UpdateIgracUtakmicaSingle(EvidencijaMeca obj, int pobjednik)
        {
            Tip_Rezultata  pobjeda = db.TipoviRezultata.AsNoTracking().Where(c => c.Naziv == "Pobjeda").FirstOrDefault();
            Tip_Rezultata  poraz   = db.TipoviRezultata.AsNoTracking().Where(c => c.Naziv == "Poraz").FirstOrDefault();
            Igrac_Utakmica x       = db.IgraciUtakmice
                                     .AsNoTracking()
                                     .Where(c => c.IgID == obj.Tim1[0].IgID).FirstOrDefault();

            x.OsvojeniSetovi = obj.RezultatTim1.GetValueOrDefault();
            int xs = (pobjednik == 1) ? 1 : 0; // predstavlja score x - naziv ucesca, slovo s - score

            Igrac_Utakmica y = db.IgraciUtakmice
                               .AsNoTracking()
                               .Where(c => c.IgID == obj.Tim2[0].IgID).FirstOrDefault();

            y.OsvojeniSetovi = obj.RezultatTim2.GetValueOrDefault();
            int ys = (pobjednik == 2) ? 1 : 0; // predstavlja score y - naziv ucesca, slovo s - score


            Igrac xigrac = db.Igraci.AsNoTracking().Where(c => c.ID == x.IgracID).FirstOrDefault();
            Igrac yigrac = db.Igraci.AsNoTracking().Where(c => c.ID == y.IgracID).FirstOrDefault();

            x.PristupniElo = xigrac.ELO;
            y.PristupniElo = yigrac.ELO;

            string X = "pobjeda";
            string Y = "poraz";

            if (xs == 1)
            {
                x.TipRezultata = pobjeda;
                y.TipRezultata = poraz;
            }
            else
            {
                x.TipRezultata = poraz;
                y.TipRezultata = pobjeda;
                X = "poraz";
                Y = "pobjeda";
            }
            UpdateStatistikuIStanjePrijave(x.IgracID ?? default(int), X == "pobjeda" ? true : false, false);
            UpdateStatistikuIStanjePrijave(y.IgracID ?? default(int), Y == "pobjeda" ? true : false, false);

            db.Update(x);
            db.Update(y);
            db.SaveChanges();

            xigrac.ELO = ELOCalculator.VratiEloSingle(x.PristupniElo.GetValueOrDefault(), y.PristupniElo.GetValueOrDefault(), xs);
            yigrac.ELO = ELOCalculator.VratiEloSingle(y.PristupniElo.GetValueOrDefault(), x.PristupniElo.GetValueOrDefault(), ys);

            db.Igraci.Where(c => c.ID == xigrac.ID).FirstOrDefault().ELO = xigrac.ELO;
            db.SaveChanges();
            db.Igraci.Where(c => c.ID == yigrac.ID).FirstOrDefault().ELO = yigrac.ELO;
            db.SaveChanges();

            return;
        }
Exemplo n.º 4
0
        //ovo za sad na apiju ne znam da li ima smisla, tj ima sigurno samo onda treba skontati gdje bi klasa TopIgraci
        //tj u koji bi se folder smjestila, da li to pripada takmicenju ili nekom ipak drugom servisu? Jer getnajboljiovesedmice
        //nema bas veze sa evidencijom
        private List <TopIgraciVM> GetNajboljeOveSedmice()
        {
            DateTime        prosliPonedjeljak = GetProsliPonedjeljak(DateTime.Now);
            List <Utakmica> utakmiceUSedmici  = db.Utakmice.AsNoTracking().Include(x => x.UcescaNaUtakmici)
                                                .Where(x => x.IsEvidentirana && x.DatumVrijeme >= prosliPonedjeljak && x.DatumVrijeme <= DateTime.Now)
                                                .ToList();
            List <TopIgraciVM> listaPovratnih = new List <TopIgraciVM>();

            foreach (Utakmica i in utakmiceUSedmici)
            {
                foreach (Igrac_Utakmica j in i.UcescaNaUtakmici)
                {
                    if (listaPovratnih.Where(x => x.IgracId == j.IgracID).Count() == 0)
                    {
                        Igrac_Utakmica ucesceNatekmi = db.IgraciUtakmice
                                                       .Include(x => x.TipRezultata).Include(x => x.Igrac)
                                                       .Where(x => x.IgID == j.IgID).FirstOrDefault();
                        listaPovratnih.Add(new TopIgraciVM
                        {
                            BrojOsvojenihSetova = 0,
                            BrojPobjeda         = 0,
                            BrojPoraza          = 0,
                            ELO     = ucesceNatekmi.Igrac.ELO,
                            IgracId = ucesceNatekmi.IgracID.GetValueOrDefault(),
                            Naziv   = ucesceNatekmi.Igrac.PrikaznoIme
                        });
                    }
                    Igrac_Utakmica ucesce = db.IgraciUtakmice.Include(x => x.TipRezultata)
                                            .Where(x => x.IgID == j.IgID).FirstOrDefault();
                    TopIgraciVM obj     = listaPovratnih.Where(x => x.IgracId == j.IgracID).FirstOrDefault();
                    bool        pobjeda = (ucesce.TipRezultata.Naziv == "Pobjeda") ? true : false;
                    if (pobjeda)
                    {
                        obj.BrojPobjeda++;
                    }
                    else
                    {
                        obj.BrojPoraza++;
                    }
                    obj.BrojOsvojenihSetova += j.OsvojeniSetovi.GetValueOrDefault();
                }
            }
            return(listaPovratnih.OrderByDescending(x => x.BrojOsvojenihSetova).ToList());
        }
Exemplo n.º 5
0
        public void UpdateIgracUtakmicaDouble(EvidencijaMeca obj, int pobjednik)
        {
            Tip_Rezultata  pobjeda = db.TipoviRezultata.AsNoTracking().Where(x => x.Naziv == "Pobjeda").FirstOrDefault();
            Tip_Rezultata  poraz   = db.TipoviRezultata.AsNoTracking().Where(x => x.Naziv == "Poraz").FirstOrDefault();
            Igrac_Utakmica x1      = db.IgraciUtakmice.AsNoTracking()
                                     .Where(x => x.IgID == obj.Tim1[0].IgID).FirstOrDefault();
            Igrac_Utakmica x2 = db.IgraciUtakmice.AsNoTracking()
                                .Where(x => x.IgID == obj.Tim1[1].IgID).FirstOrDefault();

            x1.OsvojeniSetovi = obj.RezultatTim1.GetValueOrDefault();
            x2.OsvojeniSetovi = obj.RezultatTim1.GetValueOrDefault();
            int xs = (pobjednik == 1) ? 1 : 0; // predstavlja score x - naziv ucesca, slovo s - score

            Igrac_Utakmica y1 = db.IgraciUtakmice.AsNoTracking()
                                .Where(x => x.IgID == obj.Tim2[0].IgID).FirstOrDefault();
            Igrac_Utakmica y2 = db.IgraciUtakmice.AsNoTracking()
                                .Where(x => x.IgID == obj.Tim2[1].IgID).FirstOrDefault();

            y1.OsvojeniSetovi = obj.RezultatTim2.GetValueOrDefault();
            y2.OsvojeniSetovi = obj.RezultatTim2.GetValueOrDefault();
            int ys = (pobjednik == 2) ? 1 : 0; // predstavlja score x - naziv ucesca, slovo s - score


            Igrac x1igrac = db.Igraci.AsNoTracking().Where(c => c.ID == x1.IgracID).FirstOrDefault();
            Igrac x2igrac = db.Igraci.AsNoTracking().Where(c => c.ID == x2.IgracID).FirstOrDefault();
            Igrac y1igrac = db.Igraci.AsNoTracking().Where(c => c.ID == y1.IgracID).FirstOrDefault();
            Igrac y2igrac = db.Igraci.AsNoTracking().Where(c => c.ID == y2.IgracID).FirstOrDefault();

            x1.PristupniElo = x1igrac.ELO;
            x2.PristupniElo = x2igrac.ELO;

            y1.PristupniElo = y1igrac.ELO;
            y2.PristupniElo = y2igrac.ELO;

            string X = "pobjeda";
            string Y = "poraz";

            if (xs == 1)
            {
                x1.TipRezultata = pobjeda;
                x2.TipRezultata = pobjeda;
                y1.TipRezultata = poraz;
                y2.TipRezultata = poraz;
            }
            else
            {
                x1.TipRezultata = poraz;
                x2.TipRezultata = poraz;
                y1.TipRezultata = pobjeda;
                y2.TipRezultata = pobjeda;
                X = "poraz";
                Y = "pobjeda";
            }
            UpdateStatistikuIStanjePrijave(x1.IgracID ?? default(int), X == "pobjeda" ? true : false, true);
            UpdateStatistikuIStanjePrijave(x2.IgracID ?? default(int), X == "pobjeda" ? true : false, true);
            UpdateStatistikuIStanjePrijave(y1.IgracID ?? default(int), Y == "pobjeda" ? true : false, true);
            UpdateStatistikuIStanjePrijave(y2.IgracID ?? default(int), Y == "pobjeda" ? true : false, true);

            db.IgraciUtakmice.Update(x1);
            db.IgraciUtakmice.Update(x2);
            db.IgraciUtakmice.Update(y1);
            db.IgraciUtakmice.Update(y2);
            db.SaveChanges();

            x1igrac.ELO = ELOCalculator.VratiEloDouble(
                x1.PristupniElo.GetValueOrDefault(),
                x2.PristupniElo.GetValueOrDefault(),
                y1.PristupniElo.GetValueOrDefault(),
                y2.PristupniElo.GetValueOrDefault(), xs);

            x2igrac.ELO = ELOCalculator.VratiEloDouble(
                x2.PristupniElo.GetValueOrDefault(),
                x1.PristupniElo.GetValueOrDefault(),
                y1.PristupniElo.GetValueOrDefault(),
                y2.PristupniElo.GetValueOrDefault(), xs);

            y1igrac.ELO = ELOCalculator.VratiEloDouble(
                y1.PristupniElo.GetValueOrDefault(),
                y2.PristupniElo.GetValueOrDefault(),
                x1.PristupniElo.GetValueOrDefault(),
                x2.PristupniElo.GetValueOrDefault(), ys);

            y2igrac.ELO = ELOCalculator.VratiEloDouble(
                y2.PristupniElo.GetValueOrDefault(),
                y1.PristupniElo.GetValueOrDefault(),
                x1.PristupniElo.GetValueOrDefault(),
                x2.PristupniElo.GetValueOrDefault(), ys);

            db.Igraci.Where(x => x.ID == x1igrac.ID).FirstOrDefault().ELO = x1igrac.ELO;
            db.Igraci.Where(x => x.ID == x2igrac.ID).FirstOrDefault().ELO = x2igrac.ELO;
            db.Igraci.Where(x => x.ID == y1igrac.ID).FirstOrDefault().ELO = y1igrac.ELO;
            db.Igraci.Where(x => x.ID == y2igrac.ID).FirstOrDefault().ELO = y2igrac.ELO;
            db.SaveChanges();
        }