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; }
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)); }
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)); }