using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace BLL
{
    /// 
    /// 材料到货登记及验收记录
    /// 
    public class HJGL_EMaterialRegistService
    {
        /// 
        /// 根据材料到货登记及验收记录Id获取材料到货登记及验收记录信息
        /// 
        /// 
        /// 
        public static Model.HJGL_EMaterialRegist GetEMaterialRegistByID(string eMaterialRegistId)
        {
            Model.SGGLDB db = Funs.DB;
            var eMaterialRegist = db.HJGL_EMaterialRegist.FirstOrDefault(e => e.EMaterialRegistId == eMaterialRegistId);
            return eMaterialRegist;
        }
        /// 
        /// 根据材料到货登记及验收记录Id获取明细信息
        /// 
        /// 
        /// 
        public static List GetEMaterialRegistItemByRegistId(string eMaterialRegistId)
        {
            return (from x in Funs.DB.HJGL_EMaterialRegistItem where x.EMaterialRegistId == eMaterialRegistId select x).ToList();
        }
        /// 
        /// 
        /// 
        /// 
        public static List GetRegistItem()
        {
            return (from x in Funs.DB.HJGL_EMaterialRegistItem select x).ToList();
        }
        /// 
        /// 添加材料到货登记及验收记录
        /// 
        /// 
        public static void AddEMaterialRegist(Model.HJGL_EMaterialRegist eMaterialRegist)
        {
            Model.SGGLDB db = Funs.DB;
            Model.HJGL_EMaterialRegist newEMaterialRegist = new Model.HJGL_EMaterialRegist();
            newEMaterialRegist.EMaterialRegistId = eMaterialRegist.EMaterialRegistId;
            newEMaterialRegist.EMaterialRegistCode = eMaterialRegist.EMaterialRegistCode;
            newEMaterialRegist.EMaterialRegistDate = eMaterialRegist.EMaterialRegistDate;
            newEMaterialRegist.DeliveryMan = eMaterialRegist.DeliveryMan;
            newEMaterialRegist.UnitName = eMaterialRegist.UnitName;
            newEMaterialRegist.CompileMan = eMaterialRegist.CompileMan;
            newEMaterialRegist.CompileDate = eMaterialRegist.CompileDate;
            newEMaterialRegist.ProjectId = eMaterialRegist.ProjectId;
            db.HJGL_EMaterialRegist.InsertOnSubmit(newEMaterialRegist);
            db.SubmitChanges();
        }
        /// 
        /// 修改材料到货登记及验收记录
        /// 
        /// 
        public static void UpdateEMaterialRegist(Model.HJGL_EMaterialRegist eMaterialRegist)
        {
            Model.SGGLDB db = Funs.DB;
            Model.HJGL_EMaterialRegist newEMaterialRegist = db.HJGL_EMaterialRegist.First(e => e.EMaterialRegistId == eMaterialRegist.EMaterialRegistId);
            newEMaterialRegist.EMaterialRegistCode = eMaterialRegist.EMaterialRegistCode;
            newEMaterialRegist.EMaterialRegistDate = eMaterialRegist.EMaterialRegistDate;
            newEMaterialRegist.DeliveryMan = eMaterialRegist.DeliveryMan;
            newEMaterialRegist.UnitName = eMaterialRegist.UnitName;
            newEMaterialRegist.CompileMan = eMaterialRegist.CompileMan;
            newEMaterialRegist.CompileDate = eMaterialRegist.CompileDate;
            newEMaterialRegist.ProjectId = eMaterialRegist.ProjectId;
            db.SubmitChanges();
        }
        /// 
        /// 删除材料到货登记及验收记录
        /// 
        /// 
        public static void DeleteEMaterialRegist(string eMaterialRegistId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.HJGL_EMaterialRegist eMaterialRegist = db.HJGL_EMaterialRegist.First(e => e.EMaterialRegistId == eMaterialRegistId);
            db.HJGL_EMaterialRegist.DeleteOnSubmit(eMaterialRegist);
            db.SubmitChanges();
        }
        /// 
        /// 添加材料到货登记及验收记录明细
        /// 
        /// 
        public static void AddEMaterialRegistItem(Model.HJGL_EMaterialRegistItem item)
        {
            Model.SGGLDB db = Funs.DB;
            Model.HJGL_EMaterialRegistItem newItem = new Model.HJGL_EMaterialRegistItem();
            newItem.EMaterialRegistItemId = item.EMaterialRegistItemId;
            newItem.EMaterialRegistId = item.EMaterialRegistId;
            newItem.WMT_ID = item.WMT_ID;
            newItem.SpecificationsModel = item.SpecificationsModel;           
            newItem.UnitName = item.UnitName;
            newItem.MaterialCount = item.MaterialCount;
            newItem.ItemCode = item.ItemCode;
            newItem.Testrecords = item.Testrecords;
            newItem.Models = item.Models;
            db.HJGL_EMaterialRegistItem.InsertOnSubmit(newItem);
            db.SubmitChanges();
        }
        /// 
        /// 根据材料到货登记及验收记录Id删除所有相关明细
        /// 
        /// 
        public static void DeleteEMaterialRegistItem(string projectId, string eMaterialRegistId)
        {
            Model.SGGLDB db = Funs.DB;
            var deleteItem = from x in db.HJGL_EMaterialRegistItem where x.EMaterialRegistId == eMaterialRegistId select x;
            /// 取到货明细  库存减去明细值
            if (deleteItem.Count() > 0)
            {
                foreach (var ditem in deleteItem)
                {
                    int count = 0;
                    if (ditem.MaterialCount.HasValue)
                    {
                        count = count - ditem.MaterialCount.Value;
                    }
                    if (count < 0)
                    {
                        BLL.HJGL_EMInventoryRecordsService.UpdateEMInventoryRecords(projectId, ditem.WMT_ID, ditem.Models, ditem.SpecificationsModel, count);
                    }
                }
                db.HJGL_EMaterialRegistItem.DeleteAllOnSubmit(deleteItem);
                db.SubmitChanges();
            }
        }
    }
}