From 129d61f71555db62b3c82ca3f8d798a3cd8f9263 Mon Sep 17 00:00:00 2001
From: Amanda Yli-Talonen <amanda.e.yli-talonen@utu.fi>
Date: Mon, 28 Aug 2023 14:15:42 +0000
Subject: [PATCH] Upload New File

---
 Verkkokauppa.java | 236 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 236 insertions(+)
 create mode 100644 Verkkokauppa.java

diff --git a/Verkkokauppa.java b/Verkkokauppa.java
new file mode 100644
index 0000000..4a045c7
--- /dev/null
+++ b/Verkkokauppa.java
@@ -0,0 +1,236 @@
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class Verkkokauppa {
+    private HashMap<String, Asiakas> asiakkaat;
+    private HashMap<String,Tuote> tuotteet;
+    private HashMap<String, Myyja> myyjat;
+    private ArrayList<Ostotapahtuma> tapahtumat;
+
+    public Verkkokauppa() {
+        asiakkaat = new HashMap<>();
+        tuotteet = new HashMap<>();
+        myyjat = new HashMap<>();
+        tapahtumat = new ArrayList<>();
+    }
+
+    public void lisaaAsiakas(String avain, Asiakas asiakas) {
+        asiakkaat.put(avain, asiakas);
+    }
+
+    public void lisaaTuote(String avain, Tuote tuote) {
+        tuotteet.put(avain, tuote);
+    }
+
+    public void lisaaMyyja(String avain, Myyja myyja) {
+        myyjat.put(avain, myyja);
+    }
+
+    public void lisaaTapahtuma(Ostotapahtuma tapahtuma) {
+        tapahtumat.add(tapahtuma);
+    }
+
+    /**
+     * Yrittää poistaa annetun asiakkaan asiakalistasta.
+     *
+     * @param asiakas asiakas, jonka poistoa yritetään
+     * @return true, jos asiakas löytyi ja poistettiin, muuten false
+     */
+    public boolean poistaAsiakas(String avain) {
+        if (asiakkaat.containsKey(avain)) {
+            asiakkaat.remove(avain);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Yrittää poistaa annetun tuotteen tuotelistasta.
+     *
+     * @param tuote tuote, jonka poistoa yritetään
+     * @return true, jos tuote löytyi ja poistettiin, muuten false
+     */
+    public boolean poistaTuote(String avain) {
+        if (tuotteet.containsKey(avain)) {
+            tuotteet.remove(avain);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Yrittää poistaa annetun myyjän myyjalistasta.
+     *
+     * @param myyja myyja, jonka poistoa yritetään
+     * @return true, jos myyjä löytyi ja poistettiin, muuten false
+     */
+    public boolean poistaMyyja(String avain) {
+        if (myyjat.containsKey(avain)) {
+            myyjat.remove(avain);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Yrittää poistaa annetun tapahtuman ostotapahtumalistasta.
+     *
+     * @param tapahtuma ostotapahtuma, jonka poistoa yritetään
+     * @return true, jos ostotapahtuma löytyi ja poistettiin, muuten false
+     */
+    public boolean poistaOstotapahtuma(Ostotapahtuma tapahtuma) {
+        if (tapahtumat.contains(tapahtuma)) {
+            tapahtumat.remove(tapahtuma);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Palauttaa annetun asiakasnumeron mukaisen asiakkaan tai
+     * <code>null</code>, jos asiakasta ei löydy
+     *
+     * @param asiakasnumero halutun asiakkaan asiakasnumero
+     * @return pyydetyn asiakkaan tai null, jos asiakasta ei löydy
+     */
+    public Asiakas annaAsiakas(String asiakasnumero) {
+        for (String avain : asiakkaat.keySet()) {
+            if (asiakkaat.get(avain).getAsiakasNumero().equals(asiakasnumero)) {
+                return asiakkaat.get(avain);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Palauttaa annetun nimen mukaisen tuotteen tai
+     * <code>null</code>, jos tuotetta ei löydy
+     *
+     * @param nimi halutun tuotteen nimi
+     * @return pyydetyn tuotteen tai null, jos tuotetta ei löydy
+     */
+    public Tuote annaTuote(String nimi) {
+        for (String avain : tuotteet.keySet()) {
+            if (tuotteet.get(avain).getNimi().equals(nimi)) {
+                return tuotteet.get(avain);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Palauttaa annetun tunnisteen mukaisen myyjän tai
+     * <code>null</code>, jos myyjää ei löydy
+     *
+     * @param tunniste halutun myyjän tunniste
+     * @return pyydetyn myyjän tai null, jos myyjää ei löydy
+     */
+    public Myyja annaMyyja(String tunniste) {
+        for (String avain : myyjat.keySet()) {
+            if (myyjat.get(avain).getTunniste().equals(tunniste)) {
+                return myyjat.get(avain);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Palauttaa annetun indeksin mukaisen ostotapahtuman listasta.
+     * Huomaa, että indeksointi alkaa nollasta, mutta tapahtumien listaamisessa
+     * indeksit on ilmoitettu alkaen ykkösestä.
+     *
+     * @param indeksi indeksi jonka kohdalta tapahtuma palautetaan
+     * @return annetun indeksin mukaisen ostotapahtuman
+     */
+    public Ostotapahtuma annaTapahtuma(int indeksi) {
+        if (tapahtumat.size() > indeksi) {
+            return tapahtumat.get(indeksi);
+        }
+        return null;
+    }
+
+
+    /**
+     * Palauttaa kaikki asiakkaat yhtenä merkkijonona.
+     *
+     * @return asiakalistan merkkijonona
+     */
+    public String listaaAsiakkaat() {
+        // Tekee otsikkorivin
+        // \t on tabulaattori, joka tasaa tulosteen
+        // sarakkeisiin; \n tekee rivinvaihdon
+        StringBuilder s = new StringBuilder("Asiakasnumero\tNimi\t\t\tOstoja\tKanta-asiakas\n");
+        for (String avain : asiakkaat.keySet()) {
+            s.append(asiakkaat.get(avain).getAsiakasNumero() + "\t\t\t");
+            s.append(asiakkaat.get(avain).getNimi() + "\t");
+            s.append(asiakkaat.get(avain).getOstojaTehty() + "\t\t");
+            if (asiakkaat.get(avain) instanceof KantaAsiakas) {
+                s.append("On\n");
+            } else {
+                s.append("Ei\n");
+            }
+        }
+        return s.toString();
+    }
+
+    /**
+     * Palauttaa kaikki myyjät yhtenä merkkijonona
+     *
+     * @return myyjät merkkijonona
+     */
+    public String listaaMyyjat() {
+        // Tekee otsikkorivin
+        // \t on tabulaattori, joka tasaa tulosteen
+        // sarakkeisiin; \n tekee rivinvaihdon
+        StringBuilder s = new StringBuilder("Tunniste\tNimi\t\t\tProvisiot\n");
+        for (String avain : myyjat.keySet()) {
+            s.append(myyjat.get(avain).getTunniste() + "\t\t");
+            s.append(myyjat.get(avain).getNimi() + "\t\t");
+            s.append(myyjat.get(avain).getProvisiot() + "\n");
+        }
+        return s.toString();
+    }
+
+    /**
+     * Palautta kaikki tuotteet yhtenä merkkijonona.
+     *
+     * @return tuotteet merkkijonona
+     */
+    public String listaaTuotteet() {
+        // Tekee otsikkorivin
+        // \t on tabulaattori, joka tasaa tulosteen
+        // sarakkeisiin; \n tekee rivinvaihdon
+        StringBuilder s = new StringBuilder("Nimi\tSaldo\t\t\tHinta\tVirtuaalinen\n");
+        for (String avain : tuotteet) {
+            s.append(tuotteet.get(avain).getNimi() + "\t");
+            s.append(tuotteet.get(avain).getSaldo() + "\t\t");
+            s.append(tuotteet.get(avain).getHinta() + "\t");
+            if (tuotteet.get(avain) instanceof VirtuaalinenTuote) {
+                s.append("Kyllä\n");
+            } else {
+                s.append("Ei\n");
+            }
+        }
+        return s.toString();
+    }
+
+    /**
+     * Palauttaa kaikki tapahtumat yhtenä merkkijonona.
+     *
+     * @return tapahtumat merkkijonona
+     */
+    public String listaaTapahtumat() {
+        StringBuilder s = new StringBuilder("Numero\tTuote\tAsiakas\tMyyjä\tKpl\tHinta\n");
+        int n = 1;
+        for (Ostotapahtuma tapahtuma : tapahtumat) {
+            s.append(n++ + "\t");
+            s.append(tapahtuma.getTuote().getNimi() + "\t");
+            s.append(tapahtuma.getAsiakas().getNimi() + "\t");
+            s.append(tapahtuma.getMyyja().getNimi() + "\t");
+            s.append(tapahtuma.getMaara() + "\t");
+            s.append(tapahtuma.getHinta() + "\n");
+        }
+        return s.toString();
+
+    }
+}
-- 
GitLab