#include "stdafx.h"
#include "LKFAufenthaltError.h"

extern "C" {
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lkf5defs.h"
}

#include "LKFAufenthalt.h"
namespace lkfxdok {
	namespace c {
		LKFAufenthaltError::LKFAufenthaltError(LKFAufenthalt ^aufenthalt, const void *errorPointer)
		{
			_aufenthalt = aufenthalt;
			_errorPointer = errorPointer;
		}

		LKFAufenthaltError ^LKFAufenthaltError::NextError::get() {
			const void *ne = lkf_auf_getNextSatzartError((const LKF_SATZART_ERROR *)_errorPointer);
			if (ne != 0)
				return gcnew LKFAufenthaltError(_aufenthalt, ne);
			return nullptr;
		}
		
		String ^LKFAufenthaltError::Code::get() {
			return GetField(102);
		}

		String ^LKFAufenthaltError::Value::get() {
			return GetField(109);
		}

		String ^LKFAufenthaltError::Text::get() {
			return GetField(105);
		}

		String ^LKFAufenthaltError::Massnahme::get() {
			return GetField(104);
		}

		String ^LKFAufenthaltError::SATZART::get() {
			return GetField(101);
		}

		String ^LKFAufenthaltError::FieldId::get() {
			return GetField(107);
		}

		String ^LKFAufenthaltError::Acceptable::get() {
			return GetField(119);
		}

		String ^LKFAufenthaltError::FieldName::get() {
			return GetField(108);
		}

		String ^LKFAufenthaltError::FeldLang::get() {
			return GetField(109);
		}

		String ^LKFAufenthaltError::FucoAufNr::get() {
			return GetField(15);
		}

		String ^LKFAufenthaltError::ABTFC::get() {
			return GetField(72);
		}

		String ^LKFAufenthaltError::ABTFCIndex::get() {
			return GetField(74);
		}

		String ^LKFAufenthaltError::CHILDIdent::get() {
			return GetField(18);
		}

		
		String ^LKFAufenthaltError::GetField(int fieldNumber) {
			char buf[512];
			lkf_satzart_getValue((LKF_CONTEXT *)(_aufenthalt->_plausContext->_contextPtr), (const LKF_SATZART_ERROR *)_errorPointer, fieldNumber, buf, 512);
			return gcnew String(buf, 0, (int) strlen(buf), System::Text::Encoding::UTF8);
		}
	}
}
