public IHttpActionResult IzmeniProfil(KorisnikProfilDTO kpdto)
        {
            Korisnik korisnikSesija = (Korisnik)HttpContext.Current.Session["Korisnik"];

            if (korisnikSesija == null)
            {
                korisnikSesija = new Korisnik();
                HttpContext.Current.Session["Korisnik"] = korisnikSesija;
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            bp.listaKorisnika = (Dictionary <string, Korisnik>)HttpContext.Current.Application["Korisnici"];
            if (bp.listaKorisnika.ContainsKey(kpdto.Id))
            {
                bp.listaKorisnika[kpdto.Id].Ime           = kpdto.Ime;
                bp.listaKorisnika[kpdto.Id].Prezime       = kpdto.Prezime;
                bp.listaKorisnika[kpdto.Id].Pol           = kpdto.Pol;
                bp.listaKorisnika[kpdto.Id].DatumRodjenja = kpdto.DatumRodjenja;
                bp.AzurirajKorisnike();
                return(Ok());
            }

            return(BadRequest());
        }
        public IHttpActionResult KreirajManifestaciju(ManifestacijaDTO mdto)
        {
            Korisnik korisnikSesija = (Korisnik)HttpContext.Current.Session["Korisnik"];

            if (korisnikSesija == null)
            {
                korisnikSesija = new Korisnik();
                HttpContext.Current.Session["Korisnik"] = korisnikSesija;
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //BazaPodataka bp = new BazaPodataka();
            bp.listaManifestacija = (Dictionary <string, Manifestacija>)HttpContext.Current.Application["Manifestacije"];
            bp.listaLokacija      = (Dictionary <string, Lokacija>)HttpContext.Current.Application["Lokacije"];

            foreach (var item in bp.listaManifestacija.Values)
            {
                if (item.DatumVremeOdrzavanja == mdto.DatumVremeOdrzavanja)
                {
                    foreach (var lokac in bp.listaLokacija.Values)
                    {
                        if (lokac.GeografskaDuzina == double.Parse(mdto.GeografskaDuzina) && lokac.GeografskaSirina == double.Parse(mdto.GeografskaSirina) && !item.IsDeleted)
                        {
                            return(BadRequest());
                        }
                    }
                }
            }


            Guid   guid  = Guid.NewGuid();
            string strId = guid.ToString();

            DateTime dt          = DateTime.ParseExact(mdto.DatumVremeOdrzavanja.ToString(), "M/d/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
            var      date        = dt.Date;
            string   datumString = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

            MestoOdrzavanja mestoOdrz = new MestoOdrzavanja(mdto.Ulica, mdto.Grad, mdto.Drzava, int.Parse(mdto.PostanskiBroj));
            Lokacija        lok       = new Lokacija(Guid.NewGuid().ToString(), mdto.GeografskaDuzina, mdto.GeografskaSirina, mestoOdrz.Ulica, mestoOdrz.Grad, mestoOdrz.Drzava, mestoOdrz.PostanskiBroj.ToString());

            bp.listaLokacija = (Dictionary <string, Lokacija>)HttpContext.Current.Application["Lokacije"];
            bp.listaLokacija.Add(lok.Id, lok);
            lok.SacuvajLokaciju();

            Manifestacija m = new Manifestacija(strId, mdto.Naziv, mdto.Tip.ToString(), mdto.BrojMesta.ToString(), mdto.BrojRegularKarata.ToString(), mdto.BrojVipKarata.ToString(), mdto.BrojFanpitKarata.ToString(), datumString, mdto.CenaRegularKarte.ToString(), mdto.Status.ToString(), lok.Id, mdto.PosterManifestacije, mdto.IsDeleted.ToString());

            bp.listaManifestacija.Add(m.Id, m);
            m.SacuvajManifestaciju();

            bp.listaKorisnika = (Dictionary <string, Korisnik>)HttpContext.Current.Application["Korisnici"];
            Prodavac p = null;

            p = (Prodavac)bp.listaKorisnika[korisnikSesija.Id];
            if (p.SveMojeManifestacije.Contains(""))
            {
                p.SveMojeManifestacije.Remove("");
            }

            p.SveMojeManifestacije.Add(m.Id);
            korisnikSesija = p;
            bp.AzurirajKorisnike();

            return(Ok());
        }
        public IHttpActionResult RezervisiKarte(GenerisanjeKarataDTO gdto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //BazaPodataka bp = new BazaPodataka();
            bp.listaKarata        = (Dictionary <string, Karta>)HttpContext.Current.Application["Karte"];
            bp.listaManifestacija = (Dictionary <string, Manifestacija>)HttpContext.Current.Application["Manifestacije"];

            Guid   guid = Guid.NewGuid();
            string idKarte;

            DateTime dt          = DateTime.ParseExact(gdto.DatumVremeManifestacije.ToString(), "M/d/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
            var      date        = dt.Date;
            string   datumString = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

            bp.listaKorisnika = (Dictionary <string, Korisnik>)HttpContext.Current.Application["Korisnici"];
            Kupac kup = (Kupac)bp.listaKorisnika[gdto.KupacID];

            if (kup.SveMojeKarteBezObziraNaStatus.Contains(""))
            {
                kup.SveMojeKarteBezObziraNaStatus.Remove("");
            }


            for (int i = 0; i < gdto.BrojRezervisanihKarata; i++)
            {
                guid    = Guid.NewGuid();
                idKarte = guid.ToString();

                Karta k = new Karta(idKarte, gdto.ManifestacijaID, datumString, gdto.Cena.ToString(), gdto.KupacID, Enums.StatusKarte.REZERVISANA.ToString(), gdto.Tip.ToString(), "01/01/2001", "False");
                bp.listaKarata.Add(k.Id, k);
                k.SacuvajKartu();

                if (gdto.Tip == Enums.TipKarte.REGULAR)
                {
                    bp.listaManifestacija[gdto.ManifestacijaID].BrojRegularKarata--;
                    bp.AzurirajManifestacije();
                }
                else if (gdto.Tip == Enums.TipKarte.VIP)
                {
                    bp.listaManifestacija[gdto.ManifestacijaID].BrojVipKarata--;
                    bp.AzurirajManifestacije();
                }
                else if (gdto.Tip == Enums.TipKarte.FANPIT)
                {
                    bp.listaManifestacija[gdto.ManifestacijaID].BrojFanpitKarata--;
                    bp.AzurirajManifestacije();
                }


                kup.SveMojeKarteBezObziraNaStatus.Add(idKarte);

                kup.BrojSakupljenihBodova += gdto.BrojDodatnihBodova;

                if (kup.BrojSakupljenihBodova >= kup.TipKorisn.PotrebanBrojBodovaZlato)
                {
                    kup.TipKorisn.ImeTipa = Enums.TipKorisnika.ZLATNI;
                    kup.TipKorisn.Popust  = 20;
                }
                else if (kup.BrojSakupljenihBodova >= kup.TipKorisn.PotrebanBrojBodovaSrebro)
                {
                    kup.TipKorisn.ImeTipa = Enums.TipKorisnika.SREBRNI;
                    kup.TipKorisn.Popust  = 10;
                }
                else
                {
                    kup.TipKorisn.ImeTipa = Enums.TipKorisnika.BRONZANI;
                    kup.TipKorisn.Popust  = 5;
                }

                bp.AzurirajKorisnike();
            }

            return(Ok());
        }