package com.tarena.oss.user.service;

import java.util.Collection;

import com.tarena.oss.user.dao.UserMgmtDAO;
import com.tarena.oss.user.pojo.User;
import com.tarena.oss.user.pojo.UserCondDTO;

public class UserMgmtServiceImpl implements UserMgmtService {
	private UserMgmtDAO dao;
	
	public void setDao(UserMgmtDAO dao) {
		this.dao = dao;
	}

	/**
	 * 根据id删除用户
	 */
	public void removeUser(Integer id) {
		User user =dao.queryUser(id);
		dao.deleteUser(user);
	}

	/**
	 * 添加用户
	 */
	public void addUser(User user) {
		dao.insertUser(user);
	}

	/**
	 * 修改用户
	 */
	public void modifyUser(User user) {
		dao.updateUser(user);	
	}

	/**
	 * 根据id查询用户的详细信息
	 */
	public User findUser(Integer id) {
		return dao.queryUser(id);
	}

	/**
	 * 查询所有用户的的个数
	 */
	public int findUserCnts() {
		return dao.queryUserCnt();
	}

	/**
	 * 根据查询条件查询符合条件的用户的个数
	 */
	public int findUserCntsByCond(UserCondDTO dto) {
		String qryStr = makeQryString(dto);
		return dao.queryUserCnt(qryStr);
	}

	/**
	 * 查询所有用户的详细信息
	 */
	public Collection<User> findUsers() {
		return dao.queryUsers();
	}

	/**
	 * 根据查询条件查询符合条件的用户的详细信息
	 */
	public Collection<User> findUsers(UserCondDTO dto) {
		String qryStr = makeQryString(dto);
		System.out.println("sql :"+qryStr);
		return dao.queryUsers(qryStr);
	}

	/**
	 * 根据当前页数查询符合条件的用户的详细信息
	 */
	public Collection<User> findUsers(int currentPage) {
		return dao.queryUsers(currentPage);
	}

	/**
	 * 根据查询条件和当前页数查询符合条件的用户的详细信息
	 */
	public Collection<User> findUsers(UserCondDTO dto,int currentPage) {
		String qryStr = makeQryString(dto);
		return dao.queryUsers(qryStr, currentPage);
	}

	/**
	 * 拼接查询条件
	 */
	public String makeQryString(UserCondDTO dto){
		StringBuffer sb = new StringBuffer();
		String name =dto.getName();
		String loginname =dto.getLoginname();
		String status=dto.getStatus()+"";
		
		if(name != null && !name.trim().equals("")){
			sb.append(" and u.name like '%").append(name).append("%'");
		}
		
		if(loginname !=null && !loginname.trim().equals("")){
			sb.append(" and u.loginname like '%").append(loginname).append("%'");
		}
		
		if(status!=null && !status.trim().equals("")){
			if(status.equals("-1")){
				sb.append("and u.status in(0 , 1)");
			}else{
				sb.append(" and u.status = ").append(status);
			}
			
		}

		System.out.println("makeQryString :"+sb.toString());
		return sb.toString();
		
	}

	public User login(String userName, String password) {
		// TODO Auto-generated method stub
		return dao.login(userName, password);
	}

	public User queryUserByLoginname(Integer id) {
		// TODO Auto-generated method stub
		return dao.queryUserByLoginname(id);
	}


}
