Пример #1
0
        /// <summary>
        /// The check.
        /// </summary>
        /// <param name="statement">
        /// The statement.
        /// </param>
        public override void CheckObject(Statement statement)
        {
            if (statement == null)
            {
                throw new ArgumentNullException("statement");
            }

            if (statement.NotCheckPolisNumber.HasValue && statement.NotCheckPolisNumber.Value)
            {
                return;
            }

            // Если нужно выдать новый полис и полис выдан, то обязательно надо заполнить номер полиса
            ////if (statement.AbsentPrevPolicy.HasValue && statement.AbsentPrevPolicy.Value && statement.PolicyIsIssued.HasValue
            ////    && statement.PolicyIsIssued.Value && string.IsNullOrEmpty(statement.NumberPolicy))
            ////{
            ////  throw new FaultEnpException();
            ////}

            // Проверка соответствия полу, дате рождения и контрольному разряду
            if (!string.IsNullOrEmpty(statement.NumberPolicy))
            {
                if (!EnpChecker.CheckIdentifier(statement.NumberPolicy))
                {
                    throw new FaultEnpException();
                }

                if (statement.InsuredPersonData != null && statement.InsuredPersonData.Birthday != null &&
                    statement.InsuredPersonData.Gender != null)
                {
                    if (
                        !EnpChecker.CheckBirthdayAndGender(
                            statement.NumberPolicy,
                            statement.InsuredPersonData.Birthday.Value,
                            statement.InsuredPersonData.Gender.Id == Sex.Sex1))
                    {
                        throw new FaultEnpBirthdayAndGenderException();
                    }
                }
            }

            ////// Если новый полис выдавать не требуется, то ЕНП должен быть известен, он на полисе, который предъявили
            ////if ((!statement.AbsentPrevPolicy.HasValue || statement.AbsentPrevPolicy == false)
            ////    && string.IsNullOrEmpty(statement.NumberPolicy))
            ////{
            ////  throw new FaultEnpAbsentPrevPolicyException();
            ////}
        }
Пример #2
0
        /// <summary>
        /// The check.
        /// </summary>
        /// <param name="statement">
        /// The statement.
        /// </param>
        public override void CheckObject(Statement statement)
        {
            if (statement == null)
            {
                throw new ArgumentNullException("statement");
            }

            // Проверка соответствия полу, дате рождения и контрольному разряду
            var policy = statement.MedicalInsurances.LastOrDefault(x => x.PolisType.Id != PolisType.В);

            if (!(statement.PolicyIsIssued.HasValue && statement.PolicyIsIssued.Value))
            {
                return;
            }

            if (policy == null)
            {
                throw new FaultNewEnpException();
            }

            if (!string.IsNullOrEmpty(policy.Enp))
            {
                if (!EnpChecker.CheckIdentifier(policy.Enp))
                {
                    throw new FaultEnpException();
                }

                if (statement.InsuredPersonData != null && statement.InsuredPersonData.Birthday != null &&
                    statement.InsuredPersonData.Gender != null)
                {
                    if (
                        !EnpChecker.CheckBirthdayAndGender(
                            policy.Enp,
                            statement.InsuredPersonData.Birthday.Value,
                            statement.InsuredPersonData.Gender.Id == Sex.Sex1))
                    {
                        throw new FaultNewEnpBirthdayAndGenderException();
                    }
                }
            }
            else
            {
                throw new FaultEnpException();
            }
        }
Пример #3
0
        /// <summary>
        /// The recalculate number policy counter.
        /// </summary>
        /// <param name="numberPolicy">
        /// The number policy.
        /// </param>
        public void RecalculateNumberPolicyCounter(string numberPolicy)
        {
            if (string.IsNullOrEmpty(numberPolicy) || numberPolicy.Length != 16)
            {
                return;
            }

            var session = ObjectFactory.GetInstance <ISessionFactory>().GetCurrentSession();

            // Получаем ТФОМС по коду, входящему в ЕНП
            var facet = EnpChecker.GetTfFacet(numberPolicy);

            // ищем запись
            var numberPolicyCounter = GetById(facet) ?? new NumberPolicyCounter {
                Id = facet, CurrentNumber = 1
            };

            // назначем новый номер, либо сохраняем старый
            var number = int.Parse(numberPolicy.Substring(10, 5)) + 1;

            numberPolicyCounter.CurrentNumber = Math.Max(numberPolicyCounter.CurrentNumber, number);
            session.SaveOrUpdate(numberPolicyCounter);
        }
Пример #4
0
        /// <summary>
        /// The get next enp number facets.
        /// </summary>
        /// <param name="tfomsId">
        /// The tfoms id.
        /// </param>
        /// <param name="genderId">
        /// The gender id.
        /// </param>
        /// <param name="birthday">
        /// The birthday.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        public string GetNextEnpNumber(Guid tfomsId, int genderId, DateTime birthday)
        {
            var tfoms = ObjectFactory.GetInstance <IOrganisationCacheManager>().GetBy(x => x.Id == tfomsId).FirstOrDefault();

            if (tfoms == null || tfoms.Code.Length != 2)
            {
                throw new Exception("Не найден ТФОМС для расчета фасеты ЕНП");
            }

            var facet = tfoms.Code + EnpChecker.GetFacet(birthday, genderId == Sex.Sex1);
            NumberPolicyCounter numberPolicyCounter;

            // получение значения счетчика
            var session = ObjectFactory.GetInstance <ISessionFactory>().GetCurrentSession();

            numberPolicyCounter = GetById(facet);
            var number = "1";

            if (numberPolicyCounter == null)
            {
                numberPolicyCounter = new NumberPolicyCounter {
                    Id = facet, CurrentNumber = 2
                };
            }
            else
            {
                number = numberPolicyCounter.CurrentNumber.ToString(CultureInfo.InvariantCulture);
                numberPolicyCounter.CurrentNumber++;
            }

            // сохранение
            session.SaveOrUpdate(numberPolicyCounter);

            var enp = string.Format("{0}{1}", facet, number.PadLeft(5, '0'));

            return(EnpChecker.AppendCheckSum(enp));
        }
Пример #5
0
        /// <summary>
        /// Переносит данные из объекта в элементы на форме
        /// </summary>
        /// <param name="statement">
        /// The statement.
        /// </param>
        public override void MoveDataFromObject2GUI(Statement statement)
        {
            fStatus.Value = statement.Status != null
                        ? statement.Status.Id.ToString(CultureInfo.InvariantCulture)
                        : StatusStatement.New.ToString(CultureInfo.InvariantCulture);

            tbDateFiling.Text = statement.DateFiling.HasValue ? ((DateTime)statement.DateFiling).ToShortDateString() : DateTime.Today.ToShortDateString();

            // Причина подачи заявления
            if (statement.CauseFiling != null)
            {
                // если заявление импортировано, то причины подачи заявления не будет и надо его добавить в общий список комбика, но при этом комбик должен быть недоступен для смены значения
                if (statement.CauseFiling.Id == CauseReinsurance.Initialization)
                {
                    AddInitializationCauseFiling();
                    ddlCauseFiling.Enabled = false;
                }

                ddlCauseFiling.SelectedValue = statement.CauseFiling.Id.ToString(CultureInfo.InvariantCulture);
                if (ddlCauseFiling.SelectedValue == CauseReinsurance.Choice.ToString(CultureInfo.InvariantCulture))
                {
                    chbNewPolicy.Enabled = false;
                }
            }

            // Способ подачи
            if (statement.ModeFiling != null)
            {
                ddlModeFiling.SelectedValue = statement.ModeFiling.Id.ToString(CultureInfo.InvariantCulture);
            }

            // Наличие ходатайства о регистрации в качестве застрахованного лица
            if (statement.HasPetition != null)
            {
                chbHasPetition.Checked = (bool)statement.HasPetition;
            }

            // Форма изготовления полиса
            if (statement.FormManufacturing != null)
            {
                ddlPolicyType.SelectedValue = statement.FormManufacturing.Id.ToString(CultureInfo.InvariantCulture);
                hfPolicyType.Value          = ddlPolicyType.SelectedValue;
            }

            chbNewPolicy.Checked = statement.AbsentPrevPolicy.HasValue && statement.AbsentPrevPolicy.Value;
            hfNewPolicy.Value    = chbNewPolicy.Checked ? "1" : "0";

            // Номер полиса
            tbNumberPolicy.Text = statement.NumberPolicy;

            cbNotCheckEnp.Checked = statement.NumberPolicy != null && statement.NumberPolicy.Length == 16 && statement.InsuredPersonData != null && statement.InsuredPersonData.Birthday.HasValue &&
                                    statement.InsuredPersonData.Gender != null &&
                                    (!EnpChecker.CheckIdentifier(statement.NumberPolicy) ||
                                     !EnpChecker.CheckBirthdayAndGender(
                                         statement.NumberPolicy,
                                         statement.InsuredPersonData.Birthday.Value,
                                         statement.InsuredPersonData.Gender.Code == "1"));
            if (cbNotCheckEnp.Checked)
            {
                cbNotCheckEnp.Visible = true;
            }

            CheckIsRightToEdit();
        }
Пример #6
0
        public void CheckEnpFaset()
        {
            var r = EnpChecker.CheckBirthdayAndGender("7856510844000446", new DateTime(1984, 3, 5), true);

            Assert.IsTrue(r);
        }
Пример #7
0
        public void CheckEnp()
        {
            var r = EnpChecker.CheckIdentifier("7856130840000017");

            Assert.AreEqual(true, r);
        }
Пример #8
0
        public void CheckBadEnp()
        {
            var r = EnpChecker.CheckIdentifier("7856130840000018");

            Assert.AreEqual(false, r);
        }