public Takmicenja Insert(TakmicenjaInsert obj) { var userId = usersService.GetRequestUserID(HttpContext.Request); takmicenjeAutorizator.AuthorizeInsert(userId); return(takmicenjeService.Add(obj, userId)); }
public List <(string key, string error)> VratiListuErroraAkcijaDodaj(TakmicenjaInsert objekat) { List <(string key, string error)> listaErrora = new List <(string key, string error)>(); if (PostojiTakmicenje(objekat.Naziv)) { listaErrora.Add(("", "Već postoji takmičenje u bazi")); } if (objekat.Naziv.Length > 100) { listaErrora.Add(("Naziv", "Naziv ne može sadržavati više od 100 karaktera")); } if (!objekat.RucniOdabir) { if (objekat.RokZavrsetkaPrijave != null && objekat.RokZavrsetkaPrijave != null && objekat.RokZavrsetkaPrijave < objekat.RokPocetkaPrijave) { listaErrora.Add((nameof(objekat.RokZavrsetkaPrijave), "Datum završetka prijava ne može biti prije početka")); } if (objekat.DatumPocetka != null && objekat.RokZavrsetkaPrijave != null && objekat.DatumPocetka < objekat.RokZavrsetkaPrijave) { listaErrora.Add((nameof(objekat.DatumPocetka), "Datum početka ne moze biti prije završetka prijava")); } } else { //u slucaju da ljudi nisu dodali razmake ili ih je viska da ja popravim situaciju malo if (objekat.RucnoOdabraniIgraci != null && objekat.RucnoOdabraniIgraci != "") { if (objekat.RucnoOdabraniIgraci.EndsWith(" ")) { objekat.RucnoOdabraniIgraci = objekat.RucnoOdabraniIgraci.Remove(objekat.RucnoOdabraniIgraci.Length - 1); } if (objekat.RucnoOdabraniIgraci.StartsWith(" ")) { objekat.RucnoOdabraniIgraci = objekat.RucnoOdabraniIgraci.Substring(1); } //za sad je hardkodirana vrsta(predstavlja uslov da ne mogu doubleovi u rucnom unosu),ovo ionako ne bi trebalo nikad biti true osim ako je neko zaobisao frontend var vrstaDouble = db.VrsteTakmicenja.Where(x => x.Naziv == "Double").FirstOrDefault(); if (objekat.VrstaID == vrstaDouble.ID) { listaErrora.Add((nameof(objekat.VrstaID), "Ne možete odabrati vrstu double sa ručnim odabirom")); } if (objekat.RucnoOdabraniIgraci == "" || !ValidanUnosRegex(objekat.RucnoOdabraniIgraci) || !ValidnaKorisnickaImena(objekat.RucnoOdabraniIgraci) ) { listaErrora.Add(("", "Molimo unesite ispravno imena igrača")); } if (RucnaImenaSadrziDuplikate(objekat.RucnoOdabraniIgraci)) { listaErrora.Add(("", "Igrače navodite samo jednom")); } if (BrojRucnoUnesenih(objekat.RucnoOdabraniIgraci) < 4) { listaErrora.Add(("", "Minimalno 4 igrača za takmičenje")); } } else { listaErrora.Add(("", "Molimo unesite ispravno imena igrača")); } } return(listaErrora); }
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 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"); } } }