public override Model.Kupovina Insert(KupovinaInsertRequest request) { if (request == null) { throw new UserException("Problem prilikom obavljenja kupovine karte"); } if (request.KorisnikId <= 0 || request.EventId <= 0 || request.ProdajaTipId <= 0 || request.ZeljeniBrKarata <= 0) { throw new UserException("Problem prilikom obavljenja kupovine karte"); } Database.ProdajaTip prodaja = _ctx.ProdajaTip.Where(p => p.Id == request.ProdajaTipId).FirstOrDefault(); // provjera da li postoji prodaja if (request.ZeljeniBrKarata > (prodaja?.UkupnoKarataTip - prodaja?.BrojProdatihKarataTip)) { throw new UserException("Nema toliko karata u ponudi"); } Database.Kupovina k = _ctx.Kupovina.Where(k => k.EventId == request.EventId && k.KorisnikId == request.KorisnikId).SingleOrDefault(); if (k == null) { k = new Database.Kupovina { KorisnikId = request.KorisnikId, EventId = request.EventId }; _ctx.Kupovina.Add(k); // posto ne postpji kupovina, nema ni kupovinaTip KupovinaTip kupovinaTip = new KupovinaTip { Kupovina = k, ProdajaTipId = prodaja.Id, BrojKarata = request.ZeljeniBrKarata, Cijena = prodaja.CijenaTip * request.ZeljeniBrKarata }; _ctx.KupovinaTip.Add(kupovinaTip); _ctx.SaveChanges(); SetujKarte(request.ZeljeniBrKarata, kupovinaTip, prodaja, request.EventId, request.KorisnikId); _ctx.SaveChanges(); /* try * { * PosaljiMail(request.KorisnikId, CijenaTrenutneKupovine, request.EventId); * } * catch(Exception ex) * { * * } */ CijenaTrenutneKupovine = 0; return(_mapper.Map <Model.Kupovina>(k)); } else { KupovinaTip kupovinaTip = _ctx.KupovinaTip.Where(x => x.KupovinaId == k.Id && x.ProdajaTipId == prodaja.Id).FirstOrDefault(); if (kupovinaTip == null) { kupovinaTip = new KupovinaTip { Kupovina = k, ProdajaTipId = prodaja.Id, BrojKarata = request.ZeljeniBrKarata, Cijena = prodaja.CijenaTip * request.ZeljeniBrKarata }; _ctx.KupovinaTip.Add(kupovinaTip); } else //KupovinaTip postoji { kupovinaTip.BrojKarata += request.ZeljeniBrKarata; kupovinaTip.Cijena += request.ZeljeniBrKarata * prodaja.CijenaTip; } _ctx.SaveChanges(); SetujKarte(request.ZeljeniBrKarata, kupovinaTip, prodaja, request.EventId, request.KorisnikId); _ctx.SaveChanges(); /* * try * { * PosaljiMail(request.KorisnikId, CijenaTrenutneKupovine, request.EventId); * } * catch(Exception ex) * { * * } */ CijenaTrenutneKupovine = 0; return(_mapper.Map <Model.Kupovina>(k)); } }
private void SetujKarte(int ZeljeniBrKarata, Database.KupovinaTip kupovinaTip, Database.ProdajaTip prodaja, int eventId, int korinsikId) { for (int i = 0; i < ZeljeniBrKarata; i++) { Database.Karta karta = new Database.Karta { KupovinaTip = kupovinaTip, Cijena = prodaja.CijenaTip, DatumKupovine = DateTime.Now, TipKarteId = prodaja.TipKarteId }; CijenaTrenutneKupovine += karta.Cijena; _ctx.Karta.Add(karta); prodaja.BrojProdatihKarataTip++; if (prodaja.PostojeSjedista == true) { Sjediste s = new Sjediste { Karta = karta, BrojSjedista = prodaja.BrojProdatihKarataTip }; _ctx.Sjediste.Add(s); } _ctx.SaveChanges(); GenerisiQRCode(karta, eventId, korinsikId); } }