Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        //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));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }