Track Gaz Refill Done

pull/2/head
zaid_daoud 3 years ago
parent ee4498a55e
commit 83bf02e69f

@ -142,6 +142,19 @@ class GasRefillProvider extends ChangeNotifier {
"id": newModel.id,
"gazRefillNo": newModel.title ?? "",
"status": newModel.status.toMap(),
"startDate": startDate?.toIso8601String(),
"startTime": startDate?.toIso8601String(),
"endDate": endDate?.toIso8601String(),
"endTime": endDate?.toIso8601String(),
// "workingHours": 0,
// "assignedEmployee": {
// "id": "string",
// "name": "string"
// },
"site": hospital?.toMap(),
"building": building?.toJson(includeFloors: false),
"floor": floor?.toJson(includeDepartments: false),
"department": department?.toJson(),
};
body["gazRefillDetails"] = newModel.details

@ -328,7 +328,7 @@ class ModelDefinition {
if (json['suppliers'] != null) {
suppliers = [];
json['suppliers'].forEach((v) {
// suppliers!.add(new Null.fromJson(v));
// suppliers!.add(new Null.fromJson(v));
});
}
}
@ -394,7 +394,7 @@ class Site {
if (json['buildings'] != null) {
buildings = [];
json['buildings'].forEach((v) {
// buildings!.add(new Null.fromJson(v));
// buildings!.add(new Null.fromJson(v));
});
}
}
@ -427,11 +427,11 @@ class Department {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['departmentName'] = this.departmentName;
data['departmentCode'] = this.departmentCode;
data['ntCode'] = this.ntCode;
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['departmentName'] = departmentName;
data['departmentCode'] = departmentCode;
data['ntCode'] = ntCode;
return data;
}
}
@ -520,7 +520,7 @@ class Building {
int value;
var floor;
Building({this.id, this.name, this.value,this.floor});
Building({this.id, this.name, this.value, this.floor});
Building.fromJson(Map<String, dynamic> json) {
id = json['id'];
@ -538,4 +538,3 @@ class Building {
return data;
}
}

@ -1,6 +1,8 @@
import 'package:test_sa/models/gas_refill/gas_refill_details.dart';
import 'package:test_sa/models/lookup.dart';
import '../call_request_for_work_order_model.dart';
class GasRefillModel {
int id;
//String userId;
@ -9,8 +11,10 @@ class GasRefillModel {
Lookup status;
Lookup building;
Lookup floor;
Department department;
List<GasRefillDetails> details;
DateTime startDate, endDate, expectedDate;
GasRefillModel({
this.id,
//this.userId,
@ -18,13 +22,22 @@ class GasRefillModel {
this.title,
this.status,
this.details,
this.building,
this.floor,
this.startDate,
this.endDate,
this.expectedDate,
this.department,
});
bool validate() {
if (title == null) return false;
if (status == null) return false;
if (building == null) return false;
if (floor == null) return false;
// if (building == null) return false;
// if (floor == null) return false;
// if (department == null) return false;
// if (startDate == null) return false;
// if (endDate == null) return false;
if (details == null && details.isEmpty) return false;
return true;
}
@ -36,6 +49,12 @@ class GasRefillModel {
title = model.title;
status = Lookup.fromStatus(model.status);
details = model.details.map((e) => GasRefillDetails.fromDetails(e)).toList();
building = model.building;
floor = model.floor;
department = model.department;
startDate = model.startDate;
endDate = model.endDate;
expectedDate = model.expectedDate;
}
factory GasRefillModel.fromJson(Map<String, dynamic> parsedJson) {
@ -49,8 +68,14 @@ class GasRefillModel {
//userId: parsedJson["uid"],
title: parsedJson["gazRefillNo"],
clientName: parsedJson["site"] == null ? null : parsedJson["site"]["custName"],
status: Lookup.fromJson(parsedJson["status"]),
status: Lookup.fromJson(parsedJson["status"] ?? {}),
details: details,
building: Lookup.fromJson(parsedJson["building"] ?? {}),
floor: Lookup.fromJson(parsedJson["floor"] ?? {}),
department: Department.fromJson(parsedJson["department"] ?? {}),
startDate: DateTime.tryParse(parsedJson['startDate'] ?? ""),
endDate: DateTime.tryParse(parsedJson['endDate'] ?? ""),
expectedDate: DateTime.tryParse(parsedJson['expectedDate'] ?? ""),
);
}
}

@ -17,7 +17,7 @@ class Hospital {
if (parsedJson['buildings'] != null) {
buildings = [];
parsedJson['buildings'].forEach((v) {
buildings.add(new Buildings.fromJson(v));
buildings.add(Buildings.fromJson(v));
});
}
@ -78,20 +78,20 @@ class Buildings {
name = json['name'];
value = json['value'];
if (json['floors'] != null) {
floors = new List<Floors>();
floors = List<Floors>();
json['floors'].forEach((v) {
floors.add(new Floors.fromJson(v));
floors.add(Floors.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
data['value'] = this.value;
if (this.floors != null) {
data['floors'] = this.floors.map((v) => v.toJson()).toList();
Map<String, dynamic> toJson({bool includeFloors = true}) {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['name'] = name;
data['value'] = value;
if (floors != null && includeFloors) {
data['floors'] = floors.map((v) => v.toJson()).toList();
}
return data;
}
@ -110,20 +110,20 @@ class Floors {
name = json['name'];
value = json['value'];
if (json['departments'] != null) {
departments = new List<Departments>();
departments = List<Departments>();
json['departments'].forEach((v) {
departments.add(new Departments.fromJson(v));
departments.add(Departments.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
data['value'] = this.value;
if (this.departments != null) {
data['departments'] = this.departments.map((v) => v.toJson()).toList();
Map<String, dynamic> toJson({bool includeDepartments = true}) {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['name'] = name;
data['value'] = value;
if (departments != null && includeDepartments) {
data['departments'] = departments.map((v) => v.toJson()).toList();
}
return data;
}
@ -141,9 +141,9 @@ class Departments {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['name'] = name;
return data;
}
}

@ -1,15 +1,16 @@
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/http_status_manger.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/gas_refill/gas_refill_model.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/buttons/app_icon_button.dart';
@ -20,6 +21,7 @@ import 'package:test_sa/views/widgets/requests/request_status.dart';
import 'package:test_sa/views/widgets/status/gas_refill/gas_status.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../models/enums/user_types.dart';
import '../../../app_style/colors.dart';
class GasRefillDetails extends StatefulWidget {
@ -109,14 +111,24 @@ class _GasRefillDetailsState extends State<GasRefillDetails> {
),
if (_userProvider.user.type == UsersTypes.engineer)
AIconButton(
iconData: _enableEdit ? Icons.cancel : Icons.edit,
iconData: /*_enableEdit ? Icons.cancel :*/ Icons.edit,
color: Theme.of(context).colorScheme.onPrimary,
buttonSize: 42,
backgroundColor: AColors.green,
onPressed: () async {
_enableEdit = !_enableEdit;
// _enableEdit = !_enableEdit;
print(widget.model.startDate);
_model.fromGasRefillModel(widget.model);
setState(() {});
print(widget.model.startDate);
// setState(() {});
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RequestGasRefill(
gasRefillModel: widget.model,
),
),
);
},
),
const SizedBox(
@ -139,6 +151,22 @@ class _GasRefillDetailsState extends State<GasRefillDetails> {
title: _subtitle.hospital,
info: _model.clientName,
),
RequestInfoRow(
title: "Building",
info: _model.building?.name,
),
RequestInfoRow(
title: "Floor",
info: _model.floor?.name,
),
RequestInfoRow(
title: _subtitle.startDate,
info: _model.startDate == null ? null : DateFormat.yMd().format(_model.startDate),
),
RequestInfoRow(
title: _subtitle.endDate,
info: _model.endDate == null ? null : DateFormat.yMd().format(_model.endDate),
),
_enableEdit
? Column(
crossAxisAlignment: CrossAxisAlignment.start,

@ -27,12 +27,13 @@ import 'package:test_sa/views/widgets/status/gas_refill/gas_type.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../controllers/localization/localization.dart';
import '../../../../controllers/providers/api/hospitals_provider.dart';
import '../../../../models/enums/user_types.dart';
class RequestGasRefill extends StatefulWidget {
static const String id = "/request-gas-refill";
const RequestGasRefill({Key key}) : super(key: key);
final GasRefillModel gasRefillModel;
const RequestGasRefill({this.gasRefillModel, Key key}) : super(key: key);
@override
State<RequestGasRefill> createState() => _RequestGasRefillState();
@ -47,10 +48,19 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
GasRefillProvider _gasRefillProvider;
GasRefillDetails _currentDetails = GasRefillDetails();
final TextEditingController _requestedQuantityController = TextEditingController();
final GasRefillModel _formModel = GasRefillModel(details: []);
GasRefillModel _formModel = GasRefillModel(details: []);
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey _DetailsKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
bool _firstTime = true;
@override
void initState() {
super.initState();
if (widget.gasRefillModel != null) {
_formModel = widget.gasRefillModel;
}
}
@override
void setState(VoidCallback fn) {
@ -64,12 +74,26 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
_isLoading = true;
setState(() {});
if (widget.gasRefillModel != null) {
if (!_formModel.validate()) {
_isLoading = false;
setState(() {});
return;
}
}
int status = await _gasRefillProvider.createModel(
user: _userProvider.user,
host: _settingProvider.host,
model: _formModel,
);
int status = widget.gasRefillModel == null
? await _gasRefillProvider.createModel(
user: _userProvider.user,
host: _settingProvider.host,
model: _formModel,
)
: await _gasRefillProvider.updateModel(
user: _userProvider.user,
host: _settingProvider.host,
oldModel: widget.gasRefillModel,
newModel: _formModel,
);
_isLoading = false;
setState(() {});
if (status >= 200 && status < 300) {
@ -121,7 +145,21 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
_gasRefillProvider = Provider.of<GasRefillProvider>(context, listen: false);
_gasRefillProvider.reset();
}
if (widget.gasRefillModel != null && _firstTime) {
_formModel = widget.gasRefillModel;
HospitalsProvider().getHospitalsListByVal(searchVal: widget.gasRefillModel.clientName).then((value) {
_gasRefillProvider.hospital = value?.firstWhere((element) => element.name == widget.gasRefillModel.clientName, orElse: () => null);
print(_gasRefillProvider.hospital?.buildings?.length);
print(widget.gasRefillModel?.building?.name);
_gasRefillProvider.building = _gasRefillProvider.hospital?.buildings?.firstWhere((element) => element.name == widget.gasRefillModel?.building?.name, orElse: () => null);
_gasRefillProvider.floor = _gasRefillProvider.building?.floors?.firstWhere((element) => element.name == widget.gasRefillModel?.floor?.name, orElse: () => null);
_gasRefillProvider.department = _gasRefillProvider.floor?.departments?.firstWhere((element) => element.name == widget.gasRefillModel?.department?.departmentName, orElse: () => null);
_gasRefillProvider.startDate = widget.gasRefillModel?.startDate;
_gasRefillProvider.endDate = widget.gasRefillModel?.endDate;
_firstTime = false;
setState(() {});
});
}
return Scaffold(
key: _scaffoldKey,
body: Form(
@ -141,7 +179,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Request Gas Refill",
"${widget.gasRefillModel == null ? "Request" : "Update"} Gas Refill",
style: Theme.of(context).textTheme.headline5.copyWith(color: Theme.of(context).primaryColor, fontSize: 28, fontWeight: FontWeight.bold),
),
),
@ -408,7 +446,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
}),
const SizedBox(height: 16),
AButton(
text: _subtitle.submit,
text: widget.gasRefillModel == null ? _subtitle.submit : _subtitle.update,
onPressed: _onSubmit,
),
const SizedBox(

@ -1,15 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class BuildingTypeMenu extends StatefulWidget {
final Function(Buildings) onSelect;
@ -41,6 +33,9 @@ class _BuildingTypeMenuState extends State<BuildingTypeMenu> {
_building = widget.building;
_selectedBuilding = null;
}
if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) {
_selectedBuilding = widget.initialValue;
}
super.didUpdateWidget(oldWidget);
}

@ -1,15 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class DepartmentTypeMenu extends StatefulWidget {
final Function(Departments) onSelect;
@ -41,6 +33,9 @@ class _DepartmentTypeMenuState extends State<DepartmentTypeMenu> {
_departments = widget.departments;
_selected = null;
}
if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) {
_selected = widget.initialValue;
}
super.didUpdateWidget(oldWidget);
}

@ -1,15 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class FloorTypeMenu extends StatefulWidget {
final Function(Floors) onSelect;
@ -41,6 +33,9 @@ class _FloorTypeMenuState extends State<FloorTypeMenu> {
_floors = widget.floors;
_selected = null;
}
if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) {
_selected = widget.initialValue;
}
super.didUpdateWidget(oldWidget);
}

Loading…
Cancel
Save