Ejemplo n.º 1
0
        private int GetRenewTime(string licenseNo)
        {
            var      sql = string.Empty;
            OracleDB ora = new OracleDB();

            int reNewTime = 0;

            sql = "SELECT MAX(RENEW_TIME) "
                  + "FROM AG_LICENSE_RENEW_T  "
                  + "WHERE LICENSE_NO = '" + LICENSE_NO.Trim() + "' ";


            DataTable dt = ora.GetDataTable(sql);

            if (dt != null && dt.Rows.Count > 0)
            {
                DataRow dr    = dt.Rows[0];
                int     reNew = dr[0].ToInt();

                reNewTime = reNew;
            }
            else
            {
                reNewTime = 0;
            }


            return(reNewTime);
        }
Ejemplo n.º 2
0
        protected void Validate()
        {
            var      sql = string.Empty;
            OracleDB ora = new OracleDB();

            if (IMPORT_ID == 0)
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.IMPORT_ID_Required);
            }

            if (String.IsNullOrEmpty(PETITION_TYPE))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.PETITION_TYPE_Required);
            }

            if (PetitionTypeR == null)
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.PETITION_TYPE_Required);
            }
            else
            {
                if (PetitionTypeR.PETITION_TYPE_CODE != "11" && PetitionTypeR.PETITION_TYPE_CODE != "18")
                {
                    //chkLicense
                    if (String.IsNullOrEmpty(LICENSE_NO))
                    {
                        AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_NO_Required);
                    }
                    else
                    {
                        //chkLicenseMathId
                        sql = "SELECT lt.LICENSE_NO "
                              + "FROM AG_LICENSE_T lt,AG_AGENT_LICENSE_T ag ,AG_AGENT_LICENSE_PERSON_T ap "
                              + "WHERE lt.LICENSE_NO = '" + LICENSE_NO.Trim() + "' "
                              + "and ((lt.LICENSE_NO = ag.LICENSE_NO and ag.ID_CARD_NO = '" + CITIZEN_ID.Trim() + "') or "
                              + "(lt.LICENSE_NO = ap.LICENSE_NO and ap.ID_CARD_NO = '" + CITIZEN_ID.Trim() + "')) "
                              + "group by lt.LICENSE_NO";

                        DataTable chkMathId = ora.GetDataTable(sql);


                        if (chkMathId.Rows.Count == 0)
                        {
                            AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_NO_NotMath_ID_CARD);
                        }
                        else
                        {
                            if (PetitionTypeR.PETITION_TYPE_CODE == "13")
                            {
                                int renewTime = 0;
                                renewTime = GetRenewTime(LICENSE_NO);
                                renewTime = renewTime + 1;

                                if (renewTime >= 3)
                                {
                                    AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_NO_NotMath_Renew_13);
                                }
                            }
                            else if (PetitionTypeR.PETITION_TYPE_CODE == "14")
                            {
                                int renewTime = 0;
                                renewTime = GetRenewTime(LICENSE_NO);
                                renewTime = renewTime + 1;

                                if (renewTime <= 2)
                                {
                                    AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_NO_NotMath_Renew_14);
                                }
                            }

                            if (PetitionTypeR.PETITION_TYPE_CODE != "17" && PetitionTypeR.PETITION_TYPE_CODE != "18")
                            //&& LicenseFileHeader.LICENSE_TYPE_CODE != "03" && LicenseFileHeader.LICENSE_TYPE_CODE != "04")
                            {
                                sql = "SELECT ID_CARD_NO "
                                      + "FROM AG_AGENT_LICENSE_T  "
                                      + "WHERE LICENSE_NO = '" + LICENSE_NO.Trim() + "' "
                                      + "AND INSURANCE_COMP_CODE = '" + COMP_CODE + "' ";

                                DataTable agent = ora.GetDataTable(sql);

                                if (agent.Rows.Count == 0)
                                {
                                    if (!string.IsNullOrEmpty(COMP_CODE))
                                    {
                                        AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_NO_NotMath_Required);
                                    }
                                }
                            }


                            if (LICENSE_ACTIVE_DATE == null || LICENSE_ACTIVE_DATE == DateTime.MinValue)
                            {
                                AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_ACTIVE_DATE_Required);
                            }
                            else
                            {
                                if (!String.IsNullOrEmpty(LICENSE_NO))
                                {
                                    DateTime atDate = Convert.ToDateTime(LICENSE_ACTIVE_DATE).AddYears(-543);

                                    sql = "SELECT lt.LICENSE_NO "
                                          + "FROM AG_LICENSE_T lt "
                                          + "WHERE lt.LICENSE_NO = '" + LICENSE_NO.Trim() + "' "
                                          + "AND lt.DATE_LICENSE_ACT = TO_DATE('" + string.Format("{0:dd/MM/yyyy}", atDate) + "','dd/MM/yyyy') ";

                                    DataTable chkActiveDate = ora.GetDataTable(sql);

                                    if (chkActiveDate.Rows.Count == 0)
                                    {
                                        AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_ACTIVE_DATE_Required);
                                    }
                                }
                            }

                            if (LICENSE_EXPIRE_DATE == null || LICENSE_EXPIRE_DATE == DateTime.MinValue)
                            {
                                AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_EXPIRE_DATE_Required);
                            }
                            else
                            {
                                if (!String.IsNullOrEmpty(LICENSE_NO))
                                {
                                    DateTime exDate = Convert.ToDateTime(LICENSE_EXPIRE_DATE).AddYears(-543);

                                    sql = "SELECT lt.LICENSE_NO "
                                          + "FROM AG_LICENSE_T lt "
                                          + "WHERE lt.LICENSE_NO = '" + LICENSE_NO.Trim() + "' "
                                          + "AND lt.EXPIRE_DATE = TO_DATE('" + string.Format("{0:dd/MM/yyyy}", exDate) + "','dd/MM/yyyy') ";

                                    DataTable chkExpireDate = ora.GetDataTable(sql);

                                    if (chkExpireDate.Rows.Count == 0)
                                    {
                                        AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_EXPIRE_DATE_Required);
                                    }
                                    else
                                    {
                                        if (PetitionTypeR.PETITION_TYPE_CODE == "13" || PetitionTypeR.PETITION_TYPE_CODE == "14")
                                        {
                                            string currDateFormat = String.Format("{0:dd/MM/yyy}", DateTime.Now).ToString();
                                            string ExDateFormat   = String.Format("{0:dd/MM/yyyy}", LICENSE_EXPIRE_DATE).ToString();

                                            DateTime currTime = DateTime.Parse(currDateFormat);
                                            DateTime exTime   = DateTime.Parse(ExDateFormat);

                                            int dateCompare = DateTime.Compare(exTime, currTime);

                                            if (dateCompare == -1)
                                            {
                                                AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_EXPIRE_DATE_Expire);
                                            }
                                            // check ต่ออายุภายใน 60 วัน
                                            else
                                            {
                                                string strDate  = LICENSE_EXPIRE_DATE.ToString();
                                                string diffDate = DateCompare(strDate);

                                                if ((Convert.ToInt32(diffDate) < 0) || !(Convert.ToInt32(diffDate) <= 60))
                                                {
                                                    AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_EXPIRE_DATE_SixtyDay);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else if (PetitionTypeR.PETITION_TYPE_CODE == "11" || PetitionTypeR.PETITION_TYPE_CODE == "18")
                {
                    if (!String.IsNullOrEmpty(LICENSE_NO))
                    {
                        AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_NO_Required);
                    }
                    if (LICENSE_ACTIVE_DATE != null || LICENSE_ACTIVE_DATE == DateTime.MinValue)
                    {
                        AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_ACTIVE_DATE_Required);
                    }

                    if (LICENSE_EXPIRE_DATE != null || LICENSE_EXPIRE_DATE == DateTime.MinValue)
                    {
                        AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_EXPIRE_DATE_Required);
                    }
                }
            }



            if (String.IsNullOrEmpty(COMP_CODE) && ("17_18").Contains(PetitionTypeR.PETITION_TYPE_CODE))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.COMP_CODE_Required);
            }


            //ขอรับใบอนุญาตเป็นบริษัทเดิมขอไม่ได้
            if (PetitionTypeR.PETITION_TYPE_CODE == "18")
            {
                sql = "SELECT aal.INSURANCE_COMP_CODE "
                      + "FROM AG_LICENSE_T al,AG_AGENT_LICENSE_T aal  "
                      + "WHERE aal.ID_CARD_NO = '" + CITIZEN_ID.Trim() + "' "
                      + "AND al.LICENSE_NO = aal.LICENSE_NO "
                      + "AND al.LICENSE_TYPE_CODE = '" + LicenseFileHeader.LICENSE_TYPE_CODE.Trim() + "' ";

                DataTable agent = ora.GetDataTable(sql);


                if (agent != null && agent.Rows.Count > 0)
                {
                    string comAgent = agent.Rows[0]["INSURANCE_COMP_CODE"].ToString();

                    if (comAgent.Trim() == this.COMP_CODE.Trim())
                    {
                        AddBrokenRule(LicenseFileDetailBusinessRules.COMP_CODE_Required_02);
                    }
                }
            }



            if (String.IsNullOrEmpty(SEQ))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.SEQ_Required);
            }
            else if (SEQ != Sequence)
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.SEQ_NotOrder);
            }

            //ใบแทนใบอนุญาตเปลี่ยนชื่อสกุลค่าธรรมเนียมเป็น 0
            if (PetitionTypeR.PETITION_TYPE_CODE == "16" && replaceType == DTO.ReplateType.ChangeNameandSur.GetEnumValue().ToString())
            {
                if (LICENSE_FEE == null || LICENSE_FEE != 0)
                {
                    AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_FEE_Required);
                }
            }
            else if (PetitionTypeR.PETITION_TYPE_CODE == "11" && (new[] { "11", "12" }).Contains(LicenseFileHeader.LICENSE_TYPE_CODE))
            {
                if (LICENSE_FEE == null || LICENSE_FEE != 0)
                {
                    AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_FEE_Required);
                }
            }
            else
            {
                if (LICENSE_FEE == null)
                {
                    AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_FEE_Required);
                }

                else
                {
                    sql = "SELECT FEE "
                          + "FROM AG_PETITION_TYPE_R  "
                          + "WHERE PETITION_TYPE_CODE = '" + PetitionTypeR.PETITION_TYPE_CODE + "' ";

                    DataTable dtFree = ora.GetDataTable(sql);


                    if (dtFree != null && dtFree.Rows.Count > 0)
                    {
                        DataRow drFree = dtFree.Rows[0];
                        decimal free   = drFree[0].ToDecimal();

                        if (LICENSE_FEE != free)
                        {
                            AddBrokenRule(LicenseFileDetailBusinessRules.LICENSE_FEE_Required);
                        }
                    }
                }
            }



            if (String.IsNullOrEmpty(CITIZEN_ID) || CITIZEN_ID.Length != 13)
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.CITIZEN_ID_Required);
            }
            else if (!Utils.IdCard.Verify(CITIZEN_ID))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.CITIZEN_ID_Required);
            }


            if (String.IsNullOrEmpty(TITLE_NAME))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.TITLE_NAME_Required);
            }
            else
            {
                sql = "SELECT PRE_NAME_CODE "
                      + "FROM AG_PERSONAL_T  "
                      + "WHERE ID_CARD_NO = '" + CITIZEN_ID.Trim() + "' ";

                DataTable dtPreNameCode = ora.GetDataTable(sql);
                if (dtPreNameCode != null && dtPreNameCode.Rows.Count > 0)
                {
                    DataRow dr    = dtPreNameCode.Rows[0];
                    string  perId = dr[0].ToString();

                    sql = "SELECT NAME "
                          + "FROM VW_IAS_TITLE_NAME_PRIORITY  "
                          + "WHERE ID = '" + perId.Trim() + "' ";


                    DataTable dtPerPreName = ora.GetDataTable(sql);

                    if (dtPerPreName != null && dtPerPreName.Rows.Count > 0)
                    {
                        var    drPerPreName = dtPerPreName.Rows[0];
                        string perPreName   = drPerPreName[0].ToString();

                        if (TITLE_NAME.Trim() != perPreName.Trim())
                        {
                            AddBrokenRule(LicenseFileDetailBusinessRules.TITLE_NAME_Required);
                        }
                    }
                }
                else if (dtPreNameCode.Rows.Count == 0)
                {
                    if (PetitionTypeR.PETITION_TYPE_CODE == "11")
                    {
                        sql = "SELECT ap.PRE_NAME_CODE,ap.TESTING_NO "
                              + "FROM AG_APPLICANT_T ap,AG_EXAM_LICENSE_R ex "
                              + "WHERE ap.ID_CARD_NO = '" + CITIZEN_ID.Trim() + "' "
                              + "and ap.TESTING_NO = ex.TESTING_NO "
                              + "and ex.LICENSE_TYPE_CODE = '" + LicenseFileHeader.LICENSE_TYPE_CODE + "' "
                              + "order by ap.TESTING_NO desc ";

                        DataTable dtAppPreCode = ora.GetDataTable(sql);

                        if (dtAppPreCode != null && dtAppPreCode.Rows.Count > 0)
                        {
                            DataRow drAppPreCode = dtAppPreCode.Rows[0];
                            string  appPreId     = drAppPreCode["PRE_NAME_CODE"].ToString();

                            sql = "SELECT NAME "
                                  + "FROM VW_IAS_TITLE_NAME_PRIORITY  "
                                  + "WHERE ID = '" + appPreId.Trim() + "' ";

                            DataTable dtAppPreName = ora.GetDataTable(sql);
                            if (dtAppPreName != null && dtAppPreName.Rows.Count > 0)
                            {
                                var    drAppPreName = dtAppPreName.Rows[0];
                                string appPreName   = drAppPreName[0].ToString();

                                if (TITLE_NAME.Trim() != appPreName.Trim())
                                {
                                    AddBrokenRule(LicenseFileDetailBusinessRules.TITLE_NAME_Required);
                                }
                            }
                        }
                    }
                }
            }


            if (String.IsNullOrEmpty(NAME))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.NAME_Required);
            }
            else
            {
                if (replaceType != DTO.ReplateType.ChangeNameandSur.GetEnumValue().ToString())
                {
                    sql = "SELECT NAMES "
                          + "FROM AG_PERSONAL_T  "
                          + "WHERE ID_CARD_NO = '" + CITIZEN_ID.Trim() + "' ";

                    DataTable dtPerName = ora.GetDataTable(sql);


                    if (dtPerName != null && dtPerName.Rows.Count > 0)
                    {
                        DataRow drPerName = dtPerName.Rows[0];
                        string  perName   = drPerName[0].ToString();

                        if (NAME.Trim() != perName.Trim())
                        {
                            AddBrokenRule(LicenseFileDetailBusinessRules.NAME_Required);
                        }
                    }
                    else if (dtPerName.Rows.Count == 0)
                    {
                        if (PetitionTypeR.PETITION_TYPE_CODE == "11")
                        {
                            sql = "SELECT ap.NAMES,ap.TESTING_NO "
                                  + "FROM AG_APPLICANT_T ap,AG_EXAM_LICENSE_R ex "
                                  + "WHERE ap.ID_CARD_NO = '" + CITIZEN_ID.Trim() + "' "
                                  + "and ap.TESTING_NO = ex.TESTING_NO "
                                  + "and ex.LICENSE_TYPE_CODE = '" + LicenseFileHeader.LICENSE_TYPE_CODE + "' "
                                  + "order by ap.TESTING_NO desc ";

                            DataTable dtAppName = ora.GetDataTable(sql);
                            if (dtAppName != null && dtAppName.Rows.Count > 0)
                            {
                                DataRow drAppName = dtAppName.Rows[0];
                                string  appName   = drAppName["NAMES"].ToString();

                                if (NAME.Trim() != appName.Trim())
                                {
                                    AddBrokenRule(LicenseFileDetailBusinessRules.NAME_Required);
                                }
                            }
                        }
                    }
                }
            }


            if (String.IsNullOrEmpty(SURNAME))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.SURNAME_Required);
            }
            else
            {
                if (replaceType != DTO.ReplateType.ChangeNameandSur.GetEnumValue().ToString())
                {
                    sql = "SELECT LASTNAME "
                          + "FROM AG_PERSONAL_T  "
                          + "WHERE ID_CARD_NO = '" + CITIZEN_ID.Trim() + "' ";

                    DataTable dtPerSurName = ora.GetDataTable(sql);
                    if (dtPerSurName != null && dtPerSurName.Rows.Count > 0)
                    {
                        DataRow drPerSurName = dtPerSurName.Rows[0];
                        string  perSurName   = drPerSurName[0].ToString();

                        if (SURNAME.Trim() != perSurName.Trim())
                        {
                            AddBrokenRule(LicenseFileDetailBusinessRules.SURNAME_Required);
                        }
                    }
                    else if (dtPerSurName.Rows.Count == 0)
                    {
                        if (PetitionTypeR.PETITION_TYPE_CODE == "11")
                        {
                            sql = "SELECT ap.LASTNAME,ap.TESTING_NO "
                                  + "FROM AG_APPLICANT_T ap,AG_EXAM_LICENSE_R ex "
                                  + "WHERE ap.ID_CARD_NO = '" + CITIZEN_ID.Trim() + "' "
                                  + "and ap.TESTING_NO = ex.TESTING_NO "
                                  + "and ex.LICENSE_TYPE_CODE = '" + LicenseFileHeader.LICENSE_TYPE_CODE.Trim() + "' "
                                  + "order by ap.TESTING_NO desc ";

                            DataTable dtAppLastName = ora.GetDataTable(sql);
                            if (dtAppLastName != null && dtAppLastName.Rows.Count > 0)
                            {
                                DataRow drAppLastName = dtAppLastName.Rows[0];
                                string  appLastName   = drAppLastName["LASTNAME"].ToString();

                                if (SURNAME.Trim() != appLastName.Trim())
                                {
                                    AddBrokenRule(LicenseFileDetailBusinessRules.SURNAME_Required);
                                }
                            }
                        }
                    }
                }
            }

            if (String.IsNullOrEmpty(ADDR1))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.ADDR1_Required);
            }
            else if (ADDR1.Length > 60)
            {
                ADDR1 = ADDR1.Substring(0, 60);
            }

            //if (String.IsNullOrEmpty(ADDR2))
            //    AddBrokenRule(LicenseFileDetailBusinessRules.ADDR2_Required);

            if (String.IsNullOrEmpty(AREA_CODE))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.AREA_CODE_Required);
            }

            //if (String.IsNullOrEmpty(EMAIL))
            //    AddBrokenRule(LicenseFileDetailBusinessRules.EMAIL_Required);

            if (String.IsNullOrEmpty(CUR_ADDR))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.CUR_ADDR_Required);
            }
            else if (CUR_ADDR.Length > 60)
            {
                CUR_ADDR = CUR_ADDR.Substring(0, 60);
            }

            //if (String.IsNullOrEmpty(TEL_NO))
            //    AddBrokenRule(LicenseFileDetailBusinessRules.TEL_NO_Required);

            if (String.IsNullOrEmpty(CUR_AREA_CODE))
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.CUR_AREA_CODE_Required);
            }

            //if (String.IsNullOrEmpty(REMARK))
            //    AddBrokenRule(LicenseFileDetailBusinessRules.REMARK_Required);

            //if (String.IsNullOrEmpty(AR_ANSWER))
            //    AddBrokenRule(LicenseFileDetailBusinessRules.AR_ANSWER_Required);
            if (!String.IsNullOrEmpty(AR_ANSWER))
            {
                if (AR_ANSWER == "NOTARDATE")
                {
                    AddBrokenRule(LicenseFileDetailBusinessRules.AR_DATE_Required);
                }
            }



            if (PetitionTypeR.PETITION_TYPE_CODE == "17")
            {
                if (String.IsNullOrEmpty(OLD_COMP_CODE))
                {
                    AddBrokenRule(LicenseFileDetailBusinessRules.OLD_COMP_CODE_Required);
                }

                else
                {
                    sql = "SELECT INSURANCE_COMP_CODE "
                          + "FROM AG_AGENT_LICENSE_T  "
                          + "WHERE ID_CARD_NO = '" + CITIZEN_ID.Trim() + "' "
                          + "AND LICENSE_NO = '" + LICENSE_NO.Trim() + "' ";

                    DataTable dtInsurance = ora.GetDataTable(sql);

                    if (dtInsurance != null && dtInsurance.Rows.Count > 0)
                    {
                        DataRow dr         = dtInsurance.Rows[0];
                        string  oldComCode = dr[0].ToString();


                        if (OLD_COMP_CODE.Trim() != oldComCode.Trim())
                        {
                            AddBrokenRule(LicenseFileDetailBusinessRules.OLD_COMP_CODE_Required);
                        }
                    }
                }
            }
            else
            {
                if (!String.IsNullOrEmpty(OLD_COMP_CODE))
                {
                    if (OLD_COMP_CODE.Length > 4)
                    {
                        AddBrokenRule(LicenseFileDetailBusinessRules.OLD_COMP_CODE_Required);
                    }
                }
            }


            //if (String.IsNullOrEmpty(ERR_MSG))
            //    AddBrokenRule(LicenseFileDetailBusinessRules.ERR_MSG_Required);

            //if (String.IsNullOrEmpty(LOAD_STATUS))
            //    AddBrokenRule(LicenseFileDetailBusinessRules.LOAD_STATUS_Required);

            if (PetitionTypeR.PETITION_TYPE_CODE == "11")
            {
                var duplicense = (from hl in _ctx.AG_IAS_IMPORT_HEADER_TEMP
                                  join dl in _ctx.AG_IAS_IMPORT_DETAIL_TEMP on hl.IMPORT_ID equals dl.IMPORT_ID
                                  join lt in _ctx.AG_IAS_LICENSE_TYPE_R on hl.LICENSE_TYPE_CODE equals lt.LICENSE_TYPE_CODE
                                  join ld in _ctx.AG_IAS_LICENSE_D on dl.CITIZEN_ID equals ld.ID_CARD_NO
                                  join lh in _ctx.AG_IAS_LICENSE_H on ld.UPLOAD_GROUP_NO equals lh.UPLOAD_GROUP_NO


                                  where dl.CITIZEN_ID == this.CITIZEN_ID &&
                                  dl.LOAD_STATUS == "C" &&
                                  ld.APPROVED == "Y" &&
                                  lh.LICENSE_TYPE_CODE == LicenseFileHeader.LICENSE_TYPE_CODE &&
                                  lh.PETITION_TYPE_CODE == LicenseFileHeader.PETTITION_TYPE &&
                                  hl.LICENSE_TYPE_CODE == LicenseFileHeader.LICENSE_TYPE_CODE &&
                                  hl.PETTITION_TYPE == LicenseFileHeader.PETTITION_TYPE
                                  select lt.LICENSE_TYPE_NAME).FirstOrDefault();

                if (duplicense != null)
                {
                    AddBrokenRule(LicenseFileDetailBusinessRules.CITIZEN_ID_Duplicate);
                }
            }


            if (START_DATE != null)
            {
                if (START_DATE == DateTime.MinValue)
                {
                    AddBrokenRule(LicenseFileDetailBusinessRules.STARDATE_Required);
                }
            }


            if (!String.IsNullOrEmpty(SPECIAL_TYPE_CODE))
            {
                if (START_DATE == null)
                {
                    AddBrokenRule(LicenseFileDetailBusinessRules.STARDATE_Required);
                }
            }

            var waiting = _ctx.AG_IAS_LICENSE_D.Where(w => w.ID_CARD_NO == this.CITIZEN_ID && w.APPROVED == "W").FirstOrDefault();

            if (waiting != null)
            {
                AddBrokenRule(LicenseFileDetailBusinessRules.CITIZEN_ID_Waiting);
            }

            //Validate Attach File Request
            foreach (var item in LicenseFileHeader.DocumentTypeRequests)
            {
                var result = AttachFileDetails.FirstOrDefault(r => r.FileTypeCode == item.DOCUMENT_CODE);

                if (result == null)
                {
                    AG_IAS_DOCUMENT_TYPE attach = LicenseFileHeader.DocumentTypes.FirstOrDefault(a => a.DOCUMENT_CODE == item.DOCUMENT_CODE);
                    AddBrokenRule(new BusinessRule("AttachFileLicenses", String.Format("กรุณาแนบไฟล์ {0}.", (attach != null) ? attach.DOCUMENT_NAME : " ")));
                }
                else
                {
                    //#region checkSize
                    AG_IAS_DOCUMENT_TYPE attach = LicenseFileHeader.DocumentTypes.FirstOrDefault(a => a.DOCUMENT_CODE == item.DOCUMENT_CODE && a.IS_CARD_PIC == "Y");

                    if (attach != null)
                    {
                        string fileName    = result.FileName + result.Extension;
                        var    contentType = ContentTypeHelper.MimeType(fileName);

                        var tagPicture = new string[] { "image/bmp", "image/gif", "image/jpeg", "image/png", "image/x-png", "image/pjpeg", "image/tiff" };


                        if (!tagPicture.Contains(contentType))
                        {
                            AddBrokenRule(LicenseFileDetailBusinessRules.PICTURE_Formate);
                        }
                        // else
                        //{


                        // string path = result.FullFileName;
                        // System.Drawing.Image img = System.Drawing.Image.FromFile(path);

                        // var inchesWidth = img.Width/img.HorizontalResolution;
                        // var inchesHieght = img.Height/img.VerticalResolution;



                        //if (img.Width != 354 && img.Height != 472)
                        //if (inchesWidth )
                        //{

                        //}
                        //{

                        //    AddBrokenRule(new BusinessRule("AttachFileLicenses", Resources.errorLicenseFileDetail_001));
                        //    AddBrokenRule(new BusinessRule("AttachFileLicenses", Resources.errorLicenseFileDetail_002));
                        //}
                        //}
                    }

                    //#endregion
                }
            }


            //chkSpecialDocument
            foreach (var atFile in AttachFileDetails)
            {
                String imageTypeCode = ConfigurationManager.AppSettings["CODE_ATTACH_PHOTO"].ToString();

                sql = "SELECT DOCUMENT_CODE "
                      + "FROM AG_IAS_DOCUMENT_TYPE  "
                      + "WHERE DOCUMENT_CODE = '" + atFile.FileTypeCode.Trim() + "' "
                      + "AND DOCUMENT_CODE !='" + imageTypeCode.Trim() + "' ";

                DataTable attach = ora.GetDataTable(sql);


                if (attach != null && attach.Rows.Count != 0)
                {
                    string fileName    = atFile.FileName + atFile.Extension;
                    var    contentType = ContentTypeHelper.MimeType(fileName);

                    var tagDocument = new string[] { "image/bmp", "image/gif", "image/jpeg", "image/png", "image/x-png", "image/pjpeg", "image/tiff", "application/msword"
                                                     , "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/pdf" };

                    if (!tagDocument.Contains(contentType))
                    {
                        AddBrokenRule(LicenseFileDetailBusinessRules.DOC_Formate);
                    }
                    else
                    {
                        var Special = _ctx.AG_IAS_DOCUMENT_TYPE.FirstOrDefault(r => r.DOCUMENT_CODE == atFile.FileTypeCode && (r.SPECIAL_TYPE_CODE_EXAM != null || r.SPECIAL_TYPE_CODE_TRAIN != null));

                        if (Special != null)
                        {
                            if (Special.SPECIAL_TYPE_CODE_EXAM != null)
                            {
                                var chkSpecialTemp = _ctx.AG_IAS_SPECIAL_T_TEMP.FirstOrDefault(r => r.SPECIAL_TYPE_CODE == Special.SPECIAL_TYPE_CODE_EXAM.Trim() && r.ID_CARD_NO.Trim() == CITIZEN_ID.Trim() && r.STATUS != "N");

                                if (chkSpecialTemp != null)
                                {
                                    AddBrokenRule(new BusinessRule("AttachFileLicenses", String.Format("มีการส่งเอกสาร {0} มาแล้วไม่สามารส่งซ้ำได้.", (Special != null) ? Special.DOCUMENT_NAME : " ")));
                                }
                                else
                                {
                                    var chkSpecialExam = _ctx.AG_IAS_EXAM_SPECIAL_T.FirstOrDefault(r => r.SPECIAL_TYPE_CODE == Special.SPECIAL_TYPE_CODE_EXAM.Trim() && r.ID_CARD_NO.Trim() == CITIZEN_ID.Trim());

                                    if (chkSpecialExam != null)
                                    {
                                        AddBrokenRule(new BusinessRule("AttachFileLicenses", String.Format("มีการส่งเอกสาร {0} มาแล้วไม่สามารส่งซ้ำได้.", (Special != null) ? Special.DOCUMENT_NAME : " ")));
                                    }
                                }


                                if (Special.SPECIAL_TYPE_CODE_EXAM != SPECIAL_TYPE_CODE)
                                {
                                    AddBrokenRule(LicenseFileDetailBusinessRules.SPECIAL_TYPE_CODE_EXAM_NotFormate);
                                }
                            }
                            else if (Special.SPECIAL_TYPE_CODE_TRAIN != null)
                            {
                                var chkSpecialTemp = _ctx.AG_IAS_SPECIAL_T_TEMP.FirstOrDefault(r => r.SPECIAL_TYPE_CODE == Special.SPECIAL_TYPE_CODE_TRAIN.Trim() && r.ID_CARD_NO.Trim() == CITIZEN_ID.Trim() && r.STATUS != "N");

                                if (chkSpecialTemp != null)
                                {
                                    AddBrokenRule(new BusinessRule("AttachFileLicenses", String.Format("มีการส่งเอกสาร {0} มาแล้วไม่สามารส่งซ้ำได้.", (Special != null) ? Special.DOCUMENT_NAME : " ")));
                                }
                                else
                                {
                                    var docTrainSpecial = GetTrainSpecial();



                                    if (docTrainSpecial.Contains(Special.SPECIAL_TYPE_CODE_TRAIN))
                                    {
                                        var expireDate = _ctx.AG_TRAIN_SPECIAL_T.FirstOrDefault(r => r.SPECIAL_TYPE_CODE.Trim() == Special.SPECIAL_TYPE_CODE_TRAIN.Trim() && r.ID_CARD_NO.Trim() == CITIZEN_ID.Trim());

                                        if (expireDate != null)
                                        {
                                            //หมดอายุนับจาก startdate 5 ปี
                                            DateTime docDate     = Convert.ToDateTime(expireDate.START_DATE).AddYears(5);
                                            DateTime currentDate = DateTime.Now;

                                            string docDateFormat  = String.Format("{0:dd/MM/yyyy}", docDate).ToString();
                                            string currDateFormat = String.Format("{0:dd/MM/yyy}", currentDate).ToString();


                                            DateTime docTime  = DateTime.Parse(docDateFormat);
                                            DateTime currTime = DateTime.Parse(currDateFormat);

                                            int dateCompare = DateTime.Compare(currTime, docTime);

                                            if (dateCompare == 1)
                                            {
                                                AddBrokenRule(new BusinessRule("AttachFileLicenses", String.Format("เอกสาร {0} ยังไม่หมดอายุไม่สามารถส่งซ้ำได้.", (Special != null) ? Special.DOCUMENT_NAME : " ")));
                                            }
                                        }
                                    }
                                    else
                                    {
                                        var chkSpecial = _ctx.AG_TRAIN_SPECIAL_T.FirstOrDefault(r => r.SPECIAL_TYPE_CODE.Trim() == Special.SPECIAL_TYPE_CODE_TRAIN.Trim() && r.ID_CARD_NO.Trim() == CITIZEN_ID.Trim());
                                        if (chkSpecial != null)
                                        {
                                            AddBrokenRule(new BusinessRule("AttachFileLicenses", String.Format("มีการส่งเอกสาร {0} มาแล้วไม่สามารส่งซ้ำได้.", (Special != null) ? Special.DOCUMENT_NAME : " ")));
                                        }
                                    }

                                    if (Special.SPECIAL_TYPE_CODE_TRAIN != SPECIAL_TYPE_CODE)
                                    {
                                        AddBrokenRule(LicenseFileDetailBusinessRules.SPECIAL_TYPE_CODE_TRAIN_NotFormate);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            //ตรวจสอบเอกสารพิเศษ
            if (!String.IsNullOrEmpty(SPECIAL_TYPE_CODE) && !String.IsNullOrEmpty(START_DATE.ToString()))
            {
                var docType = (from a in _ctx.AG_IAS_DOCUMENT_TYPE
                               where a.SPECIAL_TYPE_CODE_EXAM == SPECIAL_TYPE_CODE ||
                               a.SPECIAL_TYPE_CODE_TRAIN == SPECIAL_TYPE_CODE
                               select a.DOCUMENT_CODE).FirstOrDefault();

                if (docType != null)
                {
                    var Special = (from a in AttachFileDetails
                                   where a.FileTypeCode == docType
                                   select a.FileTypeCode).FirstOrDefault();

                    if (Special == null)
                    {
                        AddBrokenRule(LicenseFileDetailBusinessRules.SPECIAL_TYPE_CODE_NotFound);
                    }
                }
            }
        }