package org.egl_cepgl.pm.validator;

import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egl_cepgl.pm.dto.UserDto;
import org.egl_cepgl.pm.repository.UserRepository;
import org.egl_cepgl.pm.validator.functions.Validation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@NoArgsConstructor
@Slf4j
public class UserValidator
{
    private UserRepository userRepository;

    @Autowired
    public UserValidator(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public Map<String, List<String>> validate(UserDto dto)
    {
        Map<String, List<String>> errors = new HashMap<>();
        List<String> all= new ArrayList<>();
        List<String> userName= new ArrayList<>();
        List<String> firstName= new ArrayList<>();
        List<String> lastName= new ArrayList<>();
        List<String> email= new ArrayList<>();
        List<String> phone= new ArrayList<>();

        if(dto == null) all.add("Veuillez renseigner tous les champs et réessayer");
        if(!StringUtils.hasLength(dto.getFirst_name())) firstName.add("Veuillez renseigner le nom!");
        if(!Validation.isEmailValid(dto.getEmail())) email.add("Email invalide!");
        if(userRepository.existsByEmail(dto.getEmail())) email.add("Email existe déjà!");

        if(!all.isEmpty()) errors.put("all",all);
        if(!firstName.isEmpty()) errors.put("firstName",firstName);
        if(!email.isEmpty()) errors.put("email",email);

        return errors;
    }
}
