Ejemplo n.º 1
0
        public async Task <AukcijaDTO> GetAukcija(int aukcijaId)
        {
            var json = JsonConvert.SerializeObject(aukcijaId);

            HttpStringContent content = new HttpStringContent(json);

            content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/json");
            Uri uri = new Uri(ViewModelHelper.siteUrl + "/api/aukcija/detalji");

            try
            {
                using (HttpClient httpClient = ViewModelHelper.GetHttpClient(ViewModelHelper.accessTokenString))
                {
                    HttpResponseMessage response = await httpClient.PostAsync(uri, content);

                    if (response.StatusCode == HttpStatusCode.Ok)
                    {
                        AukcijaDTO aukcija = JsonConvert.DeserializeObject <AukcijaDTO>(response.Content.ToString());
                        return(aukcija);
                    }

                    return(null);
                }
            }
            catch (Exception)
            {
                throw new Exception("Greška prilikom konekcije na server.");
            }
        }
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            AukcijaDTO aukcija = (AukcijaDTO)value;

            return(aukcija.NajvecaPonuda != null
                ? String.Format("Trenutna cijena: {0} KM", aukcija.NajvecaPonuda.Iznos.ToString())
                : String.Format("Trenutna cijena: {0} KM", aukcija.PocetnaCijena.ToString()));
        }
Ejemplo n.º 3
0
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            AukcijaDTO aukcija = (AukcijaDTO)value;

            var najvecaPonuda = (decimal)0;

            if (aukcija.NajvecaPonuda != null)
            {
                najvecaPonuda = aukcija.NajvecaPonuda.Iznos;
            }

            return(aukcija.KupiOdmahCijena > najvecaPonuda && aukcija.Zavrsena == false ? Visibility.Visible : Visibility.Collapsed);
        }
Ejemplo n.º 4
0
        public HttpResponseMessage GetAukcijaDetail(HttpRequestMessage request, [FromBody] int aukcijaId)
        {
            HttpResponseMessage response = null;

            try
            {
                int korisnikId = User.Identity.GetUserId <int>();
                if (korisnikId < 1)
                {
                    ClaimsPrincipal principal = Request.GetRequestContext().Principal as ClaimsPrincipal;

                    var korisnikIme = ClaimsPrincipal.Current.Identity.Name;
                    if (!String.IsNullOrEmpty(korisnikIme))
                    {
                        var userManager = HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>();
                        var korisnik    = userManager.FindByName(korisnikIme);
                        korisnikId = korisnik.Id;
                    }
                }

                using (AukcijeClient proxy = new AukcijeClient())
                {
                    proxy.Open();
                    AukcijaDTO aukcija = proxy.GetAukcijaDetail(aukcijaId, korisnikId);

                    aukcija.isAdmin = User.IsInRole("Admin") ? true : false;

                    response = request.CreateResponse <AukcijaDTO>(HttpStatusCode.OK, aukcija);
                    proxy.Close();
                }
            }
            catch (FaultException <PonudaCreateException> ex)
            {
                response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
            }
            catch (FaultException ex)
            {
                response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
            }
            catch (Exception ex)
            {
                response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
            }

            return(response);
        }
Ejemplo n.º 5
0
        public HttpResponseMessage KreirajPonudu(HttpRequestMessage request, [FromBody] PonudaModel ponuda)
        {
            HttpResponseMessage response = null;

            int prijavljeniKorisnik = User.Identity.GetUserId <int>();

            if (prijavljeniKorisnik < 1)
            {
                ClaimsPrincipal principal = Request.GetRequestContext().Principal as ClaimsPrincipal;

                var korisnikIme = ClaimsPrincipal.Current.Identity.Name;
                var userManager = HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>();
                var korisnik    = userManager.FindByName(korisnikIme);
                prijavljeniKorisnik = korisnik.Id;
            }

            try
            {
                using (AukcijeClient proxy = new AukcijeClient())
                {
                    proxy.Open();


                    AukcijaDTO detaljiAukcije = proxy.AukcijaKreirajPonudu(ponuda.AukcijaId, ponuda.IznosPonude, prijavljeniKorisnik);
                    response = request.CreateResponse <AukcijaDTO>(HttpStatusCode.OK, detaljiAukcije);
                    proxy.Close();
                }
            }
            catch (FaultException <PonudaCreateException> ex)
            {
                response = request.CreateResponse(HttpStatusCode.BadRequest, ex.Message);
            }
            catch (FaultException ex)
            {
                response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
            }
            catch (Exception ex)
            {
                response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
            }

            return(response);
        }
