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())); }
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); }
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); }
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); }
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); } }
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); } }
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); }
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); }