示例#1
0
 private void caseInt(string value, AdditionalFieldEntity addF, int i, int j, bool emptyRange)
 {
     try
     {
         if (emptyRange)
         {
             int.Parse(value);
         }
         else
         {
             int      valueInt   = int.Parse(value);
             string[] bounds     = addF.Range.Split('-');
             int      lowerBound = int.Parse(bounds.ElementAt(0));
             int      upperBound = int.Parse(bounds.ElementAt(1));
             if (valueInt > upperBound || valueInt < lowerBound)
             {
                 if (j == 0)
                 {
                     throw new ArgumentException($"Value of AdditionalFieldsValues in position {i} must be between {bounds.ElementAt(0)} and {bounds.ElementAt(1)}");
                 }
                 else
                 {
                     throw new ArgumentException($"Value of AdditionalFieldsValues in position {i} . {j} must be between {bounds.ElementAt(0)} and {bounds.ElementAt(1)}");
                 }
             }
         }
     }
     catch (ArgumentException e) { throw new ArgumentException(e.Message); }
     catch (Exception) { throw new ArgumentException($"Value of AdditionalFieldsValues in position {i} must be of type {addF.Type}"); }
 }
示例#2
0
        public void TestInitialize()
        {
            testTypeReqEntity = new TypeReqEntity
            {
                Id               = 1234,
                Name             = "Taxi - Acoso",
                AdditionalFields = new AdditionalFieldEntity[] { new AdditionalFieldEntity() }
            };

            testAFEntity = new AdditionalFieldEntity
            {
                Id              = 1234,
                Name            = "Matrícula",
                Type            = "TEXTO",
                Range           = "Radio Taxi-Taxi aeropuerto-Fono Taxi",
                TypeReqEntityId = 1
            };

            AFRepository   = new Mock <IRepository <AdditionalFieldEntity> >(MockBehavior.Strict);
            typeRepository = new Mock <IRepository <TypeReqEntity> >(MockBehavior.Strict);
            unitOfWork     = new Mock <IUnitOfWork>();
            unitOfWork.Setup(u => u.AdditionalFieldRepository).Returns(AFRepository.Object);
            unitOfWork.Setup(u => u.TypeReqRepository).Returns(typeRepository.Object);
            aFLogic = new AdditionalFieldLogic(unitOfWork.Object);
        }
示例#3
0
 private void ValidateExistanceInType(AdditionalFieldEntity additionalField)
 {
     if (unitOfWork.AdditionalFieldRepository.Exists(a => !a.IsDeleted && a.Name == additionalField.Name &&
                                                     a.TypeReqEntityId == additionalField.TypeReqEntityId))
     {
         throw new ArgumentException($"There is already an AdditionalField with name {additionalField.Name} " +
                                     $"in the Type " + $"with id: {additionalField.TypeReqEntityId}");
     }
 }
示例#4
0
        private void caseDate(string value, AdditionalFieldEntity addF, int i, int j, bool emptyRange)
        {
            try
            {
                if (emptyRange)
                {
                    string[] dateString = value.Split('/');
                    if (dateString.Length != 3)
                    {
                        throw new Exception();
                    }
                    DateTime date = new DateTime(dateString.ElementAt(2).Length == 4 ? int.Parse(dateString.ElementAt(2)) : int.Parse(dateString.ElementAt(2)) + 2000, int.Parse(dateString.ElementAt(1)), int.Parse(dateString.ElementAt(0)));
                }
                else
                {
                    string[] bounds = addF.Range.Split('-');

                    string[] dateString = value.Split('/');
                    if (dateString.Length != 3)
                    {
                        throw new Exception();
                    }
                    DateTime date = new DateTime(dateString.ElementAt(2).Length == 4 ? int.Parse(dateString.ElementAt(2)) : int.Parse(dateString.ElementAt(2)) + 2000, int.Parse(dateString.ElementAt(1)), int.Parse(dateString.ElementAt(0)));

                    string[] dateLowerString = bounds.ElementAt(0).ToString().Split('/');
                    DateTime datelower       = new DateTime(dateLowerString.ElementAt(2).Length == 4 ? int.Parse(dateLowerString.ElementAt(2)) : int.Parse(dateLowerString.ElementAt(2)) + 2000, int.Parse(dateLowerString.ElementAt(1)), int.Parse(dateLowerString.ElementAt(0)));

                    string[] dateUpperString = bounds.ElementAt(1).ToString().Split('/');
                    DateTime dateUpper       = new DateTime(dateUpperString.ElementAt(2).Length == 4 ? int.Parse(dateUpperString.ElementAt(2)) : int.Parse(dateUpperString.ElementAt(2)) + 2000, int.Parse(dateUpperString.ElementAt(1)), int.Parse(dateUpperString.ElementAt(0)));

                    if (date > dateUpper || date < datelower)
                    {
                        if (j == -1)
                        {
                            throw new ArgumentException($"Value of AdditionalFieldsValues in position {i} must be between {bounds.ElementAt(0)} and {bounds.ElementAt(1)}");
                        }
                        else
                        {
                            throw new ArgumentException($"Value of AdditionalFieldsValues in position {i} . {j} must be between {bounds.ElementAt(0)} and {bounds.ElementAt(1)}");
                        }
                    }
                }
            }
            catch (ArgumentException e) { throw new ArgumentException(e.Message); }
            catch (Exception) {
                if (j == -1)
                {
                    throw new ArgumentException($"Value of AdditionalFieldsValues in position {i} must have the following format: DD/MM/YYYY");
                }
                else
                {
                    throw new ArgumentException($"Value of AdditionalFieldsValues in position {i} . {j} must have the following format: DD/MM/YYYY");
                }
            }
        }
