diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..c4d21e5
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/DemoApplication.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/DemoApplication.java
index 8e8eefb..19c3e96 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/DemoApplication.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/DemoApplication.java
@@ -3,6 +3,7 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+
@SpringBootApplication
public class DemoApplication {
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/CorsRunner.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/CorsRunner.java
new file mode 100644
index 0000000..c1327e8
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/CorsRunner.java
@@ -0,0 +1,23 @@
+package vezbe.demo.configuration;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CorsRunner implements WebMvcConfigurer {
+
+ @Override
+ public void addCorsMappings(CorsRegistry registry){
+ registry.addMapping("/**")
+ .allowCredentials(true)
+ // Which primitive fields to release
+ .allowedOriginPatterns("*")
+ .allowedMethods(new String[]{
+ "GET", "POST", "PUT", "DELETE"})
+ .allowedHeaders("*");
+ }
+
+}
+
+
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/DatabaseConfiguration.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/DatabaseConfiguration.java
index 36431ea..898aaa3 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/DatabaseConfiguration.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/DatabaseConfiguration.java
@@ -71,12 +71,13 @@ public boolean instantiate(){
tipKupcaRepository.saveAll(List.of(bronzani, srebrni, zlatni, platinum, dijamant));
- Artikal artikal1 = new Artikal("naziv1", 123, TipArtikla.Jelo, 100, "opis1");
+ Artikal artikal1 = new Artikal("pica mala", 250, TipArtikla.Jelo, 100, "pica cipriciossa, 23cm, pelat, sir, šunka, šampinjoni ");
+ artikal1.setSlika("/src/main/resources/static/images/kapricoza.jpg");
artikalRepository.save(artikal1);
- Artikal artikal2 = new Artikal("naziv2", 321, TipArtikla.Pice, 210, "opis2");
+ Artikal artikal2 = new Artikal("pica normalna", 520, TipArtikla.Jelo, 210, "pica cipriciossa, 35cm, pelat, sir, šunka, šampinjoni");
artikalRepository.save(artikal2);
- Artikal artikal3 = new Artikal("naziv3", 500, TipArtikla.Jelo, 10, "opis3");
+ Artikal artikal3 = new Artikal("pica velika", 900, TipArtikla.Jelo, 100, "pica cipriciossa, 50cm, pelat, sir, šunka, šampinjoni");
artikalRepository.save(artikal3);
Artikal artikal4 = new Artikal("naziv4", 123, TipArtikla.Pice, 100, "opis4");
artikalRepository.save(artikal4);
@@ -95,13 +96,13 @@ public boolean instantiate(){
Artikal artikal11= new Artikal("naziv11", 500, TipArtikla.Jelo, 10, "opis11");
artikalRepository.save(artikal11);
- StavkaPorudzbine stavkaPorudzbine1 = new StavkaPorudzbine(artikal1,100);
- StavkaPorudzbine stavkaPorudzbine2 = new StavkaPorudzbine(artikal2,100);
- StavkaPorudzbine stavkaPorudzbine3 = new StavkaPorudzbine(artikal3,100);
- StavkaPorudzbine stavkaPorudzbine4 = new StavkaPorudzbine(artikal4,100);
- StavkaPorudzbine stavkaPorudzbine5 = new StavkaPorudzbine(artikal5,100);
- StavkaPorudzbine stavkaPorudzbine6 = new StavkaPorudzbine(artikal6,100);
- StavkaPorudzbine stavkaPorudzbine7 = new StavkaPorudzbine(artikal1,100);
+ StavkaPorudzbine stavkaPorudzbine1 = new StavkaPorudzbine(artikal1,1);
+ StavkaPorudzbine stavkaPorudzbine2 = new StavkaPorudzbine(artikal2,2);
+ StavkaPorudzbine stavkaPorudzbine3 = new StavkaPorudzbine(artikal3,3);
+ StavkaPorudzbine stavkaPorudzbine4 = new StavkaPorudzbine(artikal4,4);
+ StavkaPorudzbine stavkaPorudzbine5 = new StavkaPorudzbine(artikal5,5);
+ StavkaPorudzbine stavkaPorudzbine6 = new StavkaPorudzbine(artikal6,6);
+ StavkaPorudzbine stavkaPorudzbine7 = new StavkaPorudzbine(artikal1,7);
/* StavkaPorudzbine stavkaPorudzbine8 = new StavkaPorudzbine(artikal8,100);
StavkaPorudzbine stavkaPorudzbine9 = new StavkaPorudzbine(artikal9,100);
StavkaPorudzbine stavkaPorudzbine10 = new StavkaPorudzbine(artikal10,100);
@@ -180,18 +181,20 @@ public boolean instantiate(){
Kupac kupac2= new Kupac("korisnickoIme2", "lozinka2", "Predrag", "Nenadic",Pol.muski,new Date(100, Calendar.JANUARY, 10), novaListaPorudzbina, 1100, srebrni);
kupacRepository.save(kupac2);
+
Porudzbina porudzbina2 = new Porudzbina();
porudzbina2.setPoruceniArtikli(lista_artikala2);
porudzbina2.setRestoran(restoran);
porudzbina2.setDatumIVreme(date1);
- porudzbina2.setCena(10000);
+ porudzbina2.setCena(2000);
porudzbina2.setKupac(kupac2);
- porudzbina2.setStatus(StatusPorudzbine.UPripremi);
+ porudzbina2.setStatus(StatusPorudzbine.Obrada);
porudzbinaRepository.save(porudzbina2);
+ kupacRepository.save(kupac2);
kupac2.getListaPorudzbina().add(porudzbina2);
- Porudzbina porudzbina = new Porudzbina( lista_artikala, restoran, date1 , 123000,kupac2, StatusPorudzbine.UPripremi);
+ Porudzbina porudzbina = new Porudzbina( lista_artikala, restoran, date1 , 5000,kupac2, StatusPorudzbine.CekaDostavljača);
porudzbinaRepository.save(porudzbina);
-
+ kupacRepository.save(kupac2);
Date date = new Date();
Menadzer menadzer = new Menadzer("menadzer123", "lozinka", "Milos", "Subotic", Pol.muski,date , restoran);
menadzerRepository.save(menadzer);
@@ -226,6 +229,9 @@ public boolean instantiate(){
komentarRepository.save(komentar);
Komentar komentar2 = new Komentar(kupac, restoran2, "Me likey, very nice", 5);
komentarRepository.save(komentar2);
+
+ Korisnik admin = new Korisnik("admin", "sifra", "Admin", "Adminovski" , Pol.muski,new Date(101, Calendar.SEPTEMBER, 10), Uloga.Admin);
+ korisnikRepository.save(admin);
/*Department department1 = new Department("first department");
Department department2 = new Department("second department");
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/MvcConfig.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/MvcConfig.java
new file mode 100644
index 0000000..2ee8ede
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/configuration/MvcConfig.java
@@ -0,0 +1,28 @@
+package vezbe.demo.configuration;
+
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class MvcConfig implements WebMvcConfigurer {
+
+
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ exposeDirectory("images", registry);
+ }
+
+ private void exposeDirectory(String dirName, ResourceHandlerRegistry registry) {
+ Path uploadDir = Paths.get(dirName);
+ //String uploadPath = uploadDir.toFile().getAbsolutePath();
+ String uploadPath = uploadDir.toFile().getAbsolutePath() + "Nadogradnja-demoa/src/main/resources/static/images";
+ if (dirName.startsWith("../")) dirName = dirName.replace("../", "");
+
+ registry.addResourceHandler("/" + dirName + "/**").addResourceLocations("file:/"+ uploadPath + "/");
+ }
+}
\ No newline at end of file
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/ArtikalRestController.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/ArtikalRestController.java
new file mode 100644
index 0000000..9f88ad4
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/ArtikalRestController.java
@@ -0,0 +1,23 @@
+package vezbe.demo.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import vezbe.demo.dto.ArtikalDto;
+import vezbe.demo.model.*;
+import vezbe.demo.service.ArtikalService;
+
+import javax.servlet.http.HttpSession;
+import java.util.List;
+import java.util.Set;
+
+@RestController
+public class ArtikalRestController {
+
+ @Autowired
+ private ArtikalService artikalService;
+
+
+
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/DostavljacRestController.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/DostavljacRestController.java
new file mode 100644
index 0000000..4e5212b
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/DostavljacRestController.java
@@ -0,0 +1,70 @@
+package vezbe.demo.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import vezbe.demo.dto.DostavljacDto;
+import vezbe.demo.dto.MenadzerDto;
+import vezbe.demo.model.*;
+import vezbe.demo.service.DostavljacService;
+import vezbe.demo.service.KorisnikService;
+import vezbe.demo.service.MenadzerService;
+import javax.servlet.http.HttpSession;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.Set;
+
+@RestController
+@RequestMapping(value = "/api/")
+@CrossOrigin(origins = "http://localhost:8080")
+public class DostavljacRestController {
+
+ private final DostavljacService dostavljacService;
+
+ @Autowired
+ public DostavljacRestController(DostavljacService dostavljacService) {
+ this.dostavljacService = dostavljacService;
+ }
+
+
+
+ @PostMapping("kreiraj-dostavljaca")
+ public ResponseEntity kreirajDostavljaca(@RequestBody DostavljacDto dostavljacDto, HttpSession session) throws ParseException {
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null){
+ return new ResponseEntity<>("Forbidden", HttpStatus.OK);
+ }
+ if(loggedKorisnik.getUloga()!= Uloga.Admin){
+ return new ResponseEntity<>("Nemate dozvolu za ovu funkciju", HttpStatus.OK);
+ }
+ String sDate1=dostavljacDto.getDatumRodjenja();
+ Date date1= null;
+ date1 = new SimpleDateFormat("yyyy-MM-dd").parse(sDate1);
+
+ Pol pol = Pol.valueOf(dostavljacDto.getPol());
+
+ Dostavljac dostavljac = new Dostavljac(dostavljacDto.getKorisnickoIme(), dostavljacDto.getLozinka(), dostavljacDto.getIme(), dostavljacDto.getPrezime(),pol, date1);
+ this.dostavljacService.save(dostavljac);
+
+ return new ResponseEntity<>("", HttpStatus.OK);
+
+ }
+
+ @GetMapping("/api/dostavljac/pregled-porudzbina")
+ public ResponseEntity> pregledPorudzbina(HttpSession session) {
+
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik.getUloga() != Uloga.Dostavljac ) {//Da li treba dodati i mogucnost da admin moze da pristupa ovom edpointu
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+
+
+
+ return ResponseEntity.ok(dostavljacService.findAllById(loggedKorisnik.getId()));
+
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/KorisnikRestController.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/KorisnikRestController.java
new file mode 100644
index 0000000..f883098
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/KorisnikRestController.java
@@ -0,0 +1,76 @@
+package vezbe.demo.controller;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import vezbe.demo.dto.KorisnikDto;
+import vezbe.demo.dto.LoginDto;
+import vezbe.demo.model.*;
+import vezbe.demo.service.KorisnikService;
+import vezbe.demo.service.RestoranService;
+
+import javax.servlet.http.HttpSession;
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+@RequestMapping(value = "/api/")
+@CrossOrigin(origins = "http://localhost:8080")
+public class KorisnikRestController {
+ private final KorisnikService korisnikService;
+
+ @Autowired
+ public KorisnikRestController(KorisnikService korisnikService) {
+ this.korisnikService = korisnikService;
+ }
+
+
+ @PostMapping(
+ value="login",
+ consumes = MediaType.APPLICATION_JSON_VALUE,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity login(@RequestBody KorisnikDto loginDto, HttpSession session) throws Exception{
+ if(loginDto.getKorisnickoIme().isEmpty() || loginDto.getLozinka().isEmpty()){
+ return new ResponseEntity<>(new LoginDto(), HttpStatus.OK);
+ }
+ Korisnik loggedKorisnik = korisnikService.login(loginDto.getKorisnickoIme(), loginDto.getLozinka());
+ if (loggedKorisnik == null){
+ return new ResponseEntity<>(new LoginDto(), HttpStatus.OK);}
+ session.setAttribute("logovaniKorsinik", loggedKorisnik);
+
+ KorisnikDto korisnikDto= new KorisnikDto(loggedKorisnik.getKorisnickoIme(), loggedKorisnik.getLozinka(), loggedKorisnik.getIme(), loggedKorisnik.getPrezime(), loggedKorisnik.getDatumRodjenja(), loggedKorisnik.getPol(), loggedKorisnik.getUloga());
+ LoginDto dto = new LoginDto(loggedKorisnik.getKorisnickoIme(), loggedKorisnik.getLozinka(), loggedKorisnik.getIme(), loggedKorisnik.getPrezime(), loggedKorisnik.getDatumRodjenja(), loggedKorisnik.getPol(), loggedKorisnik.getUloga());
+ dto.setSessionId(session.getId());
+ return new ResponseEntity<>(dto, HttpStatus.OK);
+ }
+
+ @GetMapping(value = "profil",
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity getProfil(HttpSession session){
+
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+
+ if(loggedKorisnik == null) {
+ System.out.println("Nema sesije");
+ } else {
+ System.out.println(loggedKorisnik);
+ }
+ return ResponseEntity.ok(loggedKorisnik);
+
+ }
+ @GetMapping(value = "korisnici",
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity> getSveKorisnike(HttpSession session){
+ List listaKorisnika = new ArrayList<>();
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if(loggedKorisnik.getUloga()!=Uloga.Admin){
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+ List dtoList = korisnikService.findAll();
+ return new ResponseEntity<>(dtoList, HttpStatus.OK);
+
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/KupacRestController.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/KupacRestController.java
index 2204e05..2e8a62a 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/KupacRestController.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/KupacRestController.java
@@ -1,55 +1,82 @@
package vezbe.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
-import vezbe.demo.model.Kupac;
+import vezbe.demo.dto.KorisnikDto;
+import vezbe.demo.dto.KupacDto;
+import vezbe.demo.dto.LoginDto;
+import vezbe.demo.model.*;
import vezbe.demo.service.KupacService;
+import vezbe.demo.service.RestoranService;
+import javax.servlet.http.HttpSession;
+import java.text.ParseException;
import java.util.Date;
import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Set;
@RestController
+@CrossOrigin("http://localhost:8080")
+@RequestMapping(value = "/api/")
public class KupacRestController {
- @Autowired
- private KupacService kupacService;
+ private final KupacService kupacService;
- @GetMapping("/api/")
- public String welcome(){
- return "Hello from api!";
+ @Autowired
+ public KupacRestController(KupacService kupacService) {
+ this.kupacService = kupacService;
}
- @PostMapping("/api/registracija")
- public String registracijaKupca(@RequestBody Kupac kupac) {
+
+
+ @PostMapping(
+ value = "/registracija",
+ consumes = MediaType.APPLICATION_JSON_VALUE,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity registracija(@RequestBody KorisnikDto korisnikDto) throws ParseException {
+
+// if(!kupacService.checkIfUsernameIsAvailable(korisnikDto.getKorisnickoIme())){
+// return new ResponseEntity<>("korisnicko ime nije slobodno", HttpStatus.OK);
+// }
+
+ String sDate1=korisnikDto.getDatumRodjenja();
+ Date date1= null;
+ date1 = new SimpleDateFormat("yyyy-MM-dd").parse(sDate1);
+
+ Pol pol = Pol.valueOf(korisnikDto.getPol());
+
+ Kupac kupac = new Kupac(korisnikDto.getKorisnickoIme(), korisnikDto.getLozinka(), korisnikDto.getIme(), korisnikDto.getPrezime(),pol, date1);
this.kupacService.save(kupac);
- return "Uspesna registracija!";
- }
-/*
- @GetMapping("/api/employees")
- public List getKupci(){
- List employeeList = kupacService.findAll();
- return employeeList;
- }
+ return new ResponseEntity<>("", HttpStatus.OK);
- @GetMapping("/api/employees/{id}")
- public Kupac getEmployee(@PathVariable(name = "id") Long id){
- Kupac employee = employeeService.findOne(id);
- return employee;
}
+ @GetMapping(value="/sve-porudzbine",
+ produces = MediaType.APPLICATION_JSON_VALUE
+ )
+ public ResponseEntity> sveProduzbine(HttpSession session){
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+
+ if (loggedKorisnik == null){
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+ if(loggedKorisnik.getUloga()!= Uloga.Kupac){
+ return new ResponseEntity("Nemate dozvolu za ovu funkciju", HttpStatus.BAD_REQUEST);
+ }
+ //Kupac kupac = (Kupac) loggedKorisnik;
+ if(kupacService.findAllPorudzbineByID(loggedKorisnik.getId()).isEmpty()){
+ System.out.println("PRAZNA LISTA");
+ ResponseEntity.noContent();
+ }
+// return new ResponseEntity( kupacService.findAllPorudzbineByID(loggedKorisnik.getId()), HttpStatus.OK);
+ return new ResponseEntity( kupacService.findAllPorudzbineByID(loggedKorisnik.getId()), HttpStatus.OK);
- @PostMapping("/api/save-employee")
- public String saveEmployee(@RequestBody Employee employee) {
- this.employeeService.save(employee);
- return "Successfully saved an employee!";
- }
- @GetMapping("/api/delById/{id}")
- public String deleteEmployee(@PathVariable(name = "id") Long id){
- Employee employee = employeeService.findOne(id);
- this.employeeService.delete(employee);
- return "Sucessfully deleted and employee!";
}
-*/
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/LokacijaRestController.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/LokacijaRestController.java
new file mode 100644
index 0000000..ab31feb
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/LokacijaRestController.java
@@ -0,0 +1,14 @@
+package vezbe.demo.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+import vezbe.demo.service.LokacijaService;
+
+@RestController
+public class LokacijaRestController {
+ @Autowired
+ private LokacijaService lokacijaService;
+
+
+
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/MenadzerRestController.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/MenadzerRestController.java
new file mode 100644
index 0000000..4b50592
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/MenadzerRestController.java
@@ -0,0 +1,69 @@
+package vezbe.demo.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import vezbe.demo.dto.MenadzerDto;
+import vezbe.demo.model.*;
+import vezbe.demo.service.DostavljacService;
+import vezbe.demo.service.MenadzerService;
+import javax.servlet.http.HttpSession;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+@RestController
+@RequestMapping(value = "/api/")
+@CrossOrigin(origins = "http://localhost:8080")
+public class MenadzerRestController {
+
+ private final MenadzerService menadzerService;
+
+ @Autowired
+ public MenadzerRestController(MenadzerService menadzerService) {
+ this.menadzerService = menadzerService;
+ }
+
+
+ @PostMapping(value = "kreiraj-menadzera"
+ )
+ public ResponseEntity kreirajMenadzera(@RequestBody MenadzerDto menadzerDto, HttpSession session) throws ParseException {
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+
+ if (loggedKorisnik == null){
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+ if(loggedKorisnik.getUloga()!= Uloga.Admin){
+ return new ResponseEntity("Nemate dozvolu za ovu funkciju", HttpStatus.BAD_REQUEST);
+ }
+
+ String sDate1=menadzerDto.getDatumRodjenja();
+ Date date1= null;
+ date1 = new SimpleDateFormat("yyyy-MM-dd").parse(sDate1);
+
+ Pol pol = Pol.valueOf(menadzerDto.getPol());
+
+ Menadzer menadzer = new Menadzer(menadzerDto.getKorisnickoIme(), menadzerDto.getLozinka(), menadzerDto.getIme(), menadzerDto.getPrezime(),pol, date1);
+ this.menadzerService.save(menadzer);
+
+ return ResponseEntity.ok("Uspesno kreiranje menadzera!");
+
+ }
+ @GetMapping("/api/pregled-restorana")
+ public ResponseEntity getRestoran(HttpSession session){
+
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if(loggedKorisnik.getUloga()!= Uloga.Menadzer){
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+
+ Restoran restoran = menadzerService.findRestoran(loggedKorisnik.getId());
+ return ResponseEntity.ok(restoran);
+
+ }
+
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/PorudzbinaRestController.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/PorudzbinaRestController.java
new file mode 100644
index 0000000..ea7d3ad
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/PorudzbinaRestController.java
@@ -0,0 +1,197 @@
+package vezbe.demo.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import vezbe.demo.dto.PorudzbinaDto;
+import vezbe.demo.dto.RestoranImeDto;
+import vezbe.demo.model.*;
+import vezbe.demo.service.PorudzbinaService;
+import vezbe.demo.dto.KorpaDto;
+
+
+import javax.servlet.http.HttpSession;
+import java.util.*;
+
+@RestController
+@CrossOrigin("http://localhost:8080")
+@RequestMapping(value = "/api/")
+public class PorudzbinaRestController {
+
+ @Autowired
+ private PorudzbinaService porudzbinaService;
+
+
+ @GetMapping(value = "/pregled-porudzbina",
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity> getPorudzbine(HttpSession session) {
+ List listaPorudzbina = new ArrayList<>();
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik.getUloga() != Uloga.Menadzer) {
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+
+ Restoran r = ((Menadzer) loggedKorisnik).getRestoran();
+ List dtoList = porudzbinaService.getListaPorudzbina(r);
+
+ return ResponseEntity.ok(dtoList);
+
+ }
+
+ @GetMapping(value = "ceka-dostavljaca",
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity> porudzbineStanjeCekaDostavljaca(HttpSession session) {
+ List listaPorudzbina = new ArrayList<>();
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null) {
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+ if (loggedKorisnik.getUloga() != Uloga.Dostavljac) {
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+
+
+ return ResponseEntity.ok(porudzbinaService.findCekaDostavljaca());
+
+ }
+
+ @PostMapping("/api/izaberi-restoran")
+ public ResponseEntity izaberRestoran(@RequestBody RestoranImeDto restoranImeDto, HttpSession session) {
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null) {
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+ if (loggedKorisnik.getUloga() != Uloga.Kupac) {
+ return new ResponseEntity("Nemate dozvolu za ovu funkciju", HttpStatus.BAD_REQUEST);
+ }
+ Kupac kupac = (Kupac) loggedKorisnik;
+
+ porudzbinaService.makePorudzbina(kupac, restoranImeDto.getNaziv());
+
+ return ResponseEntity.ok(porudzbinaService.getAll());
+
+ }
+
+ @PostMapping(
+ value = "dodaj-u-korpu",
+ consumes = MediaType.APPLICATION_JSON_VALUE,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity dodajUKorpu(@RequestBody KorpaDto korpaDto, HttpSession session) {
+
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null) {
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+ if (loggedKorisnik.getUloga() != Uloga.Kupac) {
+ return new ResponseEntity("Nemate dozvolu za ovu funkciju", HttpStatus.BAD_REQUEST);
+ }
+ Kupac kupac = (Kupac) loggedKorisnik;
+
+ Porudzbina porudzbina = porudzbinaService.findPorduzbinaUSastavljanju(kupac);
+
+ return new ResponseEntity<>(porudzbinaService.kreirajStavkuPorudzbine(korpaDto.getArtikal(), korpaDto.getKolicina(), porudzbina), HttpStatus.OK);
+
+
+ }
+
+ @PostMapping("/api/ukloni-iz-korpe")
+ public ResponseEntity ukloniIzKorpe(@RequestBody KorpaDto korpaDto, HttpSession session) {
+
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null) {
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+ if (loggedKorisnik.getUloga() != Uloga.Kupac) {
+ return new ResponseEntity("Nemate dozvolu za ovu funkciju", HttpStatus.BAD_REQUEST);
+ }
+ Kupac kupac = (Kupac) loggedKorisnik;
+
+ Porudzbina porudzbina = porudzbinaService.findPorduzbinaUSastavljanju(kupac);
+
+ return ResponseEntity.ok(porudzbinaService.ukloniStavkuPorudzbine(korpaDto.getArtikal(), korpaDto.getKolicina(), porudzbina));
+
+ }
+
+ @PostMapping("/api/poruci")
+ public ResponseEntity poruci(HttpSession session) {
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null) {
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+ if (loggedKorisnik.getUloga() != Uloga.Kupac) {
+ return new ResponseEntity("Nemate dozvolu za ovu funkciju", HttpStatus.BAD_REQUEST);
+ }
+ Kupac kupac = (Kupac) loggedKorisnik;
+ Porudzbina porudzbina = porudzbinaService.findPorduzbinaUSastavljanju(kupac);
+ porudzbinaService.checkIfEmpty(porudzbina);
+ if (porudzbina.getPoruceniArtikli().isEmpty()) {
+ return new ResponseEntity("Porudzbina je prazna", HttpStatus.BAD_REQUEST);
+ } else {
+ return ResponseEntity.ok(porudzbina);
+ }
+
+ }
+
+ @PutMapping("/api/menadzer/promeni-status/{id}")
+ public ResponseEntity uPripremi(@PathVariable(name = "id") String id, HttpSession session) {
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null) {
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+
+ if (loggedKorisnik.getUloga() != Uloga.Menadzer) {
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+
+ Menadzer menadzer = (Menadzer) loggedKorisnik;
+ Porudzbina porudzbina = porudzbinaService.promeniStatusMenadzer(menadzer.getRestoran(), id);
+
+
+ return ResponseEntity.ok(porudzbina);
+ }
+
+ @PutMapping(value = "dostavljac/promeni-status/{id}",
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity uTransportu(@PathVariable(name = "id") String id, HttpSession session) {
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null) {
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+
+ if (loggedKorisnik.getUloga() != Uloga.Dostavljac) {
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+
+ Dostavljac dostavljac = (Dostavljac) loggedKorisnik;
+ Porudzbina porudzbina = porudzbinaService.promeniStatusDostavljac(dostavljac, id);
+ if (porudzbina == null) {
+ return new ResponseEntity("Nemate pristup ovoj porudzbini", HttpStatus.BAD_REQUEST);
+ }
+ PorudzbinaDto porudzbinaDto = new PorudzbinaDto(porudzbina.getUUID().toString(), porudzbina.getCena(), porudzbina.getDatumIVreme().toString(), porudzbina.getStatus());
+
+ return new ResponseEntity<>("", HttpStatus.OK);
+ }
+ @GetMapping(value = "dostavljac/porudzbine/",
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity> porudzbineDostavljaca(HttpSession session) {
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null) {
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+
+ if (loggedKorisnik.getUloga() != Uloga.Dostavljac) {
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+ Dostavljac dostavljac = (Dostavljac) loggedKorisnik;
+ Set set = new HashSet<>();
+ for(Porudzbina porudzbina: dostavljac.getPorudzbineZaDostavu()){
+ PorudzbinaDto dto = new PorudzbinaDto(porudzbina.getUUID().toString(), porudzbina.getCena(), porudzbina.getDatumIVreme().toString(), porudzbina.getStatus());
+ set.add(dto);
+ }
+
+ return new ResponseEntity<>(set, HttpStatus.OK);
+
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/RestoranRestController.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/RestoranRestController.java
new file mode 100644
index 0000000..35fedec
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/controller/RestoranRestController.java
@@ -0,0 +1,182 @@
+package vezbe.demo.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import vezbe.demo.dto.*;
+import vezbe.demo.model.*;
+import vezbe.demo.service.RestoranService;
+
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.util.*;
+
+@RestController
+@CrossOrigin("http://localhost:8080")
+@RequestMapping(value = "/api/")
+public class RestoranRestController {
+
+ private final RestoranService restoranService;
+
+ @Autowired
+ public RestoranRestController(RestoranService restoranService) {
+ this.restoranService = restoranService;
+ }
+
+
+ @GetMapping(
+ value = "/restorani",
+ produces = MediaType.APPLICATION_JSON_VALUE
+ )
+ public ResponseEntity> api(){
+
+ return ResponseEntity.ok(restoranService.getAllBasicInfo());
+ }
+
+
+ @PostMapping("/api/kreiraj-restoran")
+ public ResponseEntity kreirajRestoran(@RequestBody RestoranDto restoranDto, HttpSession session){
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null){
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+ if(loggedKorisnik.getUloga()!= Uloga.Admin){
+ return new ResponseEntity("Nemate dozvolu za ovu funkciju", HttpStatus.BAD_REQUEST);
+ }
+
+ Restoran restoran = new Restoran(restoranDto.getNaziv(), restoranDto.getTipRestorana());
+ Lokacija lokacija = new Lokacija(restoranDto.getGeoSirina(), restoranDto.getGeoDuzina(), restoranDto.getAdresa());
+ restoran.setLokacija(lokacija);
+ this.restoranService.save(restoran);
+
+ return ResponseEntity.ok("Uspesno kreiranje restorana!");
+ }
+
+ @GetMapping("/pretraga")
+ public ResponseEntity> pretragaRestorana(@RequestBody String input){
+ Set restorani = restoranService.pronadjiRestorane(input);
+ return ResponseEntity.ok(restorani);
+
+ }
+
+ @GetMapping(
+ value = "/restorani/{naziv}",
+ produces = MediaType.APPLICATION_JSON_VALUE
+ )
+ public ResponseEntity prikazJednogRestorana(@PathVariable(name = "naziv") String naziv){
+ Restoran restoran = restoranService.findByName(naziv);
+ double prosecnaOcena = restoranService.getProsecnaOcena(restoran.getId());
+ Set komentari = restoranService.getKomentari(restoran.getId());
+ if (restoran == null)
+ return new ResponseEntity<>(new RestoranIspisDto(), HttpStatus.OK);
+
+ return new ResponseEntity<>(restoranService.spremiZaIspis(restoran, prosecnaOcena, komentari), HttpStatus.OK);
+ }
+
+ @PostMapping("/api/dodaj-artikal")
+ public ResponseEntity> dodajArtikal(@RequestParam("image") MultipartFile multipartFile,ArtikalDto artikalDto, HttpSession session) throws IOException {
+ Menadzer loggedKorisnik = (Menadzer) session.getAttribute("logovaniKorsinik");
+
+ if(loggedKorisnik.getRestoran()== null){
+ return new ResponseEntity("ne mozes ovako loggedKorinsik", HttpStatus.BAD_REQUEST);
+ }
+ if(loggedKorisnik.getUloga()!= Uloga.Menadzer){
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+ if(artikalDto.getNaziv().isEmpty()){
+ return new ResponseEntity("Polje naziv je obavezno!", HttpStatus.BAD_REQUEST);
+ }
+ if(artikalDto.getTipArtikla().isEmpty()){
+ return new ResponseEntity("Polje tipArtikla je obavezno!", HttpStatus.BAD_REQUEST);
+ }
+ if(artikalDto.getCena() == 0){
+ return new ResponseEntity("Polje cena je obavezno!", HttpStatus.BAD_REQUEST);
+ }
+ if(multipartFile.isEmpty()){
+ return new ResponseEntity("Polje slika je obavezno!", HttpStatus.BAD_REQUEST);
+ }
+ TipArtikla tipArtikla = TipArtikla.valueOf(artikalDto.getTipArtikla());
+
+ Artikal artikal = new Artikal(artikalDto.getNaziv(), artikalDto.getCena(), tipArtikla);
+
+ String fileName = StringUtils.cleanPath(multipartFile.getOriginalFilename());
+ artikal.setSlika(fileName);
+
+ //String uploadDir = "artikal-slike/" + artikal.getId();
+ String uploadDir = "src/main/resources/static/images/" + artikal.getId();
+
+ FileUploadUtil.saveFile(uploadDir, fileName, multipartFile);
+
+
+ Set listaArtikala = restoranService.dodajArtikal(artikal, loggedKorisnik.getRestoran());
+
+
+ return ResponseEntity.ok(listaArtikala);
+
+ }
+
+
+ @PutMapping("/api/restoran/promeni-menadzera")
+ public ResponseEntity promeniMenadzera(@RequestBody NoviMenadzerDto dto, HttpSession session){
+ Korisnik loggedKorisnik = (Korisnik) session.getAttribute("logovaniKorsinik");
+ if (loggedKorisnik == null){
+ return new ResponseEntity("Forbidden", HttpStatus.FORBIDDEN);
+ }
+ if(loggedKorisnik.getUloga()!= Uloga.Admin){
+ return new ResponseEntity("Nemate dozvolu za ovu funkciju", HttpStatus.BAD_REQUEST);
+ }
+
+ Menadzer menadzer= restoranService.findByNaziv(dto.getNaziv(), dto.getKorisnickoIme());
+
+ return ResponseEntity.ok(menadzer);
+ }
+ @DeleteMapping("/ukloni-artikal/{id}")
+ public ResponseEntity> ukloniArtikal(@PathVariable(name = "id") Long id, HttpSession session){
+ Menadzer loggedKorisnik = (Menadzer) session.getAttribute("logovaniKorsinik");
+
+ if(loggedKorisnik.getRestoran()== null){
+ return new ResponseEntity("ne mozes ovako loggedKorinsik", HttpStatus.BAD_REQUEST);
+ }
+
+ if(loggedKorisnik.getUloga()!= Uloga.Menadzer){
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+ if(!restoranService.pronadjiArtikal(id, loggedKorisnik.getRestoran())){
+ return new ResponseEntity("U vasoj ponudi nema ovog artikla", HttpStatus.BAD_REQUEST);
+ }
+
+
+
+ List l = restoranService.removeArtikal(id, loggedKorisnik.getRestoran());
+ return ResponseEntity.ok(l);
+ }
+ @PutMapping("/api/promeni-artikal/{id}")
+ public ResponseEntity promeniArtikal(@PathVariable(name = "id") Long id, @RequestBody Artikal artikal, HttpSession session){
+ Menadzer loggedKorisnik = (Menadzer) session.getAttribute("logovaniKorsinik");
+
+ if(loggedKorisnik.getRestoran()== null){
+ return new ResponseEntity("ne mozes ovako loggedKorinsik", HttpStatus.BAD_REQUEST);
+ }
+
+ if(loggedKorisnik.getUloga()!= Uloga.Menadzer){
+ return new ResponseEntity("Nemate pristupa ovim podacima", HttpStatus.BAD_REQUEST);
+ }
+ if(!restoranService.pronadjiArtikal(id, loggedKorisnik.getRestoran())){
+ return new ResponseEntity("U vasoj ponudi nema ovog artikla", HttpStatus.BAD_REQUEST);
+ }
+
+ //SLIKU NISI MENJAOOOOOOOOOOOOOOOOOOOOOOOOO
+ return ResponseEntity.ok(restoranService.promeniArtikal(artikal, loggedKorisnik.getRestoran(), id));
+
+ }
+
+
+
+
+
+
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/ArtikalDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/ArtikalDto.java
new file mode 100644
index 0000000..42f3d57
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/ArtikalDto.java
@@ -0,0 +1,119 @@
+package vezbe.demo.dto;
+
+import com.fasterxml.jackson.annotation.JsonSetter;
+import vezbe.demo.model.TipArtikla;
+
+import javax.persistence.Column;
+import javax.persistence.Lob;
+import java.io.UnsupportedEncodingException;
+import java.util.Base64;
+
+
+public class ArtikalDto {
+ private String naziv;
+ private double cena;
+
+ private String tipArtikla;
+
+ private double kolicina;
+
+ private String opis;
+
+ /*@Lob
+ @Column(name = "slika")
+ private byte[] slika;
+
+ @JsonSetter("slika")
+ public void setSlika(String content) {
+ try {
+ this.slika = Base64.getDecoder().decode(content.getBytes("UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public byte[] getSlika() {
+ return slika;
+ }
+ */
+
+ //SLIKU??????????????????
+ //OPCIONI?????????????
+
+ public ArtikalDto(String naziv, double cena, String tipArtikla, double kolicina, String opis) {
+ this.naziv = naziv;
+ this.cena = cena;
+ this.tipArtikla = tipArtikla;
+ this.kolicina = kolicina;
+ this.opis = opis;
+ }
+
+ /*public ArtikalDto(String naziv, double cena, String tipArtikla, double kolicina, String opis, byte[] slika) {
+ this.naziv = naziv;
+ this.cena = cena;
+ this.tipArtikla = tipArtikla;
+ this.kolicina = kolicina;
+ this.opis = opis;
+ this.slika = slika;
+ }
+ */
+
+ public ArtikalDto() {
+ }
+
+ public ArtikalDto(String naziv, double cena, String tipArtikla) {
+
+ this.naziv = naziv;
+ this.cena = cena;
+ this.tipArtikla = tipArtikla;
+ }
+ /*
+
+ public ArtikalDto(String naziv, double cena, String tipArtikla, byte[] slika) {
+ this.naziv = naziv;
+ this.cena = cena;
+ this.tipArtikla = tipArtikla;
+ this.slika = slika;
+ }
+ */
+
+ public String getNaziv() {
+ return naziv;
+ }
+
+ public void setNaziv(String naziv) {
+ this.naziv = naziv;
+ }
+
+ public double getCena() {
+ return cena;
+ }
+
+ public void setCena(double cena) {
+ this.cena = cena;
+ }
+
+ public String getTipArtikla() {
+ return tipArtikla;
+ }
+
+ public void setTipArtikla(String tipArtikla) {
+ this.tipArtikla = tipArtikla;
+ }
+
+ public double getKolicina() {
+ return kolicina;
+ }
+
+ public void setKolicina(double kolicina) {
+ this.kolicina = kolicina;
+ }
+
+ public String getOpis() {
+ return opis;
+ }
+
+ public void setOpis(String opis) {
+ this.opis = opis;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/DostavljacDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/DostavljacDto.java
new file mode 100644
index 0000000..4cf665e
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/DostavljacDto.java
@@ -0,0 +1,114 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.*;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import static javax.persistence.EnumType.STRING;
+
+public class DostavljacDto {
+
+ private Long id;
+
+ private String korisnickoIme;
+
+ private String lozinka;
+
+ private String ime;
+
+ private String prezime;
+
+ private String pol;
+
+ private String datumRodjenja;
+
+ private Uloga uloga;
+
+ public DostavljacDto(Long id, String korisnickoIme, String lozinka, String ime, String prezime, String pol, String datumRodjenja) {
+
+ this.uloga = Uloga.Kupac;
+ }
+ public DostavljacDto(Kupac kupac) {
+ this.id = kupac.getId();
+ this.korisnickoIme = kupac.getKorisnickoIme();
+ this.lozinka = kupac.getLozinka();
+ this.ime = kupac.getIme();
+ this.prezime = kupac.getPrezime();
+ this.pol = kupac.getPol().name();
+ this.datumRodjenja = kupac.getDatumRodjenja().toString();
+ this.uloga = Uloga.Kupac;
+ }
+
+ public DostavljacDto() {
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getKorisnickoIme() {
+ return korisnickoIme;
+ }
+
+ public void setKorisnickoIme(String korisnickoIme) {
+ this.korisnickoIme = korisnickoIme;
+ }
+
+ public String getLozinka() {
+ return lozinka;
+ }
+
+ public void setLozinka(String lozinka) {
+ this.lozinka = lozinka;
+ }
+
+ public String getIme() {
+ return ime;
+ }
+
+ public void setIme(String ime) {
+ this.ime = ime;
+ }
+
+ public String getPrezime() {
+ return prezime;
+ }
+
+ public void setPrezime(String prezime) {
+ this.prezime = prezime;
+ }
+
+ public String getPol() {
+ return pol;
+ }
+
+ public void setPol(String pol) {
+ this.pol = pol;
+ }
+
+ public String getDatumRodjenja() {
+ return datumRodjenja;
+ }
+
+ public void setDatumRodjenja(String datumRodjenja) {
+ this.datumRodjenja = datumRodjenja;
+ }
+
+ public Uloga getUloga() {
+ return uloga;
+ }
+
+ public void setUloga(Uloga uloga) {
+ this.uloga = uloga;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KomentarDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KomentarDto.java
new file mode 100644
index 0000000..02c6b00
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KomentarDto.java
@@ -0,0 +1,40 @@
+package vezbe.demo.dto;
+
+public class KomentarDto {
+ private String korisnickoIme;
+ private String tekst;
+ private int ocena;
+
+ public KomentarDto() {
+ }
+
+ public KomentarDto(String korisnickoIme, String tekst, int ocena) {
+ this.korisnickoIme = korisnickoIme;
+ this.tekst = tekst;
+ this.ocena = ocena;
+ }
+
+ public String getKorisnickoIme() {
+ return korisnickoIme;
+ }
+
+ public void setKorisnickoIme(String korisnickoIme) {
+ this.korisnickoIme = korisnickoIme;
+ }
+
+ public String getTekst() {
+ return tekst;
+ }
+
+ public void setTekst(String tekst) {
+ this.tekst = tekst;
+ }
+
+ public int getOcena() {
+ return ocena;
+ }
+
+ public void setOcena(int ocena) {
+ this.ocena = ocena;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KorisnikDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KorisnikDto.java
new file mode 100644
index 0000000..bbaa90e
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KorisnikDto.java
@@ -0,0 +1,109 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.Korisnik;
+import vezbe.demo.model.Pol;
+import vezbe.demo.model.Uloga;
+
+import javax.persistence.*;
+import java.util.Date;
+
+import static javax.persistence.EnumType.STRING;
+
+public class KorisnikDto {
+
+ private String korisnickoIme;
+ private String lozinka;
+ private String ime;
+ private String prezime;
+ private String datumRodjenja;
+ private String pol;
+ private String uloga;
+
+ public KorisnikDto() {
+ }
+ public KorisnikDto(Korisnik korisnik) {
+ this.korisnickoIme = korisnik.getKorisnickoIme();
+ this.lozinka = korisnik.getLozinka();
+ this.ime = korisnik.getIme();
+ this.prezime = korisnik.getPrezime();
+ this.datumRodjenja = korisnik.getDatumRodjenja().toString();
+ this.pol = korisnik.getPol().toString();
+ this.uloga = korisnik.getUloga().toString();
+ }
+
+ public KorisnikDto(String korisnickoIme, String lozinka, String ime, String prezime, String datumRodjenja,String pol,String uloga) {
+ this.korisnickoIme = korisnickoIme;
+ this.lozinka = lozinka;
+ this.ime = ime;
+ this.prezime = prezime;
+ this.datumRodjenja = datumRodjenja;
+ this.pol = pol;
+ this.uloga = uloga;
+ }
+ public KorisnikDto(String korisnickoIme, String lozinka, String ime, String prezime, Date datumRodjenja,Pol pol,Uloga uloga) {
+
+ this.korisnickoIme = korisnickoIme;
+ this.lozinka = lozinka;
+ this.ime = ime;
+ this.prezime = prezime;
+ this.datumRodjenja = datumRodjenja.toString();
+ this.pol = pol.name();
+ this.uloga = uloga.name();
+ }
+
+ public String getLozinka() {
+ return lozinka;
+ }
+
+ public void setLozinka(String lozinka) {
+ this.lozinka = lozinka;
+ }
+
+ public String getIme() {
+ return ime;
+ }
+
+ public void setIme(String ime) {
+ this.ime = ime;
+ }
+
+ public String getPrezime() {
+ return prezime;
+ }
+
+ public void setPrezime(String prezime) {
+ this.prezime = prezime;
+ }
+
+ public String getDatumRodjenja() {
+ return datumRodjenja;
+ }
+
+ public void setDatumRodjenja(String datumRodjenja) {
+ this.datumRodjenja = datumRodjenja;
+ }
+
+ public String getPol() {
+ return pol;
+ }
+
+ public void setPol(String pol) {
+ this.pol = pol;
+ }
+
+ public String getKorisnickoIme() {
+ return korisnickoIme;
+ }
+
+ public void setKorisnickoIme(String korisnickoIme) {
+ this.korisnickoIme = korisnickoIme;
+ }
+
+ public String getUloga() {
+ return uloga;
+ }
+
+ public void setUloga(String uloga) {
+ this.uloga = uloga;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KorpaDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KorpaDto.java
new file mode 100644
index 0000000..1ce91f9
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KorpaDto.java
@@ -0,0 +1,33 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.Artikal;
+
+public class KorpaDto {
+ private String artikal;
+ private int kolicina;
+
+ public KorpaDto() {
+
+ }
+
+ public KorpaDto( String artikal, int kolicina) {
+ this.artikal = artikal;
+ this.kolicina = kolicina;
+ }
+
+ public String getArtikal() {
+ return artikal;
+ }
+
+ public void setArtikal(String artikal) {
+ this.artikal = artikal;
+ }
+
+ public int getKolicina() {
+ return kolicina;
+ }
+
+ public void setKolicina(int kolicina) {
+ this.kolicina = kolicina;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KupacDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KupacDto.java
new file mode 100644
index 0000000..d324f31
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/KupacDto.java
@@ -0,0 +1,114 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.*;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import static javax.persistence.EnumType.STRING;
+
+public class KupacDto {
+
+ private Long id;
+
+ private String korisnickoIme;
+
+ private String lozinka;
+
+ private String ime;
+
+ private String prezime;
+
+ private String pol;
+
+ private String datumRodjenja;
+
+ private Uloga uloga;
+
+ public KupacDto(Long id, String korisnickoIme, String lozinka, String ime, String prezime, String pol, String datumRodjenja) {
+
+ this.uloga = Uloga.Kupac;
+ }
+ public KupacDto(Kupac kupac) {
+ this.id = kupac.getId();
+ this.korisnickoIme = kupac.getKorisnickoIme();
+ this.lozinka = kupac.getLozinka();
+ this.ime = kupac.getIme();
+ this.prezime = kupac.getPrezime();
+ this.pol = kupac.getPol().name();
+ this.datumRodjenja = kupac.getDatumRodjenja().toString();
+ this.uloga = Uloga.Kupac;
+ }
+
+ public KupacDto() {
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getKorisnickoIme() {
+ return korisnickoIme;
+ }
+
+ public void setKorisnickoIme(String korisnickoIme) {
+ this.korisnickoIme = korisnickoIme;
+ }
+
+ public String getLozinka() {
+ return lozinka;
+ }
+
+ public void setLozinka(String lozinka) {
+ this.lozinka = lozinka;
+ }
+
+ public String getIme() {
+ return ime;
+ }
+
+ public void setIme(String ime) {
+ this.ime = ime;
+ }
+
+ public String getPrezime() {
+ return prezime;
+ }
+
+ public void setPrezime(String prezime) {
+ this.prezime = prezime;
+ }
+
+ public String getPol() {
+ return pol;
+ }
+
+ public void setPol(String pol) {
+ this.pol = pol;
+ }
+
+ public String getDatumRodjenja() {
+ return datumRodjenja;
+ }
+
+ public void setDatumRodjenja(String datumRodjenja) {
+ this.datumRodjenja = datumRodjenja;
+ }
+
+ public Uloga getUloga() {
+ return uloga;
+ }
+
+ public void setUloga(Uloga uloga) {
+ this.uloga = uloga;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/LoginDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/LoginDto.java
new file mode 100644
index 0000000..3bd54ab
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/LoginDto.java
@@ -0,0 +1,107 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.Pol;
+import vezbe.demo.model.Uloga;
+
+import javax.persistence.*;
+import java.util.Date;
+
+import static javax.persistence.EnumType.STRING;
+
+public class LoginDto {
+ private String korisnickoIme;
+ private String lozinka;
+ private String ime;
+ private String prezime;
+ private String datumRodjenja;
+ private String pol;
+ private String uloga;
+ private String sessionId;
+
+ public LoginDto() {
+ }
+
+ public LoginDto(String korisnickoIme, String lozinka, String ime, String prezime, String datumRodjenja,String pol,String uloga) {
+ this.korisnickoIme = korisnickoIme;
+ this.lozinka = lozinka;
+ this.ime = ime;
+ this.prezime = prezime;
+ this.datumRodjenja = datumRodjenja;
+ this.pol = pol;
+ this.uloga = uloga;
+ }
+ public LoginDto(String korisnickoIme, String lozinka, String ime, String prezime, Date datumRodjenja,Pol pol,Uloga uloga) {
+
+ this.korisnickoIme = korisnickoIme;
+ this.lozinka = lozinka;
+ this.ime = ime;
+ this.prezime = prezime;
+ this.datumRodjenja = datumRodjenja.toString();
+ this.pol = pol.name();
+ this.uloga = uloga.name();
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ public void setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ public String getLozinka() {
+ return lozinka;
+ }
+
+ public void setLozinka(String lozinka) {
+ this.lozinka = lozinka;
+ }
+
+ public String getIme() {
+ return ime;
+ }
+
+ public void setIme(String ime) {
+ this.ime = ime;
+ }
+
+ public String getPrezime() {
+ return prezime;
+ }
+
+ public void setPrezime(String prezime) {
+ this.prezime = prezime;
+ }
+
+ public String getDatumRodjenja() {
+ return datumRodjenja;
+ }
+
+ public void setDatumRodjenja(String datumRodjenja) {
+ this.datumRodjenja = datumRodjenja;
+ }
+
+ public String getPol() {
+ return pol;
+ }
+
+ public void setPol(String pol) {
+ this.pol = pol;
+ }
+
+ public String getKorisnickoIme() {
+ return korisnickoIme;
+ }
+
+ public void setKorisnickoIme(String korisnickoIme) {
+ this.korisnickoIme = korisnickoIme;
+ }
+
+ public String getUloga() {
+ return uloga;
+ }
+
+ public void setUloga(String uloga) {
+ this.uloga = uloga;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/MenadzerDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/MenadzerDto.java
new file mode 100644
index 0000000..c0b1970
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/MenadzerDto.java
@@ -0,0 +1,114 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.*;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import static javax.persistence.EnumType.STRING;
+
+public class MenadzerDto {
+
+ private Long id;
+
+ private String korisnickoIme;
+
+ private String lozinka;
+
+ private String ime;
+
+ private String prezime;
+
+ private String pol;
+
+ private String datumRodjenja;
+
+ private Uloga uloga;
+
+ public MenadzerDto(Long id, String korisnickoIme, String lozinka, String ime, String prezime, String pol, String datumRodjenja) {
+
+ this.uloga = Uloga.Kupac;
+ }
+ public MenadzerDto(Kupac kupac) {
+ this.id = kupac.getId();
+ this.korisnickoIme = kupac.getKorisnickoIme();
+ this.lozinka = kupac.getLozinka();
+ this.ime = kupac.getIme();
+ this.prezime = kupac.getPrezime();
+ this.pol = kupac.getPol().name();
+ this.datumRodjenja = kupac.getDatumRodjenja().toString();
+ this.uloga = Uloga.Kupac;
+ }
+
+ public MenadzerDto() {
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getKorisnickoIme() {
+ return korisnickoIme;
+ }
+
+ public void setKorisnickoIme(String korisnickoIme) {
+ this.korisnickoIme = korisnickoIme;
+ }
+
+ public String getLozinka() {
+ return lozinka;
+ }
+
+ public void setLozinka(String lozinka) {
+ this.lozinka = lozinka;
+ }
+
+ public String getIme() {
+ return ime;
+ }
+
+ public void setIme(String ime) {
+ this.ime = ime;
+ }
+
+ public String getPrezime() {
+ return prezime;
+ }
+
+ public void setPrezime(String prezime) {
+ this.prezime = prezime;
+ }
+
+ public String getPol() {
+ return pol;
+ }
+
+ public void setPol(String pol) {
+ this.pol = pol;
+ }
+
+ public String getDatumRodjenja() {
+ return datumRodjenja;
+ }
+
+ public void setDatumRodjenja(String datumRodjenja) {
+ this.datumRodjenja = datumRodjenja;
+ }
+
+ public Uloga getUloga() {
+ return uloga;
+ }
+
+ public void setUloga(Uloga uloga) {
+ this.uloga = uloga;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/NoviMenadzerDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/NoviMenadzerDto.java
new file mode 100644
index 0000000..1bd6d3a
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/NoviMenadzerDto.java
@@ -0,0 +1,30 @@
+package vezbe.demo.dto;
+
+public class NoviMenadzerDto {
+ private String korisnickoIme;
+ private String naziv;
+
+ public String getKorisnickoIme() {
+ return korisnickoIme;
+ }
+
+ public void setKorisnickoIme(String korisnickoIme) {
+ this.korisnickoIme = korisnickoIme;
+ }
+
+ public NoviMenadzerDto() {
+ }
+
+ public String getNaziv() {
+ return naziv;
+ }
+
+ public void setNaziv(String naziv) {
+ this.naziv = naziv;
+ }
+
+ public NoviMenadzerDto(String korisnickoIme, String naziv) {
+ this.korisnickoIme = korisnickoIme;
+ this.naziv = naziv;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/PorudzbinaDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/PorudzbinaDto.java
new file mode 100644
index 0000000..375b02e
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/PorudzbinaDto.java
@@ -0,0 +1,58 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.StatusPorudzbine;
+
+public class PorudzbinaDto {
+ private String id;
+ private double cena;
+ private String datum;
+ private String status;
+
+ public PorudzbinaDto(String id, double cena, String datum) {
+ this.id = id;
+ this.cena = cena;
+ this.datum = datum;
+ }
+
+ public PorudzbinaDto(String id, double cena, String datum, StatusPorudzbine status) {
+ this.id = id;
+ this.cena = cena;
+ this.datum = datum;
+ this.status = status.toString();
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(StatusPorudzbine status) {
+ this.status = status.toString();
+ }
+
+ public PorudzbinaDto() {
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public double getCena() {
+ return cena;
+ }
+
+ public void setCena(double cena) {
+ this.cena = cena;
+ }
+
+ public String getDatum() {
+ return datum;
+ }
+
+ public void setDatum(String datum) {
+ this.datum = datum;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranBasicInfoDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranBasicInfoDto.java
new file mode 100644
index 0000000..fc4e6cc
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranBasicInfoDto.java
@@ -0,0 +1,43 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.Lokacija;
+
+public class RestoranBasicInfoDto {
+ private String naziv;
+ private String tip;
+ private String adresa;
+
+ public RestoranBasicInfoDto() {
+
+ }
+
+ public RestoranBasicInfoDto(String naziv, String tip, String adresa) {
+ this.naziv = naziv;
+ this.tip = tip;
+ this.adresa = adresa;
+ }
+
+ public String getNaziv() {
+ return naziv;
+ }
+
+ public void setNaziv(String naziv) {
+ this.naziv = naziv;
+ }
+
+ public String getTip() {
+ return tip;
+ }
+
+ public void setTip(String tip) {
+ this.tip = tip;
+ }
+
+ public String getAdresa() {
+ return adresa;
+ }
+
+ public void setAdresa(String adresa) {
+ this.adresa = adresa;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranDto.java
new file mode 100644
index 0000000..15bc83e
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranDto.java
@@ -0,0 +1,62 @@
+package vezbe.demo.dto;
+
+
+public class RestoranDto {
+ private String naziv;
+ private String tipRestorana;
+ private double geoDuzina;
+ private double geoSirina;
+ private String adresa;
+
+ public RestoranDto() {
+ }
+
+
+ public double getGeoDuzina() {
+ return geoDuzina;
+ }
+
+ public void setGeoDuzina(double geoDuzina) {
+ this.geoDuzina = geoDuzina;
+ }
+
+ public double getGeoSirina() {
+ return geoSirina;
+ }
+
+ public void setGeoSirina(double geoSirina) {
+ this.geoSirina = geoSirina;
+ }
+
+ public String getAdresa() {
+ return adresa;
+ }
+
+ public void setAdresa(String adresa) {
+ this.adresa = adresa;
+ }
+
+ public RestoranDto(String naziv, String tipRestorana, double geoDuzina, double geoSirina, String adresa) {
+ this.naziv = naziv;
+ this.tipRestorana = tipRestorana;
+ this.geoDuzina = geoDuzina;
+ this.geoSirina = geoSirina;
+ this.adresa = adresa;
+ }
+
+ public String getNaziv() {
+ return naziv;
+ }
+
+ public void setNaziv(String naziv) {
+ this.naziv = naziv;
+ }
+
+ public String getTipRestorana() {
+ return tipRestorana;
+ }
+
+ public void setTipRestorana(String tipRestorana) {
+ this.tipRestorana = tipRestorana;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranImeDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranImeDto.java
new file mode 100644
index 0000000..533fac6
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranImeDto.java
@@ -0,0 +1,20 @@
+package vezbe.demo.dto;
+
+public class RestoranImeDto {
+ private String naziv;
+
+ public RestoranImeDto() {
+ }
+
+ public RestoranImeDto(String naziv) {
+ this.naziv = naziv;
+ }
+
+ public String getNaziv() {
+ return naziv;
+ }
+
+ public void setNaziv(String naziv) {
+ this.naziv = naziv;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranIspisDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranIspisDto.java
new file mode 100644
index 0000000..eef439e
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranIspisDto.java
@@ -0,0 +1,77 @@
+package vezbe.demo.dto;
+
+import vezbe.demo.model.Artikal;
+import vezbe.demo.model.Komentar;
+import vezbe.demo.model.Lokacija;
+
+import java.util.List;
+import java.util.Set;
+
+public class RestoranIspisDto {
+ private String naziv;
+ private String tip;
+ private Lokacija lokacija;
+ private double prosecnaOcena;
+ private Set komentari;
+ private Set ponuda;
+
+ public RestoranIspisDto() {
+ }
+
+ public RestoranIspisDto(String naziv, String tip, Lokacija lokacija, double prosecnaOcena, Set komentari, Set ponuda) {
+ this.naziv = naziv;
+ this.tip = tip;
+ this.lokacija = lokacija;
+ this.prosecnaOcena = prosecnaOcena;
+ this.komentari = komentari;
+ this.ponuda = ponuda;
+ }
+
+ public String getNaziv() {
+ return naziv;
+ }
+
+ public void setNaziv(String naziv) {
+ this.naziv = naziv;
+ }
+
+ public String getTip() {
+ return tip;
+ }
+
+ public void setTip(String tip) {
+ this.tip = tip;
+ }
+
+ public Lokacija getLokacija() {
+ return lokacija;
+ }
+
+ public void setLokacija(Lokacija lokacija) {
+ this.lokacija = lokacija;
+ }
+
+ public double getProsecnaOcena() {
+ return prosecnaOcena;
+ }
+
+ public void setProsecnaOcena(double prosecnaOcena) {
+ this.prosecnaOcena = prosecnaOcena;
+ }
+
+ public Set getKomentari() {
+ return komentari;
+ }
+
+ public void setKomentari(Set komentari) {
+ this.komentari = komentari;
+ }
+
+ public Set getPonuda() {
+ return ponuda;
+ }
+
+ public void setPonuda(Set ponuda) {
+ this.ponuda = ponuda;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranPretragaDto.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranPretragaDto.java
new file mode 100644
index 0000000..e9a36d1
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/dto/RestoranPretragaDto.java
@@ -0,0 +1,40 @@
+package vezbe.demo.dto;
+
+public class RestoranPretragaDto {
+ private String naziv;
+ private String tip;
+ private String adresa;
+
+ public RestoranPretragaDto() {
+ }
+
+ public RestoranPretragaDto(String naziv, String tip, String adresa) {
+ this.naziv = naziv;
+ this.tip = tip;
+ this.adresa = adresa;
+ }
+
+ public String getNaziv() {
+ return naziv;
+ }
+
+ public void setNaziv(String naziv) {
+ this.naziv = naziv;
+ }
+
+ public String getTip() {
+ return tip;
+ }
+
+ public void setTip(String tip) {
+ this.tip = tip;
+ }
+
+ public String getAdresa() {
+ return adresa;
+ }
+
+ public void setAdresa(String adresa) {
+ this.adresa = adresa;
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Artikal.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Artikal.java
index 09274b7..54ebfab 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Artikal.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Artikal.java
@@ -1,7 +1,11 @@
package vezbe.demo.model;
+import com.fasterxml.jackson.annotation.JsonSetter;
+
import javax.persistence.*;
import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Base64;
@Entity
public class Artikal implements Serializable {
@@ -20,9 +24,48 @@ public class Artikal implements Serializable {
private String opis;
+ @Column(nullable = true, length = 64)
+ private String slika;
+
+ @Transient
+ public String SlikaImagePath() {
+ if (slika == null || id == null) return null;
+
+ //return "/artikal-slike/" + id + "/" + slika;
+ return "/src/main/resources/static/images/"+ id + "/" + slika;
+ }
+
+
+ /*@Lob
+ @Column(name = "slika")
+ private byte[] slika;
+
+ @JsonSetter("slika")
+ public void setSlika(String content) {
+ try {
+ this.slika = Base64.getDecoder().decode(content.getBytes("UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public byte[] getSlika() {
+ return slika;
+ }
+*/
public Artikal() {
}
+ public Artikal(Long id, String naziv, double cena, TipArtikla tipArtikla, double kolicina, String opis, String slika) {
+ this.id = id;
+ this.naziv = naziv;
+ this.cena = cena;
+ this.tipArtikla = tipArtikla;
+ this.kolicina = kolicina;
+ this.opis = opis;
+ this.slika = slika;
+ }
+
public Artikal(String naziv, int cena, TipArtikla tipArtikla, int kolicina, String opis) {
this.naziv = naziv;
this.cena = cena;
@@ -31,6 +74,28 @@ public Artikal(String naziv, int cena, TipArtikla tipArtikla, int kolicina, Stri
this.opis = opis;
}
+ public String getSlika() {
+ return slika;
+ }
+
+ public void setSlika(String slika) {
+ this.slika = slika;
+ }
+
+
+ public Artikal(String naziv, double cena, TipArtikla tipArtikla) {
+ this.naziv = naziv;
+ this.cena = cena;
+ this.tipArtikla = tipArtikla;
+ }
+ /* public Artikal(String naziv, double cena, TipArtikla tipArtikla, byte[] slika) {
+ this.naziv = naziv;
+ this.cena = cena;
+ this.tipArtikla = tipArtikla;
+ this.slika = slika;
+ }
+
+ */
public Long getId() {
return id;
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Dostavljac.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Dostavljac.java
index b7362e3..7c235d7 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Dostavljac.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Dostavljac.java
@@ -1,5 +1,7 @@
package vezbe.demo.model;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
import javax.persistence.*;
import java.io.Serializable;
import java.util.HashSet;
@@ -8,14 +10,19 @@
@Entity
public class Dostavljac extends Korisnik implements Serializable {
- @OneToMany
+ @OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name ="dostavljac_id")
+ @JsonIgnore
private Set porudzbineZaDostavu= new HashSet<>();
public Dostavljac(String korisnickoIme, String lozinka, String ime, String prezime, Pol pol, Date datumRodjenja, Set porudzbineZaDostavu) {
super(korisnickoIme, lozinka, ime, prezime, pol, datumRodjenja, Uloga.Dostavljac);
this.porudzbineZaDostavu = porudzbineZaDostavu;
}
+ public Dostavljac(String korisnickoIme, String lozinka, String ime, String prezime, Pol pol, Date datumRodjenja) {
+ super(korisnickoIme, lozinka, ime, prezime, pol, datumRodjenja, Uloga.Dostavljac);
+ this.porudzbineZaDostavu = new HashSet<>();
+ }
public Dostavljac() {
super();
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/FileUploadUtil.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/FileUploadUtil.java
new file mode 100644
index 0000000..2c4c282
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/FileUploadUtil.java
@@ -0,0 +1,26 @@
+package vezbe.demo.model;
+
+import java.io.*;
+import java.nio.file.*;
+
+import org.springframework.web.multipart.MultipartFile;
+
+public class FileUploadUtil {
+
+ public static void saveFile(String uploadDir, String fileName,
+ MultipartFile multipartFile) throws IOException {
+ Path uploadPath = Paths.get(uploadDir);
+
+ if (!Files.exists(uploadPath)) {
+ Files.createDirectories(uploadPath);
+ }
+
+
+ try (InputStream inputStream = multipartFile.getInputStream()) {
+ Path filePath = uploadPath.resolve(fileName);
+ Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
+ } catch (IOException ioe) {
+ throw new IOException("Could not save image file: " + fileName, ioe);
+ }
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Korisnik.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Korisnik.java
index a3f2ae6..841907d 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Korisnik.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Korisnik.java
@@ -8,7 +8,7 @@
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
-public abstract class Korisnik implements Serializable {
+public class Korisnik implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -43,6 +43,13 @@ public Korisnik(String korisnickoIme, String lozinka, String ime, String prezime
public Korisnik() {
}
+ public Korisnik(String username, String password, String ime, String prezime) {
+ this.korisnickoIme = korisnickoIme;
+ this.lozinka = lozinka;
+ this.ime = ime;
+ this.prezime = prezime;
+ this.uloga = Uloga.Admin;
+ }
public String getKorisnickoIme() {
return korisnickoIme;
@@ -107,4 +114,5 @@ public Uloga getUloga() {
public void setUloga(Uloga uloga) {
this.uloga = uloga;
}
+
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Kupac.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Kupac.java
index 13ae568..b63ee74 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Kupac.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Kupac.java
@@ -1,5 +1,7 @@
package vezbe.demo.model;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
import javax.persistence.*;
import java.io.Serializable;
import java.util.HashSet;
@@ -9,7 +11,7 @@
@Entity
public class Kupac extends Korisnik implements Serializable {
@Column(name = "porudzbina_id")
- @OneToMany(cascade = CascadeType.ALL, mappedBy="kupac")
+ @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER, mappedBy="kupac")
private Set listaPorudzbina = new HashSet<>();
private int bodovi;
@OneToOne
@@ -18,15 +20,51 @@ public class Kupac extends Korisnik implements Serializable {
public Kupac(String korisnickoIme, String lozinka, String ime, String prezime, Pol pol, Date datumRodjenja, Set listaPorudzbina, int bodovi, TipKupca tipKupca) {
super(korisnickoIme, lozinka, ime, prezime, pol, datumRodjenja, Uloga.Kupac);
- this.listaPorudzbina = listaPorudzbina;
+ Porudzbina porudzbina = new Porudzbina();
+ boolean sadrziKorpu = false;
+ porudzbina.setKupac(Kupac.this);
+ porudzbina.setStatusPorudzbine(StatusPorudzbine.USastavljanu);
+ Set noviSetPorudzbina = new HashSet<>();
+ if(listaPorudzbina==null){
+ noviSetPorudzbina.add(porudzbina);
+ this.listaPorudzbina = noviSetPorudzbina;
+ }else{
+ for(Porudzbina p: listaPorudzbina){
+ if(p.getStatus().equals(StatusPorudzbine.USastavljanu)){
+ sadrziKorpu = true;
+ break;
+ }
+ }
+ if(sadrziKorpu){
+ this.listaPorudzbina = listaPorudzbina;
+ }else{
+ listaPorudzbina.add(porudzbina);
+ this.listaPorudzbina = listaPorudzbina;
+ }
+ }
this.bodovi = bodovi;
this.tipKupca =tipKupca ;
}
- public Kupac() {
+ public Kupac(String korisnickoIme, String lozinka, String ime, String prezime, Pol pol, Date datumRodjenja){
+ super(korisnickoIme, lozinka, ime, prezime, pol,datumRodjenja, Uloga.Kupac);
+ this.bodovi = 0;
+ this.tipKupca = null;
+ Porudzbina porudzbina = new Porudzbina();
+ porudzbina.setKupac(Kupac.this);
+ porudzbina.setStatusPorudzbine(StatusPorudzbine.USastavljanu);
+ this.listaPorudzbina.add(porudzbina);
+
}
+ public Kupac() {
+ Porudzbina porudzbina = new Porudzbina();
+ porudzbina.setKupac(Kupac.this);
+ porudzbina.setStatusPorudzbine(StatusPorudzbine.USastavljanu);
+ this.listaPorudzbina.add(porudzbina);
+ }
+
public int getBodovi() {
return bodovi;
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Lokacija.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Lokacija.java
index ff6d483..e272e3a 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Lokacija.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Lokacija.java
@@ -9,7 +9,7 @@ public class Lokacija implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private double geoDuzina;
- private double geoSirina;//double
+ private double geoSirina;
@Column(nullable = false)
private String adresa;
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Menadzer.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Menadzer.java
index d777e61..f5aadc6 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Menadzer.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Menadzer.java
@@ -14,6 +14,10 @@ public Menadzer(String korisnickoIme, String lozinka, String ime, String prezime
super(korisnickoIme, lozinka, ime, prezime, pol, datumRodjenja, Uloga.Menadzer);
this.restoran = restoran;
}
+ public Menadzer(String korisnickoIme, String lozinka, String ime, String prezime, Pol pol, Date datumRodjenja) {
+ super(korisnickoIme, lozinka, ime, prezime, pol, datumRodjenja, Uloga.Menadzer);
+ this.restoran = null;
+ }
public Menadzer() {
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Porudzbina.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Porudzbina.java
index 67579e6..012fc42 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Porudzbina.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Porudzbina.java
@@ -1,6 +1,8 @@
package vezbe.demo.model;
+import com.fasterxml.jackson.annotation.JsonIgnore;
import org.hibernate.annotations.GenericGenerator;
+import org.springframework.data.repository.cdi.Eager;
import javax.persistence.*;
import java.io.Serializable;
@@ -20,10 +22,11 @@ public class Porudzbina implements Serializable {
@GeneratedValue(
strategy = GenerationType.AUTO)
private UUID id;
- @OneToMany //ManyToMany nova klasa stavka pordurdzbine artikal i kolicina polja
+ @OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "porudzbina_id")
private Set poruceniArtikli = new HashSet<>();
@ManyToOne
+ @JsonIgnore
private Restoran restoran;
@Column(name = "datum_i_vreme")
@@ -31,6 +34,7 @@ public class Porudzbina implements Serializable {
private double cena;
@ManyToOne
@JoinColumn(name = "kupac_id")
+ @JsonIgnore
private Kupac kupac;
@Enumerated(EnumType.STRING)
private StatusPorudzbine statusPorudzbine;
@@ -41,8 +45,16 @@ public UUID getUUID() {
}
public Porudzbina() {
+ this.cena = 0;
+ }
+ public Porudzbina(StatusPorudzbine statusPorudzbine, Kupac kupac)
+ {
+ this.cena = 0;
+ this.statusPorudzbine = statusPorudzbine;
+ this.kupac = kupac;
}
+
public Porudzbina( Set poruceniArtikli, Restoran restoran, Date datumIVreme, long cena, Kupac kupac, StatusPorudzbine statusPorudzbine) {
this.poruceniArtikli = poruceniArtikli;
this.restoran = restoran;
@@ -51,6 +63,13 @@ public Porudzbina( Set poruceniArtikli, Restoran restoran, Dat
this.kupac =kupac;
this.statusPorudzbine = statusPorudzbine;
}
+ public Porudzbina(Kupac kupac,Restoran restoran, StatusPorudzbine statusPorudzbine,Date datumIVreme) {
+ this.datumIVreme = datumIVreme;
+ this.statusPorudzbine = statusPorudzbine;
+ this.kupac = kupac;
+ this.restoran = restoran;
+ this.cena = 0;
+ }
public void setUUID(UUID id) {
this.id = id;
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Restoran.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Restoran.java
index c51e5bb..1dbcec3 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Restoran.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/Restoran.java
@@ -17,7 +17,7 @@ public class Restoran implements Serializable {
@Column(nullable = false)
private String tipRestorana;
- @OneToMany
+ @OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "restoran_id")
private Set ponuda = new HashSet<>();
@@ -41,6 +41,11 @@ public Restoran(String naziv, String tipRestorana, Lokacija lokacija) {
this.lokacija = lokacija;
}
+ public Restoran(String naziv, String tipRestorana) {
+ this.naziv = naziv;
+ this.tipRestorana = tipRestorana;
+ }
+
public Long getId() {
return id;
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/StatusPorudzbine.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/StatusPorudzbine.java
index 321c023..5ee4373 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/model/StatusPorudzbine.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/model/StatusPorudzbine.java
@@ -6,5 +6,6 @@ public enum StatusPorudzbine {
CekaDostavljača,
UTransportu,
Dostavljena,
+ USastavljanu,
Otkazana;
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/repository/MenadzerRepository.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/repository/MenadzerRepository.java
index ce08fdf..49d7d10 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/repository/MenadzerRepository.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/repository/MenadzerRepository.java
@@ -4,4 +4,5 @@
import vezbe.demo.model.Menadzer;
public interface MenadzerRepository extends JpaRepository {
+
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/ArtikalService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/ArtikalService.java
new file mode 100644
index 0000000..7ab02ae
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/ArtikalService.java
@@ -0,0 +1,43 @@
+package vezbe.demo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.model.Artikal;
+import vezbe.demo.model.Restoran;
+import vezbe.demo.repository.ArtikalRepository;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+@Service
+public class ArtikalService {
+
+ @Autowired
+ private ArtikalRepository artikalRepository;
+
+ public Set dodajArtikal(Artikal artikal, Restoran restoran){
+ artikalRepository.save(artikal);
+ restoran.getPonuda().add(artikal);
+
+ /* List lista = new ArrayList<>();
+ for(Artikal artikal: restoran.getPonuda()){
+ lista.add(artikal);
+ }
+*/
+ return restoran.getPonuda();
+
+ }
+ public Artikal findById(Long id){
+ Artikal a = null;
+ for(Artikal artikal: artikalRepository.findAll()){
+ if(artikal.getId().equals(id)) {
+ a = artikal;
+ }
+ }
+ return a;
+ }
+ public void save(Artikal artikal){
+ artikalRepository.save(artikal);
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/DostavljacService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/DostavljacService.java
new file mode 100644
index 0000000..7b1307b
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/DostavljacService.java
@@ -0,0 +1,69 @@
+package vezbe.demo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.model.*;
+import vezbe.demo.repository.DostavljacRepository;
+import vezbe.demo.repository.MenadzerRepository;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+
+@Service
+public class DostavljacService {
+
+ @Autowired
+ private DostavljacRepository dostavljacRepository;
+
+ public Dostavljac findOne(Long id){
+ Optional foundDostavljac = dostavljacRepository.findById(id);
+ if (foundDostavljac.isPresent())
+ return foundDostavljac.get();
+
+ return null;
+ }
+
+ public List findAll(){
+ return dostavljacRepository.findAll();
+ }
+
+ public void save(Dostavljac dostavljac){
+ dostavljacRepository.save(dostavljac);
+ }
+
+ public void delete(Dostavljac dostavljac){dostavljacRepository.delete(dostavljac);}
+
+ public Set findAllById(Long id){
+ return dostavljacRepository.getById(id).getPorudzbineZaDostavu();
+ }
+
+ public void addPorudzbina(Dostavljac dostavljac, Porudzbina porudzbina){
+// for(Porudzbina porudzbina1: dostavljac.getPorudzbineZaDostavu()){
+// if(porudzbina1.getUUID().equals(porudzbina.getUUID())){
+// dostavljac.getPorudzbineZaDostavu().remove(porudzbina1);
+// }
+// }
+ dostavljac.getPorudzbineZaDostavu().add(porudzbina);
+ dostavljacRepository.save(dostavljac);
+ }
+ public Dostavljac findDostavljac(String korisnickoIme){
+ for(Dostavljac dostavljac: dostavljacRepository.findAll()){
+ if(dostavljac.getKorisnickoIme().equals(korisnickoIme)){
+ return dostavljac;
+ }
+ }
+ return null;
+ }
+ public void addCondition(Dostavljac dostavljac, Porudzbina porudzbina){
+ for(Porudzbina p: dostavljac.getPorudzbineZaDostavu()){
+ if(p.getUUID().equals(porudzbina.getUUID())){
+ p.setStatusPorudzbine(StatusPorudzbine.UTransportu);
+ dostavljacRepository.save(dostavljac);
+ return;
+ }
+ }
+ dostavljac.getPorudzbineZaDostavu().add(porudzbina);
+ dostavljacRepository.save(dostavljac);
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KomentarService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KomentarService.java
new file mode 100644
index 0000000..30981fb
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KomentarService.java
@@ -0,0 +1,41 @@
+package vezbe.demo.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.dto.KomentarDto;
+import vezbe.demo.model.Komentar;
+import vezbe.demo.model.Restoran;
+import vezbe.demo.repository.KomentarRepository;
+
+
+@Service
+public class KomentarService {
+ @Autowired
+ KomentarRepository komentarRepository;
+
+ public double getProsecnaOcena(Long restoranId) {
+ double ocena = 0;
+ for (Komentar komentar : komentarRepository.findAll()) {
+ if (komentar.getRestoran().getId().equals(restoranId)) {
+ ocena += komentar.getOcena();
+ }
+ }
+ return ocena;
+ }
+
+ public Set getByRestoran(Long restoranId) {
+ Set komentarList = new HashSet<>();
+ for (Komentar komentar : komentarRepository.findAll()) {
+ if (komentar.getRestoran().getId().equals(restoranId)) {
+ KomentarDto komentarDto = new KomentarDto(komentar.getKupac().getKorisnickoIme(), komentar.getTekst(), komentar.getOcena());
+ komentarList.add(komentarDto);
+ }
+ }
+ return komentarList;
+ }
+}
\ No newline at end of file
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KorisnikService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KorisnikService.java
new file mode 100644
index 0000000..7cb7029
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KorisnikService.java
@@ -0,0 +1,45 @@
+package vezbe.demo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.dto.KorisnikDto;
+import vezbe.demo.model.*;
+import vezbe.demo.repository.KorisnikRepository;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class KorisnikService {
+
+ @Autowired
+ private KorisnikRepository korisnikRepository;
+
+ public Korisnik login(String username, String password) {
+ List listaKorisnika = new ArrayList<>();
+
+
+ listaKorisnika = korisnikRepository.findAll();
+ Korisnik korisnik = null;
+ for (Korisnik k : listaKorisnika) {
+ if (k.getKorisnickoIme().equals(username) && k.getLozinka().equals(password)) {
+ korisnik = k;
+ }
+ }
+
+ return korisnik;
+
+ }
+ public List findAll(){
+ List listaKorisnika= new ArrayList<>();
+ for(Korisnik korisnik: korisnikRepository.findAll()){
+ KorisnikDto korisnikDto = new KorisnikDto(korisnik);
+ listaKorisnika.add(korisnikDto);
+ }
+ return listaKorisnika;
+ }
+
+
+
+
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KupacService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KupacService.java
index df41abb..8c496ab 100644
--- a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KupacService.java
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/KupacService.java
@@ -2,11 +2,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import vezbe.demo.dto.PorudzbinaDto;
import vezbe.demo.model.Kupac;
+import vezbe.demo.model.Porudzbina;
+import vezbe.demo.model.StatusPorudzbine;
import vezbe.demo.repository.KupacRepository;
-import java.util.List;
-import java.util.Optional;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
@Service
public class KupacService {
@@ -15,11 +19,13 @@ public class KupacService {
private KupacRepository kupacRepository;
public Kupac findOne(Long id){
- Optional foundKupac = kupacRepository.findById(id);
- if (foundKupac.isPresent())
- return foundKupac.get();
-
- return null;
+ Kupac k = null;
+ for(Kupac kupac: kupacRepository.findAll()){
+ if(kupac.getId().equals(id)){
+ k = kupac;
+ }
+ }
+ return k;
}
public List findAll(){
@@ -31,4 +37,56 @@ public Kupac save(Kupac kupac){
}
public void delete(Kupac kupac){kupacRepository.delete(kupac);}
+
+ public boolean checkIfUsernameIsAvailable(String korisnickoIme){
+ for(Kupac kupac: kupacRepository.findAll()){
+ if(korisnickoIme.equals(kupac.getKorisnickoIme())){
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ public Set findAllPorudzbineByID(Long id){
+ Set listaPorudzbina = kupacRepository.getById(id).getListaPorudzbina();
+ Set bezPrazneListe = new HashSet<>();
+ for(Porudzbina porudzbina: listaPorudzbina) {
+ if (porudzbina.getStatusPorudzbine().equals(StatusPorudzbine.USastavljanu)) {
+ continue;
+ }
+ bezPrazneListe.add(porudzbina);
+ }
+ return bezPrazneListe;
+ }
+ public void updateKupac(Kupac kupac, Porudzbina porudzbina){
+ kupac.getListaPorudzbina().add(porudzbina);
+ kupacRepository.save(kupac);
+ }
+ public void dodajBodove(double cena, Kupac kupac){
+ double noviBodovi = cena/1000 * 133;
+ kupac.setBodovi((int) (kupac.getBodovi() + noviBodovi));
+ kupacRepository.save(kupac);
+ }
+ public Set svePorudzbineBasicInfo(Long id){
+ Set porudzbine = kupacRepository.getById(id).getListaPorudzbina();
+
+ Set dto = new HashSet<>();
+ for(Porudzbina porudzbina: porudzbine){
+ if(porudzbina.getStatusPorudzbine().equals(StatusPorudzbine.USastavljanu)){
+ continue;
+ }
+ Date date1 = porudzbina.getDatumIVreme();
+
+
+ PorudzbinaDto item = new PorudzbinaDto(porudzbina.getUUID().toString(),porudzbina.getCena(),porudzbina.getDatumIVreme().toString());
+ dto.add(item);
+ System.out.println(item.getId());
+ System.out.println(item.getCena());
+ System.out.println(item.getDatum());
+ }
+
+ return dto;
+ }
+
}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/LokacijaService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/LokacijaService.java
new file mode 100644
index 0000000..ce75304
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/LokacijaService.java
@@ -0,0 +1,16 @@
+package vezbe.demo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.model.Lokacija;
+import vezbe.demo.repository.LokacijaRepository;
+
+@Service
+public class LokacijaService {
+ @Autowired
+ private LokacijaRepository lokacijaRepository;
+
+ public void save(Lokacija lokacija){
+ this.lokacijaRepository.save(lokacija);
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/MenadzerService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/MenadzerService.java
new file mode 100644
index 0000000..7707e37
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/MenadzerService.java
@@ -0,0 +1,58 @@
+package vezbe.demo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.model.*;
+import vezbe.demo.repository.MenadzerRepository;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class MenadzerService {
+
+ @Autowired
+ private MenadzerRepository menadzerRepository;
+
+ public Menadzer findOne(Long id){
+ Optional foundMenadzer = menadzerRepository.findById(id);
+ if (foundMenadzer.isPresent())
+ return foundMenadzer.get();
+
+ return null;
+ }
+
+ public List findAll(){
+ return menadzerRepository.findAll();
+ }
+
+ public Menadzer save(Menadzer menadzer){
+ return menadzerRepository.save(menadzer);
+ }
+
+ public void delete(Menadzer menadzer){menadzerRepository.delete(menadzer);}
+
+ public Restoran findRestoran(Long ID){
+ for(Menadzer menadzer: menadzerRepository.findAll()){
+ if(menadzer.getId().equals(ID)){
+ return menadzer.getRestoran();
+
+ }
+ }
+ return null;
+ }
+
+ public Menadzer postaviNovogMenadzera(String korisnickoIme, Restoran restoran){
+ Menadzer m = null;
+ for(Menadzer menadzer: menadzerRepository.findAll()){
+ if(menadzer.getKorisnickoIme().equals(korisnickoIme)){
+ m = menadzer;
+ }
+ }
+ m.setRestoran(restoran);
+ menadzerRepository.save(m);
+ return m;
+ }
+
+}
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/PorudzbinaService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/PorudzbinaService.java
new file mode 100644
index 0000000..65cf970
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/PorudzbinaService.java
@@ -0,0 +1,232 @@
+package vezbe.demo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.dto.PorudzbinaDto;
+import vezbe.demo.model.*;
+import vezbe.demo.repository.PorudzbinaRepository;
+import java.util.*;
+
+@Service
+public class PorudzbinaService {
+ @Autowired
+ PorudzbinaRepository porudzbinaRepository;
+
+ @Autowired
+ RestoranService restoranService;
+
+ @Autowired
+ StavkaPorudzbineService stavkaPorudzbineService;
+
+ @Autowired
+ KupacService kupacService;
+
+ @Autowired
+ DostavljacService dostavljacService;
+
+
+ public List getListaPorudzbina(Restoran restoran) {
+ List listaPorudzbina = new ArrayList<>();
+ for (Porudzbina porudzbina : porudzbinaRepository.findAll()) {
+ for (StavkaPorudzbine stavkaPorudzbine : porudzbina.getPoruceniArtikli()) {
+ for (Artikal artikal : restoran.getPonuda()) {
+ if (stavkaPorudzbine.getPoruceniArtikal().getId().equals(artikal.getId())) {
+ if(!listaPorudzbina.contains(porudzbina)) {
+ listaPorudzbina.add(porudzbina);
+ break;
+ }
+ }
+
+ }
+ }
+ }
+ List dtoList = new ArrayList<>();
+ for(Porudzbina porudzbina: listaPorudzbina){
+ PorudzbinaDto dto = new PorudzbinaDto(porudzbina.getId().toString(), porudzbina.getCena(), porudzbina.getDatumIVreme().toString(), porudzbina.getStatus());
+ dtoList.add(dto);
+ }
+
+ return dtoList;
+ }
+ public Set findCekaDostavljaca(){
+ Set setp = new HashSet<>();
+ for(Porudzbina porudzbina: porudzbinaRepository.findAll()){
+ if(porudzbina.getStatus().equals(StatusPorudzbine.CekaDostavljača)){
+ PorudzbinaDto porudzbinaDto = new PorudzbinaDto(porudzbina.getUUID().toString(),porudzbina.getCena(), porudzbina.getDatumIVreme().toString(), porudzbina.getStatus());
+ setp.add(porudzbinaDto);
+ }
+ }
+ return setp;
+ }
+ public void dodajStavku(StavkaPorudzbine stavkaPorudzbine, Porudzbina porudzbina){
+ Set lista = new HashSet<>();
+ lista = porudzbina.getPoruceniArtikli();
+ lista.add(stavkaPorudzbine);
+ porudzbina.setPoruceniArtikli(lista);
+ porudzbinaRepository.save(porudzbina);
+ }
+ public void makePorudzbina(Kupac kupac, String restoranName){//TREBA FORMATIRATI OVE DATUME KAD ZAVRSIS
+ Restoran restoran = restoranService.findByRestoranIme(restoranName);
+ // Date date= null;
+ // date = new Date("yyyy/dd/MM");
+ // Porudzbina porudzbina = new Porudzbina(kupac, restoran1, StatusPorudzbine.USastavljanu, new Date());
+ Porudzbina porudzbina = null;
+ for(Porudzbina porudzbina1: porudzbinaRepository.findAll()){
+ if(porudzbina1.getKupac().getId().equals(kupac.getId())){
+ for(Porudzbina p: kupac.getListaPorudzbina()){
+ if(p.getStatusPorudzbine().equals(StatusPorudzbine.USastavljanu)){
+ porudzbina = p;
+ porudzbina.setRestoran(restoran);
+ porudzbina.setDatumIVreme(new Date());
+ }
+ }
+ }
+ }
+ porudzbinaRepository.save(porudzbina);
+ restoranService.save(restoran);
+ kupacService.updateKupac(kupac, porudzbina);
+
+ }
+ public Porudzbina getAll(){
+ Porudzbina p = null;
+ for(Porudzbina porudzbina: porudzbinaRepository.findAll()){
+ if(porudzbina.getStatus().equals(StatusPorudzbine.Obrada)){
+ p = porudzbina;
+ }
+ }
+ return p;
+ }
+ public Porudzbina findByStatus(){
+ Porudzbina p = null;
+ for(Porudzbina porudzbina: porudzbinaRepository.findAll()){
+ if(porudzbina.getStatus().equals(StatusPorudzbine.Obrada)) {
+ p = porudzbina;
+ }
+ }
+ return p;
+ }
+ public Porudzbina findPorduzbinaUSastavljanju(Kupac kupac){
+ Porudzbina p= null;
+ for(Porudzbina porudzbina: kupac.getListaPorudzbina()){
+ if(porudzbina.getStatus().equals(StatusPorudzbine.USastavljanu)){
+ p = porudzbina;
+ }
+ }
+ return p;
+ }
+ public Porudzbina kreirajStavkuPorudzbine(String naziv, int kolicina, Porudzbina porudzbina){
+ StavkaPorudzbine stavkaPorudzbine = new StavkaPorudzbine();
+ double temp = 0;
+ for(Artikal artikal: porudzbina.getRestoran().getPonuda()){
+ if(artikal.getNaziv().equals(naziv)){
+ stavkaPorudzbine.setPoruceniArtikal(artikal);
+ stavkaPorudzbine.setPorucenaKolicina(kolicina);
+ stavkaPorudzbineService.saveStavka(stavkaPorudzbine);
+ temp = artikal.getCena() * kolicina;
+
+ }
+ }
+ porudzbina.getPoruceniArtikli().add(stavkaPorudzbine);
+ porudzbina.setCena(porudzbina.getCena() + temp);
+
+ porudzbinaRepository.save(porudzbina);
+
+ return porudzbina;
+ }
+ public Porudzbina ukloniStavkuPorudzbine(String naziv, int kolicina, Porudzbina porudzbina){
+ double temp = 0;
+ for(StavkaPorudzbine stavkaPorudzbine: porudzbina.getPoruceniArtikli()){
+ if(stavkaPorudzbine.getPoruceniArtikal().getNaziv().equals(naziv)){
+ if(kolicina>=stavkaPorudzbine.getPorucenaKolicina()){
+ temp = kolicina * stavkaPorudzbine.getPoruceniArtikal().getCena();
+ stavkaPorudzbineService.removeStavka(stavkaPorudzbine);
+ porudzbina.getPoruceniArtikli().remove(stavkaPorudzbine);
+ break;
+
+ }else{
+ stavkaPorudzbine.setPorucenaKolicina(stavkaPorudzbine.getPorucenaKolicina() - kolicina);
+ temp = kolicina * stavkaPorudzbine.getPoruceniArtikal().getCena();
+ break;
+
+ }
+ }
+ }
+
+ porudzbina.setCena(porudzbina.getCena() - temp);
+ porudzbinaRepository.save(porudzbina);
+
+ return porudzbina;
+ }
+ public void checkIfEmpty(Porudzbina porudzbina){
+ Kupac kupac = porudzbina.getKupac();
+ if(!porudzbina.getPoruceniArtikli().isEmpty()){
+ porudzbina.setStatusPorudzbine(StatusPorudzbine.Obrada);
+ Porudzbina porudzbina1 = new Porudzbina(StatusPorudzbine.USastavljanu, kupac);
+ kupac.getListaPorudzbina().add(porudzbina1);
+ porudzbinaRepository.save(porudzbina);
+ kupacService.save(kupac);
+ }
+ }
+ public Porudzbina promeniStatusMenadzer(Restoran restoran, String ID){
+ Porudzbina p= null;
+ List listaPorudzbina = new ArrayList<>();
+ listaPorudzbina = porudzbinaRepository.findAll();
+ for(Porudzbina porudzbina: listaPorudzbina) {
+ String result = String.valueOf(porudzbina.getId());
+ result = result.replaceAll("[-+.^:,]",""); //UUID daje string sa crticama u njemu koje se ne vide u bazi
+
+ if (result.equals(ID)) {
+ if (porudzbina.getStatus().equals(StatusPorudzbine.Obrada)) {
+ p = porudzbina;
+ p.setStatusPorudzbine(StatusPorudzbine.UPripremi);
+ porudzbinaRepository.save(p);
+ restoranService.save(restoran);
+ return p;
+ }else if(porudzbina.getStatus().equals(StatusPorudzbine.UPripremi)){
+ p = porudzbina;
+ p.setStatusPorudzbine(StatusPorudzbine.CekaDostavljača);
+ porudzbinaRepository.save(p);
+ restoranService.save(restoran);
+ return p;
+ }
+ }
+ }
+ return p;
+ }
+ public Porudzbina promeniStatusDostavljac(Dostavljac dostavljac, String id){
+ List listaPorudzbina = new ArrayList<>();
+ Porudzbina p = null;
+ listaPorudzbina = porudzbinaRepository.findAll();
+ for(Porudzbina porudzbina: listaPorudzbina) {
+ if (porudzbina.getStatus().equals(StatusPorudzbine.CekaDostavljača)) {
+// p = porudzbina;
+ porudzbina.setStatusPorudzbine(StatusPorudzbine.UTransportu);
+ porudzbinaRepository.save(porudzbina);
+ dostavljacService.addCondition(dostavljac,porudzbina);
+ return p;
+ } else if (porudzbina.getStatus().equals(StatusPorudzbine.UTransportu)) {
+ for (Porudzbina porudzbina1 : dostavljacService.findAllById(dostavljac.getId())) {
+ if (porudzbina1.getId().equals(porudzbina.getId())) {
+
+ p = porudzbina;
+ p.setStatusPorudzbine(StatusPorudzbine.Dostavljena);
+ porudzbinaRepository.save(p);
+ dostavljacService.save(dostavljac);
+ kupacService.dodajBodove(porudzbina.getCena(), porudzbina.getKupac());
+
+ return p;
+ }
+ }
+ }
+ }
+// Set ispis = new HashSet<>();
+// for(Porudzbina porudzbinaL p)
+ return p;
+ }
+ public Dostavljac findDostavljac(String korisnickoIme){
+ return dostavljacService.findDostavljac(korisnickoIme);
+ }
+
+
+}
+
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/RestoranService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/RestoranService.java
new file mode 100644
index 0000000..b902a47
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/RestoranService.java
@@ -0,0 +1,210 @@
+package vezbe.demo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.dto.KomentarDto;
+import vezbe.demo.dto.RestoranBasicInfoDto;
+import vezbe.demo.dto.RestoranIspisDto;
+import vezbe.demo.dto.RestoranPretragaDto;
+import vezbe.demo.model.*;
+import vezbe.demo.repository.RestoranRepository;
+
+import java.util.*;
+
+@Service
+public class RestoranService {
+ @Autowired
+ private RestoranRepository restoranRepository;
+
+ @Autowired
+ private MenadzerService menadzerService;
+
+ @Autowired
+ private ArtikalService artikalService;
+
+ @Autowired
+ private StavkaPorudzbineService stavkaPorudzbineService;
+
+ @Autowired
+ private KomentarService komentarService;
+
+ @Autowired
+ private LokacijaService lokacijaService;
+
+
+ /* @Autowired
+ private PorudzbinaService porudzbinaService;
+ */
+ public List getAllBasicInfo(){
+ List dtoList = new ArrayList<>();
+ for(Restoran restoran: restoranRepository.findAll()){
+
+ RestoranBasicInfoDto dto = new RestoranBasicInfoDto(restoran.getNaziv(), restoran.getTipRestorana(), restoran.getLokacija().getAdresa());
+ dtoList.add(dto);
+ }
+ return dtoList;
+ }
+ public Restoran save(Restoran restoran) {
+ lokacijaService.save(restoran.getLokacija());
+ return restoranRepository.save(restoran);
+ }
+
+ public List findAll() {
+ return restoranRepository.findAll();
+ }
+ public RestoranIspisDto spremiZaIspis(Restoran restoran, double prosecnaOcena, Set komentari){
+ RestoranIspisDto dto = new RestoranIspisDto(restoran.getNaziv(), restoran.getTipRestorana(), restoran.getLokacija(), prosecnaOcena, komentari, restoran.getPonuda());
+ return dto;
+ }
+
+ public Restoran findById(Long id){
+ Restoran r= null;
+ for(Restoran restoran: restoranRepository.findAll()){
+ if(restoran.getId().equals(id)){
+ r = restoran;
+ }
+ }
+ return r;
+ }
+
+
+ public Restoran findByName(String naziv) {
+ Restoran r = null;
+ for (Restoran restoran : restoranRepository.findAll()) {
+ if (restoran.getNaziv().equals(naziv)) {
+ r = restoran;
+ }
+ }
+ return r;
+ }
+
+ public List findByTip(String tipRestorana) {
+ List lista = new ArrayList<>();
+ for (Restoran restoran : restoranRepository.findAll()) {
+ if (restoran.getTipRestorana().equals(tipRestorana)) {
+ lista.add(restoran);
+ }
+ }
+ return lista;
+ }
+
+ public Restoran findByLokacija(String adresa) {
+ Restoran r = null;
+ for (Restoran restoran : restoranRepository.findAll()) {
+ if (restoran.getLokacija().getAdresa().equals(adresa)) {
+ r = restoran;
+ }
+ }
+ return r;
+ }
+
+
+
+ public Set dodajArtikal(Artikal artikal, Restoran restoran) {
+ Set novaLista = new HashSet<>();
+ novaLista = artikalService.dodajArtikal(artikal, restoran);
+ restoranRepository.save(restoran);
+ return novaLista;
+ }
+
+ public Menadzer findByNaziv(String naziv, String KorisnickoIme) {
+ Restoran r = null;
+ for (Restoran restoran : restoranRepository.findAll()) {
+ if (restoran.getNaziv().equals(naziv)) {
+ r = restoran;
+ }
+ }
+ return menadzerService.postaviNovogMenadzera(KorisnickoIme, r);//IZMENI NAZIV OVE FUNKCIJE
+
+ }
+
+ public Restoran findByRestoranIme(String naziv) {
+ Restoran r = null;
+ for (Restoran restoran : restoranRepository.findAll()) {
+ if (restoran.getNaziv().equals(naziv)) {
+ r = restoran;
+ }
+ }
+ return r;
+ }
+
+ public double getProsecnaOcena(Long restoranId){
+ return komentarService.getProsecnaOcena(restoranId);
+ }
+ public Set getKomentari(Long restoranId){
+ return komentarService.getByRestoran(restoranId);
+ }
+ public List SpremiZaIspis(List listaRestorana){
+ List ispisLista = new ArrayList<>();
+ for(Restoran restoran: listaRestorana){
+ double prosecnaOcena = getProsecnaOcena(restoran.getId());
+ Set komentari = getKomentari(restoran.getId());
+ RestoranIspisDto dto = new RestoranIspisDto(restoran.getNaziv(), restoran.getTipRestorana(), restoran.getLokacija(), prosecnaOcena, komentari, restoran.getPonuda());
+ ispisLista.add(dto);
+ }
+ return ispisLista;
+ }
+ public Set pronadjiRestorane(String input){
+ Set lista = new HashSet<>();
+ for(Restoran restoran: restoranRepository.findAll()){
+ if(input.contains(restoran.getNaziv())){
+ RestoranPretragaDto dto = new RestoranPretragaDto(restoran.getNaziv(), restoran.getTipRestorana(), restoran.getLokacija().getAdresa());
+ lista.add(dto);
+ continue;
+ }
+ if(input.contains(restoran.getTipRestorana())){
+ RestoranPretragaDto dto = new RestoranPretragaDto(restoran.getNaziv(), restoran.getTipRestorana(), restoran.getLokacija().getAdresa());
+ lista.add(dto);
+ continue;
+ }
+ if(input.contains(restoran.getLokacija().getAdresa())){
+ RestoranPretragaDto dto = new RestoranPretragaDto(restoran.getNaziv(), restoran.getTipRestorana(), restoran.getLokacija().getAdresa());
+ lista.add(dto);
+ continue;
+ }
+ }
+ return lista;
+ }
+ public List removeArtikal(Long id, Restoran restoran) {
+ Artikal a = artikalService.findById(id);
+
+ restoran.getPonuda().remove(a);
+ restoranRepository.save(restoran);
+
+ List l= new ArrayList<>();
+ for(Artikal artikal:restoran.getPonuda()){
+ l.add(artikal);
+ }
+ return l;
+ }
+ public Artikal promeniArtikal(Artikal artikal, Restoran restoran,Long id){
+ Artikal stariArtikal = artikalService.findById(id);
+ if(!artikal.getNaziv().isEmpty()){
+ stariArtikal.setNaziv(artikal.getNaziv());
+ }
+ if(artikal.getTipArtikla()!=null){
+ stariArtikal.setTipArtikla(artikal.getTipArtikla());
+ }
+ if(artikal.getCena() != 0){
+ stariArtikal.setCena(artikal.getCena());
+ }
+ if(artikal.getKolicina()!= 0){
+ stariArtikal.setKolicina(artikal.getKolicina());
+ }
+ if(!artikal.getOpis().isEmpty()){
+ stariArtikal.setOpis(artikal.getOpis());
+ }
+ artikalService.save(stariArtikal);
+ restoranRepository.save(restoran);
+ return stariArtikal;
+
+ }
+ public Boolean pronadjiArtikal(Long id, Restoran restoran){
+ for(Artikal artikal: restoran.getPonuda()){
+ if(artikal.getId().equals(id)){
+ return true;
+ }
+ }
+ return false;
+ }
+ }
diff --git a/Nadogradnja-demoa/src/main/java/vezbe/demo/service/StavkaPorudzbineService.java b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/StavkaPorudzbineService.java
new file mode 100644
index 0000000..0dafd0e
--- /dev/null
+++ b/Nadogradnja-demoa/src/main/java/vezbe/demo/service/StavkaPorudzbineService.java
@@ -0,0 +1,25 @@
+package vezbe.demo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import vezbe.demo.model.Artikal;
+import vezbe.demo.model.StavkaPorudzbine;
+import vezbe.demo.repository.StavkaPorudzbineRepository;
+
+@Service
+public class StavkaPorudzbineService {
+ @Autowired
+ StavkaPorudzbineRepository stavkaPorudzbineRepository;
+
+
+ public void addArtikal(Artikal artikal, int kolicina){
+ StavkaPorudzbine stavkaPorudzbine = new StavkaPorudzbine(artikal, kolicina);
+ stavkaPorudzbineRepository.save(stavkaPorudzbine);
+ }
+ public void saveStavka(StavkaPorudzbine stavkaPorudzbine){
+ stavkaPorudzbineRepository.save(stavkaPorudzbine);
+ }
+ public void removeStavka(StavkaPorudzbine stavkaPorudzbine){
+ stavkaPorudzbineRepository.delete(stavkaPorudzbine);
+ }
+}
diff --git a/Nadogradnja-demoa/src/main/resources/application.properties b/Nadogradnja-demoa/src/main/resources/application.properties
index 0e4848a..d2687de 100644
--- a/Nadogradnja-demoa/src/main/resources/application.properties
+++ b/Nadogradnja-demoa/src/main/resources/application.properties
@@ -4,6 +4,7 @@
spring.h2.console.enabled=true
spring.h2.console.path=/h2
+server.port=8081
# Spring DataSource
spring.datasource.url=jdbc:h2:file:~/test
@@ -17,4 +18,7 @@ spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
-spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
\ No newline at end of file
+spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
+hibernate.jdbc.lob.non_contextual_creation=true
+
+
diff --git a/Nadogradnja-demoa/src/main/resources/static/images/12/hamb.jpg b/Nadogradnja-demoa/src/main/resources/static/images/12/hamb.jpg
new file mode 100644
index 0000000..3cab5ba
Binary files /dev/null and b/Nadogradnja-demoa/src/main/resources/static/images/12/hamb.jpg differ
diff --git a/Nadogradnja-demoa/src/main/resources/static/images/hamb.jpg b/Nadogradnja-demoa/src/main/resources/static/images/hamb.jpg
new file mode 100644
index 0000000..3cab5ba
Binary files /dev/null and b/Nadogradnja-demoa/src/main/resources/static/images/hamb.jpg differ
diff --git a/Nadogradnja-demoa/src/main/resources/static/images/kapricoza.jpg b/Nadogradnja-demoa/src/main/resources/static/images/kapricoza.jpg
new file mode 100644
index 0000000..7ee1d2f
Binary files /dev/null and b/Nadogradnja-demoa/src/main/resources/static/images/kapricoza.jpg differ
diff --git a/Nadogradnja-demoa/src/main/resources/static/images/null/hamb.jpg b/Nadogradnja-demoa/src/main/resources/static/images/null/hamb.jpg
new file mode 100644
index 0000000..3cab5ba
Binary files /dev/null and b/Nadogradnja-demoa/src/main/resources/static/images/null/hamb.jpg differ
diff --git a/Nadogradnja-demoa/src/main/resources/static/images/sdasd.jpg b/Nadogradnja-demoa/src/main/resources/static/images/sdasd.jpg
new file mode 100644
index 0000000..f424f42
Binary files /dev/null and b/Nadogradnja-demoa/src/main/resources/static/images/sdasd.jpg differ
diff --git a/Nadogradnja-demoa/src/main/resources/static/images/user.jpg b/Nadogradnja-demoa/src/main/resources/static/images/user.jpg
new file mode 100644
index 0000000..456666a
Binary files /dev/null and b/Nadogradnja-demoa/src/main/resources/static/images/user.jpg differ
diff --git a/Nadogradnja-demoa/src/main/resources/static/images/user.png b/Nadogradnja-demoa/src/main/resources/static/images/user.png
deleted file mode 100644
index e69de29..0000000
diff --git a/Nadogradnja-demoa/src/main/resources/static/images12/hamb.jpg b/Nadogradnja-demoa/src/main/resources/static/images12/hamb.jpg
new file mode 100644
index 0000000..3cab5ba
Binary files /dev/null and b/Nadogradnja-demoa/src/main/resources/static/images12/hamb.jpg differ
diff --git a/Nadogradnja-demoa/src/main/resources/static/images13/hamb.jpg b/Nadogradnja-demoa/src/main/resources/static/images13/hamb.jpg
new file mode 100644
index 0000000..3cab5ba
Binary files /dev/null and b/Nadogradnja-demoa/src/main/resources/static/images13/hamb.jpg differ