public void SacuvajInkrement(Inkrement inkrement) { try { using (BHaoDataContext context = new BHaoDataContext()) { IDataRepository <Inkrement> repo = new DataRepositoryBase <Inkrement>(context); if (repo.GetAll().Where(x => (x.Cijena == inkrement.Cijena || x.IznosInkrementa == inkrement.IznosInkrementa) && x.isDeleted == false).FirstOrDefault() != null) { throw new Exception("Cijena ili iznos inkrementa već postoji u bazi."); } if (inkrement.Id != 0) { Inkrement i = repo.Get(inkrement.Id); i.Cijena = inkrement.Cijena; i.IznosInkrementa = inkrement.IznosInkrementa; i.isDeleted = inkrement.isDeleted; repo.Update(i); } else { repo.Insert(inkrement); } } } catch (Exception ex) { throw new FaultException(ex.Message); } }
public void SacuvajNacinPlacanja(NacinPlacanja nacinPlacanja) { try { using (BHaoDataContext context = new BHaoDataContext()) { IDataRepository <NacinPlacanja> repo = new DataRepositoryBase <NacinPlacanja>(context); if (repo.GetAll().Where(x => x.Opis == nacinPlacanja.Opis && x.isDeleted == false).FirstOrDefault() != null) { throw new Exception(String.Format("Način plaćanja '{0}' već postoji u bazi.", nacinPlacanja.Opis.ToLower())); } if (nacinPlacanja.Id != 0) { NacinPlacanja np = repo.Get(nacinPlacanja.Id); np.Opis = nacinPlacanja.Opis; np.isDeleted = nacinPlacanja.isDeleted; repo.Update(np); } else { repo.Insert(nacinPlacanja); } } } catch (Exception ex) { throw new FaultException(ex.Message); } }
public void SacuvajGrad(Grad grad) { try { using (BHaoDataContext context = new BHaoDataContext()) { IDataRepository <Grad> repo = new DataRepositoryBase <Grad>(context); if (repo.GetAll().Where(x => x.Naziv == grad.Naziv && x.isDeleted == false).FirstOrDefault() != null) { throw new Exception(String.Format("Grad '{0}' već postoji u bazi.", grad.Naziv)); } if (grad.Id != 0) { Grad g = repo.Get(grad.Id); g.Naziv = grad.Naziv; g.isDeleted = grad.isDeleted; repo.Update(g); } else { repo.Insert(grad); } } } catch (Exception ex) { throw new FaultException(ex.Message); } }
public void SacuvajKategorija(Kategorija kategorija) { try { using (BHaoDataContext context = new BHaoDataContext()) { IDataRepository <Kategorija> repo = new DataRepositoryBase <Kategorija>(context); if (repo.GetAll().Where(x => x.Naziv == kategorija.Naziv && x.isDeleted == false).FirstOrDefault() != null) { throw new Exception(String.Format("Kategorija '{0}' već postoji u bazi.", kategorija.Naziv.ToLower())); } if (kategorija.Id != 0) { Kategorija k = repo.Get(kategorija.Id); k.Naziv = kategorija.Naziv; k.isDeleted = kategorija.isDeleted; repo.Update(k); } else { repo.Insert(kategorija); } } } catch (Exception ex) { throw new FaultException(ex.Message); } }
public void DodajKomentarArtikla(KomentarArtikla komentar) { try { if (komentar.TextKomentara == null || string.IsNullOrEmpty(komentar.TextKomentara)) { throw new FaultException("Morate unijeti tekst komentara!"); } using (BHaoDataContext context = new BHaoDataContext()) { IDataRepository <KomentarArtikla> repo = new DataRepositoryBase <KomentarArtikla>(context); if (repo.GetAll().Where(x => x.ArtikalId == komentar.ArtikalId && x.KomentatorId == komentar.KomentatorId).FirstOrDefault() != null) { throw new FaultException("Već ste jednom komentirali artikal!"); } komentar.Datum = DateTime.Now; repo.Insert(komentar); } } catch (FaultException ex) { throw ex; } 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 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); }