public ActionResult Confirm(PaymentIntentConfirmRequest request) { var service = new PaymentIntentService(); var paymentIntent = service.Get(request.PaymentIntentId); var narudzba = db.Rezervacija .Where(x => x.RezervacijaId == request.RezervacijaId) .Include(x => x.RezervacijaIznajmljenaBicikla) .Include(x => x.RezervacijaServis) .FirstOrDefault(); var narudzba_iznos = (int)narudzba.UkupniIznos * 100; if (paymentIntent.Amount == narudzba_iznos && paymentIntent.Status == "succeeded") { if (narudzba.StanjeRezervacije == StanjeRezervacije.ekanje_uplate) { narudzba.StanjeRezervacije = StanjeRezervacije.U_obradi; if (narudzba.DatumUplate is null) { narudzba.DatumUplate = DateTime.Now; } bool IsServisRezervacija = narudzba.RezervacijaServis.Any(), IsTerminRezervacija = narudzba.RezervacijaIznajmljenaBicikla.Any(); if (IsServisRezervacija || IsTerminRezervacija || narudzba.NacinPlacanja == "online") { var zaposlenici = db.Zaposlenik.Where(x => x.Korisnik.Aktivan == true).ToList(); foreach (var zaposlenik in zaposlenici) { var notifikacija = new Notifikacija { ZaposlenikId = zaposlenik.Id, Rezervacija = narudzba, DatumVrijeme = DateTime.Now }; if (IsServisRezervacija) { notifikacija.Tip = TipNotifikacije.Novi_Servis; } else if (IsTerminRezervacija) { notifikacija.Tip = TipNotifikacije.Novi_Termin; } else { notifikacija.Tip = TipNotifikacije.Nova_Narudzba; } db.Notifikacija.Add(notifikacija); } } db.SaveChanges(); } } return(new JsonResult(new { success = true })); }
public ActionResult PotvrdiUplatu(PaymentIntentConfirmRequest request) { var narudzba = _context.Rezervacija.Where(x => x.RezervacijaId == request.RezervacijaId && x.StanjeRezervacije == Data.EntityModels.StanjeRezervacije.ekanje_uplate).FirstOrDefault(); if (narudzba == null) { return(new JsonResult(new { error = "Narudžba nije u ispravnom stanju." })); } var narudzba_iznos = (int)narudzba.UkupniIznos * 100; if (narudzba_iznos == 0) { return(new JsonResult(new { error = "Iznos narudžbe je neispravan." })); } var paymentIntents = new PaymentIntentService(); var paymentIntent = paymentIntents.Create(new PaymentIntentCreateOptions { Amount = narudzba_iznos, Currency = "usd", Confirm = true, Metadata = new Dictionary <string, string>(), PaymentMethod = request.PaymentMethodId }); paymentIntent.Metadata["RezervacijaId"] = request.RezervacijaId.ToString(); if (paymentIntent.Amount == narudzba_iznos && paymentIntent.Status == "succeeded") { narudzba.StanjeRezervacije = Data.EntityModels.StanjeRezervacije.U_obradi; if (narudzba.DatumUplate is null) { narudzba.DatumUplate = DateTime.Now; } _context.SaveChanges(); bool IsServisRezervacija = narudzba.RezervacijaServis.Any(), IsTerminRezervacija = narudzba.RezervacijaIznajmljenaBicikla.Any(); if (IsServisRezervacija || IsTerminRezervacija || narudzba.NacinPlacanja == "online") { var zaposlenici = _context.Zaposlenik.Where(x => x.Korisnik.Aktivan == true).ToList(); foreach (var zaposlenik in zaposlenici) { var notifikacija = new Data.EntityModels.Notifikacija { ZaposlenikId = zaposlenik.Id, Rezervacija = narudzba, DatumVrijeme = DateTime.Now }; if (IsServisRezervacija) { notifikacija.Tip = Data.EntityModels.TipNotifikacije.Novi_Servis; } else if (IsTerminRezervacija) { notifikacija.Tip = Data.EntityModels.TipNotifikacije.Novi_Termin; } else { notifikacija.Tip = Data.EntityModels.TipNotifikacije.Nova_Narudzba; } _context.Notifikacija.Add(notifikacija); } } return(new JsonResult(new { clientSecret = paymentIntent.ClientSecret })); } return(new JsonResult(new { error = paymentIntent.Status })); }