receiver name added on new transfer request & improvements
parent
5d706d89b4
commit
a6dd802321
@ -0,0 +1,57 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:http/http.dart';
|
||||
import 'package:test_sa/controllers/api_routes/api_manager.dart';
|
||||
import 'package:test_sa/controllers/api_routes/urls.dart';
|
||||
import 'package:test_sa/models/employee.dart';
|
||||
import 'package:test_sa/models/user.dart';
|
||||
|
||||
class NurseProvider extends ChangeNotifier {
|
||||
//reset provider data
|
||||
void reset() {
|
||||
_items = null;
|
||||
_stateCode = null;
|
||||
}
|
||||
|
||||
int _stateCode;
|
||||
|
||||
int get stateCode => _stateCode;
|
||||
List<Employee> _items;
|
||||
|
||||
List<Employee> get nursesList => _items;
|
||||
bool _loading;
|
||||
|
||||
bool get isLoading => _loading;
|
||||
|
||||
set isLoading(bool isLoading) {
|
||||
_loading = isLoading;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<int> getData() async {
|
||||
if (_loading == true) return -2;
|
||||
_loading = true;
|
||||
notifyListeners();
|
||||
Response response;
|
||||
try {
|
||||
response = await ApiManager.instance.get(URLs.getNurses);
|
||||
_stateCode = response.statusCode;
|
||||
if (response.statusCode >= 200 && response.statusCode < 300) {
|
||||
// client's request was successfully received
|
||||
List categoriesListJson = json.decode(response.body);
|
||||
_items = categoriesListJson.map((type) => Employee.fromJson(type)).toList();
|
||||
_items.sort((a, b) => a.name.compareTo(b.name));
|
||||
}
|
||||
_loading = false;
|
||||
notifyListeners();
|
||||
return response.statusCode;
|
||||
} catch (error) {
|
||||
_loading = false;
|
||||
_stateCode = -1;
|
||||
notifyListeners();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,29 +1,29 @@
|
||||
class Engineer {
|
||||
class Employee {
|
||||
String id;
|
||||
String name;
|
||||
|
||||
Engineer({
|
||||
Employee({
|
||||
this.id,
|
||||
this.name,
|
||||
});
|
||||
|
||||
factory Engineer.fromJson(Map<String, dynamic> parsedJson) {
|
||||
if (parsedJson == null) return Engineer();
|
||||
return Engineer(
|
||||
factory Employee.fromJson(Map<String, dynamic> parsedJson) {
|
||||
if (parsedJson == null) return Employee();
|
||||
return Employee(
|
||||
id: parsedJson["userId"] ?? parsedJson["id"],
|
||||
name: parsedJson["userName"] ?? parsedJson["name"],
|
||||
);
|
||||
}
|
||||
|
||||
factory Engineer.fromEngineer(Engineer department) {
|
||||
return Engineer(
|
||||
factory Employee.fromEngineer(Employee department) {
|
||||
return Employee(
|
||||
id: department?.id,
|
||||
name: department?.name,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) => identical(this, other) || other is Engineer && id == other.id;
|
||||
bool operator ==(Object other) => identical(this, other) || other is Employee && id == other.id;
|
||||
|
||||
@override
|
||||
int get hashCode => id.hashCode;
|
||||
@ -0,0 +1,35 @@
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:provider/provider.dart';
|
||||
// import 'package:test_sa/controllers/providers/api/status_drop_down/employee/engineers_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/employee.dart';
|
||||
// import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
|
||||
// import 'package:test_sa/views/widgets/status/employee/single_type_menu.dart';
|
||||
//
|
||||
// class EngineersMenu extends StatelessWidget {
|
||||
// final Function(Employee) onSelect;
|
||||
// final Employee initialValue;
|
||||
//
|
||||
// const EngineersMenu({Key key, this.onSelect, this.initialValue}) : super(key: key);
|
||||
//
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// final settingProvider = Provider.of<SettingProvider>(context);
|
||||
// final userProvider = Provider.of<UserProvider>(context);
|
||||
// final menuProvider = Provider.of<EngineersProvider>(context);
|
||||
// return LoadingManager(
|
||||
// isLoading: menuProvider.isLoading,
|
||||
// isFailedLoading: menuProvider.items == null,
|
||||
// stateCode: menuProvider.stateCode,
|
||||
// onRefresh: () async {
|
||||
// menuProvider.reset();
|
||||
// await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
|
||||
// },
|
||||
// child: SingleEngineerMenu(
|
||||
// initialStatus: initialValue,
|
||||
// engineers: menuProvider.items,
|
||||
// onSelect: onSelect,
|
||||
// ));
|
||||
// }
|
||||
// }
|
||||
@ -1,35 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:test_sa/controllers/providers/api/status_drop_down/employee/engineers_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/engineer.dart';
|
||||
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
|
||||
import 'package:test_sa/views/widgets/status/employee/single_type_menu.dart';
|
||||
|
||||
class EngineersMenu extends StatelessWidget {
|
||||
final Function(Engineer) onSelect;
|
||||
final Engineer initialValue;
|
||||
|
||||
const EngineersMenu({Key key, this.onSelect, this.initialValue}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final settingProvider = Provider.of<SettingProvider>(context);
|
||||
final userProvider = Provider.of<UserProvider>(context);
|
||||
final menuProvider = Provider.of<EngineersProvider>(context);
|
||||
return LoadingManager(
|
||||
isLoading: menuProvider.isLoading,
|
||||
isFailedLoading: menuProvider.items == null,
|
||||
stateCode: menuProvider.stateCode,
|
||||
onRefresh: () async {
|
||||
menuProvider.reset();
|
||||
await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
|
||||
},
|
||||
child: SingleEngineerMenu(
|
||||
initialStatus: initialValue,
|
||||
engineers: menuProvider.items,
|
||||
onSelect: onSelect,
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:test_sa/controllers/providers/api/status_drop_down/employee/nurse_provider.dart';
|
||||
import 'package:test_sa/models/employee.dart';
|
||||
import 'package:test_sa/models/new_models/assistant_employee.dart';
|
||||
import 'package:test_sa/models/service_request/search_work_order.dart';
|
||||
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
|
||||
import 'package:test_sa/views/widgets/status/assistant_employee_menu.dart';
|
||||
import 'package:test_sa/views/widgets/status/nurse_employee_menu.dart';
|
||||
|
||||
import '../../../../controllers/providers/api/status_drop_down/report/service_report_assistants_employee_provider.dart';
|
||||
|
||||
class NurseMenu extends StatelessWidget {
|
||||
final Function(Employee) onSelect;
|
||||
final Employee initialValue;
|
||||
|
||||
final String title;
|
||||
final bool enable;
|
||||
|
||||
const NurseMenu({Key key, @required this.onSelect, this.title, this.initialValue, this.enable = true}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
NurseProvider menuProvider = Provider.of<NurseProvider>(context);
|
||||
return LoadingManager(
|
||||
isLoading: menuProvider.isLoading,
|
||||
isFailedLoading: menuProvider.nursesList == null,
|
||||
stateCode: menuProvider.stateCode,
|
||||
onRefresh: () async {
|
||||
await menuProvider.getData();
|
||||
// menuProvider.setStateCode = null;
|
||||
},
|
||||
child: NurseEmployeeMenu(
|
||||
initialValue: initialValue,
|
||||
title: title,
|
||||
list: menuProvider.nursesList,
|
||||
onSelect: (employee) {
|
||||
onSelect(employee);
|
||||
},
|
||||
enable: enable,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,86 +1,86 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:test_sa/models/engineer.dart';
|
||||
import 'package:test_sa/views/app_style/sizing.dart';
|
||||
|
||||
class SingleEngineerMenu extends StatefulWidget {
|
||||
final List<Engineer> engineers;
|
||||
final Engineer initialStatus;
|
||||
final Function(Engineer) onSelect;
|
||||
|
||||
const SingleEngineerMenu({Key key, this.engineers, this.onSelect, this.initialStatus}) : super(key: key);
|
||||
|
||||
@override
|
||||
_SingleEngineerMenuState createState() => _SingleEngineerMenuState();
|
||||
}
|
||||
|
||||
class _SingleEngineerMenuState extends State<SingleEngineerMenu> {
|
||||
Engineer _selectedStatus;
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant SingleEngineerMenu oldWidget) {
|
||||
if (widget.initialStatus != null && widget.initialStatus.id != null) {
|
||||
_selectedStatus = widget.engineers?.firstWhere((element) {
|
||||
return element == widget.initialStatus;
|
||||
});
|
||||
widget.onSelect(_selectedStatus);
|
||||
} else {
|
||||
_selectedStatus = null;
|
||||
}
|
||||
super.didUpdateWidget(oldWidget);
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
if (widget.initialStatus != null && widget.initialStatus.id != null) {
|
||||
_selectedStatus = widget.engineers?.firstWhere((element) {
|
||||
return element == widget.initialStatus;
|
||||
});
|
||||
widget.onSelect(_selectedStatus);
|
||||
}
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
// border: Border.all(color: AColors.black),
|
||||
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
|
||||
boxShadow: const [AppStyle.boxShadow]),
|
||||
child: DropdownButton<Engineer>(
|
||||
value: _selectedStatus,
|
||||
iconSize: 24,
|
||||
elevation: 16,
|
||||
isExpanded: true,
|
||||
hint: Text(
|
||||
"Select",
|
||||
style: Theme.of(context).textTheme.subtitle1,
|
||||
),
|
||||
style: TextStyle(color: Theme.of(context).primaryColor),
|
||||
underline: SizedBox.shrink(),
|
||||
onChanged: (Engineer newValue) {
|
||||
setState(() {
|
||||
_selectedStatus = newValue;
|
||||
});
|
||||
widget.onSelect(newValue);
|
||||
},
|
||||
items: widget.engineers.map<DropdownMenuItem<Engineer>>((Engineer value) {
|
||||
return DropdownMenuItem<Engineer>(
|
||||
value: value,
|
||||
child: Text(
|
||||
value.name,
|
||||
style: Theme.of(context).textTheme.subtitle1.copyWith(
|
||||
color: Theme.of(context).primaryColor,
|
||||
fontSize: 11,
|
||||
//fontWeight: FontWeight.bold
|
||||
),
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:test_sa/models/employee.dart';
|
||||
// import 'package:test_sa/views/app_style/sizing.dart';
|
||||
//
|
||||
// class SingleEngineerMenu extends StatefulWidget {
|
||||
// final List<Employee> engineers;
|
||||
// final Employee initialStatus;
|
||||
// final Function(Employee) onSelect;
|
||||
//
|
||||
// const SingleEngineerMenu({Key key, this.engineers, this.onSelect, this.initialStatus}) : super(key: key);
|
||||
//
|
||||
// @override
|
||||
// _SingleEngineerMenuState createState() => _SingleEngineerMenuState();
|
||||
// }
|
||||
//
|
||||
// class _SingleEngineerMenuState extends State<SingleEngineerMenu> {
|
||||
// Employee _selectedStatus;
|
||||
//
|
||||
// @override
|
||||
// void didUpdateWidget(covariant SingleEngineerMenu oldWidget) {
|
||||
// if (widget.initialStatus != null && widget.initialStatus.id != null) {
|
||||
// _selectedStatus = widget.engineers?.firstWhere((element) {
|
||||
// return element == widget.initialStatus;
|
||||
// });
|
||||
// widget.onSelect(_selectedStatus);
|
||||
// } else {
|
||||
// _selectedStatus = null;
|
||||
// }
|
||||
// super.didUpdateWidget(oldWidget);
|
||||
// }
|
||||
//
|
||||
// @override
|
||||
// void initState() {
|
||||
// if (widget.initialStatus != null && widget.initialStatus.id != null) {
|
||||
// _selectedStatus = widget.engineers?.firstWhere((element) {
|
||||
// return element == widget.initialStatus;
|
||||
// });
|
||||
// widget.onSelect(_selectedStatus);
|
||||
// }
|
||||
//
|
||||
// super.initState();
|
||||
// }
|
||||
//
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// return Container(
|
||||
// padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
// decoration: BoxDecoration(
|
||||
// color: Colors.white,
|
||||
// // border: Border.all(color: AColors.black),
|
||||
// borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
|
||||
// boxShadow: const [AppStyle.boxShadow]),
|
||||
// child: DropdownButton<Employee>(
|
||||
// value: _selectedStatus,
|
||||
// iconSize: 24,
|
||||
// elevation: 16,
|
||||
// isExpanded: true,
|
||||
// hint: Text(
|
||||
// "Select",
|
||||
// style: Theme.of(context).textTheme.subtitle1,
|
||||
// ),
|
||||
// style: TextStyle(color: Theme.of(context).primaryColor),
|
||||
// underline: SizedBox.shrink(),
|
||||
// onChanged: (Employee newValue) {
|
||||
// setState(() {
|
||||
// _selectedStatus = newValue;
|
||||
// });
|
||||
// widget.onSelect(newValue);
|
||||
// },
|
||||
// items: widget.engineers.map<DropdownMenuItem<Employee>>((Employee value) {
|
||||
// return DropdownMenuItem<Employee>(
|
||||
// value: value,
|
||||
// child: Text(
|
||||
// value.name,
|
||||
// style: Theme.of(context).textTheme.subtitle1.copyWith(
|
||||
// color: Theme.of(context).primaryColor,
|
||||
// fontSize: 11,
|
||||
// //fontWeight: FontWeight.bold
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
// }).toList(),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
||||
@ -0,0 +1,130 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:test_sa/extensions/context_extension.dart';
|
||||
import 'package:test_sa/extensions/int_extensions.dart';
|
||||
import 'package:test_sa/models/employee.dart';
|
||||
|
||||
import '../../../models/new_models/assistant_employee.dart';
|
||||
import '../../../new_views/app_style/app_color.dart';
|
||||
|
||||
class NurseEmployeeMenu extends StatefulWidget {
|
||||
final List<Employee> list;
|
||||
final Employee initialValue;
|
||||
final Function(Employee) onSelect;
|
||||
final String title;
|
||||
final bool enable;
|
||||
|
||||
const NurseEmployeeMenu({Key key, this.list, this.title, this.onSelect, this.initialValue, this.enable = true}) : super(key: key);
|
||||
|
||||
@override
|
||||
_SingleNurseEmployeeMenuState createState() => _SingleNurseEmployeeMenuState();
|
||||
}
|
||||
|
||||
class _SingleNurseEmployeeMenuState extends State<NurseEmployeeMenu> {
|
||||
Employee _selectedStatus;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback fn) {
|
||||
if (mounted) super.setState(fn);
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant NurseEmployeeMenu oldWidget) {
|
||||
if (widget.initialValue != null) {
|
||||
final result = widget.list?.where((element) {
|
||||
return element?.id == widget.initialValue?.id;
|
||||
});
|
||||
if (result.isNotEmpty) {
|
||||
_selectedStatus = result.first;
|
||||
} else {
|
||||
_selectedStatus = null;
|
||||
}
|
||||
if ((widget.initialValue?.id ?? "") != (_selectedStatus?.id ?? "")) {
|
||||
widget.onSelect(_selectedStatus);
|
||||
}
|
||||
} else {
|
||||
_selectedStatus = null;
|
||||
}
|
||||
super.didUpdateWidget(oldWidget);
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
if (widget.initialValue != null) {
|
||||
final result = widget.list?.where((element) {
|
||||
return element?.id == widget.initialValue?.id;
|
||||
});
|
||||
if (result.isNotEmpty) _selectedStatus = result.first;
|
||||
if (widget.initialValue?.id != _selectedStatus?.id) {
|
||||
widget.onSelect(_selectedStatus);
|
||||
}
|
||||
}
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
height: 60.toScreenHeight,
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth),
|
||||
decoration: BoxDecoration(
|
||||
color: context.isDark ? AppColor.neutral50 : Colors.white,
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
|
||||
),
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
PositionedDirectional(
|
||||
end: 0,
|
||||
child: Icon(
|
||||
Icons.keyboard_arrow_down_rounded,
|
||||
color: widget.enable ? null : Colors.grey,
|
||||
)),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
if (widget.title != null)
|
||||
Text(
|
||||
widget.title,
|
||||
style: Theme.of(context).textTheme.bodySmall?.copyWith(color: context.isDark ? null : AppColor.neutral20, fontWeight: FontWeight.w500),
|
||||
),
|
||||
DropdownButton<Employee>(
|
||||
value: _selectedStatus,
|
||||
iconSize: 24,
|
||||
isDense: true,
|
||||
icon: const SizedBox.shrink(),
|
||||
elevation: 0,
|
||||
isExpanded: true,
|
||||
hint: Text(
|
||||
context.translation.select,
|
||||
style: Theme.of(context).textTheme.bodyLarge,
|
||||
),
|
||||
style: TextStyle(color: Theme.of(context).primaryColor),
|
||||
underline: const SizedBox.shrink(),
|
||||
onChanged: widget.enable
|
||||
? (Employee newValue) {
|
||||
setState(() {
|
||||
_selectedStatus = newValue;
|
||||
});
|
||||
widget.onSelect(newValue);
|
||||
}
|
||||
: null,
|
||||
items: widget.list.map<DropdownMenuItem<Employee>>((Employee value) {
|
||||
return DropdownMenuItem<Employee>(
|
||||
value: value,
|
||||
child: Text(
|
||||
value.name ?? "NULL",
|
||||
style: Theme.of(context).textTheme.bodyLarge,
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue