public void EditComboValue_Test()
        {
            busReservedFied.InsertComboItem(ADORsvField1.ID, "TestComboTitle", "TestComboValue");
            ClearSession();
            prsRsvField_testObject = busReservedFied.GetByID(ADORsvField1.ID);
            PersonReserveFieldComboValue combo = prsRsvField_testObject.ComboItems.First();

            ClearSession();
            busReservedFied.EditComboItem(ADORsvField1.ID, combo.ID, "TestComboTitle1", "TestComboValue1");
            ClearSession();
            prsRsvField_testObject = busReservedFied.GetByID(ADORsvField1.ID);
            combo = prsRsvField_testObject.ComboItems.First();
            Assert.AreEqual("TestComboTitle1", combo.ComboText);
            Assert.AreEqual("TestComboValue1", combo.ComboValue);
        }
        /// <summary>
        /// یک آیتم به کومبو اضافه میکند
        /// </summary>
        /// <param name="reservedFieldId"></param>
        /// <param name="comboTitle"></param>
        /// <param name="comboValue"></param>
        public void InsertComboItem(decimal reservedFieldId, string comboTitle, string comboValue)
        {
            try
            {
                PersonReserveField field = base.GetByID(reservedFieldId);
                if (field.ControlType == PersonReservedFieldsType.ComboValue)
                {
                    UIValidationExceptions exception = new UIValidationExceptions();
                    if (field.ComboItems == null)
                    {
                        field.ComboItems = new List <PersonReserveFieldComboValue>();
                    }
                    if (Utility.IsEmpty(comboTitle) || Utility.IsEmpty(comboValue))
                    {
                        exception.Add(new ValidationException(ExceptionResourceKeys.PrsRsvFldComboValueIsEmpty, "مشخصات وارد شده خالی میباشد", ExceptionSrc));
                    }
                    else if (field.ComboItems.Where(x => x.ComboText.ToLower().Equals(comboTitle.ToLower())
                                                    ||
                                                    x.ComboValue.ToLower().Equals(comboValue.ToLower())).Count() > 0)
                    {
                        exception.Add(new ValidationException(ExceptionResourceKeys.PrsRsvFldComboValueRepeated, "مشخصات وارد شده تکراری میباشد", ExceptionSrc));
                    }

                    if (exception.Count > 0)
                    {
                        throw exception;
                    }

                    PersonReserveFieldComboValue item = new PersonReserveFieldComboValue();
                    item.ComboText      = comboTitle;
                    item.ComboValue     = comboValue;
                    item.ReserveFieldID = field.ID;
                    field.ComboItems.Add(item);
                    this.SaveChanges(field, UIActionType.EDIT);
                }
                else
                {
                    throw new IllegalServiceAccess("تنها برای فیلدهایی از نوع انتخابی میتوان گزینه تعریف کرد", ExceptionSrc);
                }
            }
            catch (Exception ex)
            {
                LogException(ex);
                throw ex;
            }
        }
        /// <summary>
        /// یک آیتم از کومبو ویرایش میکند
        /// </summary>
        /// <param name="reservedFieldId"></param>
        /// <param name="comboItemId"></param>
        public void EditComboItem(decimal reservedFieldId, decimal comboItemId, string comboTitle, string comboValue)
        {
            try
            {
                if (Utility.IsEmpty(comboTitle) || Utility.IsEmpty(comboValue))
                {
                    UIValidationExceptions exception = new UIValidationExceptions();
                    exception.Add(new ValidationException(ExceptionResourceKeys.PrsRsvFldComboValueIsEmpty, "مشخصات وارد شده خالی میباشد", ExceptionSrc));
                    throw exception;
                }

                PersonReserveField field = base.GetByID(reservedFieldId);
                if (field.ControlType == PersonReservedFieldsType.ComboValue)
                {
                    if (field.ComboItems == null)
                    {
                        field.ComboItems = new List <PersonReserveFieldComboValue>();
                    }
                    PersonReserveFieldComboValue item = field.ComboItems.Where(x => x.ID == comboItemId).FirstOrDefault();

                    if (item != null)
                    {
                        item.ComboText  = comboTitle;
                        item.ComboValue = comboValue;
                        this.SaveChanges(field, UIActionType.EDIT);
                    }
                }
                else
                {
                    throw new IllegalServiceAccess("تنها برای فیلدهایی از نوع انتخابی ، گزینه موجود است", ExceptionSrc);
                }
            }
            catch (Exception ex)
            {
                LogException(ex);
                throw ex;
            }
        }
        /// <summary>
        /// یک آیتم از کومبو حذف میکند
        /// </summary>
        /// <param name="reservedFieldId"></param>
        /// <param name="comboItem"></param>
        public void DeleteComboItem(decimal reservedFieldId, decimal comboItem)
        {
            try
            {
                PersonReserveField field = base.GetByID(reservedFieldId);
                if (field.ControlType == PersonReservedFieldsType.ComboValue)
                {
                    if (field.ComboItems == null)
                    {
                        field.ComboItems = new List <PersonReserveFieldComboValue>();
                    }
                    PersonReserveFieldComboValue item = field.ComboItems.Where(x => x.ID == comboItem).FirstOrDefault();

                    if (item != null)
                    {
                        EntityRepository <PersonDetail> dtlRep = new EntityRepository <PersonDetail>(false);
                        bool flag = false;
                        switch (field.OrginalName)
                        {
                        case "R16":
                            if (dtlRep.GetCountByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new PersonTASpec().R16), item.ID)) > 0)
                            {
                                flag = true;
                            }
                            break;

                        case "R17":
                            if (dtlRep.GetCountByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new PersonTASpec().R17), item.ID)) > 0)
                            {
                                flag = true;
                            }
                            break;

                        case "R18":
                            if (dtlRep.GetCountByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new PersonTASpec().R18), item.ID)) > 0)
                            {
                                flag = true;
                            }
                            break;

                        case "R19":
                            if (dtlRep.GetCountByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new PersonTASpec().R19), item.ID)) > 0)
                            {
                                flag = true;
                            }
                            break;

                        case "R20":
                            if (dtlRep.GetCountByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new PersonTASpec().R20), item.ID)) > 0)
                            {
                                flag = true;
                            }
                            break;
                        }
                        if (flag)
                        {
                            UIValidationExceptions exception = new UIValidationExceptions();
                            exception.Add(new ValidationException(ExceptionResourceKeys.PrsRsvFldComboValueUsedByPerson, "آیتم انتخابیی جهت حذف ، در پرسنل قبلا استفاده شده است", ExceptionSrc));
                            throw exception;
                        }

                        field.ComboItems.Remove(item);
                        this.SaveChanges(field, UIActionType.EDIT);
                    }
                }
                else
                {
                    throw new IllegalServiceAccess("تنها برای فیلدهایی از نوع انتخابی ، گزینه  موجود است", ExceptionSrc);
                }
            }
            catch (Exception ex)
            {
                LogException(ex);
                throw ex;
            }
        }