using System;
using System.Collections.Generic;
using QMAPP.BLL;
using QMAPP.Entity;
using QMAPP.FJC.BLL.Dict;
using QMAPP.FJC.DAL.ProduceManage;
using QMAPP.FJC.Entity.ProduceManage;
using QMFrameWork.Data;
using QMFrameWork.Log;
using QMAPP.FJC.Entity;
using QMAPP.MD.Entity.Bucket;
using QMAPP.FJC.DAL.Bucket;

namespace QMAPP.FJC.BLL.Bucket
{
    /// <summary>
    /// 模块名称:注塑投料记录
    /// 作    者:张松男
    /// 编写日期:2021年07月13日
    /// </summary> 
    public class RawMaterialBLL : BaseBLL
    {
        #region 获取信息
        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="">条件</param>
        /// <returns>信息</returns>
        public DataResult<RawMaterial> Get(RawMaterial model)
        {
            DataResult<RawMaterial> result = new DataResult<RawMaterial>();
            try
            {
                result.Result = new RawMaterialDAL().Get(model);
                result.IsSuccess = true;
            }
            catch (Exception ex)
            {
                LogManager.LogHelper.Error(new LogInfo()
                {
                    ErrorInfo = ex,
                    Tag = ex.StackTrace,
                    Info = "获取异常!"
                });
                result.IsSuccess = false;
                result.Ex = ex;
                result.Msg = "获取异常";
            }

            return result;
        }
        #endregion
         
        #region 获取列表
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="condition">条件</param>
        /// <param name="page">数据页</param>
        /// <returns>数据页</returns>
        public DataResult<DataPage> GetList(RawMaterial condition, DataPage page)
        {
            //DataPage result = new DataPage();
            
            DataResult<DataPage> result = new DataResult<DataPage>();
            result.IsSuccess = true;
            try
            {
                result.Result = new RawMaterialDAL().GetList(condition, page);
                
            }
            catch (Exception ex)
            {
                LogManager.LogHelper.Error(new LogInfo()
                {
                    ErrorInfo = ex,
                    Tag = ex.StackTrace,
                    Info = "获取列表异常!"
                });
                result.IsSuccess = false;
                result.Msg = "获取数据异常";
            }

            return result;
        }

        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="condition">条件</param>
        /// <param name="page">数据页</param>
        /// <returns>数据页</returns>
        public List<RawMaterial> GetListTo(RawMaterial condition)
        {
            try
            {
                return new RawMaterialDAL().GetListTo(condition);

            }
            catch (Exception ex)
            {
                LogManager.LogHelper.Error(new LogInfo()
                {
                    ErrorInfo = ex,
                    Tag = ex.StackTrace,
                    Info = "获取列表异常!"
                });
            }

            return new List<RawMaterial>();
        }

        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="condition">条件</param>
        /// <param name="page">数据页</param>
        /// <returns>数据页</returns>
        public List<RawMaterial> GetListRaw(RawMaterial condition)
        {
            try
            {
                return new RawMaterialDAL().GetListRaw(condition);

            }
            catch (Exception ex)
            {
                LogManager.LogHelper.Error(new LogInfo()
                {
                    ErrorInfo = ex,
                    Tag = ex.StackTrace,
                    Info = "获取列表异常!"
                });
            }

            return new List<RawMaterial>();
        }

        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="condition">条件</param>
        /// <returns>全部集合</returns>
        public DataPage GetAllList(RawMaterial condition,DataPage page)
        {
            try
            {
                //获取信息列表
                DataPage list = new RawMaterialDAL().GetList(condition, page);
                return list;
            }
            catch (Exception ex)
            {
                LogManager.LogHelper.Error(new LogInfo()
                {
                    ErrorInfo = ex,
                    Tag = ex.StackTrace,
                    Info = "获取列表异常!"
                });
                throw ex;
            }
        }


        #endregion

        #region 插入信息
        /// <summary>
        /// 插入信息(单表)
        /// </summary>
        /// <param name="">信息</param>
        /// <returns>插入行数</returns>
        public DataResult<int> Insert(RawMaterial info)
        {
            DataResult<int> result = new DataResult<int>();
            try
            {
                //基本信息
                info.PID = Guid.NewGuid().ToString();
                info.CREATEUSER = this.LoginUser.UserID;
                info.CREATEDATE = DateTime.Now.ToString();
                info.UPDATEUSER = info.CREATEUSER;
                info.UPDATEDATE = info.CREATEDATE;
                info.IsCheck = "0";
                RawMaterialDAL cmdDAL = new RawMaterialDAL();
                result.Result = cmdDAL.Insert(info);
                result.IsSuccess = true;
                result.Msg = "保存成功";
                return result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region 更新信息
        /// <summary>
        /// 更新信息
        /// </summary>
        /// <param name=""></param>
        /// <returns>更新行数</returns>
        public DataResult Update(RawMaterial model)
        {
            DataResult result = new DataResult();
            result.IsSuccess = true;
            result.Msg = "更新成功!";
            try
            {
                RawMaterial info = new RawMaterialDAL().Get(model);

                //基本信息 
                info.IsCheck = model.IsCheck;
                info.BucketCode = model.BucketCode;
                info.BatchCode = model.BatchCode;
                info.PartCode = model.PartCode;
                info.SerialCode = model.SerialCode;
                info.CREATEUSER = model.CREATEUSER;
                info.CREATEDATE = model.CREATEDATE;
                info.UPDATEDATE = DateTime.Now.ToString();
                info.UPDATEUSER = this.LoginUser.UserID;
                int temp = new RawMaterialDAL().Update(info);

                if (temp == 0)
                {
                    result.IsSuccess = false;
                    result.Msg = "更新失败!";
                    return result;
                }
            }
            catch (Exception ex)
            {
                LogManager.LogHelper.Error(new LogInfo()
                {
                    ErrorInfo = ex,
                    Tag = ex.StackTrace,
                    Info = "更新异常!"
                });
                result.IsSuccess = false;
                result.Ex = ex;
                result.Msg = "更新异常";
            }
            return result;
        }
        #endregion

        #region 删除
        
        /// <summary>
        /// 删除信息
        /// </summary>
        /// <param name="">信息</param>
        /// <returns>删除个数</returns>
        public int Delete(string model)
        {
            int count = 0;
            try
            {
                count = new RawMaterialRecordDAL().GetMaterialCodeCount(model);
                if (count <= 0)
                {
                    count = new RawMaterialDAL().Delete(model);
                    return count;
                }
                else

                    return 0;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
        
    }
}