package app.service;

import app.model.Users;
import app.repository.UsersRepository;

import ca.tecreations.StringTool;

import ca.tecreations.db.mysql.MySQL;
import java.sql.SQLException;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
 
/**
 *
 * @author Tim
 */

 
//@Configuration
@Service
// not necessary, yet: @Transactional
public class UserNameDetailsService {
    public static MySQL mysql;
    
    @Autowired
    private DriverManagerDataSource dataSource;
    
    // how to connect to an entity such as UserName()
    
    public String getPrefix(Users user) {
        return mysql.getValue("SELECT prefixx FROM users_names WHERE uid='" + user.getUID() + "'");
    }
    
    public String getGivenNames(Users user) {
        return mysql.getValue("SELECT given FROM users_names WHERE uid='" + user.getUID() + "'");
    }
     
    public String getLastName(Users user) {
        return mysql.getValue("SELECT lastName FROM users_names WHERE uid='" + user.getUID() + "'");
    }
    
    public String getName(Users user) {
        String name = "";
        List<List<String>> rows = mysql.getRows("SELECT * FROM users_names WHERE uid='" + user.getUID() + "'",false,false);
        // preferred callby
        //prefixx, First, Given
        List<String> row = rows.get(0);
        String prefix = row.get(0);
        String given = row.get(1);
        String last = row.get(2);
        String suffix = row.get(3);
        if (!prefix.equals("")) name = prefix;
        
        if (!given.equals("")) {
            if (!name.equals("")) { 
                name += " " + given;
            } else {
                name = given;
            }
        } 
        if (!last.equals("")) {
            if (!name.equals("")) { 
                name += " " + last;
            } else {
                name = last;
            }
        }
        if (!suffix.equals("")) {
            if (!name.equals("")) {
                name += " " + suffix;
            } else {
                name = suffix;
            }
        }
        return name;
    }
    
    public String getPreferred(Users user) {
        return mysql.getValue("SELECT prefer FROM users_names WHERE id='" + user.getUID() + "'");
    }
    
    public String getSuffix(Users user) {
        return mysql.getValue("SELECT suffix FROM users_names WHERE id='" + user.getUID() + "'");
    }
    
    public String getBirthdate(Users user) {
        return mysql.getValue("SELECT birthdate FROM users_names WHERE id='" + user.getUID() + "'");
    }
}