示例#5
0
 public int Add(AdditionalFieldEntity additionalField)
 {
     ValidateTypeReqExistance(additionalField.TypeReqEntityId);
     ValidateExistanceInType(additionalField);
     ValidateAdditionalFieldType(additionalField.Type);
     ValidateRangeFromType(additionalField);
     unitOfWork.AdditionalFieldRepository.Add(additionalField);
     unitOfWork.Save();
     return(unitOfWork.AdditionalFieldRepository.FirstOrDefault(a => !additionalField.IsDeleted &&
                                                                a.Name == additionalField.Name && additionalField.TypeReqEntityId == additionalField.TypeReqEntityId).Id);
 }
示例#6
0
 private void boolCase(AdditionalFieldEntity additionalField, string[] rangeArray)
 {
     if (additionalField.Range == null || additionalField.Range == "" ||
         rangeArray.Length == 0 || (rangeArray.Length == 1 && rangeArray[0].Trim() == ""))
     {
         return;
     }
     else
     {
         throw new ArgumentException($"Bool type does not accept values, it can only be true or false");
     }
 }
示例#7
0
 private void caseBool(string value, AdditionalFieldEntity addF, int i, bool emptyRange)
 {
     if (emptyRange)
     {
         if (value.Trim().ToLower() != "true" && value.Trim().ToLower() != "false")
         {
             throw new ArgumentException($"Value of AdditionalFieldsValues in position {i} must be true or false");
         }
     }
     else
     {
         throw new ArgumentException($"Logic error, type bool range must be empty");
     }
 }
示例#8
0
        private void validateValueIsInRange(string value, AdditionalFieldEntity addF, int i)
        {
            bool emptyRange = addF.Range == null || addF.Range.Length == 0 || (addF.Range.Length == 1 && addF.Range.Trim() == "");

            if (addF.Type != "BOOL")
            {
                string[] values = value.Split('*');
                if (values.Length > 1)
                {
                    for (int j = 0; j < values.Length; j++)
                    {
                        validateValues(values.ElementAt(j), addF, i, j + 1, emptyRange);
                    }
                }
                else
                {
                    validateValues(value, addF, i, -1, emptyRange);
                }
            }
        }
示例#9
0
        private void validateValues(string value, AdditionalFieldEntity addF, int i, int j, bool emptyRange)
        {
            switch (addF.Type)
            {
            case "TEXTO":
                caseText(value, addF, i, j, emptyRange);
                break;

            case "FECHA (DD/MM/YYYY)":
                caseDate(value, addF, i, j, emptyRange);
                break;

            case "ENTERO":
                caseInt(value, addF, i, j, emptyRange);
                break;

            case "BOOL":
                caseBool(value, addF, i, emptyRange);
                break;
            }
        }
示例#10
0
        private void ValidateRangeFromType(AdditionalFieldEntity additionalField)
        {
            string[] rangeArray = SplitStringToArray(additionalField);
            if (additionalField.Range == "" || rangeArray.Length == 0)
            {
                return;
            }
            switch (additionalField.Type)
            {
            case "ENTERO":
                numberCase(additionalField, rangeArray);
                break;

            case "FECHA":
                dateCase(additionalField, rangeArray);
                break;

            case "BOOL":
                boolCase(additionalField, rangeArray);
                break;
            }
        }
示例#11
0
 private string[] SplitStringToArray(AdditionalFieldEntity additionalField)
 {
     string[] addFieldsArray = additionalField.Range.Split('-');
     return(addFieldsArray);
 }