public bool AddValuesToBill(int billId, List <SpecificFieldValueDTO> values) { if (ExistsBill(billId)) { if (!ValidateExistsBillForTheSupplier(billId, values)) { if (ValidateDoesntRepeatValuesForSupplierFields(values)) { if (ValidateAllFieldsHaveValue(billId, values)) { validateSpecificFieldValuesMatchesFieldType(values); validateTansactionIsNotAlreadyRegistered(billId, values); if (ValidateSpecificValuesAreForSameSupplier(billId, values)) { foreach (SpecificFieldValueDTO specificFieldValueDTO in values) { SpecificFieldValue specificFieldValue = ConvertDTO(specificFieldValueDTO); specificFieldValue.Bill = unitOfWork.BillRepository.GetByID(billId); unitOfWork.SpecificFieldValueRepository.Insert(specificFieldValue); } unitOfWork.Save(); return(true); } else { throw new WrongDataTypeException("Los valores ingresados deben corresponder al mismo proveedor"); } } else { throw new WrongDataTypeException("Debe ingresar valores para todos los campos"); } } else { throw new WrongDataTypeException("Debe ingresar los valores para los distintos campos"); } } else { throw new WrongDataTypeException("Datos mal ingresados. Verifique que exista una factura para los proveedores"); } } return(false); }
private SpecificFieldValue ConvertDTO(SpecificFieldValueDTO valueDTO) { SupplierField supplierField = unitOfWork.SupplierFieldRepository.Get(s => s.SupplierFieldId == valueDTO.IdSupplierField).FirstOrDefault(); if (supplierField != null) { SpecificFieldValue specificValue = new SpecificFieldValue(); specificValue.Value = valueDTO.Value; specificValue.Supplierfield = supplierField; return(specificValue); } else { throw new NotFoundException("No existe el campo de proveedor especificado"); } }