Ejemplo n.º 6
0
        public AukcijaDTO GetAukcijaDetail(int aukcijaId, int korisnikId)
        {
            try
            {
                using (BHaoDataContext context = new BHaoDataContext())
                {
                    IAukcijaRepository aukcijaRepo  = new AukcijaRepository(context);
                    KorisnikRepository korisnikRepo = new KorisnikRepository(context);

                    AukcijaDTO aukcija = new AukcijaDTO();
                    aukcija = aukcijaRepo.GetAukcijaDetail(aukcijaId, korisnikId);

                    return(aukcija);
                };
            }
            catch (Exception ex)
            {
                throw new FaultException(ex.Message);
            }
        }
Ejemplo n.º 7
0
        public AukcijaDTO AukcijaKreirajPonudu(int aukcijaId, decimal iznosPonude, int prijavljeniKorisnik)
        {
            try
            {
                using (BHaoDataContext context = new BHaoDataContext())
                {
                    AukcijaDTO aukcijaDTO = new AukcijaDTO();

                    Ponuda ponuda = new Ponuda()
                    {
                        AukcijaId       = aukcijaId,
                        MaksimalanIznos = iznosPonude,
                        KorisnikId      = prijavljeniKorisnik,
                        Vrijeme         = DateTime.Now
                    };

                    try
                    {
                        aukcijaDTO = BHaoBusinessEngine.Licitiraj(ponuda, context);

                        return(aukcijaDTO);
                    }
                    catch (PonudaCreateException ex)
                    {
                        throw ex;
                    }
                }
            }
            catch (FaultException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new FaultException(ex.Message);
            }
        }
Ejemplo n.º 8
0
        public AukcijaDTO GetAukcijaDetail(int aukcijaId, int korisnikId)
        {
            var query = from a in _context.Aukcije.Include(x => x.Slike)
                        where a.Id == aukcijaId
                        join ar in _context.Artikli on a.ArtikalId equals ar.Id
                        join n in _context.NaciniPlacanja on a.NacinPlacanjaId equals n.Id
                        select new AukcijaDTO()
            {
                Id                = a.Id,
                Pocetak           = a.Pocetak,
                Zavrsetak         = a.Zavrsetak,
                NazivArtikla      = ar.Naziv,
                Proizvodjac       = ar.Proizvodjac,
                Model             = ar.Model,
                PocetnaCijena     = a.MinimalnaCijena,
                KupiOdmahCijena   = a.KupiOdmahCijena,
                DetaljanOpis      = a.DetaljanOpis,
                ProdavacId        = a.ProdavacId,
                NacinPlacanja     = n.Opis,
                Napomena          = a.Napomena,
                Slike             = a.Slike,
                NajveciPonudjacId = a.NajveciPonudjacId,
                Zavrsena          = a.Zavrsena,
                ArtikalId         = (int)a.ArtikalId
            };

            AukcijaDTO aukcijaDTO = query.FirstOrDefault();

            KorisnikRepository korisnikRepo = new KorisnikRepository(_context);

            if (aukcijaDTO.NajveciPonudjacId != 0)
            {
                Ponuda najvecaPonuda = _context.Ponude
                                       .Where(x => x.KorisnikId == aukcijaDTO.NajveciPonudjacId && x.AukcijaId == aukcijaDTO.Id)
                                       .OrderByDescending(x => x.Iznos)
                                       .Take(1).SingleOrDefault();

                aukcijaDTO.NajvecaPonuda = najvecaPonuda;

                aukcijaDTO.NajveciPonudjac = korisnikRepo.GetById(aukcijaDTO.NajveciPonudjacId);
            }
            aukcijaDTO.Prodavac = korisnikRepo.GetById(aukcijaDTO.ProdavacId);

            PonudaRepository ponudaRepo = new PonudaRepository(_context);

            aukcijaDTO.Ponude = ponudaRepo.GetPonudeByAukcijaId(aukcijaDTO.Id);

            IDataRepository <OcjenaKorisnika> ocjenaKorisnikaRepo = new DataRepositoryBase <OcjenaKorisnika>(_context);

            aukcijaDTO.OcjeneKorisnika = ocjenaKorisnikaRepo.GetAll().Where(x => x.AukcijaId == aukcijaDTO.Id).ToList();

            IDataRepository <OcjenaArtikla> ocjenaArtiklaRepo = new DataRepositoryBase <OcjenaArtikla>(_context);

            aukcijaDTO.OcjeneArtikla = ocjenaArtiklaRepo.GetAll().Where(x => x.ArtikalId == aukcijaDTO.ArtikalId).ToList();

            IDataRepository <KomentarKorisnika> komentarKorisnikaRepo = new DataRepositoryBase <KomentarKorisnika>(_context);
            KomentarKorisnika komentar = komentarKorisnikaRepo.GetAll().Where(x => x.KomentatorId == korisnikId && x.AukcijaId == aukcijaDTO.Id).FirstOrDefault();

            if (komentar != null && komentar.isDeleted)
            {
                komentar.TextKomentara = "Komentar obrisan.";
            }
            aukcijaDTO.KomentarKorisnika = komentar;

            IDataRepository <KomentarArtikla> komentarArtiklaRepo = new DataRepositoryBase <KomentarArtikla>(_context);
            KomentarArtikla komentarArtikla = komentarArtiklaRepo.GetAll().Where(x => x.KomentatorId == korisnikId && x.AukcijaId == aukcijaDTO.Id).FirstOrDefault();

            if (komentarArtikla != null && komentarArtikla.isDeleted)
            {
                komentarArtikla.TextKomentara = "Komentar obrisan.";
            }
            aukcijaDTO.KomentarArtikla = komentarArtikla;


            ArtikalRepository artikalRepo = new ArtikalRepository(_context);
            Artikal           artikal     = artikalRepo.GetByIdWithProsjecnaOcjena(aukcijaDTO.ArtikalId);

            aukcijaDTO.Artikal = artikal;

            return(aukcijaDTO);
        }
