using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
namespace BLL
{
    /// 
    /// 费用管理明细
    /// 
    public static class CostManageItemService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 根据主键删除费用管理明细
        /// 
        /// 
        /// 
        public static Model.CostGoods_CostManageItem GetCostManageItemById(string costManageItemId)
        {
            return Funs.DB.CostGoods_CostManageItem.FirstOrDefault(e => e.CostManageItemId == costManageItemId);
        }
        /// 
        /// 根据费用管理主键获取所有相关明细信息
        /// 
        /// 
        /// 
        public static List GetCostManageItemByCostManageId(string costManageId)
        {
            return (from x in Funs.DB.CostGoods_CostManageItem where x.CostManageId == costManageId select x).ToList();
        }
        /// 
        /// 根据项目Id,单位Id和月份获取安全费用管理明细
        /// 
        /// 
        /// 
        public static List GetCostManageItemByUnitIdAndDate(string projectId, string unidId, DateTime date)
        {
            return (from x in Funs.DB.CostGoods_CostManageItem
                    join y in Funs.DB.CostGoods_CostManage
                    on x.CostManageId equals y.CostManageId
                    where y.ProjectId == projectId && y.UnitId == unidId
                    && y.CostManageDate.Value.Year == date.Year && y.CostManageDate.Value.Month == date.Month
                    select x).ToList();
        }
        /// 
        /// 添加费用管理明细
        /// 
        /// 
        public static void AddCostManageItem(Model.CostGoods_CostManageItem costManageItem)
        {
            Model.SGGLDB db = Funs.DB;
            Model.CostGoods_CostManageItem newCostManageItem = new Model.CostGoods_CostManageItem
            {
                CostManageItemId = costManageItem.CostManageItemId,
                CostManageId = costManageItem.CostManageId,
                InvestCostProject = costManageItem.InvestCostProject,
                UseReason = costManageItem.UseReason,
                Counts = costManageItem.Counts,
                PriceMoney = costManageItem.PriceMoney,
                AuditCounts = costManageItem.AuditCounts,
                AuditPriceMoney = costManageItem.AuditPriceMoney,
                Remark = costManageItem.Remark
            };
            db.CostGoods_CostManageItem.InsertOnSubmit(newCostManageItem);
            db.SubmitChanges();
        }
        /// 
        /// 修改费用管理明细
        /// 
        /// 
        public static void UpdateCostManageItem(Model.CostGoods_CostManageItem costManageItem)
        {
            Model.SGGLDB db = Funs.DB;
            Model.CostGoods_CostManageItem newCostManageItem = db.CostGoods_CostManageItem.FirstOrDefault(e => e.CostManageItemId == costManageItem.CostManageItemId);
            if (newCostManageItem != null)
            {
                newCostManageItem.CostManageId = costManageItem.CostManageId;
                newCostManageItem.InvestCostProject = costManageItem.InvestCostProject;
                newCostManageItem.UseReason = costManageItem.UseReason;
                newCostManageItem.Counts = costManageItem.Counts;
                newCostManageItem.PriceMoney = costManageItem.PriceMoney;
                newCostManageItem.AuditCounts = costManageItem.AuditCounts;
                newCostManageItem.AuditPriceMoney = costManageItem.AuditPriceMoney;
                newCostManageItem.Remark = costManageItem.Remark;
                db.SubmitChanges();
            }
        }
        /// 
        /// 根据费用管理主键删除所有相关明细信息
        /// 
        /// 
        public static void DeleteCostManageItemByCostManageId(string costManageId)
        {
            Model.SGGLDB db = Funs.DB;
            var q = (from x in db.CostGoods_CostManageItem where x.CostManageId == costManageId select x).ToList();
            if (q != null)
            {
                db.CostGoods_CostManageItem.DeleteAllOnSubmit(q);
                db.SubmitChanges();
            }
        }
        /// 
        /// 根据主键删除费用管理信息
        /// 
        /// 
        public static void DeleteCostManageItemById(string costManageItemId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.CostGoods_CostManageItem costManageItem = db.CostGoods_CostManageItem.FirstOrDefault(e => e.CostManageItemId == costManageItemId);
            if (costManageItem != null)
            {
                db.CostGoods_CostManageItem.DeleteOnSubmit(costManageItem);
                db.SubmitChanges();
            }
        }
        /// 
        /// 投入费用项目下拉框内容
        /// 
        /// 
        public static ListItem[] GetInvestCostProjectList()
        {
            ListItem[] lis = new ListItem[29];
            lis[0] = new ListItem("内业管理", "内业管理");
            lis[1] = new ListItem("检测器材", "检测器材");
            lis[2] = new ListItem("警示警戒", "警示警戒");
            lis[3] = new ListItem("安全奖励", "安全奖励");
            lis[4] = new ListItem("其他", "其他");
            lis[5] = new ListItem("安全技术", "安全技术");
            lis[6] = new ListItem("工业卫生", "工业卫生");
            lis[7] = new ListItem("安全用电", "安全用电");
            lis[8] = new ListItem("高处作业及基坑", "高处作业及基坑");
            lis[9] = new ListItem("临边洞口防护", "临边洞口防护");
            lis[10] = new ListItem("受限空间内作业", "受限空间内作业");
            lis[11] = new ListItem("动火作业", "动火作业");
            lis[12] = new ListItem("机械装备防护", "机械装备防护");
            lis[13] = new ListItem("吊装运输和起重", "吊装运输和起重");
            lis[14] = new ListItem("硼砂作业", "硼砂作业");
            lis[15] = new ListItem("拆除工程", "拆除工程");
            lis[16] = new ListItem("试压试车与有害介质作业", "试压试车与有害介质作业");
            lis[17] = new ListItem("特种作业防护", "特种作业防护");
            lis[18] = new ListItem("应急管理", "应急管理");
            lis[19] = new ListItem("非常措施", "非常措施");
            lis[20] = new ListItem("其他安全措施", "其他安全措施");
            lis[21] = new ListItem("装置区封闭管理", "装置区封闭管理");
            lis[22] = new ListItem("防爆施工器具", "防爆施工器具");
            lis[23] = new ListItem("标识标签与锁定", "标识标签与锁定");
            lis[24] = new ListItem("关键场所封闭", "关键场所封闭");
            lis[25] = new ListItem("催化剂加装还原", "催化剂加装还原");
            lis[26] = new ListItem("联动和化工试车", "联动和化工试车");
            lis[27] = new ListItem("教育培训", "教育培训");
            lis[28] = new ListItem("防护控制和排放", "防护控制和排放");
            return lis;
        }
        public static decimal? GetCostsByUnitId(string unitId, DateTime startTime, DateTime endTime)
        {
            Model.SGGLDB db = Funs.DB;
            var q = (from x in db.CostGoods_CostManageItem
                         join y in db.CostGoods_CostManage
                         on x.CostManageId equals y.CostManageId
                         where y.UnitId == unitId && y.States == BLL.Const.State_2 && y.CostManageDate >= startTime && y.CostManageDate < endTime
                         select x).ToList();
                if (q.Count > 0)
                {
                    return q.Sum(e => (e.AuditCounts * e.AuditPriceMoney));
                }
                return null;
        }
    }
}