From 14bef592c4b9175a4bddb9af521107691a726db4 Mon Sep 17 00:00:00 2001 From: localhorst Date: Sat, 16 May 2020 22:48:20 +0200 Subject: [PATCH 1/5] Revert "Revert "UImodel for offeredArticle page, html cleanup"" This reverts commit 0840eda369f2657284afc57389cee732d9041b5f. --- .../suppliers/SupplierOfferController.java | 121 +++++++++- .../templates/intern/listedArticles/id.html | 208 +++++++++--------- .../intern/listedArticles/index.html | 138 ++++++------ .../intern/offeredArticles/index.html | 195 +++++----------- 4 files changed, 336 insertions(+), 326 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java index 1b467db..bd27558 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java @@ -1,5 +1,8 @@ package org.hso.ecommerce.controller.intern.suppliers; +import java.util.ArrayList; +import java.util.List; + import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -12,14 +15,118 @@ public class SupplierOfferController { @GetMapping("supplierOffers") public String internListedArticles(Model model) { - - - - - - - + List totals = new ArrayList(); + + /* + * for (Article article : articleRepository.findAll()) { UImodelArticles tmp = + * new UImodelArticles(); tmp.addListedArticle(article, + * warehouseEntryRepository.getArticleStock(article.id).orElse(0)); + * totals.add(tmp); } + */ + + UImodelOfferedArticle tmp01 = new UImodelOfferedArticle(); + UImodelOfferedArticle tmp02 = new UImodelOfferedArticle(); + UImodelOfferedArticle tmp03 = new UImodelOfferedArticle(); + + tmp01.addData("Title01", "manufacturer01", "articlenumber01", "supplierName01", 4884, "42,42 €", "ads01", 5); + tmp02.addData("Title02", "manufacturer02", "articlenumber02", "supplierName02", 4884, "42,42 €", "ads02", 6); + tmp03.addData("Title03", "manufacturer03", "articlenumber03", "supplierName03", 4884, "42,42 €", "ads03", 7); + + totals.add(tmp01); + totals.add(tmp02); + totals.add(tmp03); + + model.addAttribute("OfferedArticles", totals); return "intern/offeredArticles/index"; + } + + public class UImodelOfferedArticle { + + String title; + String manufacturer; + String articlenumber; + String supplierName; + int supplierId; + String price; + String ads; + int listedArticleId; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getArticlenumber() { + return articlenumber; + } + + public void setArticlenumber(String articlenumber) { + this.articlenumber = articlenumber; + } + + public String getSupplierName() { + return supplierName; + } + + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public int getSupplierId() { + return supplierId; + } + + public void setSupplierId(int supplierId) { + this.supplierId = supplierId; + } + + public String getPrice() { + return price; + } + + public void setPrice(String price) { + this.price = price; + } + + public String getAds() { + return ads; + } + + public void setAds(String ads) { + this.ads = ads; + } + + public int getListedArticleId() { + return listedArticleId; + } + + public void setListedArticleId(int listedArticleId) { + this.listedArticleId = listedArticleId; + } + + public void addData(String title, String manufacturer, String articlenumber, String supplierName, + int supplierId, String price, String ads, int listedArticleId) { + + this.title = title; + this.manufacturer = manufacturer; + this.articlenumber = articlenumber; + this.supplierName = supplierName; + this.supplierId = supplierId; + this.price = price; + this.ads = ads; + this.listedArticleId = listedArticleId; + } } diff --git a/prototype/src/main/resources/templates/intern/listedArticles/id.html b/prototype/src/main/resources/templates/intern/listedArticles/id.html index 295bf80..3e18cb8 100644 --- a/prototype/src/main/resources/templates/intern/listedArticles/id.html +++ b/prototype/src/main/resources/templates/intern/listedArticles/id.html @@ -1,118 +1,106 @@ - - - - - - Bearbeiten: Artikel - - - - - - - -
- -
-

Gelisteter Artikel ID

- - -
- -

- - -

-

- - - Details -

-
-
-

- - -

-

- -

-
-
-

- -  EUR
- (19% Mwst.) -
- =  EUR Brutto -

-

- -  EUR -

-
-
+ + + + Bearbeiten: Artikel + + + + + + +
+ +
+

Gelisteter Artikel ID

+ +

+ + +

+

+ + + Details +

+
+
+

+ + +

+

+ +

+
+
+

+ +  EUR
+ (19% Mwst.) +
+ =  EUR Brutto +

+

+ +  EUR +

+
+


-
-
-
- -
- -

- Bitte jede Kategorien in eine eigene Zeile -

- -
- -
-

- - -

-

- Lagerbestand: -

-

- Der Wert wird nur für zukünftige Lagerbuchungen verwendet. - Bei Problemen kann können Einheiten aus- und wieder eingebucht werden. - -

-

- Lagerbuchung - -

-
- -

- - -

-
- - - -
- -
-
-
- - - +
+
+

+ + +

+

+ Lagerbestand: +

+

+ Der Wert wird nur für zukünftige Lagerbuchungen verwendet. + Bei Problemen kann können Einheiten aus- und wieder eingebucht werden. + +

+

+ Lagerbuchung +

+
+

+ + +

+
+ + + +
+ +
+
+
+ + \ No newline at end of file diff --git a/prototype/src/main/resources/templates/intern/listedArticles/index.html b/prototype/src/main/resources/templates/intern/listedArticles/index.html index 94be11c..ad8a771 100644 --- a/prototype/src/main/resources/templates/intern/listedArticles/index.html +++ b/prototype/src/main/resources/templates/intern/listedArticles/index.html @@ -1,73 +1,69 @@ - - - - - - Gelistete Artikel - - - - - - - -
- -
-

- Weitere Artikel können über Artikelübersicht der Lieferanten hinzugefügt werden. - Jetzt Hinzufügen -

- -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
BildNamePreis(Netto)KategorienLagerbestandAngebots IDArtikel IDAktion
-

-

-
-
- - - + + + + Gelistete Artikel + + + + + + +
+ +
+

+ Weitere Artikel können über Artikelübersicht der Lieferanten hinzugefügt werden. + Jetzt Hinzufügen +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
BildNamePreis(Netto)KategorienLagerbestandAngebots IDArtikel IDAktion
+
+
+

+

+
+
+ + \ No newline at end of file diff --git a/prototype/src/main/resources/templates/intern/offeredArticles/index.html b/prototype/src/main/resources/templates/intern/offeredArticles/index.html index 9ba3279..dfb36be 100644 --- a/prototype/src/main/resources/templates/intern/offeredArticles/index.html +++ b/prototype/src/main/resources/templates/intern/offeredArticles/index.html @@ -1,140 +1,59 @@ - - - - - - Händlerangebote - - - - - - - -
- -
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
NameHerstellerArtikelnummerLieferantKaufpreis (Netto)Werbungs-
anfrage
Status
KameraSonjizuK48431587EXGelistet 44048
Hans Guck GmbH584,50 EUR
Cheap AG84,54 EURX
Not Cheap AG184,54 EUR
EarbudsSonjizuG447#$XGelistet 448
Cheap AG50,54 EURX
MundschutzFarma CorpMu-15415Hinzufügen
Cheap AG150,54 EUR
Not Cheap AG250,54 EUR
GoldbarenBundesbankG1KGInaktiv 4888
Cheap AG10000,54 EURX
-

-
-
-
- - - + + + + Händlerangebote + + + + + + +
+ +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
NameHerstellerArtikelnummerLieferantKaufpreis (Netto)Werbungs-
anfrage
Status
+

+
+
+
+ + \ No newline at end of file From d4be2b9e9477236c9a963f9a94d74e69f5bcd75b Mon Sep 17 00:00:00 2001 From: localhorst Date: Sat, 16 May 2020 22:48:40 +0200 Subject: [PATCH 2/5] Revert "Revert "added link from listedArticles page to related offered article"" This reverts commit 3c69f38367677bbc197b5b57b74d566226dff41e. --- .../controller/intern/suppliers/SupplierOfferController.java | 2 ++ .../src/main/resources/templates/intern/listedArticles/id.html | 2 +- .../main/resources/templates/intern/listedArticles/index.html | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java index bd27558..501d749 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java @@ -6,7 +6,9 @@ import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; @Controller @RequestMapping("/intern/") diff --git a/prototype/src/main/resources/templates/intern/listedArticles/id.html b/prototype/src/main/resources/templates/intern/listedArticles/id.html index 3e18cb8..b2e878a 100644 --- a/prototype/src/main/resources/templates/intern/listedArticles/id.html +++ b/prototype/src/main/resources/templates/intern/listedArticles/id.html @@ -29,7 +29,7 @@

- Details + Details

diff --git a/prototype/src/main/resources/templates/intern/listedArticles/index.html b/prototype/src/main/resources/templates/intern/listedArticles/index.html index ad8a771..2840417 100644 --- a/prototype/src/main/resources/templates/intern/listedArticles/index.html +++ b/prototype/src/main/resources/templates/intern/listedArticles/index.html @@ -53,7 +53,7 @@ - +
From d8032c2bd7222242a9a3465e3c6ebdcb3bad8b02 Mon Sep 17 00:00:00 2001 From: localhorst Date: Tue, 19 May 2020 00:12:26 +0200 Subject: [PATCH 3/5] load offeredArticles from DB and display basic info --- prototype/e-commerce.db.copy | Bin 0 -> 147456 bytes prototype/scripts/addarticles.sql | 4 +- .../suppliers/SupplierOfferController.java | 43 ++++++++---------- .../entities/supplier/ArticleOffer.java | 8 ++++ .../repos/shop/OffersRepository.java | 16 +++++++ ...useBookingPositionSlotEntryRepository.java | 2 +- .../intern/offeredArticles/index.html | 2 +- 7 files changed, 46 insertions(+), 29 deletions(-) create mode 100644 prototype/e-commerce.db.copy create mode 100644 prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java diff --git a/prototype/e-commerce.db.copy b/prototype/e-commerce.db.copy new file mode 100644 index 0000000000000000000000000000000000000000..e4c39c9bce811412014123a8071f9c885249b581 GIT binary patch literal 147456 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�K6J1i$MZ{5Q@)@f$6O)(|mj%An8G5yBVyB9t2BF=YuOmLmIBWM4To9#R4 zMjA_{{7)^PVewYQzxj^;gXsKS75VeOt5_E33A4|IDz`q0z0hz*_SS@8ZBJ_h*<^Ox zF4S_bJM%oxSlo?m-8jBiuffm0tuKDZ;oLUukekvP9%rDcMJcv9UymovD_mS&pnpEd zU87fDf6e6M&lJDYdTunz6x=4t>~7GCk=J|jCi_L+b1SKs=IP;0CuOO3v+urGYWPXN zzH6u6mR!1!?CK`0MCiQlu*IHc_XiKUTSN5cXu8T4->S3>>w#`2=HJlYkRwTg_4J=N znbbA4)GC%fvi{ul+Wo@LoA2|y>j>IP>w0NSm8oJ$nCMUO7OyU)yFci?eQ^=X$2)X- z(pk-uRoY7?>AtPCIP+D^x98B)kPS2=t(gmpM4Ge+rz$L=*zVJlg2zi=6jRY^dS|+; zn*4dGCAH}AmBUe|L+ygKdT%xeb+h%)xl6Ag>gd$89SA1n2Qn-Sg)kKM40K->ufP=RvF8Pbl+=`{|j78eV8_aCtnRnSoL@&VJzCa|T^+ zT^Y5)*?u7=V={zl>)!Q@aN~ZJ*@uquwAjOth}QIEY*Bmqhv1V3W<_+}zW?HB#$k?v zUe*F5Upo~;$RooFUBC31z9_kp@oJG2Y;DQ?XlKY8^{ zvX0hC_@Qd&(|OY2&CMcUX-IZ#^OHV4;E?ybxq2Enk_(S{T)G3_- ztvMyDQ$MbrEQM(|d71t?kKujW_rlAGr>|GPwr$*SNz&CeI5Or`jLeIi1^tCEkqUw@HY&y@h9w99P%PD98LΞTw$i4uqefYs*#LDNMu-Q{vLg8((+#yYW2JPIuF;Z-^Uu<&)@> zUmC~rzLtLFUk9Ns9#`!{)%PDmM_;F1;t7r+jp+4nTvw9&J=VReyjQhqyR@~Z#ah^w z-LVVa0zt&R>cz0zth>*m;(MfBR!yml>YD6pk_MrA-&~!#|J1J4rInQLx`!6;x^|%Y z#m$6!&f2M$`recz`fu3Wy_!g|I2{{FE8elI(J zLbVhP# zIISsrvMf0+sCK-87G}rt;!{cs4$1VI=1U$6y`lPIJao8gRb_v9VaP8v)%k>}9YLl(^ygNZUeoF^&)IvU*VEsQ>{}0yxgZ2Ml{Xba$57z&K z_5Wb~KUn_{*8hX`|6u(;SpN^!|AY1aVEsQ>{}0yxgZ2Ml{Xba$57z&K_5Wb~KUn_{ z*8hX`|6u(;SpN^!|Nm#N|3{wx^EW*5(Lg?$$VVOdkdcoX^1lQGvO zf4e9?Ele*;^rTyIcm~?d42o8lhbA!y$QlGC{u%`23p&U}gBuoy#^6ze{;%!`mLOc- zS-)iR>P@K@_o9qrkCcqB!Cu(q!hTiTdF9J{k#O;7`49J+dyvZ~UV^CJT*#{Lat3B| z7i`jlGe3Xe-ZYKpC6MG}NR;ae$w$FRqQ*$9cr=oG46^h`kgVX_hj@q}Bq=2=BP*e9 zEGMs_Inl&)8d-~E=RL462qlF2E_R5Mb2AUAEi5nM_8J5v@AL0I zSCO)B=Zp#^_o!UeV|yi-+pCt%>(-)cYej@8G_7T{K6(JwD*l$zfJOukAd+;Lx+#(jjKPQLgglfq!xtu_;dZ;_M5HNvdXD&-QiuM zYr5O9dNo&z+pI4hWo)7o9KO+LeW;_+$r}fcH?IA-)G6-iR`%k%=9rxz}T?T|=0oEZKSdVN4G^VFpUQ;Vl8!?|XE$kYBz+dDaZ z=cV~CL`@c##=T$fbH1c+r-2P-|E>r1uPBN=jWb=@3dxdr9WCVRd(Nqcs$Q5JD=S~& zy^rZTjL+UB~&kvn_#c+U9VslvWsTvqN`qb!OG2)5XL z=zN2lpItV6|A)TVhYu{L&$~_8Kk>(^_KS)?I(zT?tCW5`dj3>$h3dWGK)XMVbZ0Y#=HsU)mWOJcv`Q?{wAqJln-iTdRx_J0> zuE9zUVP9#&x?KlznF~Coi7M=67(L%FRkilr3T51lEAN8uc^R5K&C9cDyK~d=0QQ>u zj`f$;e>UB!-oVP-cS%VJ7H#^xCu;JSnEbtWG-teO&RkJk$2#XG{fPWMFVr#2rtYmr zmVwH#2wJY#iI-Pa_#fA?uy-v#ut7({??qa-N$R1)S=prr!sKty+14u3l)?#qYZ3T- z%axnF>g~amO>We9y;A$-TUq1f?s^#QUKi?Ze5beZ#p5ZIxH$_N#ZFd9XN|8F-f5ydke{ zv2Asa_SH<2bmDg7yv|!Fx=`>F4Ekib+?jH@rYgBhJE+X(c)1(t+B@#vrv`6tx^-l{ zSWqaT<3=*(G&8pI#A1n*m9EV4o+rA(8F?^keBVfpG%!xg9QMD^!QpL0IYe_??oUBKd$wtj{=3-d73uE^OQ=1nN+{$@ z!5eKes}F47w0rszX#?ZH{qY-kk2^Xad(CD?y(p~=sv|H%t4MW@YRn@x*^*c7uqNyv z9Nsm%cjr+>%eCghvm#Gk+^E^vL76UT?-@X1?pwcGA3l3zP2;?pf7 zPFJqibv$_%7=N+G>KgKQ!|I}yI9qw?{E&Ch3nMAx1BM-&)u()MHj{Hv)afeslY3El zYE!a-sWY?9l*xTO&5BmwuHh@2fRYORg-m4+mV7ugzfj5udSdwS0_M3;~|JVf^&Qx7w= zsazpNzu|gF^*VEhM)NY+BJFR43oD#vR0!F1Y}m1F+=Y+ZmVeF2RF=WIFSM@I`#fus z!F$y7x}(#M7D`?2=-yEm`8cpJ(TR~*P`N4Yye#`u$c#rb*5%k_)y3{#QY9ju(l|Nq zo$<# zU>NwagU}(Am!@MRDTk9JqR9Bt;G1a09;-C;(-Nwv96MHxKeS@LJNr$a$X?Y8F?#{H3swA3drc}w3aItnMrxDT{7l*5DUCOQ@ohGvt zMJGLJj(%1dG8^dO6rVLJ~73B8UD8T*Cz%5Ic1Wv0<&EM#WHVw#Rc0)*@|? z?EnbyolP`lUFC&;hu1b9f7ozrplWT%vssCG=LRnCcZ}xJ{(G4s0bjNVK3M>!i4O+;KfeMnaLWASoRQ6o^u6FfNAL5$YF!F>F zp2C$raOUR|Tc*XY*Nz)gTmaz1Qw#tYTJ1DPVCgpqM!N^hkZ>7ioIFE5NG`?G zrH-oJrA!#L0|qrr^@~e3(cC@Q{gyH;hd@@yHknh6*JN0)Y+#@E@=F2|zGF zF&~f)ANG!P7di`_1;HV6woL7lJ4C=pnb1(qg5VT0kbFlCh7rK}XaB?iQV;+F0RsU9 z0}BNU2?hrM000330{{dO5(N_>F+ovb1`r}6GD2~Ik)g2^AX0LoFf%}6bApnTvcbX? zLsMgele5v%L{y{G;qW9SG-PyymH*lR2mt{A2|oe*f-79dyN(TGE4-P+VVkjYn%c5o zY`cq?mg?SAO*^-26CRK>k<3yvrL0=FW6xvYs`g}>cp|ik(|NnJ4v}v-C@lHsjume< zi*|IKhRt6V$;E?k^Ll7R^UE8(t;|cKB{-CE%a-Oo5bqK9IJ6{1CzP77UE{dYd163S0YPa2X%GwBnTIdOqx}( z%dUz~ZF=bxHv%CPk;>e%6M<5AQ?0wj5=nD%P&?*MArvx;CpZ5VCV+l=Wl#uhT#hL0nU zJ`^#ln!1w4@BNXN!(_^w!#oXj}{Rmk9E{ zlo2wLOsYCfMr4ULMA<=uop$JhpJ}a2Z>0y;P=p&?dRF-k>X0u3< zZ33q4mQEPzI%y$Er`q<8;uyq9o#4p|ys9njyf3q4mM^A?ic0$G{u{eH=DN7Iog~g8 zFg6j#G%3plnmGg(k;6RkwxyClN#T#9oLAGj{{R`j;<@=njm%%C85PZW*Alxj&L;lC zb&K~@HW4Fi%NA(fT$u9&yY0y*!kkH?w!e~p^vER4gBzVgc_Lu__Z~n#GOXh_X#z_n z)KRLckC1rOETr!VbH_N+X)`ptR`FCGAI>q!t&w8^N#Djf@MS7QKwvJcIc^mMP^HS| zG>q^XQBNLS4bemY01NU+#l~}u7>7_e?5n7wRX`+#2`XQPH263@ImarPrLnj26C`Wb z^qV9SIx$+B17tL3j}vO-uSX-onU*kZ`8J*pDxv5-2CuG7vP&2$WNpk1;Of$3QRVCK vH4b$X#7*|jcY)he#Oy&alf#u=%WWeI9n-3o@q3|`z*Cyr7f$-4J}x{Hrv{w_ literal 0 HcmV?d00001 diff --git a/prototype/scripts/addarticles.sql b/prototype/scripts/addarticles.sql index f7e5f5b..b60497d 100644 --- a/prototype/scripts/addarticles.sql +++ b/prototype/scripts/addarticles.sql @@ -1,5 +1,5 @@ -INSERT INTO article_offers ("manufacturer", "article_number", "vat_percent", "should_be_advertised") -VALUES ("McDonalds", "1", 7, 1); +INSERT INTO article_offers ("manufacturer", "article_number", "price_per_unit_net", "title", "vat_percent", "should_be_advertised") +VALUES ("McDonalds", "1", 4242, "McPizza", 7, 1); INSERT INTO articles ("related_id", "shop_price_per_unit_net_cent", "warehouse_units_per_slot", "should_reorder", "reorder_max_price", "title", "description", "image_id") VALUES (1, 19.99, 10, 1, 15, "Huge Hamburger", "This huge Hamburger is awesome!", NULL); diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java index 501d749..685f8f8 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java @@ -3,6 +3,10 @@ package org.hso.ecommerce.controller.intern.suppliers; import java.util.ArrayList; import java.util.List; +import org.hso.ecommerce.entities.supplier.ArticleOffer; +import org.hso.ecommerce.repos.shop.CategoryRepository; +import org.hso.ecommerce.repos.shop.OffersRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -14,29 +18,19 @@ import org.springframework.web.bind.annotation.RequestParam; @RequestMapping("/intern/") public class SupplierOfferController { + @Autowired + private final OffersRepository offersRepository = null; + @GetMapping("supplierOffers") public String internListedArticles(Model model) { List totals = new ArrayList(); - /* - * for (Article article : articleRepository.findAll()) { UImodelArticles tmp = - * new UImodelArticles(); tmp.addListedArticle(article, - * warehouseEntryRepository.getArticleStock(article.id).orElse(0)); - * totals.add(tmp); } - */ - - UImodelOfferedArticle tmp01 = new UImodelOfferedArticle(); - UImodelOfferedArticle tmp02 = new UImodelOfferedArticle(); - UImodelOfferedArticle tmp03 = new UImodelOfferedArticle(); - - tmp01.addData("Title01", "manufacturer01", "articlenumber01", "supplierName01", 4884, "42,42 €", "ads01", 5); - tmp02.addData("Title02", "manufacturer02", "articlenumber02", "supplierName02", 4884, "42,42 €", "ads02", 6); - tmp03.addData("Title03", "manufacturer03", "articlenumber03", "supplierName03", 4884, "42,42 €", "ads03", 7); - - totals.add(tmp01); - totals.add(tmp02); - totals.add(tmp03); + for (ArticleOffer article : offersRepository.findAll()) { + UImodelOfferedArticle tmp = new UImodelOfferedArticle(); + tmp.addData(article,"supplierName01", 4884, 5); + totals.add(tmp); + } model.addAttribute("OfferedArticles", totals); return "intern/offeredArticles/index"; @@ -117,16 +111,15 @@ public class SupplierOfferController { this.listedArticleId = listedArticleId; } - public void addData(String title, String manufacturer, String articlenumber, String supplierName, - int supplierId, String price, String ads, int listedArticleId) { + public void addData(ArticleOffer article, String supplierName, int supplierId, int listedArticleId) { - this.title = title; - this.manufacturer = manufacturer; - this.articlenumber = articlenumber; + this.title = article.title; + this.manufacturer = article.manufacturer; + this.articlenumber = article.articleNumber; this.supplierName = supplierName; this.supplierId = supplierId; - this.price = price; - this.ads = ads; + this.price = String.format("%.2f", ((float) article.pricePerUnitNet / 100)); + this.ads = (article.shouldBeAdvertised) ? "Ja" : "Nein"; this.listedArticleId = listedArticleId; } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/supplier/ArticleOffer.java b/prototype/src/main/java/org/hso/ecommerce/entities/supplier/ArticleOffer.java index ae86659..405fb4a 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/supplier/ArticleOffer.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/supplier/ArticleOffer.java @@ -14,6 +14,12 @@ public class ArticleOffer { @NotNull public String manufacturer; + + @NotNull + public String title; + + @NotNull + public int pricePerUnitNet; @NotNull public String articleNumber; @@ -21,4 +27,6 @@ public class ArticleOffer { public int vatPercent; public boolean shouldBeAdvertised; + + } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java new file mode 100644 index 0000000..b1d6f0a --- /dev/null +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java @@ -0,0 +1,16 @@ +package org.hso.ecommerce.repos.shop; + +import java.util.List; + +import org.hso.ecommerce.entities.supplier.ArticleOffer; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +@Repository +public interface OffersRepository extends JpaRepository { + + @Query("SELECT a FROM ArticleOffer a") + List findAll(); + +} diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/warehouse/WarehouseBookingPositionSlotEntryRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/warehouse/WarehouseBookingPositionSlotEntryRepository.java index b342a06..cb9902e 100644 --- a/prototype/src/main/java/org/hso/ecommerce/repos/warehouse/WarehouseBookingPositionSlotEntryRepository.java +++ b/prototype/src/main/java/org/hso/ecommerce/repos/warehouse/WarehouseBookingPositionSlotEntryRepository.java @@ -15,7 +15,7 @@ public interface WarehouseBookingPositionSlotEntryRepository extends JpaReposito List getByArticle(long article); - @Query(value = "SELECT SUM(w.new_sum_articles) FROM warehouse_booking_position_entries as w WHERE w.article_id = :articleid", nativeQuery = true) + @Query(value = "SELECT SUM(w.new_sum_slot) FROM warehouse_booking_position_entries as w WHERE w.article_id = :articleid", nativeQuery = true) Optional getArticleStock(long articleid); } diff --git a/prototype/src/main/resources/templates/intern/offeredArticles/index.html b/prototype/src/main/resources/templates/intern/offeredArticles/index.html index dfb36be..cfa6913 100644 --- a/prototype/src/main/resources/templates/intern/offeredArticles/index.html +++ b/prototype/src/main/resources/templates/intern/offeredArticles/index.html @@ -45,7 +45,7 @@ - + From 9cfb1cd0ad6a23af9a685239ab878dc1abec1d66 Mon Sep 17 00:00:00 2001 From: localhorst Date: Tue, 19 May 2020 16:30:27 +0200 Subject: [PATCH 4/5] add offered article to listed article --- prototype/e-commerce.db.copy | Bin 147456 -> 0 bytes .../intern/InternArticleController.java | 84 ++++++++++++------ .../suppliers/SupplierOfferController.java | 46 ++++++++-- .../repos/shop/ArticleRepository.java | 5 +- .../repos/shop/OffersRepository.java | 4 + .../templates/intern/listedArticles/id.html | 7 +- .../intern/offeredArticles/index.html | 12 ++- 7 files changed, 119 insertions(+), 39 deletions(-) delete mode 100644 prototype/e-commerce.db.copy diff --git a/prototype/e-commerce.db.copy b/prototype/e-commerce.db.copy deleted file mode 100644 index e4c39c9bce811412014123a8071f9c885249b581..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147456 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�K6J1i$MZ{5Q@)@f$6O)(|mj%An8G5yBVyB9t2BF=YuOmLmIBWM4To9#R4 zMjA_{{7)^PVewYQzxj^;gXsKS75VeOt5_E33A4|IDz`q0z0hz*_SS@8ZBJ_h*<^Ox zF4S_bJM%oxSlo?m-8jBiuffm0tuKDZ;oLUukekvP9%rDcMJcv9UymovD_mS&pnpEd zU87fDf6e6M&lJDYdTunz6x=4t>~7GCk=J|jCi_L+b1SKs=IP;0CuOO3v+urGYWPXN zzH6u6mR!1!?CK`0MCiQlu*IHc_XiKUTSN5cXu8T4->S3>>w#`2=HJlYkRwTg_4J=N znbbA4)GC%fvi{ul+Wo@LoA2|y>j>IP>w0NSm8oJ$nCMUO7OyU)yFci?eQ^=X$2)X- z(pk-uRoY7?>AtPCIP+D^x98B)kPS2=t(gmpM4Ge+rz$L=*zVJlg2zi=6jRY^dS|+; zn*4dGCAH}AmBUe|L+ygKdT%xeb+h%)xl6Ag>gd$89SA1n2Qn-Sg)kKM40K->ufP=RvF8Pbl+=`{|j78eV8_aCtnRnSoL@&VJzCa|T^+ zT^Y5)*?u7=V={zl>)!Q@aN~ZJ*@uquwAjOth}QIEY*Bmqhv1V3W<_+}zW?HB#$k?v zUe*F5Upo~;$RooFUBC31z9_kp@oJG2Y;DQ?XlKY8^{ zvX0hC_@Qd&(|OY2&CMcUX-IZ#^OHV4;E?ybxq2Enk_(S{T)G3_- ztvMyDQ$MbrEQM(|d71t?kKujW_rlAGr>|GPwr$*SNz&CeI5Or`jLeIi1^tCEkqUw@HY&y@h9w99P%PD98LΞ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 diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/InternArticleController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/InternArticleController.java index 0081c88..7a7e7fe 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/InternArticleController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/InternArticleController.java @@ -5,8 +5,10 @@ import java.util.List; import org.hso.ecommerce.entities.shop.Article; import org.hso.ecommerce.entities.shop.Category; +import org.hso.ecommerce.entities.supplier.ArticleOffer; import org.hso.ecommerce.repos.shop.ArticleRepository; import org.hso.ecommerce.repos.shop.CategoryRepository; +import org.hso.ecommerce.repos.shop.OffersRepository; import org.hso.ecommerce.repos.warehouse.WarehouseBookingPositionSlotEntryRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -26,6 +28,9 @@ public class InternArticleController { @Autowired private final CategoryRepository categoryRepository = null; + @Autowired + private final OffersRepository offersRepository = null; + @GetMapping("/") public String internListedArticles(Model model) { @@ -57,39 +62,65 @@ public class InternArticleController { } @PostMapping("/{id}/saveChanges") - public RedirectView saveChanges( - @PathVariable int id, - @RequestParam("title") String title, - @RequestParam("description") String description, - @RequestParam("units-per-slot") String warehouseUnitsPerSlot, - @RequestParam("price_netto") String pricenetto, - @RequestParam("reorderMaxPrice") String reorderMaxPrice, - @RequestParam("autobuy") Boolean shouldReorder, - @RequestParam("categories") String categories) { + public RedirectView saveChanges(@PathVariable(required = true) int id, + @RequestParam(value = "title", required = true) String title, + @RequestParam(value = "description", required = true) String description, + @RequestParam(value = "units-per-slot", required = true) String warehouseUnitsPerSlot, + @RequestParam(value = "price_netto", required = true) String pricenetto, + @RequestParam(value = "reorderMaxPrice", required = true) String reorderMaxPrice, + @RequestParam(value = "autobuy", required = true) Boolean shouldReorder, + @RequestParam(value = "categories", required = true) String categories) { - Article oldArticle = articleRepository.findArticleById(id); + Article tmpArticle = articleRepository.findArticleById(id); // get the old article // TODO img String[] separatedCategories = categories.split("\n"); - oldArticle.categories.clear(); + tmpArticle.categories.clear(); - // loop through all categories strings and create a new category if a new one; also adds the categorys to the article + // loop through all categories strings and create a new category if a new one; + // also adds the categorys to the article for (String category : separatedCategories) { - oldArticle.categories.add(categoryRepository.findCategoryByName(category.trim()) + tmpArticle.categories.add(categoryRepository.findCategoryByName(category.trim()) .orElseGet(() -> new Category(category.trim()))); } - oldArticle.shouldReorder = shouldReorder; - oldArticle.reorderMaxPrice = (int) (Float.parseFloat(reorderMaxPrice) * 100); - oldArticle.shopPricePerUnitNetCent = (int) (Float.parseFloat(pricenetto) * 100); - oldArticle.warehouseUnitsPerSlot = Integer.parseInt(warehouseUnitsPerSlot); - oldArticle.title = title; - oldArticle.description = description; + tmpArticle.shouldReorder = shouldReorder; + tmpArticle.reorderMaxPrice = (int) (Float.parseFloat(reorderMaxPrice) * 100); + tmpArticle.shopPricePerUnitNetCent = (int) (Float.parseFloat(pricenetto) * 100); + tmpArticle.warehouseUnitsPerSlot = Integer.parseInt(warehouseUnitsPerSlot); + tmpArticle.title = title; + tmpArticle.description = description; - articleRepository.save(oldArticle); // save updated article + articleRepository.save(tmpArticle); // save updated article return new RedirectView("../"); // return to overview page + + } + + @PostMapping("/addArticle/{id}") + public RedirectView addArticle(@PathVariable(required = true) String id) { + // article is not already listed, create new one + int offeredArticleID = Integer.parseInt(id); + + Article tmpArticle = new Article(); + + ArticleOffer offeredArticle = offersRepository.findOfferedArticleById(offeredArticleID); + + // set default values + tmpArticle.description = ""; + tmpArticle.reorderMaxPrice = 0; + tmpArticle.shopPricePerUnitNetCent = offeredArticle.pricePerUnitNet; + tmpArticle.shouldReorder = false; + tmpArticle.title = offeredArticle.title; + tmpArticle.warehouseUnitsPerSlot = 1; + tmpArticle.image = articleRepository.findAll().get(0).image; // TODO set any static default image + tmpArticle.related = offeredArticle; + + articleRepository.save(tmpArticle); // save new article + + // return to edit article page + return new RedirectView("../" + articleRepository.findArticleIDByRelatedID(offeredArticleID).get()); } public static class UImodelArticles { @@ -115,13 +146,13 @@ public class InternArticleController { this.title = article.title; this.price_netto = String.format("%.2f", ((float) article.shopPricePerUnitNetCent / 100)); this.price = String.format("%.2f", ((float) article.getPriceGross() / 100)); - + StringBuilder result = new StringBuilder(); for (Category temp : article.categories) { result.append(temp.name + " "); } - this.categorie = result.toString(); + this.categorie = result.toString(); this.stock = stock; this.offer_id = article.related.id; @@ -143,8 +174,7 @@ public class InternArticleController { public boolean shouldReorder; public String warehouseUnitsPerSlot; public String description; - - + public String getImgPath() { return imgPath; } @@ -246,15 +276,15 @@ public class InternArticleController { this.title = article.title; this.price_netto = String.format("%.2f", ((float) article.shopPricePerUnitNetCent / 100)); this.price = String.format("%.2f", ((float) article.getPriceGross() / 100)); - + StringBuilder result = new StringBuilder(); for (Category temp : article.categories) { result.append(temp.name); result.append("\n"); } - this.categorie = result.toString(); - + this.categorie = result.toString(); + this.stock = stock; this.offer_id = article.related.id; this.id = article.id; diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java index 685f8f8..3ef21bf 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java @@ -2,17 +2,16 @@ package org.hso.ecommerce.controller.intern.suppliers; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.hso.ecommerce.entities.supplier.ArticleOffer; -import org.hso.ecommerce.repos.shop.CategoryRepository; +import org.hso.ecommerce.repos.shop.ArticleRepository; import org.hso.ecommerce.repos.shop.OffersRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; @Controller @RequestMapping("/intern/") @@ -21,6 +20,9 @@ public class SupplierOfferController { @Autowired private final OffersRepository offersRepository = null; + @Autowired + private final ArticleRepository articleRepository = null; + @GetMapping("supplierOffers") public String internListedArticles(Model model) { @@ -28,7 +30,7 @@ public class SupplierOfferController { for (ArticleOffer article : offersRepository.findAll()) { UImodelOfferedArticle tmp = new UImodelOfferedArticle(); - tmp.addData(article,"supplierName01", 4884, 5); + tmp.addData(article, "supplierName01", 4884, articleRepository.findArticleIDByRelatedID(article.id)); //TODO display supplier name with link totals.add(tmp); } @@ -38,6 +40,7 @@ public class SupplierOfferController { public class UImodelOfferedArticle { + long offer_id; String title; String manufacturer; String articlenumber; @@ -46,6 +49,23 @@ public class SupplierOfferController { String price; String ads; int listedArticleId; + boolean offerIsListed; //true --> offered article is listed + + public long getOffer_id() { + return offer_id; + } + + public void setOffer_id(long offer_id) { + this.offer_id = offer_id; + } + + public boolean isOfferIsListed() { + return offerIsListed; + } + + public void setOfferIsListed(boolean offerIsListed) { + this.offerIsListed = offerIsListed; + } public String getTitle() { return title; @@ -111,18 +131,26 @@ public class SupplierOfferController { this.listedArticleId = listedArticleId; } - public void addData(ArticleOffer article, String supplierName, int supplierId, int listedArticleId) { + public void addData(ArticleOffer article, String supplierName, int supplierId, + Optional listedArticleId) { + this.offer_id = article.id; this.title = article.title; this.manufacturer = article.manufacturer; this.articlenumber = article.articleNumber; this.supplierName = supplierName; this.supplierId = supplierId; this.price = String.format("%.2f", ((float) article.pricePerUnitNet / 100)); - this.ads = (article.shouldBeAdvertised) ? "Ja" : "Nein"; - this.listedArticleId = listedArticleId; + this.ads = (article.shouldBeAdvertised) ? "Ja" : "Nein"; + + if (listedArticleId.isPresent()) { + // this offer is listed --> show link + this.listedArticleId = listedArticleId.get(); + offerIsListed = true; + } else { + // this offer is not listed + offerIsListed = false; + } } - } - } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/ArticleRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/ArticleRepository.java index 6f79487..6ac9e1e 100644 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/ArticleRepository.java +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/ArticleRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository public interface ArticleRepository extends JpaRepository { @@ -26,5 +27,7 @@ public interface ArticleRepository extends JpaRepository { @Query("SELECT a FROM CustomerOrderPosition cop JOIN cop.order co JOIN co.customer c JOIN cop.article a WHERE c.id = :customerId ORDER BY co.id DESC") List
getOrderedArticles(long customerId); - + @Query(value = "SELECT a.id FROM articles a WHERE a.related_id = :relatedId", nativeQuery = true) + Optional findArticleIDByRelatedID(@Param("relatedId") long relatedId); + } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java index b1d6f0a..20a3f90 100644 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java @@ -5,6 +5,7 @@ import java.util.List; import org.hso.ecommerce.entities.supplier.ArticleOffer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository @@ -12,5 +13,8 @@ public interface OffersRepository extends JpaRepository { @Query("SELECT a FROM ArticleOffer a") List findAll(); + + @Query("SELECT a FROM ArticleOffer a WHERE a.id = :offeredarticleId") + ArticleOffer findOfferedArticleById(@Param("offeredarticleId") long offeredarticleId); } diff --git a/prototype/src/main/resources/templates/intern/listedArticles/id.html b/prototype/src/main/resources/templates/intern/listedArticles/id.html index b2e878a..05996d2 100644 --- a/prototype/src/main/resources/templates/intern/listedArticles/id.html +++ b/prototype/src/main/resources/templates/intern/listedArticles/id.html @@ -28,7 +28,12 @@

