using System.Collections.Generic;
using System.Linq;
namespace BLL
{
    public static class HJGL_ElectrodeRecoveryService
    {
        /// 
        /// 根据焊条发放回收记录ID获取焊条发放回收记录信息
        /// 
        /// 焊条发放回收记录ID
        /// 
        public static Model.HJGL_ElectrodeRecovery GetElectrodeRecoveryByID(string electrodeRecoveryID)
        {
            Model.SGGLDB db = Funs.DB;
            var electrodeRecovery = db.HJGL_ElectrodeRecovery.FirstOrDefault(e => e.ElectrodeRecoveryId == electrodeRecoveryID);
            return electrodeRecovery;
        }
        /// 
        ///根据焊条发放回收记录ID获取焊条发放回收记录明细信息
        /// 
        /// 焊条发放回收记录ID
        /// 
        public static List GetElectrodeRecoveryItemByRecoveryID(string electrodeCoveryId)
        {
            return (from x in Funs.DB.HJGL_ElectrodeRecoveryItem where x.ElectrodeRecoveryId == electrodeCoveryId select x).ToList();
        }
        /// 
        /// 添加焊条发放回收记录信息
        /// 
        /// 
        public static void AddElectrodeRecovery(Model.HJGL_ElectrodeRecovery electrodeRecovery)
        {
            Model.SGGLDB db = Funs.DB;
            Model.HJGL_ElectrodeRecovery newElectrodeRecovery = new Model.HJGL_ElectrodeRecovery();
            newElectrodeRecovery.ElectrodeRecoveryId = electrodeRecovery.ElectrodeRecoveryId;
            newElectrodeRecovery.ElectrodeRecoveryCode = electrodeRecovery.ElectrodeRecoveryCode;
            newElectrodeRecovery.ElectrodeRecoveryDate = electrodeRecovery.ElectrodeRecoveryDate;
            newElectrodeRecovery.CompileMan = electrodeRecovery.CompileMan;
            newElectrodeRecovery.CompileDate = electrodeRecovery.CompileDate;
            newElectrodeRecovery.ProjectId = electrodeRecovery.ProjectId;
            newElectrodeRecovery.AuditMan = electrodeRecovery.AuditMan;
            newElectrodeRecovery.AuditDate = electrodeRecovery.AuditDate;
            db.HJGL_ElectrodeRecovery.InsertOnSubmit(newElectrodeRecovery);
            db.SubmitChanges();
        }
        /// 
        /// 修改焊条发放回收记录
        /// 
        /// 
        public static void UpdateElectrodeRecovery(Model.HJGL_ElectrodeRecovery electrodeRecovery)
        {
            Model.SGGLDB db = Funs.DB;
            Model.HJGL_ElectrodeRecovery newElectrodeRecovery = db.HJGL_ElectrodeRecovery.FirstOrDefault(e => e.ElectrodeRecoveryId == electrodeRecovery.ElectrodeRecoveryId);
            if (newElectrodeRecovery != null)
            {
                newElectrodeRecovery.ElectrodeRecoveryCode = electrodeRecovery.ElectrodeRecoveryCode;
                newElectrodeRecovery.ElectrodeRecoveryDate = electrodeRecovery.ElectrodeRecoveryDate;
                newElectrodeRecovery.CompileMan = electrodeRecovery.CompileMan;
                newElectrodeRecovery.CompileDate = electrodeRecovery.CompileDate;
                newElectrodeRecovery.AuditMan = electrodeRecovery.AuditMan;
                newElectrodeRecovery.AuditDate = electrodeRecovery.AuditDate;
                db.SubmitChanges();
            }
        }
        /// 
        /// 删除焊条发放回收记录
        /// 
        /// 
        public static void DeleteElectrodeRecovery(string electrodeRecoveryId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.HJGL_ElectrodeRecovery electrodeRecovery = db.HJGL_ElectrodeRecovery.First(e => e.ElectrodeRecoveryId == electrodeRecoveryId);
            db.HJGL_ElectrodeRecovery.DeleteOnSubmit(electrodeRecovery);
            db.SubmitChanges();
        }
        /// 
        /// 添加焊条发放回收记录明细信息
        /// 
        /// 
        public static void AddElectrodeRecoveryItem(Model.HJGL_ElectrodeRecoveryItem item)
        {
            Model.SGGLDB db = Funs.DB;
            Model.HJGL_ElectrodeRecoveryItem newItem = new Model.HJGL_ElectrodeRecoveryItem();
            newItem.ElectrodeRecoveryItemID = SQLHelper.GetNewID(typeof(Model.HJGL_ElectrodeRecoveryItem));
            newItem.ElectrodeRecoveryId = item.ElectrodeRecoveryId;
            newItem.ElectrodeGrade = item.ElectrodeGrade;
            newItem.BatchNumber = item.BatchNumber;
            newItem.InLibCode = item.InLibCode;
            newItem.Specifications = item.Specifications;
            newItem.WelderCode = item.WelderCode;
            newItem.UseSite = item.UseSite;
            newItem.WeldingMaterial = item.WeldingMaterial;
            newItem.RecipientsCount = item.RecipientsCount;
            newItem.RecoveryCount = item.RecoveryCount;
            newItem.GrantMan = item.GrantMan;
            newItem.ElectrodeRecoveryModel = item.ElectrodeRecoveryModel;
            newItem.WMT_ID = item.WMT_ID;
            db.HJGL_ElectrodeRecoveryItem.InsertOnSubmit(newItem);
            db.SubmitChanges();
        }
        /// 
        /// 删除根据焊条发放回收记录Id相关的所有明细信息
        /// 
        /// 
        public static void DeleteElectrodeRecoveryItem(string projectId, string electrodeRecoveryId)
        {
            Model.SGGLDB db = Funs.DB;
            var deleteItem = (from x in db.HJGL_ElectrodeRecoveryItem where x.ElectrodeRecoveryId == electrodeRecoveryId select x).ToList();
            if (deleteItem.Count() > 0)
            {
                foreach (var ditem in deleteItem)
                {
                    decimal count = 0;
                    if (ditem.RecipientsCount.HasValue)
                    {
                        count = count + ditem.RecipientsCount.Value;
                    }
                    if (ditem.RecoveryCount.HasValue)
                    {
                        count = count - ditem.RecoveryCount.Value;
                    }
                    BLL.HJGL_EMInventoryRecordsService.UpdateEMInventoryRecords(projectId, ditem.WMT_ID, ditem.ElectrodeRecoveryModel, ditem.Specifications, count);
                }
                db.HJGL_ElectrodeRecoveryItem.DeleteAllOnSubmit(deleteItem);
                db.SubmitChanges();
            }
        }
    }
}