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}"); } }
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); }
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}"); } }
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"); } } }
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); }
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"); } }
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"); } }
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); } } }
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; } }
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; } }
private string[] SplitStringToArray(AdditionalFieldEntity additionalField) { string[] addFieldsArray = additionalField.Range.Split('-'); return(addFieldsArray); }