Changeset ef1c66e for ReserveNGo-backend


Ignore:
Timestamp:
04/26/25 20:06:10 (5 days ago)
Author:
ivanov1332 <zareivanov070@…>
Branches:
master
Children:
90cbc33
Parents:
1624c61
Message:

Added functionality for changing user info

Location:
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java

    r1624c61 ref1c66e  
    104104        return userRole;
    105105    }
     106
     107    public void setId(Long id) {
     108        this.id = id;
     109    }
     110
     111    public void setFirstName(String firstName) {
     112        this.firstName = firstName;
     113    }
     114
     115    public void setLastName(String lastName) {
     116        this.lastName = lastName;
     117    }
     118
     119    public void setEmail(String email) {
     120        this.email = email;
     121    }
     122
     123    public void setPassword(String password) {
     124        this.password = password;
     125    }
     126
     127    public void setPhoneNumber(String phoneNumber) {
     128        this.phoneNumber = phoneNumber;
     129    }
     130
     131    public void setUserRole(Role userRole) {
     132        this.userRole = userRole;
     133    }
    106134}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java

    r1624c61 ref1c66e  
    11package mk.ukim.finki.it.reservengo.service.impl;
    22
     3import mk.ukim.finki.it.reservengo.dto.userDTO.UserDTO;
     4import mk.ukim.finki.it.reservengo.model.domain.User;
     5import mk.ukim.finki.it.reservengo.model.exceptions.CustomerNotFoundException;
     6import mk.ukim.finki.it.reservengo.repository.UserRepository;
    37import mk.ukim.finki.it.reservengo.service.intf.UserService;
     8import org.springframework.security.crypto.password.PasswordEncoder;
    49import org.springframework.stereotype.Service;
    510
     
    712public class UserServiceImpl implements UserService {
    813
     14    private final UserRepository userRepository;
     15    private final PasswordEncoder passwordEncoder;
     16
     17    public UserServiceImpl(UserRepository userRepository, PasswordEncoder passwordEncoder) {
     18        this.userRepository = userRepository;
     19        this.passwordEncoder = passwordEncoder;
     20    }
     21
     22    @Override
     23    public User findUser(Long userId) {
     24        return userRepository.findById(userId).orElseThrow(() -> new CustomerNotFoundException(userId));
     25    }
     26
     27    @Override
     28    public User editUserInfo(Long userId, UserDTO userDTO) {
     29        User user = findUser(userId);
     30        updateUserFromDto(user, userDTO);
     31        return userRepository.save(user);
     32    }
     33
     34    private void updateUserFromDto(User user, UserDTO userDTO) {
     35        if (userDTO.firstName() != null) {
     36            user.setFirstName(userDTO.firstName());
     37        }
     38        if (userDTO.lastName() != null) {
     39            user.setLastName(userDTO.lastName());
     40        }
     41        if (userDTO.email() != null) {
     42            user.setEmail(userDTO.email());
     43        }
     44        if (userDTO.password() != null && !userDTO.password().isEmpty()) {
     45            user.setPassword(passwordEncoder.encode(userDTO.password()));
     46        }
     47        if (userDTO.phoneNumber() != null) {
     48            user.setPhoneNumber(userDTO.phoneNumber());
     49        }
     50    }
    951}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java

    r1624c61 ref1c66e  
    11package mk.ukim.finki.it.reservengo.service.intf;
    22
     3import mk.ukim.finki.it.reservengo.dto.userDTO.UserDTO;
     4import mk.ukim.finki.it.reservengo.model.domain.User;
     5
    36public interface UserService {
     7    User findUser(Long userId);
     8
     9    User editUserInfo(Long userId, UserDTO userDTO);
    410}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/UserController.java

    r1624c61 ref1c66e  
    11package mk.ukim.finki.it.reservengo.web;
    22
    3 import org.springframework.web.bind.annotation.RequestMapping;
    4 import org.springframework.web.bind.annotation.RestController;
     3import mk.ukim.finki.it.reservengo.dto.userDTO.UserDTO;
     4import mk.ukim.finki.it.reservengo.model.domain.User;
     5import mk.ukim.finki.it.reservengo.service.intf.UserService;
     6import org.springframework.http.ResponseEntity;
     7import org.springframework.web.bind.annotation.*;
    58
    69@RestController
    710@RequestMapping("/api/user")
    811public class UserController {
    9     //TODO edit personal info(USER -> customer,localWorker,localManager)
    1012
    11 //    @PostMapping("/edit")
    12 //    public ResponseEntity<?> editPersonalInfo(@RequestBody UserDTO userDTO){
    13 //    }
     13    private final UserService userService;
     14
     15    public UserController(UserService userService) {
     16        this.userService = userService;
     17    }
     18
     19    @PutMapping("/{userId}/edit-info")
     20    public ResponseEntity<?> editPersonalInfo(@PathVariable Long userId, @RequestBody UserDTO userDTO) {
     21        User user = userService.editUserInfo(userId, userDTO);
     22        return ResponseEntity.ok(user);
     23    }
    1424}
Note: See TracChangeset for help on using the changeset viewer.