示例#1
0
        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 }));
        }
示例#2
0
        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 }));
        }