- + + + + + + Details

diff --git a/prototype/src/main/resources/templates/intern/offeredArticles/index.html b/prototype/src/main/resources/templates/intern/offeredArticles/index.html index cfa6913..7a18ccc 100644 --- a/prototype/src/main/resources/templates/intern/offeredArticles/index.html +++ b/prototype/src/main/resources/templates/intern/offeredArticles/index.html @@ -47,7 +47,17 @@ - + + + +
+
+ +
+
+ From ba570852a72cf44daece8fb2a37933a7bb1f373c Mon Sep 17 00:00:00 2001 From: localhorst Date: Thu, 21 May 2020 10:27:26 +0200 Subject: [PATCH 5/5] =?UTF-8?q?added=20id=C2=B4s=20to=20inputs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/intern/listedArticles/id.html | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/prototype/src/main/resources/templates/intern/listedArticles/id.html b/prototype/src/main/resources/templates/intern/listedArticles/id.html index 05996d2..7050d3c 100644 --- a/prototype/src/main/resources/templates/intern/listedArticles/id.html +++ b/prototype/src/main/resources/templates/intern/listedArticles/id.html @@ -24,15 +24,13 @@

- +

- - - - + + Details

@@ -40,7 +38,7 @@

- +

@@ -56,7 +54,7 @@

-  EUR +  EUR

@@ -72,14 +70,14 @@

Bitte jede Kategorien in eine eigene Zeile

-

- +

Lagerbestand: @@ -95,7 +93,7 @@

-

@@ -108,4 +106,4 @@ - \ No newline at end of file +