public IActionResult Edit(EditTakmicenjeVM objekat)//dodatiiii kod.....za rucni unos { if (ModelState.IsValid) { TakmicenjaUpdate objekatValidator = mapko.Map <TakmicenjaUpdate>(objekat); Takmicenje objBaza = db.Takmicenja.Find(objekat.ID); List <(string key, string error)> listaerrora = validator.VratiListuErroraAkcijaEdit(objekatValidator, objekat.ID, objBaza); if (listaerrora.Count() == 0) { Takmicenje obj = db.Takmicenja.Find(objekat.ID); if (obj != null) { using (var transakcija = db.Database.BeginTransaction()) { try { obj.Naziv = objekat.Naziv; obj.DatumPocetka = objekat.DatumPocetka; obj.DatumZavrsetka = objekat.DatumZavrsetka; if (objekat.RokPocetkaPrijave != null) //samo ako su registracije otvorene promijeni ove ovdje stvari jer se one ne postavljaju na rucnom unosu { obj.RokPocetkaPrijave = objekat.RokPocetkaPrijave; obj.RokZavrsetkaPrijave = objekat.RokZavrsetkaPrijave; obj.MinimalniELO = objekat.MinimalniELO ?? 0; obj.KategorijaID = objekat.KategorijaID; obj.VrstaID = objekat.VrstaID; } obj.StatusID = objekat.StatusID; db.Update(obj); db.SaveChanges(); Feed FidObjekat = db.Feeds.Find(obj.FeedID); FidObjekat.Naziv = obj.Naziv + " feed"; FidObjekat.DatumModifikacije = DateTime.Now; db.Update(FidObjekat); db.SaveChanges(); transakcija.Commit(); return(Redirect("/Takmicenje/Prikaz/" + obj.ID)); } catch (DbUpdateException) { transakcija.Rollback(); } } } } 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)); }
//ovdje ce biti potrebno authorizovati public Takmicenja Update(int id, TakmicenjaUpdate obj) { var userId = usersService.GetRequestUserID(HttpContext.Request); takmicenjeAutorizator.AuthorizeUpdate(userId, id); return(takmicenjeService.Update(id, obj)); }
public Takmicenja Update(int id, TakmicenjaUpdate obj) { var objBaza = db.Takmicenja.Where(x => x.ID == id).FirstOrDefault(); if (objBaza == null)// neka ovog dijela ovdje, jer kad ga premjestim u validirajUpdatetakmicenja, onda //cu dole pomjeriti ovu prethodnu i naredne 3 linije koda, i onda cu opet morat ako prodje ta funkcija //opet ovdje dobavljati objekat baze { throw new UserException("Takmičenje ne postoji"); } //ako nije inicirano mozes mijenjati odredjene atribute, dodati korisniku mogucnost //mijenjanja/ dodavanja / uklanjanja novih/starih igraca? ValidirajUpdateTakmicenja(obj, id, objBaza); //mapko.Map(obj, objBaza);//dje si sta ima //dakle definitivno, ako se zeli nesto updateovati, ne smije se poslati null inace ce se //to tretira kao da niste zeljeli to updateovati, bio bi problem da postoji neki atribut //koji se moze nulirati nekim slucajem, sreca ovdje to i nije bas slucaj, tj jest za //ove datume ali ako si poslao null a onaj je vec nuliran onda se tretira kao null nikom nista //onda ces moci promijeniti vrijednost u neku konkretnu kad iduci put posaljes request, //however neces moc nulirat nazad jebiga if (!String.IsNullOrWhiteSpace(obj.Naziv)) { objBaza.Naziv = obj.Naziv; } objBaza.DatumPocetka = obj.DatumPocetka ?? objBaza.DatumPocetka; objBaza.DatumZavrsetka = obj.DatumZavrsetka ?? objBaza.DatumZavrsetka; objBaza.VrstaID = obj.VrstaID ?? objBaza.VrstaID; objBaza.StatusID = obj.StatusID ?? objBaza.StatusID; objBaza.KategorijaID = obj.KategorijaID ?? objBaza.KategorijaID; objBaza.MinimalniELO = obj.MinimalniELO ?? objBaza.MinimalniELO; objBaza.RokPocetkaPrijave = obj.RokPocetkaPrijave ?? objBaza.RokPocetkaPrijave; objBaza.RokZavrsetkaPrijave = obj.RokZavrsetkaPrijave ?? objBaza.RokZavrsetkaPrijave; db.SaveChanges(); var povratni = GetByID(objBaza.ID); // zbog includeova i to lakse odozgo nego da ponavljam kod ovdje return(povratni); }
public List <(string key, string error)> VratiListuErroraAkcijaEdit(TakmicenjaUpdate objekat, int ID, Takmicenje bazaObj) { var ListaTakmicenja = db.Takmicenja.ToList(); List <(string key, string error)> listaErrora = new List <(string key, string error)>(); //OVDJE CE BITI PROSLIJEDJEN ID PARAMETAR OVOJ FUNKCIJI if (TakmicenjaViseOd(objekat.Naziv, ID, ListaTakmicenja)) { listaErrora.Add((nameof(objekat.Naziv), "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 (!bazaObj.Inicirano) { if (objekat.RokZavrsetkaPrijave != null && objekat.RokPocetkaPrijave != null && objekat.RokZavrsetkaPrijave < objekat.RokPocetkaPrijave) { listaErrora.Add((nameof(objekat.RokZavrsetkaPrijave), "Datum završetka prijava ne moze biti prije početka takmičenja")); } if (objekat.DatumPocetka != null && objekat.RokZavrsetkaPrijave != null && objekat.DatumPocetka < objekat.RokZavrsetkaPrijave) { listaErrora.Add((nameof(objekat.DatumPocetka), "Datum početka ne može biti prije završetka prijava")); } } else if (bazaObj.Inicirano && (objekat.RokPocetkaPrijave != null || objekat.RokZavrsetkaPrijave != null)) { listaErrora.Add(("", "Takmičenje je već inicirano, nije moguće mijenjati datume prijava")); } if (objekat.DatumPocetka != null && objekat.DatumZavrsetka != null && objekat.DatumZavrsetka < objekat.DatumPocetka) { listaErrora.Add((nameof(objekat.DatumZavrsetka), "Datum početka takmičenja ne može biti prije završetka")); } return(listaErrora); }