Пример #1
0
 public Takmicenje(CreateTakmicenjeVM obj)
 {
     Naziv               = obj.Naziv;
     DatumPocetka        = obj.DatumPocetka ?? null;
     DatumZavrsetka      = obj.DatumZavrsetka ?? null;
     RokPocetkaPrijave   = obj.RokPocetkaPrijave;
     RokZavrsetkaPrijave = obj.RokZavrsetkaPrijave;
     MinimalniELO        = obj.MinimalniELO ?? 0;
     KategorijaID        = obj.KategorijaID;
     SistemID            = obj.SistemID;
     VrstaID             = obj.VrstaID;
     StatusID            = obj.StatusID;
     DatumKreiranja      = DateTime.Now;
     Seeded              = obj.Seeded;
     BrojRundi           = 0;
     Bracketi            = new List <Bracket>();
     Prijave             = new List <Prijava>();
     Inicirano           = false;
 }
Пример #2
0
        public IActionResult Dodaj(CreateTakmicenjeVM objekat)
        {
            if (ModelState.IsValid)
            {
                if (PostojiTakmicenje(objekat.Naziv))
                {
                    ModelState.AddModelError("", "Vec postoji takmicenje u bazi");
                }
                if (!objekat.RucniOdabir)
                {
                    if (objekat.RokZavrsetkaPrijave != null && objekat.RokZavrsetkaPrijave != null &&
                        objekat.RokZavrsetkaPrijave < objekat.RokPocetkaPrijave)
                    {
                        ModelState.AddModelError(nameof(objekat.RokZavrsetkaPrijave), "Datum zavrsetka prijava ne moze biti prije pocetka");
                    }
                    if (objekat.DatumPocetka != null && objekat.RokZavrsetkaPrijave != null && objekat.DatumPocetka < objekat.RokZavrsetkaPrijave)
                    {
                        ModelState.AddModelError(nameof(objekat.DatumPocetka), "Datum pocetka ne moze biti prije zavrsetka prijava");
                    }
                }
                else
                {
                    //u slucaju da ljudi nisu dodali razmake ili ih je viska da ja popravim situaciju malo
                    if (!objekat.RucnoOdabraniIgraci.EndsWith(" "))
                    {
                        objekat.RucnoOdabraniIgraci += " ";
                    }
                    if (objekat.RucnoOdabraniIgraci.StartsWith(" "))
                    {
                        objekat.RucnoOdabraniIgraci = objekat.RucnoOdabraniIgraci.Substring(1);
                    }
                    //za sad je hardkodirana vrsta,ovo ionako ne bi trebalo nikad biti true osim ako je neko zaobisao frontend
                    if (objekat.VrstaID == 2 ||
                        objekat.RucnoOdabraniIgraci == "" ||
                        !ValidanUnosRegex(objekat.RucnoOdabraniIgraci) ||
                        !ValidnaKorisnickaImena(objekat.RucnoOdabraniIgraci)
                        )
                    {
                        ModelState.AddModelError("", "Molimo unesite ispravno imena igraca");
                    }
                    if (RucnaImenaSadrziDuplikate(objekat.RucnoOdabraniIgraci))
                    {
                        ModelState.AddModelError("", "Nemojte dva puta istog igraca navoditi");
                    }
                    if (BrojRucnoUnesenih(objekat.RucnoOdabraniIgraci) < 4)
                    {
                        ModelState.AddModelError("", "Minimalno 4 igraca za takmicenje");
                    }
                }

                if (ModelState.ErrorCount == 0)
                {
                    using (var transakcija = db.Database.BeginTransaction())//sigurnost u opasnim situacijama
                    {
                        try
                        {
                            Takmicenje novo           = new Takmicenje(objekat);
                            Feed       TakmicenjeFeed = new Feed
                            {
                                Naziv             = novo.Naziv + " feed",
                                DatumModifikacije = DateTime.Now
                            };
                            db.Feeds.Add(TakmicenjeFeed);
                            db.SaveChanges();
                            novo.FeedID = TakmicenjeFeed.ID;

                            db.Add(novo);
                            db.SaveChanges();

                            //dobaviti igrace iz regexa
                            if (objekat.RucniOdabir)
                            {
                                List <Igrac> svi = GetListaRucnihIgraca(objekat.RucnoOdabraniIgraci);
                                foreach (Igrac i in svi)
                                {
                                    Prijava novaPrijava = new Prijava
                                    {
                                        DatumPrijave = DateTime.Now,
                                        isTim        = false,
                                        Naziv        = i.PrikaznoIme,
                                        TakmicenjeID = novo.ID
                                    };

                                    novaPrijava.StanjePrijave = new Stanje_Prijave(novaPrijava.ID);
                                    db.Prijave.Add(novaPrijava);
                                    db.SaveChanges();

                                    Prijava_igrac PrijavaIgracPodatak = new Prijava_igrac
                                    {
                                        IgracID   = i.ID,
                                        PrijavaID = novaPrijava.ID
                                    };
                                    db.PrijaveIgraci.Add(PrijavaIgracPodatak);
                                    db.SaveChanges();
                                }
                            }
                            transakcija.Commit();
                            return(Redirect("/Takmicenje/Prikaz/" + novo.ID));
                        }
                        catch (DbUpdateException er)
                        {
                            transakcija.Rollback();
                            ModelState.AddModelError("", "Doslo je do greške prilikom spašavanja u bazu");
                        }
                    }
                }
            }
            LoadViewBag();
            return(View(objekat));
        }