Ejemplo n.º 9
0
        public static AukcijaDTO Licitiraj(Ponuda ponuda, BHaoDataContext _context)
        {
            IAukcijaRepository       aukcijaRepo   = new AukcijaRepository(_context);
            IInkrementRepository     inkrementRepo = new InkrementRepository(_context);
            IDataRepository <Ponuda> ponudaRepo    = new DataRepositoryBase <Ponuda>(_context);
            KorisnikRepository       korisnikRepo  = new KorisnikRepository(_context);

            AukcijaDTO aukcijaDTO = new AukcijaDTO();

            Aukcija aukcija = aukcijaRepo.Get(ponuda.AukcijaId);

            if (aukcija.ProdavacId == ponuda.KorisnikId)
            {
                throw new PonudaCreateException("Prodavac ne može licitirati na vlastitu aukciju!");
            }

            if (ponuda.MaksimalanIznos <= aukcija.MinimalnaCijena || ponuda.MaksimalanIznos <= aukcija.NajvecaPonuda)
            {
                throw new PonudaCreateException("Maksimalna ponuda mora biti veća od početne cijene ili trenutne najveće ponude!");
            }

            if (aukcija.Zavrsena || aukcija.Zavrsetak < DateTime.Now)
            {
                throw new PonudaCreateException("Vrijeme aukcije isteklo, aukcija završena!");
            }

            List <Ponuda> topDvijePonude = ponudaRepo.GetAll().Where(x => x.AukcijaId == ponuda.AukcijaId)
                                           .OrderByDescending(x => x.MaksimalanIznos).ThenByDescending(x => x.Id).Take(2).ToList();

            Ponuda trenutnaNajveca = new Ponuda();

            if (topDvijePonude.Count > 0)
            {
                trenutnaNajveca = topDvijePonude[0];
            }

            if (aukcija.NajvecaPonuda == null)
            {
                aukcija.NajvecaPonuda = aukcija.MinimalnaCijena > 0 ? aukcija.MinimalnaCijena : 1;
                ponuda.Iznos          = (decimal)aukcija.NajvecaPonuda;

                ponudaRepo.Insert(ponuda);

                aukcija.NajvecaPonuda     = ponuda.Iznos;
                aukcija.NajveciPonudjacId = ponuda.KorisnikId;
                aukcijaRepo.Update(aukcija);

                aukcijaDTO.NajvecaPonuda = ponuda;
            }
            else
            {
                if (aukcija.NajveciPonudjacId == ponuda.KorisnikId)
                {
                    throw new PonudaCreateException("Već imate najveću ponudu!");
                }

                //Inkrement inkrement = inkrementRepo.GetInkrementByIznosPonude((decimal)aukcija.NajvecaPonuda);

                if (ponuda.MaksimalanIznos > trenutnaNajveca.MaksimalanIznos)
                {
                    Inkrement inkrement = inkrementRepo.GetInkrementByIznosPonude(trenutnaNajveca.MaksimalanIznos);
                    if ((trenutnaNajveca.MaksimalanIznos + inkrement.IznosInkrementa) <= ponuda.MaksimalanIznos)
                    {
                        ponuda.Iznos = trenutnaNajveca.MaksimalanIznos + inkrement.IznosInkrementa;
                    }
                    else
                    {
                        ponuda.Iznos = ponuda.MaksimalanIznos;
                    }



                    ponudaRepo.Insert(ponuda);

                    if (trenutnaNajveca.Iznos != trenutnaNajveca.MaksimalanIznos)
                    {
                        trenutnaNajveca.Iznos = trenutnaNajveca.MaksimalanIznos;
                        ponudaRepo.Insert(trenutnaNajveca);
                    }


                    aukcija.NajvecaPonuda     = ponuda.Iznos;
                    aukcija.NajveciPonudjacId = ponuda.KorisnikId;
                    aukcijaRepo.Update(aukcija);

                    aukcijaDTO.NajvecaPonuda = ponuda;
                }
                else
                {
                    Ponuda novaNajveca = new Ponuda();
                    novaNajveca.AukcijaId       = trenutnaNajveca.AukcijaId;
                    novaNajveca.KorisnikId      = trenutnaNajveca.KorisnikId;
                    novaNajveca.MaksimalanIznos = trenutnaNajveca.MaksimalanIznos;

                    Inkrement inkrement = inkrementRepo.GetInkrementByIznosPonude(ponuda.MaksimalanIznos);
                    if (trenutnaNajveca.MaksimalanIznos > (ponuda.MaksimalanIznos + inkrement.IznosInkrementa))
                    {
                        novaNajveca.Iznos   = ponuda.MaksimalanIznos + inkrement.IznosInkrementa;
                        novaNajveca.Vrijeme = DateTime.Now;
                    }
                    else
                    {
                        novaNajveca.Iznos   = trenutnaNajveca.MaksimalanIznos;
                        novaNajveca.Vrijeme = DateTime.Now;
                    }

                    ponuda.Iznos = ponuda.MaksimalanIznos;

                    ponudaRepo.Insert(ponuda);
                    ponudaRepo.Insert(novaNajveca);

                    aukcija.NajvecaPonuda     = novaNajveca.Iznos;
                    aukcija.NajveciPonudjacId = novaNajveca.KorisnikId;
                    aukcijaRepo.Update(aukcija);

                    aukcijaDTO.NajvecaPonuda = novaNajveca;
                }

                //ponuda.Iznos = (decimal)aukcija.NajvecaPonuda + inkrement.IznosInkrementa < ponuda.MaksimalanIznos
                //    ? (decimal)aukcija.NajvecaPonuda + inkrement.IznosInkrementa : ponuda.MaksimalanIznos;
            }



            //if (topDvijePonude.Count > 1)
            //{
            //    Ponuda ponuda1 = topDvijePonude.First();
            //    Ponuda ponuda2 = topDvijePonude.Last();

            //    if (ponuda1.KorisnikId != ponuda2.KorisnikId)
            //    {

            //        Inkrement inkrement = inkrementRepo.GetInkrementByIznosPonude(ponuda2.MaksimalanIznos);

            //        ponuda1.Iznos = (ponuda2.MaksimalanIznos + inkrement.IznosInkrementa) > ponuda1.MaksimalanIznos ? ponuda1.MaksimalanIznos : ponuda2.MaksimalanIznos + inkrement.IznosInkrementa;

            //        ponudaRepo.Insert(ponuda1);


            //        aukcija.NajvecaPonuda = ponuda1.Iznos;
            //        aukcija.NajveciPonudjacId = ponuda1.KorisnikId;
            //        aukcijaRepo.Update(aukcija);

            //        aukcijaDTO.NajveciPonudjacId = aukcija.NajveciPonudjacId;
            //        aukcijaDTO.NajvecaPonuda = ponuda1;
            //        aukcijaDTO.NajveciPonudjac = korisnikRepo.GetById(aukcija.NajveciPonudjacId);
            //        aukcijaDTO.Prodavac = korisnikRepo.GetById(aukcija.ProdavacId);
            //        return aukcijaDTO;
            //    }


            //    aukcijaDTO.NajveciPonudjacId = ponuda1.KorisnikId;
            //    aukcijaDTO.NajvecaPonuda = ponuda1;
            //    aukcijaDTO.NajveciPonudjac = korisnikRepo.GetById(ponuda1.KorisnikId);

            //    return aukcijaDTO;
            //}

            //aukcija.NajvecaPonuda = ponuda.Iznos;
            //aukcija.NajveciPonudjacId = ponuda.KorisnikId;
            //aukcijaRepo.Update(aukcija);

            //aukcijaDTO.NajvecaPonuda = ponuda;
            aukcijaDTO.NajveciPonudjacId = aukcija.NajveciPonudjacId;
            aukcijaDTO.NajveciPonudjac   = korisnikRepo.GetById(aukcija.NajveciPonudjacId);
            aukcijaDTO.Prodavac          = korisnikRepo.GetById(aukcija.ProdavacId);
            return(aukcijaDTO);
        }