Ignore:
Timestamp:
03/04/23 19:55:18 (20 months ago)
Author:
SazdovaEkaterina <sazdovaekaterina@…>
Branches:
main
Children:
33b9f30
Parents:
3c7bf5b (diff), f194b4e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

merge main into adopting-a-pet

Location:
Prototype Application/Paw5/src/main
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • Prototype Application/Paw5/src/main/java/finki/paw5/service/PetService.java

    r3c7bf5b reac569a  
    22
    33import finki.paw5.model.entities.Pet;
    4 import finki.paw5.web.controllers.PostController;
    54
    65import java.util.List;
    7 import java.util.Optional;
    86
    97public interface PetService {
     
    119    void save (Pet pet);
    1210
    13     List<Pet> findAll();
     11    List<Pet> listpets();
    1412
    15     Optional<Pet> findById(Integer petId);
     13    Pet findById(Integer id);
    1614}
  • Prototype Application/Paw5/src/main/java/finki/paw5/service/PostService.java

    r3c7bf5b reac569a  
    22
    33import finki.paw5.model.entities.Post;
    4 
    54import java.util.List;
    65import java.util.Optional;
  • Prototype Application/Paw5/src/main/java/finki/paw5/service/implementation/PetServiceImplementation.java

    r3c7bf5b reac569a  
    77
    88import java.util.List;
    9 import java.util.Optional;
    109
    1110@Service
     
    2322    }
    2423
    25     @Override
    26     public List<Pet> findAll() {
    27         return this.petRepository.findAll();
    28     }
     24    public List<Pet> listpets() {return this.petRepository.findAll();}
    2925
    3026    @Override
    31     public Optional<Pet> findById(Integer petId) {
    32         return this.petRepository.findById(petId);
     27    public Pet findById(Integer id) {
     28        return this.petRepository.findById(id).get();
    3329    }
    3430}
  • Prototype Application/Paw5/src/main/java/finki/paw5/web/controllers/HomeController.java

    r3c7bf5b reac569a  
    11package finki.paw5.web.controllers;
    22
     3import jakarta.servlet.http.HttpServletRequest;
    34import org.springframework.stereotype.Controller;
    45import org.springframework.web.bind.annotation.GetMapping;
     
    1011
    1112    @GetMapping
    12     public String getHomePage(){
     13    public String getHomePage(HttpServletRequest request) {
     14        if(request.getSession().getAttribute("user")==null){
     15            return "redirect:/login";
     16        }
    1317        return "home";
    1418    }
     19
    1520    @GetMapping("/aboutUs")
    16     public String getSuccessPage(){
     21    public String getSuccessPage() {
    1722        return "/aboutUs";
    1823    }
  • Prototype Application/Paw5/src/main/java/finki/paw5/web/controllers/PetController.java

    r3c7bf5b reac569a  
    2828    public String saveAdoption(@PathVariable Integer id, HttpServletRequest request) {
    2929
    30         Pet pet = this.petService.findById(id).orElseThrow(InvalidPetIdException::new);
     30        Pet pet = this.petService.findById(id);
    3131       
    3232        User user = (User) request.getSession().getAttribute("user");
  • Prototype Application/Paw5/src/main/java/finki/paw5/web/controllers/PostController.java

    r3c7bf5b reac569a  
    11package finki.paw5.web.controllers;
    2 
    3 import finki.paw5.model.entities.PersonalProfile;
    42import finki.paw5.model.entities.Pet;
    53import finki.paw5.model.entities.Post;
    6 import finki.paw5.model.entities.Shelter;
     4import finki.paw5.model.entities.Employee;
    75import finki.paw5.model.enumerations.AgeGroup;
    86import finki.paw5.model.enumerations.Gender;
     
    3735    }
    3836
    39     @GetMapping("create-post")
     37    @GetMapping("/create-post")
    4038    public String get(Model model) {
    41         //TODO: vakvo ama za lista so pets
    42         //        List<Manufacturer> manufacturers = this.manufacturerService.findAll();
    43         //        model.addAttribute("manufacturers", manufacturers);
     39        model.addAttribute("pets", this.petService.listpets());
    4440        return "create-post";
    4541    }
    4642
    47     @PostMapping("submit-post")
    48     public String savePost(@RequestParam(required = false) String name,
    49                            @RequestParam String gender,
    50                            @RequestParam String ageGroup,
    51                            @RequestParam String size,
    52                            @RequestParam String species,
     43    @PostMapping("/submit-post")
     44    public String savePost(@RequestParam(required = false) Integer petId,
     45                           @RequestParam(required = false) boolean newPetCheckbox,
     46                           @RequestParam(required = false) String name,
     47                           @RequestParam(required = false) String gender,
     48                           @RequestParam(required = false) String ageGroup,
     49                           @RequestParam(required = false) String size,
     50                           @RequestParam(required = false) String species,
    5351                           @RequestParam(required = false) String breed,
    5452                           @RequestParam(required = false) String imageUrl,
    55                            @RequestParam(required = false) boolean canBeFostered) {
     53                           @RequestParam(required = false) boolean canBeFostered,
     54                           HttpServletRequest request) {
    5655
    57         Pet pet = new Pet(imageUrl, AgeGroup.valueOf(ageGroup), Size.valueOf(size), breed, name, Species.valueOf(species), Gender.valueOf(gender), canBeFostered, null, 1);
    58         this.petService.save(pet);
     56        Employee employee = (Employee) request.getSession().getAttribute("user");
    5957
    60         Post post = new Post(LocalDate.now(), imageUrl, pet.getId(), null, 10);//TODO: employee id da se zeme preku session user getid
    61         this.postService.save(post);
     58        if(newPetCheckbox == true){
     59
     60            Pet newPet = new Pet(imageUrl, AgeGroup.valueOf(ageGroup), Size.valueOf(size), breed, name, Species.valueOf(species), Gender.valueOf(gender), canBeFostered, null, employee.getShelterId());
     61            this.petService.save(newPet);
     62
     63            Post post = new Post(LocalDate.now(), imageUrl, newPet.getId(), null, employee.getId());
     64            this.postService.save(post);
     65
     66        } else{
     67
     68            Pet selectedPet = this.petService.findById(petId);
     69
     70            Post post = new Post(LocalDate.now(), imageUrl, selectedPet.getId(), null, employee.getId());
     71            this.postService.save(post);
     72
     73        }
    6274
    6375        return "redirect:/home";
     
    6880
    6981        List<Post> posts = this.postService.findAll();
    70         List<Pet> pets = this.petService.findAll();
     82        List<Pet> pets = this.petService.listpets();
    7183        //model.addAttribute("posts", posts);
    7284        //model.addAttribute("pets",pets);
     
    8193
    8294        Post post = this.postService.findById(id).get();
    83         Pet pet = this.petService.findById(post.getPetId()).get();
     95        Pet pet = this.petService.findById(post.getPetId());
    8496
    8597        //model.addAttribute("pet", pet);
  • Prototype Application/Paw5/src/main/resources/templates/aboutUs.html

    r3c7bf5b reac569a  
    11<!DOCTYPE html>
    2 <html lang="en">
     2<html lang="en" xmlns:th="http://thymeleaf.org">
    33<head>
    44    <meta charset="UTF-8">
  • Prototype Application/Paw5/src/main/resources/templates/create-post.html

    r3c7bf5b reac569a  
    11<!DOCTYPE html>
    22<html xmlns="http://www.w3.org/1999/xhtml"
    3       xmlns:th="http://www.thymeleaf.org"
     3      xmlns:th="http://thymeleaf.org"
    44      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"
    55      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
     
    77    <meta charset="UTF-8">
    88    <title>Create a post</title>
     9    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
     10    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
     11    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
     12    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
     13    <script>
     14        function addNewPet(addNewPetCheckBox){
     15
     16            if(addNewPetCheckBox.checked){
     17
     18                document.getElementById("name").disabled = false;
     19                document.getElementById("gender").disabled = false;
     20                document.getElementById("ageGroup").disabled = false;
     21                document.getElementById("size").disabled = false;
     22                document.getElementById("species").disabled = false;
     23                document.getElementById("breed").disabled = false;
     24                document.getElementById("imageUrl").disabled = false;
     25                document.getElementById("canBeFostered").disabled = false;
     26
     27                document.getElementById("petId").disabled = true;
     28            } else{
     29
     30                document.getElementById("name").disabled = true;
     31                document.getElementById("gender").disabled = true;
     32                document.getElementById("ageGroup").disabled = true;
     33                document.getElementById("size").disabled = true;
     34                document.getElementById("species").disabled = true;
     35                document.getElementById("breed").disabled = true;
     36                document.getElementById("imageUrl").disabled = true;
     37                document.getElementById("canBeFostered").disabled = true;
     38
     39                document.getElementById("petId").disabled = false;
     40
     41            }
     42        }
     43    </script>
    944</head>
    1045<body>
     46<header>
     47    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
     48        <div class="container">
     49            <a class="navbar-brand" href="/home">Paw 5</a>
     50            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
     51                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
     52                <span class="navbar-toggler-icon"></span>
     53            </button>
     54
     55            <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
     56                <ul class="navbar-nav m-auto">
     57                    <li class="nav-item m-auto">
     58                        <a class="nav-link active" href="/home/aboutUs">About us</a>
     59                    </li>
     60                    <li class="nav-item m-auto">
     61                        <a class="nav-link active" href="/login">Login</a>
     62                    </li>
     63                    <li class="nav-item m-auto">
     64                        <a class="nav-link active" href="/register">Register</a>
     65                    </li>
     66                </ul>
     67            </div>
     68        </div>
     69    </nav>
     70</header>
    1171    <h1>Create post</h1>
    1272<form th:action="@{/submit-post}" method="post">
    1373
    1474    <div>
    15         <label for="pet">Selet pet:</label>
    16         <select id="pet">
     75        <label for="petId">Select pet:</label>
     76        <select id="petId" name="petId">
     77            <option
     78            th:each="pet :${pets}"
     79            th:text="${pet.getName()}"
     80            th:value="${pet.getId()}">
     81            </option>
    1782        </select>
    1883    </div>
    1984
    2085    <div>
    21         <label for="newpet">Add new pet:</label>
    22             <input id="newpet" name="newpet" placeholder="newpet" type="checkbox">
     86        <label for="newPetCheckbox">Add new pet:</label>
     87            <input id="newPetCheckbox" name="newPetCheckbox" type="checkbox" onclick="addNewPet(this)">
    2388    </div>
    2489
     
    2994               name="name"
    3095               class="form-control"
    31                placeholder="Enter name">
     96               placeholder="Enter name"
     97               disabled>
    3298    </div>
    3399
     
    36102        <select id="gender"
    37103                name="gender"
    38                 class="form-control">
     104                class="form-control"
     105                disabled>
    39106            <option value = "MALE">male</option>
    40107            <option value = "FEMALE">female</option>
     
    46113        <select id="ageGroup"
    47114                name="ageGroup"
    48                 class="form-control">
     115                class="form-control"
     116                disabled>
    49117            <option value = "YOUNG">young</option>
    50118            <option value = "ADULT">adult</option>
     
    57125        <select id="size"
    58126                name="size"
    59                 class="form-control">
     127                class="form-control"
     128                disabled>
    60129            <option value = "XSMALL">extra small</option>
    61130            <option value = "SMALL">small</option>
     
    70139        <select id="species"
    71140                name="species"
    72                 class="form-control">
     141                class="form-control"
     142                disabled>
    73143            <option value = "CAT">cat</option>
    74144            <option value = "DOG">dog</option>
     
    83153               name="breed"
    84154               class="form-control"
    85                placeholder="Enter breed" >
     155               placeholder="Enter breed"
     156               disabled>
    86157    </div>
    87158
     
    92163               name="imageUrl"
    93164               class="form-control"
    94                placeholder="Enter image URL">
     165               placeholder="Enter image URL"
     166               disabled>
    95167        <!-- <label for="upload">Image:</label>
    96168        <input id="upload" type="file" accept="image/*">
     
    104176               name="canBeFostered"
    105177               class="form-control"
    106                value=false>
     178               value=false
     179               disabled>
    107180    </div>
    108181
  • Prototype Application/Paw5/src/main/resources/templates/home.html

    r3c7bf5b reac569a  
    11<!DOCTYPE html>
    2 <html lang="en">
     2<html lang="en" xmlns:th="http://thymeleaf.org">
    33<head>
    44    <meta charset="UTF-8">
     
    3535  </nav>
    3636</header>
    37 
     37<div>
     38  <form method="get" th:action="@{'/create-post'}">
     39    <button id="submit" type="submit">Create an Adoption Post</button>
     40  </form>
     41</div>
    3842<div>
    3943  <h1>Welcome to Paw 5</h1>
  • Prototype Application/Paw5/src/main/resources/templates/login.html

    r3c7bf5b reac569a  
    11<!DOCTYPE html>
    2 <html lang="en">
     2<html lang="en" xmlns:th="http://thymeleaf.org">
    33<head>
    44  <meta charset="UTF-8">
  • Prototype Application/Paw5/src/main/resources/templates/register.html

    r3c7bf5b reac569a  
    11<!DOCTYPE html>
    2 <html lang="en" xmlns:th="http://www.thymeleaf.org">
     2<html lang="en" xmlns:th="http://thymeleaf.org">
    33<head>
    44    <meta charset="UTF-8">
Note: See TracChangeset for help on using the changeset viewer.