using System.Linq;
namespace BLL
{
    /// 
    /// 物资出门申请
    /// 
    public static class GoodsManageService
    {
        /// 
        /// 根据主键获取物资出门申请
        /// 
        /// 
        /// 
        public static Model.CostGoods_GoodsManage GetGoodsManageById(string goodsManageId)
        {
            return Funs.DB.CostGoods_GoodsManage.FirstOrDefault(e => e.GoodsManageId == goodsManageId);
        }
        /// 
        /// 添加物资出门申请
        /// 
        /// 
        public static void AddGoodsManage(Model.CostGoods_GoodsManage goodsManage)
        {
            Model.CostGoods_GoodsManage newGoodsManage = new Model.CostGoods_GoodsManage
            {
                GoodsManageId = goodsManage.GoodsManageId,
                ProjectId = goodsManage.ProjectId,
                ApplyUnitId = goodsManage.ApplyUnitId,
                ApplyManId = goodsManage.ApplyManId,
                ApplyTime = goodsManage.ApplyTime,
                OutReasons = goodsManage.OutReasons,
                CarNum = goodsManage.CarNum,
                BeBack = goodsManage.BeBack,
                BackTime = goodsManage.BackTime,
                States = goodsManage.States,
                NextManId=goodsManage.NextManId,
            };
            Funs.DB.CostGoods_GoodsManage.InsertOnSubmit(newGoodsManage);
            Funs.DB.SubmitChanges();
            //CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.GoodsManageMenuId, goodsManage.ProjectId, goodsManage.ApplyUnitId, goodsManage.GoodsManageId, goodsManage.ApplyTime);
        }
        /// 
        /// 修改物资出门申请
        /// 
        /// 
        public static void UpdateGoodsManage(Model.CostGoods_GoodsManage goodsManage)
        {
            Model.CostGoods_GoodsManage newGoodsManage = Funs.DB.CostGoods_GoodsManage.FirstOrDefault(e => e.GoodsManageId == goodsManage.GoodsManageId);
            if (newGoodsManage != null)
            {
                newGoodsManage.ApplyUnitId = goodsManage.ApplyUnitId;
                //newGoodsManage.ApplyManId = goodsManage.ApplyManId;
                //newGoodsManage.ApplyTime = goodsManage.ApplyTime;
                newGoodsManage.OutReasons = goodsManage.OutReasons;
                newGoodsManage.CarNum = goodsManage.CarNum;
                newGoodsManage.BeBack = goodsManage.BeBack;
                newGoodsManage.BackTime = goodsManage.BackTime;
                newGoodsManage.States = goodsManage.States;
                newGoodsManage.NextManId = goodsManage.NextManId;
                Funs.DB.SubmitChanges();
            }
        }
        /// 
        /// 根据主键删除物资出门申请
        /// 
        /// 
        public static void DeleteGoodsManageById(string goodsManageId)
        {
           var goodsManage = Funs.DB.CostGoods_GoodsManage.FirstOrDefault(e => e.GoodsManageId == goodsManageId);
            if (goodsManage != null)
            {
                CodeRecordsService.DeleteCodeRecordsByDataId(goodsManageId);//删除编号
                DeleteGoodsManageItemById(goodsManageId);//删除明细表               
                DeleteGoodsManageFlowOperateById(goodsManageId); ////删除审核流程表
                Funs.DB.CostGoods_GoodsManage.DeleteOnSubmit(goodsManage);
                Funs.DB.SubmitChanges();
            }
        }
        /// 
        /// 删除明细表
        /// 
        /// 
        public static void DeleteGoodsManageItemById(string goodsManageId)
        {
            var goodsManageItems = from x in Funs.DB.CostGoods_GoodsManageItem where x.GoodsManageId == goodsManageId select x;
            if (goodsManageItems.Count() > 0)
            {
                Funs.DB.CostGoods_GoodsManageItem.DeleteAllOnSubmit(goodsManageItems);
                Funs.DB.SubmitChanges();
            }
        }
        
        /// 
        /// 删除审核表
        /// 
        /// 
        public static void DeleteGoodsManageFlowOperateById(string goodsManageId)
        {
            var flowOperates = from x in Funs.DB.CostGoods_GoodsManageFlowOperate where x.GoodsManageId == goodsManageId select x;
            if (flowOperates.Count() > 0)
            {
                Funs.DB.CostGoods_GoodsManageFlowOperate.DeleteAllOnSubmit(flowOperates);
                Funs.DB.SubmitChanges();
            }
        }
    }
}