import 'liveConsultation.m.dart';
import 'notification.m.dart';
import 'device.m.dart';

class CreateAnalyzeConfigRequest extends TokenRequest{
	String? code;
	String? inField;
	String? outField;
	String? mode;
	String? template;
	String? analyzeConfigItems;

	CreateAnalyzeConfigRequest({
		this.code,
		this.inField,
		this.outField,
		this.mode,
		this.template,
		this.analyzeConfigItems,
		String? token,
	}) : super(
			token: token,
		);

	factory CreateAnalyzeConfigRequest.fromJson(Map<String, dynamic> map) {
		return CreateAnalyzeConfigRequest( 
			code: map['Code'],
			inField: map['InField'],
			outField: map['OutField'],
			mode: map['Mode'],
			template: map['Template'],
			analyzeConfigItems: map['AnalyzeConfigItems'],
			token: map['Token'],
		);
	}

	Map<String, dynamic> toJson() {
		final map = super.toJson();
		if (code != null)
			map['Code'] = code;
		if (inField != null)
			map['InField'] = inField;
		if (outField != null)
			map['OutField'] = outField;
		if (mode != null)
			map['Mode'] = mode;
		if (template != null)
			map['Template'] = template;
		if (analyzeConfigItems != null)
			map['AnalyzeConfigItems'] = analyzeConfigItems;
		return map;
	}
}

class AnalyzeConfigDTO extends BaseDTO{
	String? code;
	String? inField;
	String? outField;
	String? mode;
	String? template;
	String? analyzeConfigItems;

	AnalyzeConfigDTO({
		this.code,
		this.inField,
		this.outField,
		this.mode,
		this.template,
		this.analyzeConfigItems,
		DateTime? createTime,
		DateTime? updateTime,
	}) : super(
			createTime: createTime,
			updateTime: updateTime,
		);

	factory AnalyzeConfigDTO.fromJson(Map<String, dynamic> map) {
		return AnalyzeConfigDTO( 
			code: map['Code'],
			inField: map['InField'],
			outField: map['OutField'],
			mode: map['Mode'],
			template: map['Template'],
			analyzeConfigItems: map['AnalyzeConfigItems'],
			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
			updateTime: map['UpdateTime'] != null ? DateTime.parse(map['UpdateTime']) : null,
		);
	}

	Map<String, dynamic> toJson() {
		final map = super.toJson();
		if (code != null)
			map['Code'] = code;
		if (inField != null)
			map['InField'] = inField;
		if (outField != null)
			map['OutField'] = outField;
		if (mode != null)
			map['Mode'] = mode;
		if (template != null)
			map['Template'] = template;
		if (analyzeConfigItems != null)
			map['AnalyzeConfigItems'] = analyzeConfigItems;
		return map;
	}
}

class GetAnalyzeConfigRequest extends TokenRequest{
	String? code;

	GetAnalyzeConfigRequest({
		this.code,
		String? token,
	}) : super(
			token: token,
		);

	factory GetAnalyzeConfigRequest.fromJson(Map<String, dynamic> map) {
		return GetAnalyzeConfigRequest( 
			code: map['Code'],
			token: map['Token'],
		);
	}

	Map<String, dynamic> toJson() {
		final map = super.toJson();
		if (code != null)
			map['Code'] = code;
		return map;
	}
}

class GetAnalyzeConfigByKeyRequest extends TokenRequest{
	String? key;
	String? value;

	GetAnalyzeConfigByKeyRequest({
		this.key,
		this.value,
		String? token,
	}) : super(
			token: token,
		);

	factory GetAnalyzeConfigByKeyRequest.fromJson(Map<String, dynamic> map) {
		return GetAnalyzeConfigByKeyRequest( 
			key: map['Key'],
			value: map['Value'],
			token: map['Token'],
		);
	}

	Map<String, dynamic> toJson() {
		final map = super.toJson();
		if (key != null)
			map['Key'] = key;
		if (value != null)
			map['Value'] = value;
		return map;
	}
}

class AnalyzeConfigPageRequest extends PageRequest{

	AnalyzeConfigPageRequest({
		int pageIndex = 0,
		int pageSize = 0,
		String? token,
	}) : super(
			pageIndex: pageIndex,
			pageSize: pageSize,
			token: token,
		);

	factory AnalyzeConfigPageRequest.fromJson(Map<String, dynamic> map) {
		return AnalyzeConfigPageRequest( 
			pageIndex: map['PageIndex'],
			pageSize: map['PageSize'],
			token: map['Token'],
		);
	}

	Map<String, dynamic> toJson() {
		final map = super.toJson();
		return map;
	}
}

class RemoveAnalyzeConfigRequest extends TokenRequest{
	String? code;

	RemoveAnalyzeConfigRequest({
		this.code,
		String? token,
	}) : super(
			token: token,
		);

	factory RemoveAnalyzeConfigRequest.fromJson(Map<String, dynamic> map) {
		return RemoveAnalyzeConfigRequest( 
			code: map['Code'],
			token: map['Token'],
		);
	}

	Map<String, dynamic> toJson() {
		final map = super.toJson();
		if (code != null)
			map['Code'] = code;
		return map;
	}
}

class GetAnalyzeConfigListRequest extends TokenRequest{
	List<String>? codes;

	GetAnalyzeConfigListRequest({
		this.codes,
		String? token,
	}) : super(
			token: token,
		);

	factory GetAnalyzeConfigListRequest.fromJson(Map<String, dynamic> map) {
		return GetAnalyzeConfigListRequest( 
			codes: map['Codes']?.cast<String>().toList(),
			token: map['Token'],
		);
	}

	Map<String, dynamic> toJson() {
		final map = super.toJson();
		if (codes != null)
			map['Codes'] = codes;
		return map;
	}
}

class UpdateAnalyzeConfigRequest extends TokenRequest{
	String? code;
	String? inField;
	String? outField;
	String? mode;
	String? template;
	String? analyzeConfigItems;

	UpdateAnalyzeConfigRequest({
		this.code,
		this.inField,
		this.outField,
		this.mode,
		this.template,
		this.analyzeConfigItems,
		String? token,
	}) : super(
			token: token,
		);

	factory UpdateAnalyzeConfigRequest.fromJson(Map<String, dynamic> map) {
		return UpdateAnalyzeConfigRequest( 
			code: map['Code'],
			inField: map['InField'],
			outField: map['OutField'],
			mode: map['Mode'],
			template: map['Template'],
			analyzeConfigItems: map['AnalyzeConfigItems'],
			token: map['Token'],
		);
	}

	Map<String, dynamic> toJson() {
		final map = super.toJson();
		if (code != null)
			map['Code'] = code;
		if (inField != null)
			map['InField'] = inField;
		if (outField != null)
			map['OutField'] = outField;
		if (mode != null)
			map['Mode'] = mode;
		if (template != null)
			map['Template'] = template;
		if (analyzeConfigItems != null)
			map['AnalyzeConfigItems'] = analyzeConfigItems;
		return map;
	}
}