Пример #1
0
        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));
            }
        }
Пример #2
0
        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);
            }
        }