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 AukcijaDetailDTO[] GetZadnjeUspjesne(int kategorijaId, string stringZaPretragu) { try { using (BHaoDataContext context = new BHaoDataContext()) { IAukcijaRepository repo = new AukcijaRepository(context); AukcijaDetailDTO[] zadnjeUspjesne = repo.GetAll(true).Where(x => x.Aukcija.KupacId > 0).ToArray(); if (kategorijaId > 0) { zadnjeUspjesne = zadnjeUspjesne.Where(x => x.Aukcija.KategorijaId == kategorijaId).ToArray(); } if (!String.IsNullOrEmpty(stringZaPretragu)) { zadnjeUspjesne = zadnjeUspjesne.Where(x => x.Artikal.Naziv.ToLower().Contains(stringZaPretragu) || x.Artikal.Model.ToLower().Contains(stringZaPretragu) || x.Artikal.Proizvodjac.ToLower().Contains(stringZaPretragu)).ToArray(); } zadnjeUspjesne = zadnjeUspjesne.OrderByDescending(x => x.Aukcija.Zavrsetak) .Take(8) .ToArray(); return(zadnjeUspjesne); }; } catch (Exception ex) { throw new FaultException(ex.Message); } }
public Entities.Aukcija[] GetAllAukcije() { using (BHaoDataContext context = new BHaoDataContext()) { IAukcijaRepository repo = new AukcijaRepository(context); return(repo.GetAll().ToArray()); } }
//Funkcija koja se poziva iz web dijela aplikacije public List <AukcijaDTO> GetSlicneArtikle(int artikalId, int userID) { logiraniUserID = userID; UcitajArtikle(artikalId); List <OcjenaArtikla> ocjene = context.OcjeneArtikala.Where(x => x.ArtikalId == artikalId).OrderBy(x => x.OcijenioId).ToList(); List <OcjenaArtikla> zajednickeOcjene1 = new List <OcjenaArtikla>(); List <OcjenaArtikla> zajednickeOcjene2 = new List <OcjenaArtikla>(); //List<Artikli> preporuceno = new List<Artikli>(); List <AukcijaDTO> preporuceno = new List <AukcijaDTO>(); //Petlja svih proizvoda (ne uključujući onaj koji je proslijeđen u funkciju) foreach (var item in artikli) { foreach (OcjenaArtikla ocjena1 in ocjene) //Sve ocjene aktivnog proizvoda { //Provjeriti da li je naredni proizvod (iz liste proizvodi) ocijenio isti kupac if (item.Value.Where(x => x.OcijenioId == ocjena1.OcijenioId).Count() != 0) { zajednickeOcjene1.Add(ocjena1); zajednickeOcjene2.Add(item.Value.Where(x => x.OcijenioId == ocjena1.OcijenioId).First()); } } //Za računanje sličnosti se uzimaju samo zajedničke ocjene, odnosno ocjene istih kupaca za oba proizvoda double slicnost = GetSlicnost(zajednickeOcjene1, zajednickeOcjene2); if (slicnost > 0.6)//Granična vrijednost (treshold) { List <AukcijaDTO> aukcije = new List <AukcijaDTO>(); List <OcjenaArtikla> ocjeneSelectByKupacArtikal = new List <OcjenaArtikla>(); IAukcijaRepository aukcijeRepo = new AukcijaRepository(context); aukcije = aukcijeRepo.GetAukcijeAktivneByArtikal(item.Key).ToList(); if (aukcije.Count > 0) { foreach (var a in aukcije) { ocjeneSelectByKupacArtikal = item.Value.Where(x => x.OcijenioId == logiraniUserID).ToList(); if (ocjeneSelectByKupacArtikal.Count < 1) { preporuceno.Add(a); } } } } zajednickeOcjene1.Clear(); zajednickeOcjene2.Clear(); } //Lista preporučenih proizvoda return(preporuceno); }
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 StatistikaDTO GetStatistika(int kategorijaId, DateTime?prikazOd, DateTime?prikazDo) { try { using (BHaoDataContext context = new BHaoDataContext()) { AukcijaRepository repo = new AukcijaRepository(context); IEnumerable <AukcijaDetailDTO> aukcije = repo.GetAll(null); if (kategorijaId > 0) { aukcije = aukcije.Where(x => x.Aukcija.KategorijaId == kategorijaId).ToList(); } if (prikazOd != null && prikazDo != null) { aukcije = aukcije.Where(x => (x.Aukcija.Pocetak >= prikazOd && x.Aukcija.Pocetak <= prikazDo) || (x.Aukcija.Zavrsetak >= prikazOd && x.Aukcija.Zavrsetak <= prikazDo)).ToList(); } StatistikaDTO statistika = new StatistikaDTO(); if (aukcije.Count() > 0) { statistika.BrojAukcija = aukcije.Count(); statistika.ListaAukcija = aukcije.OrderByDescending(x => x.Aukcija.Pocetak); statistika.ProsjecnaVrijednostAukcija = (decimal)aukcije.Where(x => x.Aukcija.Zavrsena && x.Aukcija.NajvecaPonuda > 0) .Average(x => x.Aukcija.NajvecaPonuda); statistika.NajcesceProdavaniArtikli = aukcije.GroupBy(x => x.Artikal).Select(group => new NajcesciArtikliDTO { Artikal = group.Key.Proizvodjac + " " + group.Key.Model + " - " + group.Key.Naziv, Count = group.Count() }).OrderByDescending(x => x.Count).Take(10); } else { statistika.BrojAukcija = 0; statistika.ProsjecnaVrijednostAukcija = 0; } return(statistika); } } catch (Exception) { throw; } }
public AukcijaDetailDTO[] GetAllAktivne(int kategorijaId, string stringZaPretragu) { try { using (BHaoDataContext context = new BHaoDataContext()) { IAukcijaRepository repo = new AukcijaRepository(context); return(repo.GetAllAktivne(kategorijaId, stringZaPretragu).ToArray()); }; } catch (Exception ex) { throw new FaultException(ex.Message); } }
public Entities.Aukcija GetAukcija(int id) { try { using (BHaoDataContext context = new BHaoDataContext()) { IAukcijaRepository repo = new AukcijaRepository(context); return(repo.Get(id)); } } catch (Exception ex) { throw new FaultException(ex.Message); } }
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 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 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 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 AukcijaDetailDTO[] GetAll(bool zavrsena) { using (BHaoDataContext context = new BHaoDataContext()) { try { AukcijaRepository repo = new AukcijaRepository(context); AukcijaDetailDTO[] aukcije = repo.GetAll(zavrsena).ToArray(); return(aukcije); } catch (FaultException ex) { throw ex; } catch (Exception ex) { throw new FaultException(ex.Message); } } }
public AukcijaDetailDTO[] GetAukcijeByKorisnik(int korisnikId, string kriterij) { try { using (BHaoDataContext context = new BHaoDataContext()) { AukcijaRepository repo = new AukcijaRepository(context); return(repo.GetAllZaKorisnika(korisnikId, kriterij).ToArray()); } } catch (FaultException ex) { throw ex; } catch (Exception ex) { throw new FaultException(ex.Message); } }
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 AukcijaDetailDTO[] GetAllZavrsene(string filterPlacanja, string stringZaPretragu) { try { using (BHaoDataContext context = new BHaoDataContext()) { AukcijaRepository repo = new AukcijaRepository(context); AukcijaDetailDTO[] aukcije = repo.GetAllZavrsene().ToArray(); if (filterPlacanja == "placene") { aukcije = aukcije.Where(x => x.Aukcija.DatumPlacanja != null).ToArray(); } if (filterPlacanja == "neplacene") { aukcije = aukcije.Where(x => x.Aukcija.DatumPlacanja == null).ToArray(); } if (!String.IsNullOrEmpty(stringZaPretragu)) { aukcije = aukcije.Where(x => x.Aukcija.Id.ToString() == stringZaPretragu || x.Artikal.Naziv.ToLower().Contains(stringZaPretragu) || x.Artikal.Proizvodjac.ToLower().Contains(stringZaPretragu) || x.Artikal.Model.ToLower().Contains(stringZaPretragu)).ToArray(); } return(aukcije); } } catch (FaultException ex) { throw ex; } catch (Exception ex) { throw new FaultException(ex.Message); } }
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 static List <Aukcija> ProvjeriZavrsene() { List <Aukcija> OkoncaneAukcije = new List <Aukcija>(); using (BHaoDataContext context = new BHaoDataContext()) { IAukcijaRepository aukcijaRepo = new AukcijaRepository(context); IEnumerable <Aukcija> aukcije = aukcijaRepo.GetAllNezavrsene(); foreach (var aukcija in aukcije) { aukcija.Zavrsena = true; aukcija.Provizija = ObracunProvizije(aukcija); if (aukcija.NajveciPonudjacId > 0) { aukcija.KupacId = aukcija.NajveciPonudjacId; } aukcijaRepo.Update(aukcija); OkoncaneAukcije.Add(aukcija); } } return(OkoncaneAukcije); }
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); }