private void KreirajPrijavuIgrac(TakmicenjePrijavaVM prijava, int id) { Prijava_igrac prijava_Igrac1 = new Prijava_igrac { IgracID = prijava.Igrac1ID ?? default(int), PrijavaID = id }; db.Add(prijava_Igrac1); if (prijava.isTim) { Prijava_igrac prijava_Igrac2 = new Prijava_igrac { IgracID = prijava.Igrac2ID ?? default(int), PrijavaID = id }; db.Add(prijava_Igrac2); } db.SaveChanges(); }
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)); }
public IActionResult Prijava(TakmicenjePrijavaVM prijava) { if (ModelState.IsValid) { Prijava_igrac pi = db.PrijaveIgraci.Where(p => p.Prijava.TakmicenjeID == prijava.takmicenjeID && p.IgracID == prijava.Igrac1ID).SingleOrDefault(); if (pi != null) { ModelState.AddModelError(nameof(prijava.Igrac1ID), "Igrač je već prijavljen na takmičenje."); } if (prijava.Igrac1ID == null) { ModelState.AddModelError(nameof(prijava.Igrac1ID), "Polje igrač1 je obavezno."); } if (prijava.isTim) { Prijava_igrac pi2 = db.PrijaveIgraci.Where(p => p.Prijava.TakmicenjeID == prijava.takmicenjeID && p.IgracID == prijava.Igrac2ID).SingleOrDefault(); if (pi2 != null) { ModelState.AddModelError(nameof(prijava.Igrac2ID), "Igrač je već prijavljen na takmičenje."); } if (prijava.Naziv == null) { ModelState.AddModelError(nameof(prijava.Naziv), "Polje naziv je obavezno."); } if (prijava.Igrac2ID == null) { ModelState.AddModelError(nameof(prijava.Igrac2ID), "Polje igrač2 je obavezno."); } if (db.BlokListe.Where(x => x.IgracID == prijava.Igrac2ID && x.TakmicenjeID == prijava.takmicenjeID).SingleOrDefault() != null) { ModelState.AddModelError(nameof(prijava.Igrac2ID), "Ovaj igrač je blokiran na ovom takmičenju."); } } if (prijava.Igrac1ID == prijava.Igrac2ID && prijava.Igrac2ID != null) { ModelState.AddModelError(nameof(prijava.Igrac2ID), "Ne možete dodati istog igrača kao saigrača."); } if (db.BlokListe.Where(x => x.IgracID == prijava.Igrac1ID && x.TakmicenjeID == prijava.takmicenjeID).SingleOrDefault() != null) { ModelState.AddModelError(nameof(prijava.Igrac1ID), "Blokirani ste na ovom takmičenju."); } if (ModelState.ErrorCount == 0) { Prijava nova = new Prijava { DatumPrijave = DateTime.Now, TakmicenjeID = prijava.takmicenjeID, isTim = prijava.isTim, Naziv = prijava.Naziv }; nova.StanjePrijave = new Stanje_Prijave(nova.ID); if (!prijava.isTim) { nova.Naziv = db.Igraci.Find(prijava.Igrac1ID).PrikaznoIme; } if (PostojiLiPrijava(nova.Naziv, prijava.takmicenjeID)) { ModelState.AddModelError(nameof(prijava.Naziv), "Ime je zauzeto."); LoadViewBagPrijava(prijava.takmicenjeID); return(View(prijava)); } db.Takmicenja.Find(prijava.takmicenjeID).Prijave.Add(nova); db.SaveChanges(); KreirajPrijavuIgrac(prijava, nova.ID); return(Redirect("/Takmicenje/UspjesnaPrijava")); } } LoadViewBagPrijava(prijava.takmicenjeID); return(View(prijava)); }
public Takmicenja Add(TakmicenjaInsert objekat, int KreatorID) { ValidirajAddTakmicenja(objekat); var novo = mapko.Map <Takmicenje>(objekat); using (var transakcija = db.Database.BeginTransaction())//sigurnost u opasnim situacijama { try { novo.KreatorID = KreatorID; Feed TakmicenjeFeed = new Feed { Naziv = novo.Naziv + " feed", DatumModifikacije = DateTime.Now }; db.Feeds.Add(TakmicenjeFeed); db.SaveChanges(); novo.FeedID = TakmicenjeFeed.ID; var statusKreiran = db.StatusiTakmicenja.Where(x => x.Opis == "Kreirano").FirstOrDefault(); novo.StatusID = statusKreiran.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(); var povratni = GetByID(novo.ID); // zbog includeova i to lakse odozgo nego da ponavljam kod ovdje return(povratni); } catch (Exception) { transakcija.Rollback(); throw new UserException("Greška prilikom spašavanja u bazu"); } } }