Ignore:
Timestamp:
11/11/21 11:55:43 (3 years ago)
Author:
andrejTavchioski <andrej.tavchioski@…>
Branches:
master
Children:
2ace8f0
Parents:
3a58bd6
Message:

fixed deleteVraboten and deleteRegistriranParkirac

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sources/app/src/main/java/parkup/services/VrabotenService.java

    r3a58bd6 r97fbc67  
    11package parkup.services;
    22
    3 import java.util.List;
    4 import java.util.Objects;
    5 import java.util.Optional;
    6 import java.util.UUID;
     3import java.time.LocalDateTime;
     4import java.util.*;
    75import javax.transaction.Transactional;
    86import org.springframework.beans.factory.annotation.Autowired;
     7import org.springframework.data.jpa.repository.Modifying;
     8import org.springframework.security.core.userdetails.UserDetails;
     9import org.springframework.security.core.userdetails.UserDetailsService;
     10import org.springframework.security.core.userdetails.UsernameNotFoundException;
     11import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    912import org.springframework.stereotype.Service;
     13import parkup.configs.token.ConfirmationTokenW;
     14import parkup.configs.token.ConfirmationTokenService;
    1015import parkup.entities.Vraboten;
    1116import parkup.repositories.VrabotenRepository;
     17import parkup.data.VrabotenDemo;
    1218
    1319@Service
    14 public class VrabotenService {
     20public class VrabotenService implements UserDetailsService {
    1521    private final VrabotenRepository vrabotenRepository;
     22    private final BCryptPasswordEncoder bCryptPasswordEncoder;
     23    private final ConfirmationTokenService confirmationTokenService;
    1624
    1725    @Autowired
    18     public VrabotenService(VrabotenRepository vrabotenRepository) {
     26    public VrabotenService(VrabotenRepository vrabotenRepository, BCryptPasswordEncoder bCryptPasswordEncoder, ConfirmationTokenService confirmationTokenService) {
    1927        this.vrabotenRepository = vrabotenRepository;
     28        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
     29        this.confirmationTokenService = confirmationTokenService;
    2030    }
    2131
     
    2939    }
    3040
    31     public void addVraboten(Vraboten vraboten) {
     41    public List<VrabotenDemo> getAllVraboteniDemos() {
     42        List<Vraboten> vraboteni = this.vrabotenRepository.findAll();
     43        List<VrabotenDemo> vrabotenDemos = new ArrayList<>();
     44        for (Vraboten v : vraboteni){
     45            VrabotenDemo vd = new VrabotenDemo(v.getFirstName(), v.getLastName(), v.getEmail());
     46            vrabotenDemos.add(vd);
     47        }
     48        return vrabotenDemos;
     49    }
     50
     51    public Optional<Vraboten> addVraboten(Vraboten vraboten) {
    3252        Optional<Vraboten> vrabotenOpt = this.vrabotenRepository.findVrabotenByEmail(vraboten.getEmail());
    3353        if (vrabotenOpt.isPresent()) {
    3454            throw new IllegalStateException("Email already taken, try adding a vraboten with a different valid email address");
    3555        } else {
    36             System.out.println(vraboten);
    37             this.vrabotenRepository.save(vraboten);
     56            if (vraboten.getEmail() != null && vraboten.getEmail().length() > 1 && vraboten.getEmail().contains("@")) {
     57                //System.out.println(vraboten);
     58                this.vrabotenRepository.save(vraboten);
     59            }
     60            else{
     61                throw new IllegalStateException("email not valid");
     62            }
    3863        }
     64        return vrabotenOpt;
    3965    }
    4066
    4167    @Transactional
    42     public void updateVraboten(int vrabotenId, String firstName, String lastName, String mobile, String email) {
     68    public Vraboten updateVraboten(int vrabotenId, String firstName, String lastName, String mobile, String email, String status) {
    4369        Optional<Vraboten> vrabotenOpt = Optional.ofNullable(this.vrabotenRepository.findByVrabotenId(vrabotenId));
    4470        if (vrabotenOpt.isPresent()) {
     
    4975                    throw new IllegalStateException("email taken");
    5076                }
    51 
    5277                vrabotenNov.setEmail(email);
     78            } else {
     79                throw new IllegalStateException("email not valid");
    5380            }
    5481
     
    6491                vrabotenNov.setMobile(mobile);
    6592            }
     93
     94            if (mobile != null && status.length() > 0 && !Objects.equals(vrabotenNov.getStatus(), status)) {
     95                if(status.equals("raboti") || status.equals("ne raboti") || status.equals("na odmor") || status.equals("na boleduvanje")){
     96                    vrabotenNov.setStatus(status);
     97                }else{
     98                    throw new IllegalStateException("Please enter one of the following statuses: 'raboti', 'ne raboti', 'na odmor', 'na boleduvanje'");
     99                }
     100            }
     101
     102            return vrabotenNov;
    66103        }
    67     }
     104        else{
     105            throw new IllegalStateException("Vraboten doesn't exist, therefore can't be updated");
     106        }
     107    }//za menjanje password da se implementira
    68108
    69     public void deleteVraboten(int vrabotenId) {
     109    @Modifying
     110    @Transactional
     111    public Optional<Vraboten> deleteVraboten(int vrabotenId) {
    70112        Optional<Vraboten> vrabotenOpt = Optional.ofNullable(this.vrabotenRepository.findByVrabotenId(vrabotenId));
    71113        if (vrabotenOpt.isPresent()) {
     114            //TODO da povikamo metod od ConfirmationTokenService za brisenje na ConfirmationTokenW
     115            this.confirmationTokenService.deleteByVraboten_VrabotenId(vrabotenId);
    72116            this.vrabotenRepository.deleteByVrabotenId(vrabotenId);
    73117        } else {
    74118            throw new IllegalStateException("Vraboten doesn't exist, therefore can't be deleted");
    75119        }
     120        return vrabotenOpt;
    76121    }
     122
     123    @Transactional
     124    public void lockVrabotenAcc(int vrabotenId) {
     125        Vraboten vrabotenOpt = this.vrabotenRepository.findByVrabotenId(vrabotenId);
     126        if (vrabotenOpt!=null) {
     127            vrabotenOpt.lockVraboten();
     128        } else {
     129            throw new IllegalStateException("Vraboten doesn't exist, therefore his account can't be locked/unlocked");
     130        }
     131    }//dali treba da stoi @Transactional gore nad funkcijata?
     132
     133    @Override
     134    public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
     135        return vrabotenRepository.findVrabotenByEmail(email)
     136                .orElseThrow(() ->
     137                        new UsernameNotFoundException("Email not found"));
     138    }
     139    public String signUpVraboten(Vraboten vraboten){
     140        boolean vrabotenExists = vrabotenRepository
     141                .findVrabotenByEmail(vraboten.getEmail())
     142                .isPresent();
     143        if(vrabotenExists){
     144            // TODO check if attributes are the same and
     145            // TODO if email not confirmed send confirmation email
     146
     147            throw new IllegalStateException("Email already taken");
     148        }
     149
     150        String encodedPassword = bCryptPasswordEncoder
     151                .encode(vraboten.getPassword());
     152
     153        vraboten.setPassword(encodedPassword);
     154
     155        vrabotenRepository.save(vraboten);
     156
     157        // TODO: Send confirmation token
     158
     159        String token = UUID.randomUUID().toString();
     160        ConfirmationTokenW confirmationTokenW = new ConfirmationTokenW(
     161                token,
     162                LocalDateTime.now(),
     163                LocalDateTime.now().plusMinutes(15),
     164                vraboten
     165        );
     166
     167        confirmationTokenService.saveConfirmationTokenW(confirmationTokenW);
     168
     169        // TODO: SEND EMAIL
     170
     171        return token;
     172    }
     173
     174    public int enableVraboten(String email) {
     175        return vrabotenRepository.enableVraboten(email);
     176    }
     177
    77178}
Note: See TracChangeset for help on using the changeset viewer.