public IActionResult PromjenaLozinke(PromjenaLozinkeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("PromjenaLozinke", model));
            }

            string vrijednost = model.GenerisanaVrijednost;

            PromjenaLozinke promjenaLozinke = _context.PromjenaLozinkes.SingleOrDefault(i => i.Vrijednost == vrijednost);

            KorisnickiNalog korisnickiNalog = _context.KorisnickiNalogs.SingleOrDefault
                                                  (i => i.KorisnickiNalogId == promjenaLozinke.KorisnickiNalogID);

            if (korisnickiNalog != null)
            {
                korisnickiNalog.LozinkaHash = PasswordSettings.GetHash(model.NovaLozinka,
                                                                       Convert.FromBase64String(korisnickiNalog.LozinkaSalt));
            }

            _context.PromjenaLozinkes.Remove(promjenaLozinke);
            _context.SaveChanges();

            TempData["successMessage"] = "Uspješno ste promijenili lozinku.";
            return(RedirectToAction("Prijava"));
        }
        public IActionResult ZaboravljenaLozinka(ZaboravljenaLozinkaViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("ZaboravljenaLozinka", model));
            }

            KorisnickiNalog korisnickiNalog = _context.KorisnickiNalogs.SingleOrDefault(i => i.Email == model.Email);

            if (korisnickiNalog == null)
            {
                TempData["errorMessage"] = "Email adresa se ne koristi.";
                return(View("ZaboravljenaLozinka", model));
            }

            PromjenaLozinke promjenaLozinke = _context.PromjenaLozinkes.SingleOrDefault
                                                  (i => i.KorisnickiNalogID == korisnickiNalog.KorisnickiNalogId);

            if (promjenaLozinke != null)
            {
                if ((DateTime.Now - promjenaLozinke.DatumPromjene).TotalHours < 24)
                {
                    TempData["errorMessage"] = "Email za promjenu lozinke je već poslan.";
                    return(View("ZaboravljenaLozinka", model));
                }
                else
                {
                    _context.PromjenaLozinkes.Remove(promjenaLozinke);
                    _context.SaveChanges();
                }
            }

            string primalacPoruke = "";

            if (korisnickiNalog.Permisije == 0)
            {
                primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            }


            if (korisnickiNalog.Permisije == 1)
            {
                primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            }


            if (korisnickiNalog.Permisije == 2)
            {
                primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            }

            if (korisnickiNalog.Permisije == 3)
            {
                primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            }


            string vrijednost = RandomString.GetString(30);
            string link       =
                $"{ this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}/prijava/promjena-lozinke?vrijednost=" + vrijednost;

            string poruka = "Kako bi promjenili lozinku, morate kliknut na sljedeći link: \n" + link +
                            "\nLink za resetiranje lozinke, će biti aktivan samo 24 sata, a poslije toga će postati nevažeći.";

            EmailSettings.SendEmail(_configuration, primalacPoruke, korisnickiNalog.Email, "Promjena lozinke", poruka);

            PromjenaLozinke zahtjevZaPromjenomLozinke = new PromjenaLozinke
            {
                Vrijednost        = vrijednost,
                KorisnickiNalogID = korisnickiNalog.KorisnickiNalogId,
                DatumPromjene     = DateTime.Now
            };

            _context.PromjenaLozinkes.Add(zahtjevZaPromjenomLozinke);
            _context.SaveChanges();

            TempData["successMessage"] = "Email za promjenu lozinke uspješno poslan.";
            return(RedirectToAction("zaboravljena-lozinka"));
        }