mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-12 18:48:55 +03:30
179 lines
5.3 KiB
Dart
179 lines
5.3 KiB
Dart
import 'package:cssd/config/routes.dart';
|
|
import 'package:cssd/providers/input.dart';
|
|
import 'package:cssd/providers/test_results.dart';
|
|
import 'package:cssd/widgets/TestResultScreens/Add/form_creator.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
class FormPage extends StatefulWidget {
|
|
final String name;
|
|
final String uniqueCode;
|
|
final String testResultId;
|
|
final String testTypeId;
|
|
|
|
FormPage({this.name, this.uniqueCode, this.testResultId, this.testTypeId});
|
|
|
|
@override
|
|
_FormPageState createState() => _FormPageState();
|
|
}
|
|
|
|
class _FormPageState extends State<FormPage> {
|
|
bool _isInit = true;
|
|
bool _isLoading = false;
|
|
bool isAdding = false;
|
|
final _form = GlobalKey<FormState>();
|
|
Map<String, dynamic> values = {};
|
|
List<Map<String, dynamic>> formInputs;
|
|
|
|
void _saveForm() {
|
|
formatData(formInputs);
|
|
if (this.widget.testResultId != null && this.widget.testResultId !=''){
|
|
values['_method'] = 'put';
|
|
TestResultsProvider.updateTestResult(this.widget.testResultId, values).then((_){
|
|
Navigator.of(context).pop();
|
|
});
|
|
} else {
|
|
setState(() {
|
|
_isLoading = true;
|
|
});
|
|
TestResultsProvider.createTestResult(values).then((_) {
|
|
setState(() {
|
|
_isLoading = false;
|
|
});
|
|
showDialog(
|
|
context: context,
|
|
builder: (ctx) => AlertDialog(
|
|
content: Text('Test added.'),
|
|
actions: <Widget>[
|
|
FlatButton(
|
|
onPressed: () {
|
|
Navigator.of(ctx).pop();
|
|
},
|
|
child: Text('Ok'),
|
|
)
|
|
],
|
|
),
|
|
).then((_) {
|
|
Navigator.of(context).popAndPushNamed(Routes.testResultScreen);
|
|
});
|
|
});
|
|
|
|
|
|
}
|
|
}
|
|
|
|
@override
|
|
void didChangeDependencies() {
|
|
if (_isInit) {
|
|
setState(() {
|
|
_isLoading = true;
|
|
});
|
|
Provider.of<Inputs>(context)
|
|
.getInputs(
|
|
testResultId: this.widget.testResultId ?? "",
|
|
name: this.widget.name ?? "",
|
|
uniqueCode: this.widget.uniqueCode ?? "",
|
|
testTypeId: this.widget.testTypeId ?? ""
|
|
)
|
|
.then((_) {
|
|
setState(() {
|
|
_isLoading = false;
|
|
});
|
|
});
|
|
}
|
|
_isInit = false;
|
|
super.didChangeDependencies();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
centerTitle: true,
|
|
title: Text('Add Test Result'),
|
|
actions: <Widget>[
|
|
IconButton(
|
|
icon: Icon(Icons.save),
|
|
onPressed: () {
|
|
_saveForm();
|
|
},
|
|
)
|
|
],
|
|
leading: IconButton(
|
|
icon: Icon(
|
|
Icons.keyboard_arrow_left,
|
|
size: 35,
|
|
),
|
|
onPressed: () {
|
|
Navigator.of(context).popAndPushNamed(Routes.testResultScreen);
|
|
},
|
|
),
|
|
),
|
|
body: Column(
|
|
children: <Widget>[
|
|
Expanded(
|
|
child: _isLoading
|
|
? Center(child: CircularProgressIndicator())
|
|
: Form(
|
|
key: _form,
|
|
child: Consumer<Inputs>(
|
|
builder: (context, inputs, _) {
|
|
formInputs = inputs.inputItems;
|
|
// print(formInputs);
|
|
return formInputs.length != 0 ? FormCreator(
|
|
form: inputs.inputItems,
|
|
onChanged: (value) {
|
|
formInputs = value;
|
|
},
|
|
) : Center(child: Text('An error happen!!!'),);
|
|
},
|
|
),
|
|
),
|
|
),
|
|
// https://www.cssd-doc.com/api/GetInfo
|
|
// InkWell(
|
|
// onTap: () {
|
|
// _saveForm();
|
|
// },
|
|
// child: Container(
|
|
// padding: EdgeInsets.symmetric(horizontal: 60, vertical: 15),
|
|
// margin: EdgeInsets.symmetric(vertical: 20, horizontal: 50),
|
|
// decoration: BoxDecoration(
|
|
// gradient: LinearGradient(colors: [Colors.blue, Colors.green]),
|
|
// borderRadius: BorderRadius.circular(10),
|
|
// ),
|
|
// child: Text(
|
|
// 'Save',
|
|
// style: TextStyle(color: Colors.white, fontSize: 17),
|
|
// textAlign: TextAlign.center,
|
|
// ),
|
|
// ),
|
|
// ),
|
|
],
|
|
));
|
|
}
|
|
|
|
void formatData(inputs) {
|
|
for (var input in inputs) {
|
|
if(input['type'] != 'Form') {
|
|
if(input['key'] == 'result') {
|
|
values[input["key"]] = input["value"] ? "Accept" : "Reject";
|
|
// print('${input["key"]} : ${input["value"] ? "Accept" : "Reject"}');
|
|
} else if(input['key'] == 'date') {
|
|
var date = input["value"];
|
|
|
|
values[input["key"]] = "${date.year}-${date.month}-${date.day}";
|
|
} else {
|
|
values[input["key"]] = input["value"];
|
|
// print('${input["key"]} : ${input["value"]}');
|
|
}
|
|
}
|
|
if (input['children'] != null && input['children'].isNotEmpty) {
|
|
formatData(input['children']);
|
|
}
|
|
}
|
|
print(values);
|
|
|
|
}
|
|
}
|