Reformatting code

design_3.0_demo_module
zaid_daoud 2 years ago
parent 4f116b1ea4
commit 51ef873770

@ -8,8 +8,10 @@ class Attachment {
id = json['id']; id = json['id'];
name = json['name']; name = json['name'];
} }
num id; num id;
String name; String name;
Attachment copyWith({ Attachment copyWith({
num id, num id,
String name, String name,
@ -18,6 +20,7 @@ class Attachment {
id: id ?? this.id, id: id ?? this.id,
name: name ?? this.name, name: name ?? this.name,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -1,5 +1,5 @@
import 'package:meta/meta.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:meta/meta.dart';
class HttpStatusManger { class HttpStatusManger {
static String getStatusMessage({ static String getStatusMessage({

@ -1,11 +1,6 @@
import 'dart:convert';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:test_sa/models/system_notification_model.dart';
import 'notification_manger.dart';
class FirebaseNotificationManger { class FirebaseNotificationManger {
static FirebaseMessaging messaging = FirebaseMessaging.instance; static FirebaseMessaging messaging = FirebaseMessaging.instance;

@ -35,6 +35,7 @@ class AllRequestsProvider extends ChangeNotifier {
getInProgressRequests(); getInProgressRequests();
getCompletedRequests(); getCompletedRequests();
} }
Future<int> getAllRequests(BuildContext context, {int typeTransaction, SearchAllRequestsModel search}) async { Future<int> getAllRequests(BuildContext context, {int typeTransaction, SearchAllRequestsModel search}) async {
if (isAllLoading == true) return -2; if (isAllLoading == true) return -2;
isAllLoading = true; isAllLoading = true;
@ -261,33 +262,33 @@ class AllRequestsProvider extends ChangeNotifier {
} }
} }
// Future<int> getCloseRequests() async { // Future<int> getCloseRequests() async {
// if (isCloseLoading == true) return -2; // if (isCloseLoading == true) return -2;
// isCloseLoading = true; // isCloseLoading = true;
// if (closeRequests == null) notifyListeners(); // if (closeRequests == null) notifyListeners();
// Response response; // Response response;
// try { // try {
// Map<String, dynamic> body = { // Map<String, dynamic> body = {
// "typeTransaction": [1, 2, 3, 4], // "typeTransaction": [1, 2, 3, 4],
// "statusTransaction": [4], // "statusTransaction": [4],
// "priority": [], // "priority": [],
// "displayData": [] // "displayData": []
// }; // };
// response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body); // response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
// //
// stateCode = response.statusCode; // stateCode = response.statusCode;
// if (response.statusCode >= 200 && response.statusCode < 300) { // if (response.statusCode >= 200 && response.statusCode < 300) {
// closeRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]); // closeRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
// notifyListeners(); // notifyListeners();
// } // }
// isCloseLoading = false; // isCloseLoading = false;
// notifyListeners(); // notifyListeners();
// return response.statusCode; // return response.statusCode;
// } catch (error) { // } catch (error) {
// isCloseLoading = false; // isCloseLoading = false;
// stateCode = -1; // stateCode = -1;
// notifyListeners(); // notifyListeners();
// return -1; // return -1;
// } // }
// } // }
} }

@ -9,7 +9,6 @@ import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/models/new_models/gas_refill_model.dart'; import 'package:test_sa/models/new_models/gas_refill_model.dart';
import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
import '../../../new_views/common_widgets/app_lazy_loading.dart'; import '../../../new_views/common_widgets/app_lazy_loading.dart';
@ -198,5 +197,5 @@ class GasRefillProvider extends ChangeNotifier {
Floors floor; Floors floor;
Departments department; Departments department;
DateTime expectedDateTime; DateTime expectedDateTime;
//TimerModel timer; //TimerModel timer;
} }

@ -19,18 +19,22 @@ class AssignedToProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class EngineersProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Engineer> _items; List<Engineer> _items;
List<Engineer> get items => _items; List<Engineer> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -20,18 +20,22 @@ class GasCylinderSizesProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -20,18 +20,22 @@ class GasCylinderTypesProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -20,18 +20,22 @@ class GasStatusProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -20,18 +20,22 @@ class GasTypesProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class PentryStatusProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class PentryTaskStatusProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class PentryVisitStatusProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceRequestDefectTypesProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -21,18 +21,22 @@ class ServiceRequestFaultDescriptionProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<FaultDescription> _items; List<FaultDescription> _items;
List<FaultDescription> get items => _items; List<FaultDescription> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceReportLastCallsProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _calls; List<Lookup> _calls;
List<Lookup> get calls => _calls; List<Lookup> get calls => _calls;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceReportMaintenanceSituationProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _calls; List<Lookup> _calls;
List<Lookup> get operators => _calls; List<Lookup> get operators => _calls;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -20,18 +20,22 @@ class ServiceRequestPriorityProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _items; List<Lookup> _items;
List<Lookup> get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceReportReasonsProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _reasons; List<Lookup> _reasons;
List<Lookup> get reasons => _reasons; List<Lookup> get reasons => _reasons;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceReportRepairLocationProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _reasons; List<Lookup> _reasons;
List<Lookup> get reasons => _reasons; List<Lookup> get reasons => _reasons;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceReportStatusProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _status; List<Lookup> _status;
List<Lookup> get statuses => _status; List<Lookup> get statuses => _status;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceReportTypesProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _types; List<Lookup> _types;
List<Lookup> get types => _types; List<Lookup> get types => _types;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceReportVisitOperatorProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _calls; List<Lookup> _calls;
List<Lookup> get operators => _calls; List<Lookup> get operators => _calls;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceStatusProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _statuses; List<Lookup> _statuses;
List<Lookup> get statuses => _statuses; List<Lookup> get statuses => _statuses;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceFirstActionProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _statuses; List<Lookup> _statuses;
List<Lookup> get items => _statuses; List<Lookup> get items => _statuses;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceLoanAvailabilityProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _statuses; List<Lookup> _statuses;
List<Lookup> get items => _statuses; List<Lookup> get items => _statuses;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceRequestStatusProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _statuses; List<Lookup> _statuses;
List<Lookup> get items => _statuses; List<Lookup> get items => _statuses;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceRequestedThroughProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _statuses; List<Lookup> _statuses;
List<Lookup> get items => _statuses; List<Lookup> get items => _statuses;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -19,18 +19,22 @@ class ServiceRequestTypeProvider extends ChangeNotifier {
// like 400 customer request failed // like 400 customer request failed
// 500 service not available // 500 service not available
int _stateCode; int _stateCode;
int get stateCode => _stateCode; int get stateCode => _stateCode;
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup> _statuses; List<Lookup> _statuses;
List<Lookup> get items => _statuses; List<Lookup> get items => _statuses;
// when categories in-process _loading = true // when categories in-process _loading = true
// done _loading = true // done _loading = true
// failed _loading = false // failed _loading = false
bool _loading; bool _loading;
bool get isLoading => _loading; bool get isLoading => _loading;
set isLoading(bool isLoading) { set isLoading(bool isLoading) {
_loading = isLoading; _loading = isLoading;
notifyListeners(); notifyListeners();

@ -30,7 +30,9 @@ class SettingProvider extends ChangeNotifier {
} }
String _host; String _host;
String get host => _host; String get host => _host;
Future<void> setHost(String host) async { Future<void> setHost(String host) async {
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(ASettings.host, host); prefs.setString(ASettings.host, host);
@ -39,7 +41,9 @@ class SettingProvider extends ChangeNotifier {
} }
String _language; String _language;
String get language => _language; String get language => _language;
Future<void> setLanguage(String currentLanguage) async { Future<void> setLanguage(String currentLanguage) async {
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(ASettings.language, currentLanguage); prefs.setString(ASettings.language, currentLanguage);
@ -48,7 +52,9 @@ class SettingProvider extends ChangeNotifier {
} }
String _theme; String _theme;
String get theme => _theme; String get theme => _theme;
Future<void> setDarkTheme(bool value) async { Future<void> setDarkTheme(bool value) async {
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
_theme = value ? "dark" : "light"; _theme = value ? "dark" : "light";
@ -57,7 +63,9 @@ class SettingProvider extends ChangeNotifier {
} }
String _speechToText; String _speechToText;
String get speechToText => _speechToText; String get speechToText => _speechToText;
Future<void> setSpeechToText(String currentLanguage) async { Future<void> setSpeechToText(String currentLanguage) async {
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(ASettings.speechToText, currentLanguage); prefs.setString(ASettings.speechToText, currentLanguage);

@ -1,9 +1,9 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../controllers/providers/settings/setting_provider.dart'; import '../controllers/providers/settings/setting_provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
extension BuildContextExtension on BuildContext { extension BuildContextExtension on BuildContext {
AppLocalizations get translation => AppLocalizations.of(this); AppLocalizations get translation => AppLocalizations.of(this);
@ -11,5 +11,6 @@ extension BuildContextExtension on BuildContext {
List<String> get getIssues => [translation.reason1, translation.reason2, translation.reason3, translation.reason4, translation.reason5]; List<String> get getIssues => [translation.reason1, translation.reason2, translation.reason3, translation.reason4, translation.reason5];
bool get isDark => Provider.of<SettingProvider>(this).theme == "dark"; bool get isDark => Provider.of<SettingProvider>(this).theme == "dark";
bool get isAr => Provider.of<SettingProvider>(this).language == "ar"; bool get isAr => Provider.of<SettingProvider>(this).language == "ar";
} }

@ -13,6 +13,7 @@ class Department {
name: parsedJson["name"], name: parsedJson["name"],
); );
} }
factory Department.fromDepartment(Department department) { factory Department.fromDepartment(Department department) {
return Department( return Department(
id: department?.id, id: department?.id,

@ -135,7 +135,7 @@ class AssetByIdModel {
id = json['id']; id = json['id'];
print("supplier:${json['supplier']}"); print("supplier:${json['supplier']}");
modelDefinition = json['modelDefinition'] != null ? new ModelDefinition.fromJson(json['modelDefinition']) : null; modelDefinition = json['modelDefinition'] != null ? new ModelDefinition.fromJson(json['modelDefinition']) : null;
supplier = json['supplier'] != null ? Suppliers.fromJson(json['supplier']) : null; supplier = json['supplier'] != null ? Suppliers.fromJson(json['supplier']) : null;
ipAddress = json['ipAddress']; ipAddress = json['ipAddress'];
macAddress = json['macAddress']; macAddress = json['macAddress'];
portNumber = json['portNumber']; portNumber = json['portNumber'];

@ -58,6 +58,7 @@ class AssetSearch {
assetGroupName = json['assetGroupName']; assetGroupName = json['assetGroupName'];
assetGroup = json['assetGroup'] != null ? Lookup.fromJson(json['assetGroup']) : null; assetGroup = json['assetGroup'] != null ? Lookup.fromJson(json['assetGroup']) : null;
} }
String code; String code;
String assetSerialNumber; String assetSerialNumber;
String assetName; String assetName;
@ -84,6 +85,7 @@ class AssetSearch {
String tagCode; String tagCode;
String assetGroupName; String assetGroupName;
Lookup assetGroup; Lookup assetGroup;
AssetSearch copyWith({ AssetSearch copyWith({
String code, String code,
String assetSerialNumber, String assetSerialNumber,
@ -140,6 +142,7 @@ class AssetSearch {
assetGroupName: assetGroupName ?? this.assetGroupName, assetGroupName: assetGroupName ?? this.assetGroupName,
assetGroup: assetGroup ?? this.assetGroup, assetGroup: assetGroup ?? this.assetGroup,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
if (code != null && code.isNotEmpty) map['code'] = code; if (code != null && code.isNotEmpty) map['code'] = code;

@ -154,6 +154,7 @@ class AssetTransfer {
supplierId = json['supplierId']; supplierId = json['supplierId'];
supplierName = json['supplierName']; supplierName = json['supplierName'];
} }
num id; num id;
num transferNo; num transferNo;
String transferCode; String transferCode;
@ -339,6 +340,7 @@ class AssetTransfer {
senderTimer: senderTimer ?? this.senderTimer, senderTimer: senderTimer ?? this.senderTimer,
receiverTimer: receiverTimer ?? this.receiverTimer, receiverTimer: receiverTimer ?? this.receiverTimer,
manufacturerName: manufacturerName ?? this.manufacturerName); manufacturerName: manufacturerName ?? this.manufacturerName);
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -8,8 +8,10 @@ class AssetTransferAttachment {
id = json['id']; id = json['id'];
attachmentName = json['attachmentName']; attachmentName = json['attachmentName'];
} }
num id; num id;
String attachmentName; String attachmentName;
AssetTransferAttachment copyWith({ AssetTransferAttachment copyWith({
num id, num id,
String attachmentName, String attachmentName,
@ -18,6 +20,7 @@ class AssetTransferAttachment {
id: id ?? this.id, id: id ?? this.id,
attachmentName: attachmentName ?? this.attachmentName, attachmentName: attachmentName ?? this.attachmentName,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -79,27 +79,27 @@ class DeviceTransferInfo {
status = old.status; status = old.status;
} }
// factory DeviceTransferInfo.fromJson(Map<String, dynamic> parsedJson, String key) { // factory DeviceTransferInfo.fromJson(Map<String, dynamic> parsedJson, String key) {
// return DeviceTransferInfo( // return DeviceTransferInfo(
// workingHours: parsedJson["${key}working_hours"], // workingHours: parsedJson["${key}working_hours"],
// // startDate: parsedJson["${key}start_date"], // // startDate: parsedJson["${key}start_date"],
// // endDate: parsedJson["${key}end_date"], // // endDate: parsedJson["${key}end_date"],
// timer: TimerModel( // timer: TimerModel(
// startAt: DateTime.tryParse(parsedJson["${key}start_date"] ?? ""), // startAt: DateTime.tryParse(parsedJson["${key}start_date"] ?? ""),
// endAt: DateTime.tryParse(parsedJson["${key}end_date"] ?? ""), // endAt: DateTime.tryParse(parsedJson["${key}end_date"] ?? ""),
// durationInSecond: ((parsedJson["${key}working_hours"] ?? 0) * 60 * 60).toInt(), // durationInSecond: ((parsedJson["${key}working_hours"] ?? 0) * 60 * 60).toInt(),
// ), // ),
// travelingHours: parsedJson["${key}travel_hours"], // travelingHours: parsedJson["${key}travel_hours"],
// userName: parsedJson["${key}name"], // userName: parsedJson["${key}name"],
// signature: parsedJson["${key}image"], // signature: parsedJson["${key}image"],
// userId: parsedJson["${key}id"], // userId: parsedJson["${key}id"],
// comment: parsedJson["${key}comment"], // comment: parsedJson["${key}comment"],
// assignedEmployeeName: parsedJson["${key}AssignedEmployeeName"], // assignedEmployeeName: parsedJson["${key}AssignedEmployeeName"],
// client: Hospital(id: parsedJson["${key}SiteId"], name: parsedJson["${key}SiteName"]), // client: Hospital(id: parsedJson["${key}SiteId"], name: parsedJson["${key}SiteName"]),
// department: Department( // department: Department(
// id: parsedJson["${key}DepartmentId"], // id: parsedJson["${key}DepartmentId"],
// name: parsedJson["${key}DepartmentName"], // name: parsedJson["${key}DepartmentName"],
// ), // ),
// ); // );
// } // }
} }

@ -44,6 +44,7 @@ class ModelDefinition {
}); });
} }
} }
num id; num id;
String assetName; String assetName;
String assetDescription; String assetDescription;
@ -58,6 +59,7 @@ class ModelDefinition {
num lifeSpan; num lifeSpan;
List<ModelDefRelatedDefects> modelDefRelatedDefects; List<ModelDefRelatedDefects> modelDefRelatedDefects;
List<Supplier> suppliers; List<Supplier> suppliers;
ModelDefinition copyWith({ ModelDefinition copyWith({
num id, num id,
String assetName, String assetName,
@ -90,6 +92,7 @@ class ModelDefinition {
modelDefRelatedDefects: modelDefRelatedDefects ?? this.modelDefRelatedDefects, modelDefRelatedDefects: modelDefRelatedDefects ?? this.modelDefRelatedDefects,
suppliers: suppliers ?? this.suppliers, suppliers: suppliers ?? this.suppliers,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;
@ -128,10 +131,12 @@ class ModelDefRelatedDefects {
workPerformed = json['workPerformed']; workPerformed = json['workPerformed'];
estimatedTime = json['estimatedTime']; estimatedTime = json['estimatedTime'];
} }
num id; num id;
String defectName; String defectName;
String workPerformed; String workPerformed;
String estimatedTime; String estimatedTime;
ModelDefRelatedDefects copyWith({ ModelDefRelatedDefects copyWith({
num id, num id,
String defectName, String defectName,
@ -144,6 +149,7 @@ class ModelDefRelatedDefects {
workPerformed: workPerformed ?? this.workPerformed, workPerformed: workPerformed ?? this.workPerformed,
estimatedTime: estimatedTime ?? this.estimatedTime, estimatedTime: estimatedTime ?? this.estimatedTime,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -8,8 +8,10 @@ class Supplier {
id = json['id']; id = json['id'];
suppliername = json['suppliername']; suppliername = json['suppliername'];
} }
num id; num id;
String suppliername; String suppliername;
Supplier copyWith({ Supplier copyWith({
num id, num id,
String suppliername, String suppliername,
@ -18,6 +20,7 @@ class Supplier {
id: id ?? this.id, id: id ?? this.id,
suppliername: suppliername ?? this.suppliername, suppliername: suppliername ?? this.suppliername,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -7,8 +7,10 @@ class TechnicalGuidanceBook {
id = json['id']; id = json['id'];
guidanceBook = json['guidanceBook'] != null ? Lookup.fromJson(json['guidanceBook']) : null; guidanceBook = json['guidanceBook'] != null ? Lookup.fromJson(json['guidanceBook']) : null;
} }
num id; num id;
Lookup guidanceBook; Lookup guidanceBook;
TechnicalGuidanceBook copyWith({ TechnicalGuidanceBook copyWith({
num id, num id,
Lookup guidanceBook, Lookup guidanceBook,
@ -17,6 +19,7 @@ class TechnicalGuidanceBook {
id: id ?? this.id, id: id ?? this.id,
guidanceBook: guidanceBook ?? this.guidanceBook, guidanceBook: guidanceBook ?? this.guidanceBook,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -14,6 +14,7 @@ class Engineer {
name: parsedJson["userName"] ?? parsedJson["name"], name: parsedJson["userName"] ?? parsedJson["name"],
); );
} }
factory Engineer.fromEngineer(Engineer department) { factory Engineer.fromEngineer(Engineer department) {
return Engineer( return Engineer(
id: department?.id, id: department?.id,

@ -6,7 +6,7 @@ class FaultDescription extends Base {
this.defectName, this.defectName,
this.workPerformed, this.workPerformed,
this.estimatedTime, this.estimatedTime,
}):super(name : defectName, identifier: id?.toString()); }) : super(name: defectName, identifier: id?.toString());
FaultDescription.fromJson(dynamic json) { FaultDescription.fromJson(dynamic json) {
id = json['id']; id = json['id'];
@ -16,10 +16,12 @@ class FaultDescription extends Base {
workPerformed = json['workPerformed']; workPerformed = json['workPerformed'];
estimatedTime = json['estimatedTime']; estimatedTime = json['estimatedTime'];
} }
num id; num id;
String defectName; String defectName;
String workPerformed; String workPerformed;
String estimatedTime; String estimatedTime;
FaultDescription copyWith({ FaultDescription copyWith({
num id, num id,
String defectName, String defectName,
@ -32,6 +34,7 @@ class FaultDescription extends Base {
workPerformed: workPerformed ?? this.workPerformed, workPerformed: workPerformed ?? this.workPerformed,
estimatedTime: estimatedTime ?? this.estimatedTime, estimatedTime: estimatedTime ?? this.estimatedTime,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -8,8 +8,10 @@ class AssignedEmployee {
id = json['id']; id = json['id'];
name = json['name']; name = json['name'];
} }
String id; String id;
String name; String name;
AssignedEmployee copyWith({ AssignedEmployee copyWith({
String id, String id,
String name, String name,
@ -18,6 +20,7 @@ class AssignedEmployee {
id: id ?? this.id, id: id ?? this.id,
name: name ?? this.name, name: name ?? this.name,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -10,8 +10,10 @@ class AssistantEmployees {
id = json['id']; id = json['id'];
user = json['user'] != null ? AssignedEmployee.fromJson(json['user']) : null; user = json['user'] != null ? AssignedEmployee.fromJson(json['user']) : null;
} }
num id; num id;
AssignedEmployee user; AssignedEmployee user;
AssistantEmployees copyWith({ AssistantEmployees copyWith({
num id, num id,
AssignedEmployee user, AssignedEmployee user,
@ -20,6 +22,7 @@ class AssistantEmployees {
id: id ?? this.id, id: id ?? this.id,
user: user ?? this.user, user: user ?? this.user,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -16,10 +16,12 @@ class Department extends Base {
departmentCode = json['departmentCode']; departmentCode = json['departmentCode'];
ntCode = json['ntCode']; ntCode = json['ntCode'];
} }
num id; num id;
String departmentName; String departmentName;
String departmentCode; String departmentCode;
String ntCode; String ntCode;
Department copyWith({ Department copyWith({
num id, num id,
String departmentName, String departmentName,
@ -32,6 +34,7 @@ class Department extends Base {
departmentCode: departmentCode ?? this.departmentCode, departmentCode: departmentCode ?? this.departmentCode,
ntCode: ntCode ?? this.ntCode, ntCode: ntCode ?? this.ntCode,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -32,6 +32,7 @@ abstract class SearchAllRequestsBaseModel {
String value; String value;
BuildContext context; BuildContext context;
TextInputType inputType; TextInputType inputType;
SearchAllRequestsBaseModel(this.context, {this.label, this.value, this.inputType = TextInputType.text}); SearchAllRequestsBaseModel(this.context, {this.label, this.value, this.inputType = TextInputType.text});
} }

@ -20,6 +20,7 @@ class CallSiteContactPerson {
land = json['land']; land = json['land'];
contactUserId = json['contactUserId']; contactUserId = json['contactUserId'];
} }
num id; num id;
String employeeCode; String employeeCode;
String name; String name;
@ -28,6 +29,7 @@ class CallSiteContactPerson {
String email; String email;
String land; String land;
String contactUserId; String contactUserId;
CallSiteContactPerson copyWith({ CallSiteContactPerson copyWith({
num id, num id,
String employeeCode, String employeeCode,
@ -48,6 +50,7 @@ class CallSiteContactPerson {
land: land ?? this.land, land: land ?? this.land,
contactUserId: contactUserId ?? this.contactUserId, contactUserId: contactUserId ?? this.contactUserId,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -20,6 +20,7 @@ class ContactPersonWorkOrder {
land = json['land']; land = json['land'];
contactUserId = json['contactUserId']; contactUserId = json['contactUserId'];
} }
num id; num id;
String employeeCode; String employeeCode;
String name; String name;
@ -28,6 +29,7 @@ class ContactPersonWorkOrder {
String email; String email;
String land; String land;
String contactUserId; String contactUserId;
ContactPersonWorkOrder copyWith({ ContactPersonWorkOrder copyWith({
num id, num id,
String employeeCode, String employeeCode,
@ -48,6 +50,7 @@ class ContactPersonWorkOrder {
land: land ?? this.land, land: land ?? this.land,
contactUserId: contactUserId ?? this.contactUserId, contactUserId: contactUserId ?? this.contactUserId,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -178,6 +178,7 @@ class SearchWorkOrder {
Lookup currentSituation; Lookup currentSituation;
Lookup repairLocation; Lookup repairLocation;
Lookup reason; Lookup reason;
// String startofWorkTime; // String startofWorkTime;
// String endofWorkTime; // String endofWorkTime;
num workingHours; num workingHours;

@ -129,6 +129,7 @@ class ServiceReport {
loanAvailablity = json['loanAvailablity'] != null ? Lookup.fromJson(json['loanAvailablity']) : null; loanAvailablity = json['loanAvailablity'] != null ? Lookup.fromJson(json['loanAvailablity']) : null;
assetLoan = json['assetLoan'] != null ? AssetInfo.fromJson(json['assetLoan']) : null; assetLoan = json['assetLoan'] != null ? AssetInfo.fromJson(json['assetLoan']) : null;
} }
num id; num id;
num parentWOId; num parentWOId;
String workOrderNo; String workOrderNo;
@ -167,6 +168,7 @@ class ServiceReport {
Lookup loanAvailablity; Lookup loanAvailablity;
AssetInfo assetLoan; AssetInfo assetLoan;
TimerModel timer = TimerModel(); TimerModel timer = TimerModel();
ServiceReport copyWith({ ServiceReport copyWith({
num id, num id,
num parentWOId, num parentWOId,
@ -243,6 +245,7 @@ class ServiceReport {
assetLoan: assetLoan ?? this.assetLoan, assetLoan: assetLoan ?? this.assetLoan,
timer: timer ?? this.timer, timer: timer ?? this.timer,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id ?? 0; map['id'] = id ?? 0;

@ -16,11 +16,13 @@ class SparePartsWorkOrders extends Base {
returnQty = json['returnQty']; returnQty = json['returnQty'];
installQty = json['installQty']; installQty = json['installQty'];
} }
num id; num id;
SparePart sparePart; SparePart sparePart;
num qty; num qty;
num returnQty; num returnQty;
num installQty; num installQty;
SparePartsWorkOrders copyWith({ SparePartsWorkOrders copyWith({
num id, num id,
SparePart sparePart, SparePart sparePart,
@ -35,6 +37,7 @@ class SparePartsWorkOrders extends Base {
returnQty: returnQty ?? this.returnQty, returnQty: returnQty ?? this.returnQty,
installQty: installQty ?? this.installQty, installQty: installQty ?? this.installQty,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;
@ -64,10 +67,12 @@ class SparePart extends Base {
name = partName; name = partName;
assetId = json['assetId']; assetId = json['assetId'];
} }
num id; num id;
String partNo; String partNo;
String partName; String partName;
num assetId; num assetId;
SparePart copyWith({ SparePart copyWith({
num id, num id,
String partNo, String partNo,
@ -80,6 +85,7 @@ class SparePart extends Base {
partName: partName ?? this.partName, partName: partName ?? this.partName,
assetId: assetId ?? this.assetId, assetId: assetId ?? this.assetId,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -22,6 +22,7 @@ class SuppEngineerWorkOrders extends Base {
externalEngCode = json['externalEngCode']; externalEngCode = json['externalEngCode'];
email = json['email']; email = json['email'];
} }
num id; num id;
num supplierContactId; num supplierContactId;
String personName; String personName;
@ -29,6 +30,7 @@ class SuppEngineerWorkOrders extends Base {
String contact; String contact;
String externalEngCode; String externalEngCode;
String email; String email;
SuppEngineerWorkOrders copyWith({ SuppEngineerWorkOrders copyWith({
num id, num id,
num supplierContactId, num supplierContactId,
@ -47,6 +49,7 @@ class SuppEngineerWorkOrders extends Base {
externalEngCode: externalEngCode ?? this.externalEngCode, externalEngCode: externalEngCode ?? this.externalEngCode,
email: email ?? this.email, email: email ?? this.email,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -76,6 +76,7 @@ class SupplierDetails extends Base {
}); });
} }
} }
num id; num id;
String suppliername; String suppliername;
String nameX; String nameX;
@ -95,6 +96,7 @@ class SupplierDetails extends Base {
List<Attachments> attachments; List<Attachments> attachments;
List<SuppPersons> suppPersons; List<SuppPersons> suppPersons;
List<SuppTCodes> suppTCodes; List<SuppTCodes> suppTCodes;
SupplierDetails copyWith({ SupplierDetails copyWith({
num id, num id,
String suppliername, String suppliername,
@ -137,6 +139,7 @@ class SupplierDetails extends Base {
suppPersons: suppPersons ?? this.suppPersons, suppPersons: suppPersons ?? this.suppPersons,
suppTCodes: suppTCodes ?? this.suppTCodes, suppTCodes: suppTCodes ?? this.suppTCodes,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;
@ -188,10 +191,12 @@ class SuppTCodes {
codeTypeId = json['codeTypeId']; codeTypeId = json['codeTypeId'];
codeValue = json['codeValue']; codeValue = json['codeValue'];
} }
num id; num id;
num supplierId; num supplierId;
num codeTypeId; num codeTypeId;
String codeValue; String codeValue;
SuppTCodes copyWith({ SuppTCodes copyWith({
num id, num id,
num supplierId, num supplierId,
@ -204,6 +209,7 @@ class SuppTCodes {
codeTypeId: codeTypeId ?? this.codeTypeId, codeTypeId: codeTypeId ?? this.codeTypeId,
codeValue: codeValue ?? this.codeValue, codeValue: codeValue ?? this.codeValue,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;
@ -236,6 +242,7 @@ class SuppPersons extends Base {
externalEngCode = json['externalEngCode']; externalEngCode = json['externalEngCode'];
email = json['email']; email = json['email'];
} }
num id; num id;
num supplierId; num supplierId;
String personName; String personName;
@ -243,6 +250,7 @@ class SuppPersons extends Base {
String contact; String contact;
String externalEngCode; String externalEngCode;
String email; String email;
SuppPersons copyWith({ SuppPersons copyWith({
num id, num id,
num supplierId, num supplierId,
@ -261,6 +269,7 @@ class SuppPersons extends Base {
externalEngCode: externalEngCode ?? this.externalEngCode, externalEngCode: externalEngCode ?? this.externalEngCode,
email: email ?? this.email, email: email ?? this.email,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;
@ -288,10 +297,12 @@ class Attachments {
attachmentName = json['attachmentName']; attachmentName = json['attachmentName'];
attachmentURL = json['attachmentURL']; attachmentURL = json['attachmentURL'];
} }
num id; num id;
num supplierId; num supplierId;
String attachmentName; String attachmentName;
String attachmentURL; String attachmentURL;
Attachments copyWith({ Attachments copyWith({
num id, num id,
num supplierId, num supplierId,
@ -304,6 +315,7 @@ class Attachments {
attachmentName: attachmentName ?? this.attachmentName, attachmentName: attachmentName ?? this.attachmentName,
attachmentURL: attachmentURL ?? this.attachmentURL, attachmentURL: attachmentURL ?? this.attachmentURL,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;
@ -326,9 +338,11 @@ class Addresses {
supplierId = json['supplierId']; supplierId = json['supplierId'];
address = json['address']; address = json['address'];
} }
num id; num id;
num supplierId; num supplierId;
String address; String address;
Addresses copyWith({ Addresses copyWith({
num id, num id,
num supplierId, num supplierId,
@ -339,6 +353,7 @@ class Addresses {
supplierId: supplierId ?? this.supplierId, supplierId: supplierId ?? this.supplierId,
address: address ?? this.address, address: address ?? this.address,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;
@ -360,9 +375,11 @@ class Faxes {
supplierId = json['supplierId']; supplierId = json['supplierId'];
fax = json['fax']; fax = json['fax'];
} }
num id; num id;
num supplierId; num supplierId;
String fax; String fax;
Faxes copyWith({ Faxes copyWith({
num id, num id,
num supplierId, num supplierId,
@ -373,6 +390,7 @@ class Faxes {
supplierId: supplierId ?? this.supplierId, supplierId: supplierId ?? this.supplierId,
fax: fax ?? this.fax, fax: fax ?? this.fax,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;
@ -394,9 +412,11 @@ class Telephones {
supplierId = json['supplierId']; supplierId = json['supplierId'];
telephone = json['telephone']; telephone = json['telephone'];
} }
num id; num id;
num supplierId; num supplierId;
String telephone; String telephone;
Telephones copyWith({ Telephones copyWith({
num id, num id,
num supplierId, num supplierId,
@ -407,6 +427,7 @@ class Telephones {
supplierId: supplierId ?? this.supplierId, supplierId: supplierId ?? this.supplierId,
telephone: telephone ?? this.telephone, telephone: telephone ?? this.telephone,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -41,6 +41,7 @@ class CallRequest {
assetLoan = json['assetLoan'] != null ? AssetInfo.fromJson(json['assetLoan']) : null; assetLoan = json['assetLoan'] != null ? AssetInfo.fromJson(json['assetLoan']) : null;
assetType = json['assetType']; assetType = json['assetType'];
} }
num id; num id;
String callNo; String callNo;
String callComments; String callComments;
@ -54,6 +55,7 @@ class CallRequest {
Lookup loanAvailablity; Lookup loanAvailablity;
AssetInfo assetLoan; AssetInfo assetLoan;
num assetType; num assetType;
CallRequest copyWith({ CallRequest copyWith({
num id, num id,
String callNo, String callNo,
@ -84,6 +86,7 @@ class CallRequest {
assetLoan: assetLoan ?? this.assetLoan, assetLoan: assetLoan ?? this.assetLoan,
assetType: assetType ?? this.assetType, assetType: assetType ?? this.assetType,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -34,6 +34,7 @@ class WoParent {
equipmentStatus = json['equipmentStatus'] != null ? Lookup.fromJson(json['equipmentStatus']) : null; equipmentStatus = json['equipmentStatus'] != null ? Lookup.fromJson(json['equipmentStatus']) : null;
currentSituation = json['currentSituation'] != null ? Lookup.fromJson(json['currentSituation']) : null; currentSituation = json['currentSituation'] != null ? Lookup.fromJson(json['currentSituation']) : null;
} }
Lookup callLastSituation; Lookup callLastSituation;
SupplierDetails supplier; SupplierDetails supplier;
Lookup assetType; Lookup assetType;
@ -44,6 +45,7 @@ class WoParent {
List<SuppEngineerWorkOrders> suppEngineerWorkOrders; List<SuppEngineerWorkOrders> suppEngineerWorkOrders;
Lookup equipmentStatus; Lookup equipmentStatus;
Lookup currentSituation; Lookup currentSituation;
WoParent copyWith({ WoParent copyWith({
Lookup callLastSituation, Lookup callLastSituation,
SupplierDetails supplier, SupplierDetails supplier,
@ -68,6 +70,7 @@ class WoParent {
equipmentStatus: equipmentStatus ?? this.equipmentStatus, equipmentStatus: equipmentStatus ?? this.equipmentStatus,
currentSituation: currentSituation ?? this.currentSituation, currentSituation: currentSituation ?? this.currentSituation,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
if (callLastSituation != null) { if (callLastSituation != null) {
@ -120,6 +123,7 @@ class StepsWorkOrder {
parentWOId = json['parentWOId']; parentWOId = json['parentWOId'];
callId = json['callId']; callId = json['callId'];
} }
num sequence; num sequence;
num id; num id;
String name; String name;
@ -128,6 +132,7 @@ class StepsWorkOrder {
bool processed; bool processed;
num parentWOId; num parentWOId;
num callId; num callId;
StepsWorkOrder copyWith({ StepsWorkOrder copyWith({
num sequence, num sequence,
num id, num id,
@ -148,6 +153,7 @@ class StepsWorkOrder {
parentWOId: parentWOId ?? this.parentWOId, parentWOId: parentWOId ?? this.parentWOId,
callId: callId ?? this.callId, callId: callId ?? this.callId,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['sequence'] = sequence; map['sequence'] = sequence;

@ -1,5 +1,3 @@
import 'package:test_sa/views/pages/user/requests/future_request_service_details.dart';
class SystemNotificationModel { class SystemNotificationModel {
String userId; String userId;
String userName; String userName;

@ -211,9 +211,11 @@ class UserRoles {
name = json['name']; name = json['name'];
value = json['value']; value = json['value'];
} }
String id; String id;
String name; String name;
String value; String value;
UserRoles copyWith({ UserRoles copyWith({
String id, String id,
String name, String name,
@ -224,6 +226,7 @@ class UserRoles {
name: name ?? this.name, name: name ?? this.name,
value: value ?? this.value, value: value ?? this.value,
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id;

@ -2,6 +2,7 @@ import 'dart:ui';
class AppColor { class AppColor {
AppColor._(); AppColor._();
//primary //primary
static const Color primary30 = Color(0xffA2E2F8); static const Color primary30 = Color(0xffA2E2F8);
static const Color primary40 = Color(0xff75BDE0); static const Color primary40 = Color(0xff75BDE0);

@ -3,7 +3,9 @@ import 'package:test_sa/extensions/int_extensions.dart';
class AppTextStyle { class AppTextStyle {
static const fontFamily = "Poppins"; static const fontFamily = "Poppins";
AppTextStyle._(); AppTextStyle._();
static final TextStyle heading1 = TextStyle( static final TextStyle heading1 = TextStyle(
height: 1.5, height: 1.5,
fontSize: 32.toScreenWidth, fontSize: 32.toScreenWidth,

@ -4,6 +4,7 @@ import 'package:test_sa/new_views/app_style/app_text_style.dart';
class AppThemes { class AppThemes {
AppThemes._(); AppThemes._();
static ThemeData lightTheme = ThemeData.light().copyWith( static ThemeData lightTheme = ThemeData.light().copyWith(
textTheme: ThemeData.light().textTheme.apply(fontFamily: AppTextStyle.fontFamily), textTheme: ThemeData.light().textTheme.apply(fontFamily: AppTextStyle.fontFamily),
primaryColor: AppColor.primary50, primaryColor: AppColor.primary50,

@ -6,7 +6,6 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/pages/user/notifications/notifications_page.dart'; import 'package:test_sa/views/pages/user/notifications/notifications_page.dart';
@ -41,10 +40,10 @@ class AppDrawer extends StatelessWidget {
padding: const EdgeInsets.all(1), // Border radius padding: const EdgeInsets.all(1), // Border radius
child: ClipOval( child: ClipOval(
child: snapshot.profileImage != null child: snapshot.profileImage != null
? Image.file(snapshot.profileImage) ? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false) : (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName) ? Image.network(snapshot.user.profilePhotoName)
: const Icon( : const Icon(
Icons.person, Icons.person,
size: 50, size: 50,
color: Colors.white, color: Colors.white,
@ -96,7 +95,7 @@ class AppDrawer extends StatelessWidget {
userProvider.reset(); userProvider.reset();
Navigator.of(context).pop(); Navigator.of(context).pop();
Navigator.of(context).pop(); Navigator.of(context).pop();
// Navigator.of(context).pop(); // Navigator.of(context).pop();
} }
}), }),
18.height, 18.height,

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/models/enums/translation_keys.dart';
import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart';
import '../app_style/app_color.dart'; import '../app_style/app_color.dart';

@ -2,11 +2,10 @@ import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../models/enums/translation_keys.dart';
class AppSearchField extends StatefulWidget { class AppSearchField extends StatefulWidget {
final Function(String) onChanged; final Function(String) onChanged;
final Function(String) onSubmitted; final Function(String) onSubmitted;
const AppSearchField({Key key, this.onChanged, this.onSubmitted}) : super(key: key); const AppSearchField({Key key, this.onChanged, this.onSubmitted}) : super(key: key);
@override @override
@ -18,19 +17,20 @@ class _AppSearchFieldState extends State<AppSearchField> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return TextField( return TextField(
onChanged: widget.onChanged, onChanged: widget.onChanged,
onSubmitted: widget.onSubmitted, onSubmitted: widget.onSubmitted,
decoration: InputDecoration( decoration: InputDecoration(
prefixIcon: const Icon(Icons.search, color: AppColor.neutral20,), prefixIcon: const Icon(
hintText: context.translation.search, Icons.search,
hintStyle: TextStyle( color: AppColor.neutral20,
fontSize: Theme.of(context).textTheme.bodySmall.fontSize ),
), hintText: context.translation.search,
filled: true, hintStyle: TextStyle(fontSize: Theme.of(context).textTheme.bodySmall.fontSize),
fillColor: AppColor.neutral30, filled: true,
border: OutlineInputBorder( fillColor: AppColor.neutral30,
borderRadius: BorderRadius.circular(15), border: OutlineInputBorder(
borderSide: BorderSide.none, borderRadius: BorderRadius.circular(15),
)), borderSide: BorderSide.none,
)),
); );
} }
} }

@ -1,23 +1,22 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class AppTabBar extends StatelessWidget { class AppTabBar extends StatelessWidget {
const AppTabBar({Key key}) : super(key: key); const AppTabBar({Key key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return TabBar( return TabBar(
tabs:[ tabs: [
Tab( Tab(
icon: Icon(Icons.cloud_outlined), icon: Icon(Icons.cloud_outlined),
), ),
Tab( Tab(
icon: Icon(Icons.beach_access_sharp), icon: Icon(Icons.beach_access_sharp),
), ),
Tab( Tab(
icon: Icon(Icons.brightness_5_sharp), icon: Icon(Icons.brightness_5_sharp),
), ),
], ],
); );
} }
} }

@ -7,6 +7,7 @@ import '../common_widgets/default_app_bar.dart';
class HelpCenterPage extends StatelessWidget { class HelpCenterPage extends StatelessWidget {
static const id = "/help_center_page"; static const id = "/help_center_page";
const HelpCenterPage({Key key}) : super(key: key); const HelpCenterPage({Key key}) : super(key: key);
@override @override

@ -42,21 +42,21 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
context.translation.myShift.heading5(context), context.translation.myShift.heading5(context),
8.height, 8.height,
context.translation.sunToThurs.bodyText(context), context.translation.sunToThurs.bodyText(context),
"09:00 to 18:00".bodyText(context).custom(color: context.isDark? AppColor.neutral10: AppColor.neutral50), "09:00 to 18:00".bodyText(context).custom(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
], ],
).toShadowContainer(context), ).toShadowContainer(context),
).paddingOnly(start: 16, end: 16), ).paddingOnly(start: 16, end: 16),
16.height, 16.height,
Container( Container(
margin: const EdgeInsets.only(left: 16, right: 16), margin: const EdgeInsets.only(left: 16, right: 16),
decoration: BoxDecoration(color: context.isDark? AppColor.neutral10: AppColor.neutral30, borderRadius: BorderRadius.circular(16)), decoration: BoxDecoration(color: context.isDark ? AppColor.neutral10 : AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
child: TabBar( child: TabBar(
controller: _tabController, controller: _tabController,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
labelColor: AppColor.neutral60, labelColor: AppColor.neutral60,
unselectedLabelColor: AppColor.neutral20, unselectedLabelColor: AppColor.neutral20,
indicatorPadding: const EdgeInsets.all(4), indicatorPadding: const EdgeInsets.all(4),
indicator: BoxDecoration(color: context.isDark? AppColor.neutral20:Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)), indicator: BoxDecoration(color: context.isDark ? AppColor.neutral20 : Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
onTap: (index) { onTap: (index) {
setState(() {}); setState(() {});
}, },

@ -10,6 +10,7 @@ import '../../../app_style/app_color.dart';
class CalendarHeader extends StatelessWidget { class CalendarHeader extends StatelessWidget {
final DateTime dateTime; final DateTime dateTime;
final DateFormat dateFormat; final DateFormat dateFormat;
const CalendarHeader({@required this.dateTime, @required this.dateFormat, Key key}) : super(key: key); const CalendarHeader({@required this.dateTime, @required this.dateFormat, Key key}) : super(key: key);
@override @override
@ -20,9 +21,9 @@ class CalendarHeader extends StatelessWidget {
children: [ children: [
dateFormat.format(dateTime).heading5(context), dateFormat.format(dateTime).heading5(context),
6.width, 6.width,
Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.keyboard_arrow_down_sharp, color: context.isDark? AppColor.neutral10:AppColor.neutral60, size: 24)), Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.keyboard_arrow_down_sharp, color: context.isDark ? AppColor.neutral10 : AppColor.neutral60, size: 24)),
const Spacer(), const Spacer(),
Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.calendar_today, color: context.isDark? AppColor.neutral10:AppColor.neutral60, size: 18)), Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.calendar_today, color: context.isDark ? AppColor.neutral10 : AppColor.neutral60, size: 18)),
], ],
), ),
8.height, 8.height,

@ -7,6 +7,7 @@ import '../../../app_style/app_color.dart';
class CalendarDaysCard extends StatelessWidget { class CalendarDaysCard extends StatelessWidget {
final String day; final String day;
final bool fill; final bool fill;
const CalendarDaysCard({Key key, @required this.day, this.fill = false}) : super(key: key); const CalendarDaysCard({Key key, @required this.day, this.fill = false}) : super(key: key);
@override @override

@ -28,10 +28,8 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
_initialDate = DateTime.now(); _initialDate = DateTime.now();
_firstDate = DateTime.utc(2010, 10, 16); _firstDate = DateTime.utc(2010, 10, 16);
_lastDate = DateTime.utc(2030, 3, 14); _lastDate = DateTime.utc(2030, 3, 14);
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests( Provider.of<AllRequestsProvider>(context, listen: false)
from: DateTime(DateTime.now().year, DateTime.now().month, 1), .getCalenderRequests(from: DateTime(DateTime.now().year, DateTime.now().month, 1), to: DateTime(DateTime.now().year, DateTime.now().month + 1, 0));
to:DateTime(DateTime.now().year, DateTime.now().month +1, 0)
);
} }
@override @override
@ -59,9 +57,7 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
initialDatePickerMode: DatePickerMode.year, initialDatePickerMode: DatePickerMode.year,
); );
if (result != null) { if (result != null) {
await snapshot.getCalenderRequests( await snapshot.getCalenderRequests(from: DateTime(result.year, result.month, 1), to: DateTime(result.year, result.month + 1, 0));
from: DateTime(result.year, result.month, 1),
to: DateTime(result.year, result.month+1, 0));
_initialDate = result; _initialDate = result;
setState(() {}); setState(() {});
} }

@ -33,9 +33,8 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
_initialDate = DateTime.now(); _initialDate = DateTime.now();
_firstDate = DateTime.utc(2010, 10, 16); _firstDate = DateTime.utc(2010, 10, 16);
_lastDate = DateTime.utc(2030, 3, 14); _lastDate = DateTime.utc(2030, 3, 14);
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests( Provider.of<AllRequestsProvider>(context, listen: false)
from: DateTime.now().subtract(Duration(days: DateTime.now().weekday)), .getCalenderRequests(from: DateTime.now().subtract(Duration(days: DateTime.now().weekday)), to: DateTime.now().add(Duration(days: DateTime.daysPerWeek - DateTime.now().weekday - 1)));
to: DateTime.now().add(Duration(days: DateTime.daysPerWeek - DateTime.now().weekday -1)));
} }
@override @override
@ -61,7 +60,8 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
onPageChanged: (date) { onPageChanged: (date) {
_initialDate = date; _initialDate = date;
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests(from: date.subtract(Duration(days: date.weekday)), to: date.add(Duration(days: DateTime.daysPerWeek - date.weekday -1))); Provider.of<AllRequestsProvider>(context, listen: false)
.getCalenderRequests(from: date.subtract(Duration(days: date.weekday)), to: date.add(Duration(days: DateTime.daysPerWeek - date.weekday - 1)));
}, },
calendarBuilders: CalendarBuilders( calendarBuilders: CalendarBuilders(
headerTitleBuilder: (context, dateTime) => Column( headerTitleBuilder: (context, dateTime) => Column(
@ -74,7 +74,7 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
), ),
dowBuilder: (context, dateTime) { dowBuilder: (context, dateTime) {
final day = DateFormat("EE", context.isAr ? "ar" : "en").format(dateTime).toUpperCase(); final day = DateFormat("EE", context.isAr ? "ar" : "en").format(dateTime).toUpperCase();
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: context.isDark? AppColor.neutral10: AppColor.neutral50)); return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50));
}, },
defaultBuilder: (context, dateTime, _) { defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime); final day = DateFormat("d").format(dateTime);

@ -1,18 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:pie_chart/pie_chart.dart'; import 'package:pie_chart/pie_chart.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/service_request_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/widgets/request_item_view_list.dart'; import 'package:test_sa/new_views/pages/land_page/widgets/request_item_view_list.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';

@ -50,7 +50,9 @@ class RequestsFragment extends StatelessWidget {
).expanded, ).expanded,
Text( Text(
"$title\n${context.translation.requests}", "$title\n${context.translation.requests}",
style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,), style: AppTextStyles.heading5.copyWith(
color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,
),
).toShimmer(isShow: isLoading), ).toShimmer(isShow: isLoading),
8.height, 8.height,
Row( Row(

@ -6,6 +6,7 @@ import '../../app_style/app_color.dart';
class HomeAppBar extends StatelessWidget implements PreferredSizeWidget { class HomeAppBar extends StatelessWidget implements PreferredSizeWidget {
final GlobalKey<ScaffoldState> scaffoldKey; final GlobalKey<ScaffoldState> scaffoldKey;
const HomeAppBar({Key key, this.scaffoldKey}) : super(key: key); const HomeAppBar({Key key, this.scaffoldKey}) : super(key: key);
@override @override

@ -12,11 +12,11 @@ import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import '../../../../controllers/providers/api/all_requests_provider.dart'; import '../../../../controllers/providers/api/all_requests_provider.dart';
import '../../../app_style/app_color.dart'; import '../../../app_style/app_color.dart';
import '../../../common_widgets/app_lazy_loading.dart'; import '../../../common_widgets/app_lazy_loading.dart';
import '../../../common_widgets/default_app_bar.dart';
class AllRequestsFilterPage extends StatefulWidget { class AllRequestsFilterPage extends StatefulWidget {
static const String id = "all_requests_filter_page"; static const String id = "all_requests_filter_page";
final SearchAllRequestsModel data; final SearchAllRequestsModel data;
const AllRequestsFilterPage({Key key, this.data}) : super(key: key); const AllRequestsFilterPage({Key key, this.data}) : super(key: key);
@override @override
@ -25,6 +25,7 @@ class AllRequestsFilterPage extends StatefulWidget {
class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> { class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
SearchAllRequestsModel search; SearchAllRequestsModel search;
@override @override
void initState() { void initState() {
search = widget.data; search = widget.data;
@ -75,13 +76,14 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Text(context.translation.reset, Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)), style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).paddingAll(8).onPress(() { ).paddingAll(8).onPress(() {
setState(() { setState(() {
search.statuses.clear(); search.statuses.clear();
search.typeTransaction.clear(); search.typeTransaction.clear();
search.startDate=null; search.startDate = null;
search.endDate = null; search.endDate = null;
}); });
}), }),

@ -16,6 +16,7 @@ import '../widgets/request_search_buttons.dart';
class AllRequestsSearchPage extends StatefulWidget { class AllRequestsSearchPage extends StatefulWidget {
static const String id = "all_requests_search_page"; static const String id = "all_requests_search_page";
final SearchAllRequestsModel data; final SearchAllRequestsModel data;
const AllRequestsSearchPage({Key key, this.data}) : super(key: key); const AllRequestsSearchPage({Key key, this.data}) : super(key: key);
@override @override

@ -99,7 +99,7 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
alignment: Alignment.center, alignment: Alignment.center,
padding: const EdgeInsets.symmetric(horizontal: 8), padding: const EdgeInsets.symmetric(horizontal: 8),
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: selectedRequest == index ? Color(0xFFEAF1F4):Colors.white, color: selectedRequest == index ? Color(0xFFEAF1F4) : Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: selectedRequest == index ? Color(0xFF4A8DB7) : Colors.white), side: BorderSide(width: 1, color: selectedRequest == index ? Color(0xFF4A8DB7) : Colors.white),
borderRadius: BorderRadius.circular(7), borderRadius: BorderRadius.circular(7),

@ -1,20 +1,15 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/device/asset_transfer.dart'; import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../../models/device/asset_transfer.dart';
import '../../../../views/pages/device_transfer/device_transfer_details.dart';
class AssetItemView extends StatelessWidget { class AssetItemView extends StatelessWidget {
final RequestsDetails request; final RequestsDetails request;
final bool showShadow; final bool showShadow;
@ -30,8 +25,8 @@ class AssetItemView extends StatelessWidget {
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if(request.priority != null) if (request.priority != null)
StatusLabel(label: request.priority??"", textColor: AColors.getRequestStatusTextColorByName(request.priority), backgroundColor: AColors.getRequestStatusColorByName(request.priority)), StatusLabel(label: request.priority ?? "", textColor: AColors.getRequestStatusTextColorByName(request.priority), backgroundColor: AColors.getRequestStatusColorByName(request.priority)),
8.width, 8.width,
//if(request.status != null) //if(request.status != null)
// StatusLabel( // StatusLabel(
@ -79,7 +74,7 @@ class AssetItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context,showShadow: showShadow).onPress(() { ).toShadowContainer(context, showShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: request.id)))); Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: request.id))));
}); });
} }

@ -1,12 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/models/visits/visit.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/pages/user/visits/visit_details.dart'; import 'package:test_sa/views/pages/user/visits/visit_details.dart';
@ -36,15 +34,15 @@ class PpmItemView extends StatelessWidget {
backgroundColor: AColors.getRequestStatusColorByName(request.status), backgroundColor: AColors.getRequestStatusColorByName(request.status),
), ),
1.width.expanded, 1.width.expanded,
Text(request.date?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral10: Color(0xFF3B3D4A))), Text(request.date?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
], ],
), ),
8.height, 8.height,
context.translation.ppmRequest.heading5(context), context.translation.ppmRequest.heading5(context),
8.height, 8.height,
'${context.translation.assetNumber}: ${request.assetName}'.bodyText(context), '${context.translation.assetNumber}: ${request.assetName}'.bodyText(context),
'${context.translation.assetSN}: ${request.assetNo}'.bodyText(context), '${context.translation.assetSN}: ${request.assetNo}'.bodyText(context),
'${context.translation.code}: ${request.code}'.bodyText(context), '${context.translation.code}: ${request.code}'.bodyText(context),
16.height, 16.height,
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,

@ -30,15 +30,15 @@ class ServiceRequestItemView extends StatelessWidget {
8.width, 8.width,
StatusLabel(label: request.status, textColor: AColors.getRequestStatusTextColorByName(request.status), backgroundColor: AColors.getRequestStatusColorByName(request.status)), StatusLabel(label: request.status, textColor: AColors.getRequestStatusTextColorByName(request.status), backgroundColor: AColors.getRequestStatusColorByName(request.status)),
1.width.expanded, 1.width.expanded,
Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral10: Color(0xFF3B3D4A))), Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
], ],
), ),
8.height, 8.height,
context.translation.serviceRequest.heading5(context), context.translation.serviceRequest.heading5(context),
'${context.translation.assetName}: ${request.assetName}'.bodyText(context), '${context.translation.assetName}: ${request.assetName}'.bodyText(context),
'${context.translation.assetNumber}: ${request.assetNo}'.bodyText(context), '${context.translation.assetNumber}: ${request.assetNo}'.bodyText(context),
'${context.translation.requestType}: ${request.requestType}'.bodyText(context), '${context.translation.requestType}: ${request.requestType}'.bodyText(context),
'${context.translation.requestNo}: ${request.requestNo}'.bodyText(context), '${context.translation.requestNo}: ${request.requestNo}'.bodyText(context),
8.height, 8.height,
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,

@ -12,7 +12,6 @@ import '../../controllers/providers/api/user_provider.dart';
import '../../controllers/providers/settings/setting_provider.dart'; import '../../controllers/providers/settings/setting_provider.dart';
import '../../controllers/validator/validator.dart'; import '../../controllers/validator/validator.dart';
import '../../models/user.dart'; import '../../models/user.dart';
import '../../views/pages/user/land_page.dart' as old;
import '../common_widgets/app_filled_button.dart'; import '../common_widgets/app_filled_button.dart';
import '../common_widgets/app_text_form_field.dart'; import '../common_widgets/app_text_form_field.dart';

@ -12,6 +12,7 @@ import '../common_widgets/default_app_bar.dart';
class ReportBugPage extends StatelessWidget { class ReportBugPage extends StatelessWidget {
static const id = "/report_bug_page"; static const id = "/report_bug_page";
const ReportBugPage({Key key}) : super(key: key); const ReportBugPage({Key key}) : super(key: key);
@override @override

@ -12,6 +12,7 @@ import '../common_widgets/default_app_bar.dart';
class SettingsPage extends StatefulWidget { class SettingsPage extends StatefulWidget {
static const id = "/settings_page"; static const id = "/settings_page";
const SettingsPage({Key key}) : super(key: key); const SettingsPage({Key key}) : super(key: key);
@override @override

@ -1,5 +1,3 @@
import 'dart:convert';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'package:flare_flutter/flare_actor.dart'; import 'package:flare_flutter/flare_actor.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -8,15 +6,14 @@ import 'package:test_sa/controllers/notification/notification_manger.dart';
import 'package:test_sa/controllers/providers/api/user_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/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/system_notification_model.dart';
import 'package:test_sa/new_views/pages/land_page/land_page.dart'; import 'package:test_sa/new_views/pages/land_page/land_page.dart';
import 'package:test_sa/new_views/pages/login_page.dart'; import 'package:test_sa/new_views/pages/login_page.dart';
import '../../models/size_config.dart'; import '../../models/size_config.dart';
import '../../views/pages/user/land_page.dart' as old;
class SplashPage extends StatefulWidget { class SplashPage extends StatefulWidget {
static const String routeName = '/splash_page'; static const String routeName = '/splash_page';
const SplashPage({Key key}) : super(key: key); const SplashPage({Key key}) : super(key: key);
@override @override

@ -16,12 +16,12 @@ import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import '../../../models/device/asset_search.dart'; import '../../../models/device/asset_search.dart';
import '../../../new_views/app_style/app_color.dart'; import '../../../new_views/app_style/app_color.dart';
import '../../../new_views/common_widgets/app_lazy_loading.dart'; import '../../../new_views/common_widgets/app_lazy_loading.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/equipment/equipment_status_buttons.dart'; import '../../widgets/equipment/equipment_status_buttons.dart';
class AssetFilterScreen extends StatefulWidget { class AssetFilterScreen extends StatefulWidget {
static const String id = "asset_filter_screen"; static const String id = "asset_filter_screen";
final AssetSearch data; final AssetSearch data;
const AssetFilterScreen({Key key, this.data}) : super(key: key); const AssetFilterScreen({Key key, this.data}) : super(key: key);
@override @override
@ -33,6 +33,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
Site _site; Site _site;
Department _department; Department _department;
int initialvalue; int initialvalue;
@override @override
void initState() { void initState() {
filter = widget.data ?? AssetSearch(); filter = widget.data ?? AssetSearch();
@ -60,13 +61,14 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Text(context.translation.reset, Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)), style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).paddingAll(8).onPress(() { ).paddingAll(8).onPress(() {
setState(() { setState(() {
_department = null; _department = null;
_site = null; _site = null;
initialvalue=null; initialvalue = null;
}); });
}), }),
], ],
@ -80,11 +82,13 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
/// todo : TBD /// todo : TBD
EquipmentStatusButtons(onSelect: (value) { EquipmentStatusButtons(
if (value == null) { onSelect: (value) {
/// the selected value is [All Assets] if (value == null) {
} /// the selected value is [All Assets]
}, initialvalue: initialvalue, }
},
initialvalue: initialvalue,
), ),
16.height, 16.height,
SingleItemDropDownMenu<Department, DepartmentProvider>( SingleItemDropDownMenu<Department, DepartmentProvider>(

@ -15,6 +15,7 @@ import '../../../new_views/common_widgets/default_app_bar.dart';
class AssetSearchScreen extends StatefulWidget { class AssetSearchScreen extends StatefulWidget {
static const String id = "asset_search_screen"; static const String id = "asset_search_screen";
final AssetSearch data; final AssetSearch data;
const AssetSearchScreen({Key key, this.data}) : super(key: key); const AssetSearchScreen({Key key, this.data}) : super(key: key);
@override @override

@ -4,13 +4,10 @@ import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/user_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/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/device_trancfer/device_transfer_list.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_list.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../../../new_views/common_widgets/default_app_bar.dart'; import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/buttons/app_icon_button.dart';
class TrackDeviceTransferPage extends StatefulWidget { class TrackDeviceTransferPage extends StatefulWidget {
static const String id = "/track-device-transfer"; static const String id = "/track-device-transfer";

@ -2,12 +2,10 @@ import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/http_status_manger.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/user_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/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/controllers/validator/validator.dart'; import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
import 'package:test_sa/new_views/pages/land_page/land_page.dart'; import 'package:test_sa/new_views/pages/land_page/land_page.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';

@ -2,13 +2,11 @@ import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/http_status_manger.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/user_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/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/controllers/validator/validator.dart'; import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart';

@ -1,5 +1,3 @@
import 'dart:convert';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'package:flare_flutter/flare_actor.dart'; import 'package:flare_flutter/flare_actor.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -7,15 +5,14 @@ import 'package:provider/provider.dart';
import 'package:test_sa/controllers/notification/notification_manger.dart'; import 'package:test_sa/controllers/notification/notification_manger.dart';
import 'package:test_sa/controllers/providers/api/user_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/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/system_notification_model.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
import 'package:test_sa/new_views/pages/land_page/land_page.dart'; import 'package:test_sa/new_views/pages/land_page/land_page.dart';
import 'login.dart'; import 'login.dart';
class SplashScreen extends StatefulWidget { class SplashScreen extends StatefulWidget {
static const String id = '/splash'; static const String id = '/splash';
const SplashScreen({Key key}) : super(key: key); const SplashScreen({Key key}) : super(key: key);
@override @override

@ -9,6 +9,7 @@ import '../../../providers/work_order/vendor_provider.dart';
class AutoGeneratedVendorName extends StatefulWidget { class AutoGeneratedVendorName extends StatefulWidget {
final String initialValue; final String initialValue;
final Function(SupplierDetails) onSearch; final Function(SupplierDetails) onSearch;
const AutoGeneratedVendorName({Key key, this.initialValue, this.onSearch}) : super(key: key); const AutoGeneratedVendorName({Key key, this.initialValue, this.onSearch}) : super(key: key);
@override @override

@ -36,7 +36,6 @@ import '../../../new_views/common_widgets/single_item_drop_down_menu.dart';
import '../../../providers/loading_list_notifier.dart'; import '../../../providers/loading_list_notifier.dart';
import '../../../providers/work_order/reason_provider.dart'; import '../../../providers/work_order/reason_provider.dart';
import '../../widgets/date_and_time/date_picker.dart'; import '../../widgets/date_and_time/date_picker.dart';
import '../../widgets/e_signature/e_signature.dart';
import '../../widgets/loaders/loading_manager.dart'; import '../../widgets/loaders/loading_manager.dart';
import '../../widgets/status/report/service_report_assistant_employee_menu.dart'; import '../../widgets/status/report/service_report_assistant_employee_menu.dart';
import '../../widgets/status/report/service_report_fault_description.dart'; import '../../widgets/status/report/service_report_fault_description.dart';
@ -63,8 +62,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
bool _showVendorFields = false; bool _showVendorFields = false;
SuppEngineerWorkOrders engineer; SuppEngineerWorkOrders engineer;
SupplierDetails initialSupplier; SupplierDetails initialSupplier;
final TextEditingController _workPreformedController = final TextEditingController _workPreformedController = TextEditingController();
TextEditingController();
@override @override
void initState() { void initState() {
@ -75,16 +73,11 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
supplier: null, supplier: null,
parentWOId: widget.workOrder.id, parentWOId: widget.workOrder.id,
); );
_serviceReport = ServiceReport( _serviceReport = ServiceReport(id: widget.workOrder.id, assetType: widget.workOrder.assetType, equipmentStatus: widget.workOrder.equipmentStatus);
id: widget.workOrder.id,
assetType: widget.workOrder.assetType,
equipmentStatus: widget.workOrder.equipmentStatus);
_isLoading = true; _isLoading = true;
super.initState(); super.initState();
if (context.mounted) { if (context.mounted) {
Provider.of<ServiceReportAssistantsEmployeeProvider>(context, Provider.of<ServiceReportAssistantsEmployeeProvider>(context, listen: false).reset();
listen: false)
.reset();
} }
} }
@ -93,18 +86,12 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
Future getAssetType() async { Future getAssetType() async {
Provider.of<ServiceReportLastCallsProvider>(context, listen: false).reset(); Provider.of<ServiceReportLastCallsProvider>(context, listen: false).reset();
final serviceRequestProvider = final serviceRequestProvider = Provider.of<ServiceRequestsProvider>(context);
Provider.of<ServiceRequestsProvider>(context); Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false).reset();
Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false) assetTypesProvider = Provider.of<ServiceStatusProvider>(context, listen: false);
.reset(); _callRequestForWorkOrder = await serviceRequestProvider.getCallRequestForWorkOrder(callId: widget.workOrder.callRequest.id.toString());
assetTypesProvider =
Provider.of<ServiceStatusProvider>(context, listen: false);
_callRequestForWorkOrder =
await serviceRequestProvider.getCallRequestForWorkOrder(
callId: widget.workOrder.callRequest.id.toString());
if (_subWorkOrders?.parentWOId != null) { if (_subWorkOrders?.parentWOId != null) {
final subWoDetails = await serviceRequestProvider.getSubWorkOrderDetails( final subWoDetails = await serviceRequestProvider.getSubWorkOrderDetails(parentId: _subWorkOrders?.parentWOId.toString());
parentId: _subWorkOrders?.parentWOId.toString());
_subWorkOrders.copyDetails(subWoDetails); _subWorkOrders.copyDetails(subWoDetails);
_serviceReport.equipmentStatus = subWoDetails.equipmentStatus; _serviceReport.equipmentStatus = subWoDetails.equipmentStatus;
_serviceReport.reason = subWoDetails.reason; _serviceReport.reason = subWoDetails.reason;
@ -121,8 +108,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
engineer = _subWorkOrders.suppEngineerWorkOrders?.last; engineer = _subWorkOrders.suppEngineerWorkOrders?.last;
engineer?.id = engineer?.supplierContactId; engineer?.id = engineer?.supplierContactId;
} }
_subWorkOrders.supplier ??= _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id);
SupplierDetails(id: _subWorkOrders?.supplier?.id);
} }
setState(() { setState(() {
_isLoading = false; _isLoading = false;
@ -158,15 +144,10 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
(widget.workOrder?.callRequest?.asset?.site (widget.workOrder?.callRequest?.asset?.site?.name ?? "").heading5(context),
?.name ??
"")
.heading5(context),
8.height, 8.height,
"${context.translation.assetNo}: ${widget.workOrder?.callRequest?.asset?.assetNumber ?? ""}" "${context.translation.assetNo}: ${widget.workOrder?.callRequest?.asset?.assetNumber ?? ""}".bodyText(context),
.bodyText(context), "${context.translation.callId}: ${widget.workOrder?.callRequest?.id}".bodyText(context),
"${context.translation.callId}: ${widget.workOrder?.callRequest?.id}"
.bodyText(context),
], ],
).paddingAll(16), ).paddingAll(16),
), ),
@ -174,11 +155,9 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
8.height, 8.height,
ADatePicker( ADatePicker(
label: context.translation.returnToService, label: context.translation.returnToService,
date: DateTime.tryParse( date: DateTime.tryParse(_subWorkOrders.visitDate ?? ""),
_subWorkOrders.visitDate ?? ""),
onDatePicker: (date) { onDatePicker: (date) {
_subWorkOrders.visitDate = _subWorkOrders.visitDate = date?.toIso8601String();
date?.toIso8601String();
setState(() {}); setState(() {});
}, },
), ),
@ -195,24 +174,19 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
8.height, 8.height,
LoadingManager( LoadingManager(
isLoading: assetTypesProvider.isLoading, isLoading: assetTypesProvider.isLoading,
isFailedLoading: isFailedLoading: assetTypesProvider.statuses == null,
assetTypesProvider.statuses == null,
stateCode: assetTypesProvider.stateCode, stateCode: assetTypesProvider.stateCode,
onRefresh: () async { onRefresh: () async {
assetTypesProvider.reset(); assetTypesProvider.reset();
await assetTypesProvider.getTypes(); await assetTypesProvider.getTypes();
_serviceReport?.assetType = _serviceReport?.assetType = assetTypesProvider.statuses?.firstWhere(
assetTypesProvider.statuses?.firstWhere( (element) => element.value == _serviceReport.callRequest.assetType,
(element) =>
element.value ==
_serviceReport.callRequest.assetType,
orElse: () => null, orElse: () => null,
); );
}, },
child: AppTextFormField( child: AppTextFormField(
labelText: context.translation.assetType, labelText: context.translation.assetType,
initialValue: initialValue: _serviceReport?.assetType?.name ?? "NULL",
_serviceReport?.assetType?.name ?? "NULL",
textAlign: TextAlign.center, textAlign: TextAlign.center,
enable: false, enable: false,
style: Theme.of(context).textTheme.titleMedium, style: Theme.of(context).textTheme.titleMedium,
@ -228,8 +202,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
}, },
), ),
8.height, 8.height,
SingleItemDropDownMenu<Lookup, SingleItemDropDownMenu<Lookup, EquipmentStatusProvider>(
EquipmentStatusProvider>(
context: context, context: context,
title: context.translation.equipmentStatus, title: context.translation.equipmentStatus,
initialValue: _subWorkOrders.equipmentStatus, initialValue: _subWorkOrders.equipmentStatus,
@ -245,15 +218,12 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
onSelect: (status) { onSelect: (status) {
_serviceReport.calllastSituation = status; _serviceReport.calllastSituation = status;
if (checkVendorFieldsVisibility(status)) { if (checkVendorFieldsVisibility(status)) {
_subWorkOrders.supplier ??= SupplierDetails( _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id);
id: _subWorkOrders?.supplier?.id);
engineer = null; engineer = null;
} else { } else {
_subWorkOrders.supplier = initialSupplier; _subWorkOrders.supplier = initialSupplier;
} }
if (status?.value == 12 || if (status?.value == 12 || _subWorkOrders.calllastSituation?.value == 12) {
_subWorkOrders.calllastSituation?.value ==
12) {
_subWorkOrders.calllastSituation = status; _subWorkOrders.calllastSituation = status;
_subWorkOrders.mrNumber = null; _subWorkOrders.mrNumber = null;
} else { } else {
@ -262,8 +232,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
setState(() {}); setState(() {});
}, },
), ),
if (_subWorkOrders.calllastSituation?.value == 12) if (_subWorkOrders.calllastSituation?.value == 12) const SizedBox(height: 8),
const SizedBox(height: 8),
if (_subWorkOrders.calllastSituation?.value == 12) if (_subWorkOrders.calllastSituation?.value == 12)
AppTextFormField( AppTextFormField(
labelText: context.translation.mrNumber, labelText: context.translation.mrNumber,
@ -274,30 +243,24 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
), ),
if (_showVendorFields) const SizedBox(height: 8), if (_showVendorFields) const SizedBox(height: 8),
if (_showVendorFields) if (_showVendorFields)
SingleItemDropDownMenu<SupplierDetails, SingleItemDropDownMenu<SupplierDetails, VendorProvider>(
VendorProvider>(
context: context, context: context,
title: context.translation.vendorEng, title: context.translation.vendorEng,
initialValue: _subWorkOrders.supplier, initialValue: _subWorkOrders.supplier,
onSelect: (supplier) { onSelect: (supplier) {
if (supplier != null) { if (supplier != null) {
_subWorkOrders.supplier = supplier; _subWorkOrders.supplier = supplier;
log(_subWorkOrders.supplier?.suppPersons log(_subWorkOrders.supplier?.suppPersons?.map((e) => e.personName)?.toString());
?.map((e) => e.personName)
?.toString());
setState(() {}); setState(() {});
} }
}, },
), ),
if (_showVendorFields) const SizedBox(height: 8), if (_showVendorFields) const SizedBox(height: 8),
if (_showVendorFields) if (_showVendorFields)
SingleItemDropDownMenu<SuppPersons, SingleItemDropDownMenu<SuppPersons, NullableLoadingProvider>(
NullableLoadingProvider>(
context: context, context: context,
title: context.translation.vendorName, title: context.translation.vendorName,
enabled: _subWorkOrders enabled: _subWorkOrders.supplier?.suppPersons?.isNotEmpty ?? false,
.supplier?.suppPersons?.isNotEmpty ??
false,
staticData: _subWorkOrders.supplier.suppPersons, staticData: _subWorkOrders.supplier.suppPersons,
onSelect: (suppPerson) { onSelect: (suppPerson) {
if (suppPerson != null) { if (suppPerson != null) {
@ -306,8 +269,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
supplierContactId: suppPerson?.id, supplierContactId: suppPerson?.id,
personName: suppPerson?.personName, personName: suppPerson?.personName,
contact: suppPerson?.contact, contact: suppPerson?.contact,
externalEngCode: externalEngCode: suppPerson?.externalEngCode,
suppPerson?.externalEngCode,
email: suppPerson?.email, email: suppPerson?.email,
); );
} }
@ -319,15 +281,13 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
initialValue: _serviceReport.faultDescription, initialValue: _serviceReport.faultDescription,
onSelect: (status) { onSelect: (status) {
_serviceReport.faultDescription = status; _serviceReport.faultDescription = status;
_workPreformedController?.text = _serviceReport _workPreformedController?.text = _serviceReport.faultDescription?.workPerformed;
.faultDescription?.workPerformed;
}, },
), ),
8.height, 8.height,
AppTextFormField( AppTextFormField(
labelText: context.translation.solution, labelText: context.translation.solution,
initialValue: initialValue: _serviceReport?.faultDescription?.workPerformed,
_serviceReport?.faultDescription?.workPerformed,
textAlign: TextAlign.center, textAlign: TextAlign.center,
enable: false, enable: false,
controller: _workPreformedController, controller: _workPreformedController,
@ -336,36 +296,20 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
ServiceReportAssistantEmployeeMenu( ServiceReportAssistantEmployeeMenu(
title: context.translation.assignAssistant, title: context.translation.assignAssistant,
assetId: widget.workOrder?.callRequest?.asset?.id, assetId: widget.workOrder?.callRequest?.asset?.id,
initialValue: (_subWorkOrders initialValue: (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) ? _subWorkOrders.assistantEmployees?.first : null,
.assistantEmployees?.isNotEmpty ??
false)
? _subWorkOrders.assistantEmployees?.first
: null,
onSelect: (employee) { onSelect: (employee) {
_subWorkOrders.assistantEmployees = [ _subWorkOrders.assistantEmployees = [employee.copyWith(id: 0)];
employee.copyWith(id: 0)
];
}, },
), ),
8.height, 8.height,
SingleItemDropDownMenu<SparePart, SingleItemDropDownMenu<SparePart, NullableLoadingProvider>(
NullableLoadingProvider>(
context: context, context: context,
title: context.translation.partNo, title: context.translation.partNo,
staticData: _subWorkOrders.sparePartsWorkOrders staticData: _subWorkOrders.sparePartsWorkOrders.map((e) => e.sparePart).toList(),
.map((e) => e.sparePart) initialValue: (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) ? _subWorkOrders.sparePartsWorkOrders.first.sparePart : null,
.toList(),
initialValue: (_subWorkOrders
.sparePartsWorkOrders?.isNotEmpty ??
false)
? _subWorkOrders
.sparePartsWorkOrders.first.sparePart
: null,
onSelect: (part) { onSelect: (part) {
_subWorkOrders.sparePartsWorkOrders.clear(); _subWorkOrders.sparePartsWorkOrders.clear();
_subWorkOrders.sparePartsWorkOrders.add( _subWorkOrders.sparePartsWorkOrders.add(SparePartsWorkOrders(id: 0, sparePart: part, qty: 0));
SparePartsWorkOrders(
id: 0, sparePart: part, qty: 0));
setState(() {}); setState(() {});
}, },
), ),
@ -373,20 +317,11 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
AppTextFormField( AppTextFormField(
labelText: context.translation.quantity, labelText: context.translation.quantity,
textInputType: TextInputType.number, textInputType: TextInputType.number,
enable: _subWorkOrders enable: _subWorkOrders?.sparePartsWorkOrders?.isNotEmpty,
?.sparePartsWorkOrders?.isNotEmpty, initialValue: (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) ? _subWorkOrders.sparePartsWorkOrders.first.qty?.toString() : null,
initialValue: (_subWorkOrders
.sparePartsWorkOrders?.isNotEmpty ??
false)
? _subWorkOrders.sparePartsWorkOrders.first.qty
?.toString()
: null,
onSaved: (text) { onSaved: (text) {
if (_subWorkOrders if (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) {
.sparePartsWorkOrders?.isNotEmpty ?? _subWorkOrders.sparePartsWorkOrders.first.qty = num.tryParse(text ?? "");
false) {
_subWorkOrders.sparePartsWorkOrders.first.qty =
num.tryParse(text ?? "");
} }
}, },
), ),
@ -399,9 +334,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
}, },
), ),
8.height, 8.height,
MultiFilesPicker( MultiFilesPicker(label: context.translation.attachImage, files: _files),
label: context.translation.attachImage,
files: _files),
AppTextFormField( AppTextFormField(
labelText: context.translation.travelingExpense, labelText: context.translation.travelingExpense,
initialValue: _serviceReport?.travelingExpenses?.toString(), initialValue: _serviceReport?.travelingExpenses?.toString(),
@ -438,47 +371,29 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
onPressed: () async { onPressed: () async {
setState(() {}); setState(() {});
_subWorkOrders.suppEngineerWorkOrders ?? []; _subWorkOrders.suppEngineerWorkOrders ?? [];
if (engineer != null) if (engineer != null) _subWorkOrders.suppEngineerWorkOrders.add(engineer..id = 0);
_subWorkOrders.suppEngineerWorkOrders
.add(engineer..id = 0);
if (await validate()) { if (await validate()) {
_subWorkOrders.attachmentsWorkOrder ??= []; _subWorkOrders.attachmentsWorkOrder ??= [];
for (var file in _files) { for (var file in _files) {
_subWorkOrders.attachmentsWorkOrder.add(Attachment( _subWorkOrders.attachmentsWorkOrder.add(Attachment(id: 0, name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
id: 0,
name:
"${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
} }
if (_formKey.currentState?.validate() ?? false) {} if (_formKey.currentState?.validate() ?? false) {}
_formKey.currentState?.save(); _formKey.currentState?.save();
final serviceRequestsProvider = final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
Provider.of<ServiceRequestsProvider>(context, for (var element in (_subWorkOrders?.suppEngineerWorkOrders ?? [])) {
listen: false);
for (var element
in (_subWorkOrders?.suppEngineerWorkOrders ?? [])) {
if (element != null) { if (element != null) {
element.id = 0; element.id = 0;
} }
} }
showDialog( showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
context: context, final status = await serviceRequestsProvider.createSubWorkOrder(workOrder: _subWorkOrders);
barrierDismissible: false,
builder: (context) => const AppLazyLoading());
final status = await serviceRequestsProvider
.createSubWorkOrder(workOrder: _subWorkOrders);
Navigator.of(context).pop(); Navigator.of(context).pop();
if (status >= 200 && status < 300) { if (status >= 200 && status < 300) {
Fluttertoast.showToast( Fluttertoast.showToast(msg: context.translation.successfulRequestMessage);
msg:
context.translation.successfulRequestMessage);
Navigator.of(context).pop(); Navigator.of(context).pop();
} else { } else {
String errorMessage = String errorMessage = HttpStatusManger.getStatusMessage(status: serviceRequestsProvider.stateCode, subtitle: context.translation);
HttpStatusManger.getStatusMessage( ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage)));
status: serviceRequestsProvider.stateCode,
subtitle: context.translation);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(errorMessage)));
} }
} }
}, },
@ -490,16 +405,9 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
} }
bool checkVendorFieldsVisibility(Lookup callsLastSituation) { bool checkVendorFieldsVisibility(Lookup callsLastSituation) {
bool result = bool result = (_subWorkOrders.supplier?.suppliername?.isNotEmpty ?? false) ||
(_subWorkOrders.supplier?.suppliername?.isNotEmpty ?? false) || (callsLastSituation?.name?.toLowerCase()?.contains("under repair-vendor") ?? false) ||
(callsLastSituation?.name (callsLastSituation?.name?.toLowerCase()?.contains("waiting for vendor") ?? false);
?.toLowerCase()
?.contains("under repair-vendor") ??
false) ||
(callsLastSituation?.name
?.toLowerCase()
?.contains("waiting for vendor") ??
false);
setState(() { setState(() {
_showVendorFields = result; _showVendorFields = result;
}); });
@ -508,39 +416,22 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
Future<bool> validate() async { Future<bool> validate() async {
if (_subWorkOrders.reason == null) { if (_subWorkOrders.reason == null) {
Fluttertoast.showToast( Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.reason}");
msg:
"${context.translation.youHaveToSelect} ${context.translation.reason}");
return false; return false;
} else if (_subWorkOrders.equipmentStatus == null) { } else if (_subWorkOrders.equipmentStatus == null) {
Fluttertoast.showToast( Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.equipmentStatus}");
msg:
"${context.translation.youHaveToSelect} ${context.translation.equipmentStatus}");
return false; return false;
} else if (_subWorkOrders.calllastSituation == null) { } else if (_subWorkOrders.calllastSituation == null) {
Fluttertoast.showToast( Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.callLastSituation}");
msg:
"${context.translation.youHaveToSelect} ${context.translation.callLastSituation}");
return false; return false;
} else if (_showVendorFields && } else if (_showVendorFields && _subWorkOrders.suppEngineerWorkOrders == null) {
_subWorkOrders.suppEngineerWorkOrders == null) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.vendorEng}");
Fluttertoast.showToast(
msg:
"${context.translation.youHaveToSelect} ${context.translation.vendorEng}");
return false; return false;
} else if (_showVendorFields && } else if (_showVendorFields && (_subWorkOrders.supplier.suppliername == null || _subWorkOrders.supplier.suppliername.isEmpty)) {
(_subWorkOrders.supplier.suppliername == null || Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.vendorName}");
_subWorkOrders.supplier.suppliername.isEmpty)) {
Fluttertoast.showToast(
msg:
"${context.translation.youHaveToSelect} ${context.translation.vendorName}");
return false; return false;
} else if (_subWorkOrders.calllastSituation.value == 12 && } else if (_subWorkOrders.calllastSituation.value == 12 && (_subWorkOrders.sparePartsWorkOrders == null || _subWorkOrders.sparePartsWorkOrders.isEmpty)) {
(_subWorkOrders.sparePartsWorkOrders == null || Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.partNo}");
_subWorkOrders.sparePartsWorkOrders.isEmpty)) {
Fluttertoast.showToast(
msg:
"${context.translation.youHaveToSelect} ${context.translation.partNo}");
return false; return false;
} else if (_subWorkOrders?.timer?.startAt == null) { } else if (_subWorkOrders?.timer?.startAt == null) {
await Fluttertoast.showToast(msg: "Working Hours Required"); await Fluttertoast.showToast(msg: "Working Hours Required");

@ -1,14 +1,10 @@
import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/pages/sub_workorder/workorder_item.dart'; import 'package:test_sa/views/pages/sub_workorder/workorder_item.dart';
import '../../../controllers/localization/localization.dart';
import '../../../controllers/providers/api/service_requests_provider.dart'; import '../../../controllers/providers/api/service_requests_provider.dart';
import '../../../models/service_request/search_work_order.dart'; import '../../../models/service_request/search_work_order.dart';
import '../../../models/subtitle.dart';
import '../../app_style/colors.dart'; import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart'; import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/lazy_loading.dart'; import '../../widgets/loaders/lazy_loading.dart';

@ -1,9 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:test_sa/views/pages/sub_workorder/workorder_details.dart'; import 'package:test_sa/views/pages/sub_workorder/workorder_details.dart';
import '../../../controllers/localization/localization.dart';
import '../../../models/service_request/search_work_order.dart'; import '../../../models/service_request/search_work_order.dart';
import '../../../models/subtitle.dart';
import '../../app_style/colors.dart'; import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart'; import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/loading_manager.dart'; import '../../widgets/loaders/loading_manager.dart';
@ -24,7 +22,6 @@ class _WorkOrderUpdateState extends State<WorkOrderUpdate> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: SafeArea( body: SafeArea(
child: Form( child: Form(

@ -117,7 +117,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
if (_userProvider.user.type == UsersTypes.engineer && (gasRefillModel.status?.value ?? 0) != 2) if (_userProvider.user.type == UsersTypes.engineer && (gasRefillModel.status?.value ?? 0) != 2)
"edit".toSvgAsset(height: 48,width: 48).onPress( "edit".toSvgAsset(height: 48, width: 48).onPress(
() async { () async {
_model?.fromGasRefillModel(gasRefillModel); _model?.fromGasRefillModel(gasRefillModel);
// setState(() {}); // setState(() {});

@ -1,5 +1,4 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -44,7 +43,6 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
Uint8List _engineerSignature; Uint8List _engineerSignature;
Uint8List _nurseSignature; Uint8List _nurseSignature;
UserProvider _userProvider; UserProvider _userProvider;
SettingProvider _settingProvider; SettingProvider _settingProvider;
GasRefillProvider _gasRefillProvider; GasRefillProvider _gasRefillProvider;
@ -133,7 +131,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
setState(() {}); setState(() {});
return false; return false;
} }
_formModel.gazRefillDetails[0].deliverdQty = _currentDetails.deliverdQty; _formModel.gazRefillDetails[0].deliverdQty = _currentDetails.deliverdQty;
_validate = false; _validate = false;
// Scrollable.ensureVisible(_DetailsKey.currentContext); // Scrollable.ensureVisible(_DetailsKey.currentContext);
_deliveredQuantityController.clear(); _deliveredQuantityController.clear();
@ -262,7 +260,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
_engineerSignature = signature; _engineerSignature = signature;
if (signature == null || signature.isEmpty) return; if (signature == null || signature.isEmpty) return;
_formModel.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; _formModel.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
base64Encode(signature); base64Encode(signature);
}, },
), ),
8.height, 8.height,
@ -273,8 +271,8 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
onSaved: (signature) { onSaved: (signature) {
_nurseSignature = signature; _nurseSignature = signature;
if (signature == null || signature.isEmpty) return; if (signature == null || signature.isEmpty) return;
_formModel.nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; _formModel.nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
base64Encode(signature); base64Encode(signature);
}, },
), ),
], ],

@ -4,8 +4,6 @@ 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/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/widgets/gas_refill/gas_refill_list.dart'; import 'package:test_sa/views/widgets/gas_refill/gas_refill_list.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';

@ -3,27 +3,18 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:package_info/package_info.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:share/share.dart';
import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; import 'package:test_sa/controllers/notification/firebase_notification_manger.dart';
import 'package:test_sa/controllers/providers/api/user_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/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart'; import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart';
import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart'; import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart';
import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart'; import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart';
import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart'; import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/buttons/app_icon_button.dart';
import 'package:test_sa/views/widgets/dialogs/dialog.dart'; import 'package:test_sa/views/widgets/dialogs/dialog.dart';
import 'package:test_sa/views/widgets/drawer/drawer_item.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../../models/enums/user_types.dart'; import '../../../models/enums/user_types.dart';
import '../../widgets/land_page/land_page_item.dart'; import '../../widgets/land_page/land_page_item.dart';
@ -45,10 +36,12 @@ class _LandPageState extends State<LandPage> {
double _width; double _width;
UserProvider _userProvider; UserProvider _userProvider;
SettingProvider _settingProvider; SettingProvider _settingProvider;
// DepartmentsProvider _departmentsProvider; // DepartmentsProvider _departmentsProvider;
// DevicesProvider _devicesProvider; // DevicesProvider _devicesProvider;
double _buttonHeight; double _buttonHeight;
bool firstTime = true; bool firstTime = true;
// ServiceRequestsProvider _serviceRequestsProvider; // ServiceRequestsProvider _serviceRequestsProvider;
// PreventiveMaintenanceVisitsProvider _preventiveMaintenanceVisitsProvider; // PreventiveMaintenanceVisitsProvider _preventiveMaintenanceVisitsProvider;
// RegularVisitsProvider _regularVisitsProvider; // RegularVisitsProvider _regularVisitsProvider;
@ -88,7 +81,7 @@ class _LandPageState extends State<LandPage> {
onWillPop: () async { onWillPop: () async {
bool result = await showDialog( bool result = await showDialog(
context: context, context: context,
builder: (_) => AAlertDialog( builder: (_) => AAlertDialog(
// title: _subtitle.exit, // title: _subtitle.exit,
title: context.translation.exit, title: context.translation.exit,
// content: _subtitle.exitAlert, // content: _subtitle.exitAlert,

@ -1,7 +1,5 @@
import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:image_cropper/image_cropper.dart'; import 'package:image_cropper/image_cropper.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
@ -14,7 +12,6 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../../../new_views/app_style/app_color.dart'; import '../../../new_views/app_style/app_color.dart';
@ -71,11 +68,11 @@ class _ProfilePageState extends State<ProfilePage> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(1), // Border radius padding: const EdgeInsets.all(1), // Border radius
child: ClipOval( child: ClipOval(
child: snapshot.profileImage != null child: snapshot.profileImage != null
? Image.file(snapshot.profileImage) ? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false) : (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName) ? Image.network(snapshot.user.profilePhotoName)
: const Icon( : const Icon(
Icons.person, Icons.person,
size: 50, size: 50,
color: Colors.white, color: Colors.white,

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/user_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/controllers/providers/settings/setting_provider.dart';
@ -9,7 +8,6 @@ import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/issue.dart'; import 'package:test_sa/models/issue.dart';
import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart';

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save