Пример #3
0
        public IActionResult Dodaj(CreateTakmicenjeVM objekat)
        {
            if (ModelState.IsValid)
            {
                TakmicenjaInsert objekatValidator             = mapko.Map <TakmicenjaInsert>(objekat);
                List <(string key, string error)> listaerrora = validator
                                                                .VratiListuErroraAkcijaDodaj(objekatValidator);

                if (listaerrora.Count() == 0)
                {
                    using (var transakcija = db.Database.BeginTransaction())//sigurnost u opasnim situacijama
                    {
                        try
                        {
                            //ovaj posao ce odraditi IMapper
                            Takmicenje novo = new Takmicenje();
                            mapko.Map(objekat, novo);
                            var idUser = db.Users.Where(x => x.UserName == HttpContext.User.Identity.Name).FirstOrDefault();
                            novo.KreatorID = idUser.Id;
                            Feed TakmicenjeFeed = new Feed
                            {
                                Naziv             = novo.Naziv + " feed",
                                DatumModifikacije = DateTime.Now
                            };
                            db.Feeds.Add(TakmicenjeFeed);
                            db.SaveChanges();
                            novo.FeedID = TakmicenjeFeed.ID;

                            db.Add(novo);
                            db.SaveChanges();

                            //dobaviti igrace iz regexa
                            if (objekat.RucniOdabir)
                            {
                                validator._listaIgraca = db.Igraci.ToList();
                                List <Igrac> svi = validator.GetListaRucnihIgraca(objekat.RucnoOdabraniIgraci);
                                foreach (Igrac i in svi)
                                {
                                    Prijava novaPrijava = new Prijava
                                    {
                                        DatumPrijave = DateTime.Now,
                                        isTim        = false,
                                        Naziv        = i.PrikaznoIme,
                                        TakmicenjeID = novo.ID
                                    };

                                    novaPrijava.StanjePrijave = new Stanje_Prijave(novaPrijava.ID);
                                    db.Prijave.Add(novaPrijava);
                                    db.SaveChanges();

                                    Prijava_igrac PrijavaIgracPodatak = new Prijava_igrac
                                    {
                                        IgracID   = i.ID,
                                        PrijavaID = novaPrijava.ID
                                    };
                                    db.PrijaveIgraci.Add(PrijavaIgracPodatak);
                                    db.SaveChanges();
                                }
                            }
                            transakcija.Commit();
                            return(Redirect("/Takmicenje/Prikaz/" + novo.ID));
                        }
                        catch (DbUpdateException)
                        {
                            transakcija.Rollback();
                            ModelState.AddModelError("", "Doslo je do greške prilikom spašavanja u bazu");
                        }
                    }
                }
                else
                {
                    //ako je validator vratio errore ovdje cemo ih pametno stavit u modelstate kako bi se prikazali na viewu
                    foreach ((string key, string err)i in listaerrora)
                    {
                        ModelState.AddModelError(i.key, i.err);
                    }
                }
            }
            LoadViewBag();
            return(View(objekat));
        }