using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QMAPP.FJC.TRACING.DAInterface;
using System.Text.RegularExpressions;
using QMAPP.FJC.Entity;

namespace QMAPP.FJC.TRACING.DataValidators
{
    /// <summary>
    /// 生产计划验证
    /// </summary>
    public class FISValidator : IDataValidator
    {
        public ValidateResult Validate(DAObject data, Entity.QT.DAIValidation validOption)
        {
            string regexp_full = "^D\\d{2}\\w+[RF][LR]\\d{2}(10|11|12|0[1-9])(30|31|2\\d|1\\d|0[1-9])\\w\\d{5}$";
            //如果不是FIS码 不校验
            //if(!Regex.IsMatch(data.DAValue.ToString(),regexp_full))
            //{
            //    return new ValidateResult(true, "");
            //}
            if (data.OrderPlan == null)
            {
                return new ValidateResult(true, "");
            }
            if (data.OrderPlan.STATE == EnumGeter.WorkOrderState.Suspended.GetHashCode())
            {
                return new ValidateResult(false, "当前工单已挂起,无法进行生产,请先取消挂起!");
            }
            
            //DAL.ProductionPlan.WorkOrderDAL workorderdal = new DAL.ProductionPlan.WorkOrderDAL();
            //var workorder = workorderdal.GetOne(data.OrderPlan.PID);
            //if (workorder == null)
            //{
            //    return new ValidateResult(false, "无法查询到当前FIS工单,已完成或被删除!");
            //}
            if (!string.Equals(data.WorkLocState.WORKCELL_CODE, data.OrderPlan.WORKCELL_CODE))
            {
                MD.DAL.WorkCellDAL workcelldal = new MD.DAL.WorkCellDAL();
                var workcell = workcelldal.GetWorkCellByCode(data.OrderPlan.WORKCELL_CODE);
                if (workcell != null)
                {
                    return new ValidateResult(false, string.Format("当前FIS工单目前在工序“{0}”,不可跳序生产!", workcell.WORKCELL_NAME));
                }
                else
                {
                    return new ValidateResult(false, string.Format("当前FIS工单不在此工序上,不可跳序生产!"));
                }
            }
            //if (!string.IsNullOrEmpty(data.OrderPlan.MOULD_CODE) && !string.Equals(data.WorkLocState.WORKLOC_CODE, data.OrderPlan.WORKLOC_CODE))
            //{
            //    MD.DAL.WorkCellDAL workcelldal = new MD.DAL.WorkCellDAL();
            //    var workcell = workcelldal.GetWorkCellByCode(data.OrderPlan.WORKCELL_CODE);
            //    if (workcell != null)
            //    {
            //        return new ValidateResult(false, string.Format("当前FIS工单目前在工序“{0}”,不可跳序生产!", workcell.WORKCELL_NAME));
            //    }
            //    else
            //    {
            //        return new ValidateResult(false, string.Format("当前FIS工单不在此工序上,不可跳序生产!"));
            //    }
            //}
            //if (!string.IsNullOrEmpty(data.OrderPlan.MOULD_CODE) && !string.Equals(data.OrderPlan.MOULD_CODE, data.MouldCode))
            //{
            //    return new ValidateResult(false, string.Format("当前工单正在本工位另一模架{0}上进行生产!", data.MouldCode));
            //}

            return new ValidateResult(true, "");

        }
    }
}