public ActionResult AukcijaFull(int id) { Aukcija a = db.Aukcijas.Find(id); //var res = (from b in db.Bids where b.AukcijaID==a.AukcijaID orderby b.Vreme descending select new { Bid = b }).Take(10); if (Session["ID"] != null) { var kor = db.Korisniks.Find(Session["ID"]); ViewBag.idk = Session["ID"].ToString(); ViewBag.brtokena = kor.BrojTokena; } ViewBag.users = new String[10]; int i = 0; var bids = db.Bids.Include(b => b.Korisnik); bids = bids.Where(s => s.AukcijaID == a.AukcijaID); bids = bids.OrderByDescending(s => s.Vreme); bids = bids.Take(10); foreach (var bx in bids) { int kid = bx.KorisnikID; ViewBag.users[i++] = db.Korisniks.Find(kid).Ime + " " + db.Korisniks.Find(kid).Prezime + " " + bx.PonCena; } if (a.VremeZatvaranja != null) { ViewBag.vreme = (a.VremeZatvaranja.Value - DateTime.UtcNow).TotalSeconds; } return(View(a)); }
public static void KupiOdmah(int aukcijaId, int korisnikId, BHaoDataContext context) { IAukcijaRepository aukcijaRepo = new AukcijaRepository(context); IPonudaRepository ponudaRepo = new PonudaRepository(context); Aukcija aukcija = aukcijaRepo.Get(aukcijaId); if (!aukcija.Zavrsena && aukcija.Zavrsetak > DateTime.Now) { Ponuda ponuda = new Ponuda(); ponuda.Vrijeme = DateTime.Now; ponuda.Iznos = (decimal)aukcija.KupiOdmahCijena; ponuda.MaksimalanIznos = (decimal)aukcija.KupiOdmahCijena; ponuda.KorisnikId = korisnikId; ponuda.AukcijaId = aukcija.Id; ponudaRepo.Insert(ponuda); aukcija.Zavrsetak = ponuda.Vrijeme; aukcija.KupacId = korisnikId; aukcija.Zavrsena = true; aukcija.NajveciPonudjacId = korisnikId; aukcija.NajvecaPonuda = aukcija.KupiOdmahCijena; aukcija.Provizija = ObracunProvizije(aukcija); aukcijaRepo.Update(aukcija); } else { throw new Exception("Aukcija već zavrsena!"); } }
public ActionResult NapraviAukciju(String Proizvod, String Trajanje, String PocetnaCena, HttpPostedFileBase upload) { if (Proizvod != null && Trajanje != "" && PocetnaCena != "" && upload != null && upload.ContentLength > 0) { byte[] image = new byte[upload.ContentLength]; upload.InputStream.Read(image, 0, image.Length); double x = Double.Parse(PocetnaCena); x = (double)Math.Round((Decimal)x, 3, MidpointRounding.AwayFromZero); var newAuction = new Aukcija() { Proizvod = Proizvod, Trajanje = Int32.Parse(Trajanje), PocetnaCena = x, VremeKreiranja = DateTime.UtcNow, Status = "READY", TrenutnaCena = x, Slika = image }; db.Aukcijas.Add(newAuction); db.SaveChanges(); ViewBag.Message = "Uspesno"; return(View()); } else { ViewBag.Message = "Doslo je do greske"; return(View()); } return(View()); }
public HttpResponseMessage Kreiraj(HttpRequestMessage request, [FromBody] AukcijaKreirajDTO aukcijaModel) { int prijavljeniKorisnik = User.Identity.GetUserId <int>(); HttpResponseMessage response = null; try { using (AukcijeClient proxy = new AukcijeClient()) { proxy.Open(); Aukcija a = proxy.KreirajAukciju(aukcijaModel, prijavljeniKorisnik); response = request.CreateResponse <int>(HttpStatusCode.OK, a.Id); proxy.Close(); } } catch (FaultException ex) { response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); } catch (Exception ex) { response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); } return(response); }
public object Convert(object value, Type targetType, object parameter, string language) { Aukcija aukcija = (Aukcija)value; var minimalnaCijena = String.Format("{0} KM", aukcija.MinimalnaCijena.ToString()); var najvecaPonuda = String.Format("{0} KM", aukcija.NajvecaPonuda.ToString()); return(aukcija.NajvecaPonuda == null ? minimalnaCijena : najvecaPonuda); }
public void testing_repository_access( ) { using (BHaoDataContext context = new BHaoDataContext( )) { IAukcijaRepository repo = new AukcijaRepository(context); Aukcija aukcija = repo.Get(4); Assert.IsTrue(aukcija != null); } }
public ActionResult ObrisiAukciju(int id) { if (Session["Admin"] == null) { return(RedirectToAction("Index", "Home")); } Aukcija a = db.Aukcijas.Find(id); a.Status = "DRAFT"; db.Entry(a).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index", "Home")); }
//[HttpPost] public ActionResult IzmeniAukciju(int id) { if (Session["Admin"] == null) { return(RedirectToAction("Index", "Home")); } Aukcija a = db.Aukcijas.Find(id); if (a.Status != "READY") { return(RedirectToAction("Index", "Home")); } return(View(a)); }
// GET: Auction public ActionResult Index(int id = -1) { if (id == -1) { return(RedirectToAction("Index", "Home")); } Aukcija aukcija = null; using (var context = new IEPVebAukcijaEntities7()) { aukcija = context.Aukcijas.Find(id); if (aukcija == null) { return(HttpNotFound()); } var bids = context.Bids .Where(n => n.AukcijaID == id) .OrderByDescending(n => n.PonCena) .Take(10); foreach (var bid in bids) { Korisnik korisnik = context.Korisniks.Find(bid.KorisnikID); bid.KorisnikImePrezime = korisnik.Ime + " " + korisnik.Prezime; } aukcija.Top10Bids = bids; aukcija.Top10Bids = aukcija.Top10Bids.ToList(); if ((aukcija.VremeZatvaranja != null) && (!aukcija.VremeZatvaranja.Equals("")) && (aukcija.Status.Equals("OPEN"))) { aukcija.PreostaloVreme = ((DateTime)aukcija.VremeZatvaranja - DateTime.Now).TotalSeconds; } else if ((aukcija.VremeOtvaranja != null) && (!aukcija.VremeOtvaranja.Equals("")) && (!aukcija.Status.Equals("OPEN"))) { //auk.PreostaloVreme = ((DateTime)auk.VremeZatvaranja - (DateTime)auk.VremeOtvaranja).TotalSeconds; aukcija.PreostaloVreme = -1; } else { aukcija.PreostaloVreme = (double)aukcija.Trajanje; } } return(View(aukcija)); }
public void OcijeniKorisnika(OcjenaKorisnika ocjena) { try { if (ocjena.Ocjena < 1) { throw new FaultException("Morate odabrati ocjenu!"); } using (BHaoDataContext context = new BHaoDataContext()) { IDataRepository <OcjenaKorisnika> ocjenaRepo = new DataRepositoryBase <OcjenaKorisnika>(context); AukcijaRepository aukcijaRepo = new AukcijaRepository(context); Aukcija aukcija = aukcijaRepo.Get(ocjena.AukcijaId); if ((ocjena.OcjenjivacId == aukcija.ProdavacId || ocjena.OcjenjivacId == aukcija.KupacId) && (ocjena.OcijenjeniKorisnikId == aukcija.ProdavacId || ocjena.OcijenjeniKorisnikId == aukcija.KupacId)) { if (ocjenaRepo.GetAll().Where(x => x.OcjenjivacId == ocjena.OcjenjivacId && x.OcijenjeniKorisnikId == ocjena.OcijenjeniKorisnikId && x.AukcijaId == ocjena.AukcijaId).FirstOrDefault() != null) { throw new FaultException("Možete ocijeniti korisnika samo jednom!"); } else { ocjena.Datum = DateTime.Now; } ocjenaRepo.Insert(ocjena); } else { throw new FaultException("Ocjenjivać i ocijenjeni korisnik moraju biti kupac ili prodavac!"); } } } catch (FaultException ex) { throw ex; } catch (Exception ex) { throw new FaultException(ex.Message); } }
public ActionResult AddAuction(NewAuctionModel model) { if (checkAdmin()) { return(RedirectToAction("Login", "Account")); } else { if (ModelState.IsValid) { DateTime localDate = DateTime.Now; byte[] image = null; if (model.Slika != null) { // Convert HttpPostedFileBase to byte array. image = new byte[model.Slika.ContentLength]; model.Slika.InputStream.Read(image, 0, image.Length); } using (var context = new IEPVebAukcijaEntities7()) { var newAuction = new Aukcija() { Proizvod = model.Proizvod, Trajanje = model.Trajanje, PocetnaCena = (decimal)model.PocetnaCena, VremeKreiranja = localDate, Status = "READY", TrenutnaCena = (decimal)model.PocetnaCena, Slika = image }; context.Aukcijas.Add(newAuction); context.SaveChanges(); logger.Error("CREATE AUCTION: AuctionID: " + newAuction.AukcijaID + ", AuctionName: " + newAuction.Proizvod + ", AuctionStatus: " + newAuction.Status); return(RedirectToAction("Index", "Admin")); } } return(View()); } }
public void OcijeniArtikal(OcjenaArtikla ocjena) { try { if (ocjena.Ocjena < 1) { throw new FaultException("Morate odabrati ocjenu!"); } using (BHaoDataContext context = new BHaoDataContext()) { IDataRepository <OcjenaArtikla> ocjenaRepo = new DataRepositoryBase <OcjenaArtikla>(context); AukcijaRepository aukcijaRepo = new AukcijaRepository(context); Aukcija aukcija = aukcijaRepo.Get(ocjena.AukcijaId); if (aukcija.KupacId == ocjena.OcijenioId) { if (ocjenaRepo.GetAll().Where(x => x.ArtikalId == ocjena.ArtikalId && x.OcijenioId == aukcija.KupacId && x.AukcijaId == ocjena.AukcijaId).FirstOrDefault() != null) { throw new FaultException("Možete ocijeniti artikal samo jednom!"); } else { ocjena.Datum = DateTime.Now; ocjenaRepo.Insert(ocjena); } } else { throw new FaultException("Morate biti kupac da bi mogli ocijeniti artikal!"); } } } catch (FaultException ex) { throw ex; } catch (Exception ex) { throw new FaultException(ex.Message); } }
public Aukcija KreirajAukciju(AukcijaKreirajDTO aukcijaModel, int prijavljeniKorisnik) { Aukcija aukcija = new Aukcija(); try { using (BHaoDataContext context = new BHaoDataContext()) { Artikal artikal = new Artikal(); DateTime pocetakAukcije = DateTime.Now; IArtikalRepository artikalRepo = new ArtikalRepository(context); IAukcijaRepository aukcijaRepo = new AukcijaRepository(context); IDataRepository <Slika> slikeRepo = new DataRepositoryBase <Slika>(context); aukcija.ArtikalId = artikalRepo.KreirajIzAukcije(aukcijaModel.Naziv, aukcijaModel.Model, aukcijaModel.Proizvodjac); aukcija.Pocetak = pocetakAukcije; aukcija.Zavrsetak = pocetakAukcije.AddDays(aukcijaModel.Trajanje); aukcija.MinimalnaCijena = aukcijaModel.MinimalnaCijena; aukcija.KupiOdmahCijena = aukcijaModel.KupiOdmahCijena; aukcija.Napomena = aukcijaModel.Napomena; aukcija.DetaljanOpis = aukcijaModel.DetaljanOpis; aukcija.NacinPlacanjaId = aukcijaModel.NacinPlacanjaId; aukcija.KategorijaId = aukcijaModel.KategorijaId; aukcija.ProdavacId = prijavljeniKorisnik; aukcija = aukcijaRepo.Insert(aukcija); foreach (var slika in aukcijaModel.Slike) { slika.AukcijaId = aukcija.Id; slikeRepo.Insert(slika); } } } catch (Exception ex) { throw new FaultException(ex.Message); } return(aukcija); }
public String Otkucalo(int id) { String s = ""; Aukcija a = db.Aukcijas.Find(id); if (a.Status == "OPEN" && a.VremeZatvaranja.Value < DateTime.UtcNow) { if (a.BidID != null) { a.Status = "SOLD"; } else { a.Status = "EXPIRED"; } db.Entry(a).State = EntityState.Modified; db.SaveChanges(); s = a.Status; } return(s); }
public void EvidentirajPlacanje(int aukcijaId, DateTime datumPlacanja) { using (BHaoDataContext context = new BHaoDataContext()) { try { AukcijaRepository repo = new AukcijaRepository(context); Aukcija aukcija = repo.Get(aukcijaId); aukcija.DatumPlacanja = datumPlacanja; repo.Update(aukcija); } catch (FaultException ex) { throw ex; } catch (Exception ex) { throw new FaultException(ex.Message); } } }
public String Licitiraj(int id, out String ime, out double Cena, int idk) { ime = "Nemate dovoljno tokena"; Cena = 0; Aukcija a = db.Aukcijas.Find(id); Korisnik k = db.Korisniks.Find(idk); if (k.BrojTokena > 0) { if (a.Status == "OPEN") { Bid b = new Bid(); b.AukcijaID = a.AukcijaID; b.KorisnikID = idk; b.PonCena = a.TrenutnaCena + 0.5; a.TrenutnaCena = b.PonCena; b.Vreme = DateTime.UtcNow; TimeSpan?t = a.VremeZatvaranja - b.Vreme; String s = "OK"; if (t.Value.TotalSeconds < 10) { a.Trajanje = a.Trajanje + 10; DateTime startTime = a.VremeOtvaranja.Value; DateTime endTime = startTime.AddSeconds((int)a.Trajanje); a.VremeZatvaranja = endTime; s = "DODAJ"; } ime = db.Korisniks.Find(b.KorisnikID).Ime + " " + db.Korisniks.Find(b.KorisnikID).Prezime; Cena = (double)a.TrenutnaCena; db.Bids.Add(b); db.SaveChanges(); return(s); } return("CLOSED"); } return("TOKEN"); }
public void Ukloni(int aukcijaId) { try { using (BHaoDataContext context = new BHaoDataContext()) { AukcijaRepository repo = new AukcijaRepository(context); Aukcija aukcija = repo.Get(aukcijaId); aukcija.isDeleted = true; aukcija.Zavrsena = true; aukcija.Zavrsetak = DateTime.Now; repo.Update(aukcija); Artikal artikal = context.Artikli.Find(aukcija.ArtikalId); Poruka poruka = new Poruka() { Datum = DateTime.Now, PosiljalacId = 14, PrimalacId = aukcija.ProdavacId, TextPoruke = "Vaša aukcija za " + artikal.Naziv + " " + artikal.Proizvodjac + " " + artikal.Model + " je uklonjena!", AukcijaId = aukcija.Id }; PorukaRepository porukaRepo = new PorukaRepository(context); porukaRepo.Insert(poruka); } } catch (FaultException ex) { throw ex; } catch (Exception ex) { throw new FaultException(ex.Message); } }
public void BidAuction(int auctionID, int userID, out string fullUserName, out string newPrice, out bool tokens, out double timeRemaining) { try { Aukcija aukcija = null; Korisnik korisnik = null; using (var context = new IEPVebAukcijaEntities7()) { aukcija = context.Aukcijas.Find(auctionID); korisnik = context.Korisniks.Find(userID); } if ((aukcija != null) && (korisnik != null)) { if ((korisnik.BrojTokena > 0) && (aukcija.Status == "OPEN")) { tokens = false; double newPriceDouble = (double)aukcija.TrenutnaCena + 1; aukcija.TrenutnaCena = (decimal)newPriceDouble; double preostalo = ((DateTime)aukcija.VremeZatvaranja - DateTime.Now).TotalSeconds; DateTime newDate = (DateTime)aukcija.VremeZatvaranja; if (preostalo <= 10) { double increment = preostalo * (-1); increment += 10; newDate = newDate.AddSeconds(increment); } aukcija.VremeZatvaranja = newDate; timeRemaining = aukcija.PreostaloVreme = ((DateTime)aukcija.VremeZatvaranja - DateTime.Now).TotalSeconds; Bid newBid = new Bid() { PonCena = (decimal)newPriceDouble, VremeSlanja = DateTime.Now, KorisnikID = userID, AukcijaID = auctionID }; using (var context = new IEPVebAukcijaEntities7()) { context.Entry(aukcija).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); context.Bids.Add(newBid); context.SaveChanges(); logger.Error("AUCTION BIDED: AuctionID: " + aukcija.AukcijaID + ", AuctionCurrentPrice: " + aukcija.TrenutnaCena + ", UserBidedID: " + userID); fullUserName = korisnik.Ime + " " + korisnik.Prezime; newPrice = "" + newPriceDouble; } } else { fullUserName = newPrice = null; if (aukcija.Status != "OPEN") { tokens = false; timeRemaining = -1; } else { tokens = true; timeRemaining = 1; } } } else { fullUserName = newPrice = null; tokens = true; timeRemaining = -1; } } catch (FormatException) { fullUserName = newPrice = null; tokens = true; timeRemaining = -1; Console.WriteLine("Something went wrong."); } }
public override void PostaviPonudu(double iznos) { Aukcija.DodajPonudu(iznos); }
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); }
public static decimal ObracunProvizije(Aukcija aukcija) { decimal procent = 0.05M; return(aukcija.NajvecaPonuda > 0 ? (decimal)aukcija.NajvecaPonuda * procent : 0); }