예제 #1
0
        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);
        }
예제 #2
0
        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");
            }
        }