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

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

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

@ -35,6 +35,7 @@ class AllRequestsProvider extends ChangeNotifier {
getInProgressRequests();
getCompletedRequests();
}
Future<int> getAllRequests(BuildContext context, {int typeTransaction, SearchAllRequestsModel search}) async {
if (isAllLoading == true) return -2;
isAllLoading = true;
@ -261,33 +262,33 @@ class AllRequestsProvider extends ChangeNotifier {
}
}
// Future<int> getCloseRequests() async {
// if (isCloseLoading == true) return -2;
// isCloseLoading = true;
// if (closeRequests == null) notifyListeners();
// Response response;
// try {
// Map<String, dynamic> body = {
// "typeTransaction": [1, 2, 3, 4],
// "statusTransaction": [4],
// "priority": [],
// "displayData": []
// };
// response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
//
// stateCode = response.statusCode;
// if (response.statusCode >= 200 && response.statusCode < 300) {
// closeRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
// notifyListeners();
// }
// isCloseLoading = false;
// notifyListeners();
// return response.statusCode;
// } catch (error) {
// isCloseLoading = false;
// stateCode = -1;
// notifyListeners();
// return -1;
// }
// }
// Future<int> getCloseRequests() async {
// if (isCloseLoading == true) return -2;
// isCloseLoading = true;
// if (closeRequests == null) notifyListeners();
// Response response;
// try {
// Map<String, dynamic> body = {
// "typeTransaction": [1, 2, 3, 4],
// "statusTransaction": [4],
// "priority": [],
// "displayData": []
// };
// response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
//
// stateCode = response.statusCode;
// if (response.statusCode >= 200 && response.statusCode < 300) {
// closeRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
// notifyListeners();
// }
// isCloseLoading = false;
// notifyListeners();
// return response.statusCode;
// } catch (error) {
// isCloseLoading = false;
// stateCode = -1;
// notifyListeners();
// 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/models/hospital.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 '../../../new_views/common_widgets/app_lazy_loading.dart';
@ -198,5 +197,5 @@ class GasRefillProvider extends ChangeNotifier {
Floors floor;
Departments department;
DateTime expectedDateTime;
//TimerModel timer;
//TimerModel timer;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -1,9 +1,9 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:provider/provider.dart';
import '../controllers/providers/settings/setting_provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
extension BuildContextExtension on BuildContext {
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];
bool get isDark => Provider.of<SettingProvider>(this).theme == "dark";
bool get isAr => Provider.of<SettingProvider>(this).language == "ar";
}

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

