using System;
using PetaPoco;
using Pingchuan.BeijingSafeguard.Model;

namespace Pingchuan.BeijingSafeguard.DAL
{
    public class UserDAL : BaseDAL
    {
        public static User Get(string name, string password)
        {
            string sql = @"SELECT * FROM users WHERE login_name = @0 AND login_password = @1";

            return db.SingleOrDefault<User>(sql, name, password);
        }

        public static User Get(string realName)
        {
            string sql = @"SELECT id FROM users WHERE real_name = @0";

            return db.SingleOrDefault<User>(sql, realName);
        }

        public static int Add(User user)
        {
            object id = db.Insert(user);
            return int.Parse(id.ToString());
        }

        public static int Update(User user)
        {
            return db.Update(user);
        }

        public static int Delete(int id)
        {
            return db.Delete<User>(id);
        }

        public static int Enable(int id, int enable)
        {
            string sql = $@"update users set enable = {enable} where id = {id}";
            return db.Execute(sql);
        }

        public static Pagination<UserDTO> Query(int orgId, int pageIndex, int pageSize)
        {
            string condition = orgId == 0 ? string.Empty : $"and u.org_id = {orgId}";
            string sql = $@"select u.*, o.name org_name from users u 
                            left join orgs o on o.id = u.org_id 
                            where is_sa <> 1 {condition} 
                            order by u.create_time desc";
            Page<UserDTO> users = db.Page<UserDTO>(pageIndex, pageSize, sql);
            return Pagination<UserDTO>.FromPage(users);
        }
    }
}