public Takmicenja Insert(TakmicenjaInsert obj)
        {
            var userId = usersService.GetRequestUserID(HttpContext.Request);

            takmicenjeAutorizator.AuthorizeInsert(userId);
            return(takmicenjeService.Add(obj, userId));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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");
                }
            }
        }