@ -135,7 +135,7 @@ class AssetByIdModel {
id = json['id'];
print("supplier:${json['supplier']}");
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'];
macAddress = json['macAddress'];
portNumber = json['portNumber'];

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -4,6 +4,7 @@ import 'package:test_sa/new_views/app_style/app_text_style.dart';
class AppThemes {
AppThemes._();
static ThemeData lightTheme = ThemeData.light().copyWith(
textTheme: ThemeData.light().textTheme.apply(fontFamily: AppTextStyle.fontFamily),
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/widget_extensions.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/pages/user/notifications/notifications_page.dart';
@ -41,10 +40,10 @@ class AppDrawer extends StatelessWidget {
padding: const EdgeInsets.all(1), // Border radius
child: ClipOval(
child: snapshot.profileImage != null
? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName)
: const Icon(
? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName)
: const Icon(
Icons.person,
size: 50,
color: Colors.white,
@ -96,7 +95,7 @@ class AppDrawer extends StatelessWidget {
userProvider.reset();
Navigator.of(context).pop();
Navigator.of(context).pop();
// Navigator.of(context).pop();
// Navigator.of(context).pop();
}
}),
18.height,

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

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

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

@ -42,21 +42,21 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
context.translation.myShift.heading5(context),
8.height,
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),
).paddingOnly(start: 16, end: 16),
16.height,
Container(
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(
controller: _tabController,
padding: EdgeInsets.zero,
labelColor: AppColor.neutral60,
unselectedLabelColor: AppColor.neutral20,
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) {
setState(() {});
},

@ -10,6 +10,7 @@ import '../../../app_style/app_color.dart';
class CalendarHeader extends StatelessWidget {
final DateTime dateTime;
final DateFormat dateFormat;
const CalendarHeader({@required this.dateTime, @required this.dateFormat, Key key}) : super(key: key);
@override
@ -20,9 +21,9 @@ class CalendarHeader extends StatelessWidget {
children: [
dateFormat.format(dateTime).heading5(context),
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(),
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,

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

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

@ -33,9 +33,8 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
_initialDate = DateTime.now();
_firstDate = DateTime.utc(2010, 10, 16);
_lastDate = DateTime.utc(2030, 3, 14);
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests(
from: DateTime.now().subtract(Duration(days: DateTime.now().weekday)),
to: DateTime.now().add(Duration(days: DateTime.daysPerWeek - DateTime.now().weekday -1)));
Provider.of<AllRequestsProvider>(context, listen: false)
.getCalenderRequests(from: DateTime.now().subtract(Duration(days: DateTime.now().weekday)), to: DateTime.now().add(Duration(days: DateTime.daysPerWeek - DateTime.now().weekday - 1)));
}
@override
@ -61,7 +60,8 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
onPageChanged: (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(
headerTitleBuilder: (context, dateTime) => Column(
@ -74,7 +74,7 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
),
dowBuilder: (context, dateTime) {
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, _) {
final day = DateFormat("d").format(dateTime);

@ -1,18 +1,12 @@
import 'package:flutter/material.dart';
import 'package:pie_chart/pie_chart.dart';
import 'package:provider/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/int_extensions.dart';
import 'package:test_sa/extensions/text_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/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/views/app_style/colors.dart';

@ -50,7 +50,9 @@ class RequestsFragment extends StatelessWidget {
).expanded,
Text(
"$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),
8.height,
Row(

@ -6,6 +6,7 @@ import '../../app_style/app_color.dart';
class HomeAppBar extends StatelessWidget implements PreferredSizeWidget {
final GlobalKey<ScaffoldState> scaffoldKey;
const HomeAppBar({Key key, this.scaffoldKey}) : super(key: key);
@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 '../../../app_style/app_color.dart';
import '../../../common_widgets/app_lazy_loading.dart';
import '../../../common_widgets/default_app_bar.dart';
class AllRequestsFilterPage extends StatefulWidget {
static const String id = "all_requests_filter_page";
final SearchAllRequestsModel data;
const AllRequestsFilterPage({Key key, this.data}) : super(key: key);
@override
@ -25,6 +25,7 @@ class AllRequestsFilterPage extends StatefulWidget {
class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
SearchAllRequestsModel search;
@override
void initState() {
search = widget.data;
@ -75,13 +76,14 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(context.translation.reset,
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).paddingAll(8).onPress(() {
setState(() {
search.statuses.clear();
search.typeTransaction.clear();
search.startDate=null;
search.startDate = null;
search.endDate = null;
});
}),

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

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

@ -1,20 +1,15 @@
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/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_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/device/asset.dart';
import 'package:test_sa/models/device/asset_transfer.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/widgets/requests/request_status.dart';
import '../../../../models/device/asset_transfer.dart';
import '../../../../views/pages/device_transfer/device_transfer_details.dart';
class AssetItemView extends StatelessWidget {
final RequestsDetails request;
final bool showShadow;
@ -30,8 +25,8 @@ class AssetItemView extends StatelessWidget {
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if(request.priority != null)
StatusLabel(label: request.priority??"", textColor: AColors.getRequestStatusTextColorByName(request.priority), backgroundColor: AColors.getRequestStatusColorByName(request.priority)),
if (request.priority != null)
StatusLabel(label: request.priority ?? "", textColor: AColors.getRequestStatusTextColorByName(request.priority), backgroundColor: AColors.getRequestStatusColorByName(request.priority)),
8.width,
//if(request.status != null)
// 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))));
});
}

@ -1,12 +1,10 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_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/enums/user_types.dart';
import 'package:test_sa/models/visits/visit.dart';
import 'package:test_sa/views/app_style/colors.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),
),
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,
context.translation.ppmRequest.heading5(context),
8.height,
'${context.translation.assetNumber}: ${request.assetName}'.bodyText(context),
'${context.translation.assetSN}: ${request.assetNo}'.bodyText(context),
'${context.translation.code}: ${request.code}'.bodyText(context),
'${context.translation.assetNumber}: ${request.assetName}'.bodyText(context),
'${context.translation.assetSN}: ${request.assetNo}'.bodyText(context),
'${context.translation.code}: ${request.code}'.bodyText(context),
16.height,
Row(
mainAxisSize: MainAxisSize.min,

@ -30,15 +30,15 @@ class ServiceRequestItemView extends StatelessWidget {
8.width,
StatusLabel(label: request.status, textColor: AColors.getRequestStatusTextColorByName(request.status), backgroundColor: AColors.getRequestStatusColorByName(request.status)),
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,
context.translation.serviceRequest.heading5(context),
'${context.translation.assetName}: ${request.assetName}'.bodyText(context),
'${context.translation.assetNumber}: ${request.assetNo}'.bodyText(context),
'${context.translation.requestType}: ${request.requestType}'.bodyText(context),
'${context.translation.requestNo}: ${request.requestNo}'.bodyText(context),
'${context.translation.assetName}: ${request.assetName}'.bodyText(context),
'${context.translation.assetNumber}: ${request.assetNo}'.bodyText(context),
'${context.translation.requestType}: ${request.requestType}'.bodyText(context),
'${context.translation.requestNo}: ${request.requestNo}'.bodyText(context),
8.height,
Row(
mainAxisSize: MainAxisSize.min,

@ -12,7 +12,6 @@ import '../../controllers/providers/api/user_provider.dart';
import '../../controllers/providers/settings/setting_provider.dart';
import '../../controllers/validator/validator.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_text_form_field.dart';

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

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

@ -1,5 +1,3 @@
import 'dart:convert';
import 'package:firebase_core/firebase_core.dart';
import 'package:flare_flutter/flare_actor.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/settings/setting_provider.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/login_page.dart';
import '../../models/size_config.dart';
import '../../views/pages/user/land_page.dart' as old;
class SplashPage extends StatefulWidget {
static const String routeName = '/splash_page';
const SplashPage({Key key}) : super(key: key);
@override

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

@ -15,6 +15,7 @@ import '../../../new_views/common_widgets/default_app_bar.dart';
class AssetSearchScreen extends StatefulWidget {
static const String id = "asset_search_screen";
final AssetSearch data;
const AssetSearchScreen({Key key, this.data}) : super(key: key);
@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/settings/setting_provider.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/loaders/loading_manager.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/buttons/app_icon_button.dart';
class TrackDeviceTransferPage extends StatefulWidget {
static const String id = "/track-device-transfer";

@ -2,12 +2,10 @@ import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/http_status_manger.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/controllers/validator/validator.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/new_views/pages/land_page/land_page.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:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/http_status_manger.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/extensions/context_extension.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/views/widgets/app_text_form_field.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:flare_flutter/flare_actor.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/providers/api/user_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/new_views/pages/land_page/land_page.dart';
import 'login.dart';
class SplashScreen extends StatefulWidget {
static const String id = '/splash';
const SplashScreen({Key key}) : super(key: key);
@override

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

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

@ -1,14 +1,10 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/extensions/context_extension.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 '../../../models/service_request/search_work_order.dart';
import '../../../models/subtitle.dart';
import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/lazy_loading.dart';

@ -1,9 +1,7 @@
import 'package:flutter/material.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/subtitle.dart';
import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/loading_manager.dart';
@ -24,7 +22,6 @@ class _WorkOrderUpdateState extends State<WorkOrderUpdate> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Form(

@ -117,7 +117,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
crossAxisAlignment: CrossAxisAlignment.end,
children: [
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 {
_model?.fromGasRefillModel(gasRefillModel);
// setState(() {});

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

@ -3,27 +3,18 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:package_info/package_info.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/providers/api/user_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/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/views/app_style/colors.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/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/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/drawer/drawer_item.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../../models/enums/user_types.dart';
import '../../widgets/land_page/land_page_item.dart';
@ -45,10 +36,12 @@ class _LandPageState extends State<LandPage> {
double _width;
UserProvider _userProvider;
SettingProvider _settingProvider;
// DepartmentsProvider _departmentsProvider;
// DevicesProvider _devicesProvider;
double _buttonHeight;
bool firstTime = true;
// ServiceRequestsProvider _serviceRequestsProvider;
// PreventiveMaintenanceVisitsProvider _preventiveMaintenanceVisitsProvider;
// RegularVisitsProvider _regularVisitsProvider;
@ -88,7 +81,7 @@ class _LandPageState extends State<LandPage> {
onWillPop: () async {
bool result = await showDialog(
context: context,
builder: (_) => AAlertDialog(
builder: (_) => AAlertDialog(
// title: _subtitle.exit,
title: context.translation.exit,
// content: _subtitle.exitAlert,

@ -1,7 +1,5 @@
import 'dart:convert';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:image_cropper/image_cropper.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/models/user.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';
@ -71,11 +68,11 @@ class _ProfilePageState extends State<ProfilePage> {
child: Padding(
padding: const EdgeInsets.all(1), // Border radius
child: ClipOval(
child: snapshot.profileImage != null
? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName)
: const Icon(
child: snapshot.profileImage != null
? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName)
: const Icon(
Icons.person,
size: 50,
color: Colors.white,

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.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/user_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/models/issue.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/sizing.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