namespace BLL
{
    using System;
    using System.Collections;
    using System.Linq;
    using System.Net;
    public static class LogService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 添加操作日志
        /// 
        /// 操作人
        /// 编号
        /// 主键ID
        /// 菜单ID
        /// 操作名称
        public static void AddSys_Log(Model.Sys_User CurrUser, string code, string dataId, string strMenuId, string strOperationName)
        {
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                if (CurrUser != null)
                {
                    Model.Sys_Log syslog = new Model.Sys_Log
                    {
                        LogId = SQLHelper.GetNewID(),
                        HostName = Dns.GetHostName(),
                        OperationTime = DateTime.Now,
                        UserId = CurrUser.UserId,
                        MenuId = strMenuId,
                        OperationName = strOperationName,
                        DataId = dataId,
                        LogSource = 1,
                    };
                    IPAddress[] ips = Dns.GetHostAddresses(syslog.HostName);
                    if (ips.Length > 0)
                    {
                        foreach (IPAddress ip in ips)
                        {
                            if (ip.ToString().IndexOf('.') != -1)
                            {
                                syslog.Ip = ip.ToString();
                            }
                        }
                    }
                    string opLog = string.Empty;
                    var menu = db.Sys_Menu.FirstOrDefault(x => x.MenuId == strMenuId);
                    if (menu != null)
                    {
                        opLog = menu.MenuName + ":";
                    }
                    if (!string.IsNullOrEmpty(strOperationName))
                    {
                        opLog += strOperationName;
                    }
                    if (!string.IsNullOrEmpty(code))
                    {
                        syslog.OperationLog = opLog + ";" + code + "。";
                    }
                    if (!string.IsNullOrEmpty(CurrUser.LoginProjectId) && CurrUser.LoginProjectId != "null")
                    {
                        syslog.ProjectId = CurrUser.LoginProjectId;
                    }
                    db.Sys_Log.InsertOnSubmit(syslog);
                    db.SubmitChanges();
                }
            }
        }
        /// 
        /// 添加操作日志
        /// 
        /// 
        /// 
        public static void AddLog(string userId, string opLog)
        {
            //SetOvertime(userId);
            Model.Sys_Log log = new Model.Sys_Log
            {
                LogId = SQLHelper.GetNewID(typeof(Model.Sys_Log)),
                HostName = Dns.GetHostName()
            };
            IPAddress[] ips = Dns.GetHostAddresses(log.HostName);
            if (ips.Length > 0)
            {
                foreach (IPAddress ip in ips)
                {
                    if (ip.ToString().IndexOf('.') != -1)
                    {
                        log.Ip = ip.ToString();
                    }
                }
            }
            log.OperationTime = DateTime.Now;
            log.OperationLog = opLog;
            log.UserId = userId;
            db.Sys_Log.InsertOnSubmit(log);
            db.SubmitChanges();
        }
        /// 
        /// 根据项目Id删除所有相关日志信息
        /// 
        /// 
        public static void DeleteLog(string projectId)
        {
            Model.SGGLDB db = Funs.DB;
            var q = (from x in db.Sys_Log where x.ProjectId == projectId select x).ToList();
            if (q != null)
            {
                db.Sys_Log.DeleteAllOnSubmit(q);
                db.SubmitChanges();
            }
        }
    }
}