site contact list api added.

design_3.0_TM_Module_snagsFix
Sikander Saleem 1 month ago
parent 4d2931e335
commit 89b81391e9

@ -293,4 +293,6 @@ class URLs {
//comments //comments
static get getComments => "$_baseUrl/CallRequest/GetHistoryComments"; // get static get getComments => "$_baseUrl/CallRequest/GetHistoryComments"; // get
static get addComment => "$_baseUrl/CallRequest/AddHistoryComment"; // add static get addComment => "$_baseUrl/CallRequest/AddHistoryComment"; // add
static get getSiteContactInfo => "$_baseUrl/AssetGroupSiteContactInfo"; // add
} }

@ -11,6 +11,7 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/new_models/general_response_model.dart'; import 'package:test_sa/models/new_models/general_response_model.dart';
import 'package:test_sa/models/new_models/update_password.dart'; import 'package:test_sa/models/new_models/update_password.dart';
import 'package:test_sa/models/new_models/verify_otp_model.dart'; import 'package:test_sa/models/new_models/verify_otp_model.dart';
import 'package:test_sa/models/site_contact_info_model.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
import 'package:test_sa/new_views/swipe_module/models/swipe_model.dart'; import 'package:test_sa/new_views/swipe_module/models/swipe_model.dart';
import 'package:test_sa/new_views/swipe_module/models/swipe_transaction_history.dart'; import 'package:test_sa/new_views/swipe_module/models/swipe_transaction_history.dart';
@ -41,12 +42,15 @@ class UserProvider extends ChangeNotifier {
VerifyOtpModel _verifyOtpModel = VerifyOtpModel(); VerifyOtpModel _verifyOtpModel = VerifyOtpModel();
SwipeTransaction _swipeTransactionModel = SwipeTransaction(); SwipeTransaction _swipeTransactionModel = SwipeTransaction();
List<SwipeHistory> _swipeHistory = []; List<SwipeHistory> _swipeHistory = [];
List<SiteContactInfoModel> _siteContactList = [];
UserContactInfoModel userInfoModel = UserContactInfoModel(); UserContactInfoModel userInfoModel = UserContactInfoModel();
SwipeTransaction get swipeTransactionModel => _swipeTransactionModel; SwipeTransaction get swipeTransactionModel => _swipeTransactionModel;
List<SwipeHistory> get swipeHistory => _swipeHistory; List<SwipeHistory> get swipeHistory => _swipeHistory;
List<SiteContactInfoModel> get siteContactList => _siteContactList;
set swipeHistory(List<SwipeHistory> value) { set swipeHistory(List<SwipeHistory> value) {
_swipeHistory = value; _swipeHistory = value;
notifyListeners(); notifyListeners();
@ -57,6 +61,11 @@ class UserProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
set siteContactList(List<SiteContactInfoModel> value) {
_siteContactList = value;
notifyListeners();
}
VerifyOtpModel get verifyOtpModel => _verifyOtpModel; VerifyOtpModel get verifyOtpModel => _verifyOtpModel;
set verifyOtpModel(VerifyOtpModel value) { set verifyOtpModel(VerifyOtpModel value) {
@ -369,6 +378,21 @@ class UserProvider extends ChangeNotifier {
} }
} }
Future<int> getSiteContactInfo() async {
Response response;
try {
response = await ApiManager.instance.get(URLs.getSiteContactInfo);
if (response.statusCode >= 200 && response.statusCode < 300) {
List dataList = GeneralResponseModel.fromJson(json.decode(response.body)).data;
_siteContactList = List.generate(dataList.length, (index) => SiteContactInfoModel.fromJson(dataList[index]));
}
return response.statusCode;
} catch (error) {
_siteContactList = [];
return -1;
}
}
Future<int> getSwipeTransactionHistory({required String userId, required DateTime dateFrom, required DateTime dateTo}) async { Future<int> getSwipeTransactionHistory({required String userId, required DateTime dateFrom, required DateTime dateTo}) async {
isLoading = true; isLoading = true;
notifyListeners(); notifyListeners();

@ -202,6 +202,50 @@ class TaskData {
room = json["room"] == null ? null : Rooms.fromJson(json["room"]); room = json["room"] == null ? null : Rooms.fromJson(json["room"]);
} }
TaskData.copyWith(TaskData taskData) {
id = taskData.id;
statusValue = taskData.statusValue;
taskJobNo = taskData.taskJobNo;
userCreated = taskData.userCreated;
taskJobContactPersons = taskData.taskJobContactPersons;
taskType = taskData.taskType;
taskJobStatus = taskData.taskJobStatus;
callComment = taskData.callComment;
taskJobAttachments = taskData.taskJobAttachments;
assignedEngineer = taskData.assignedEngineer;
asset = taskData.asset;
taskJobAssistantEmployees = taskData.taskJobAssistantEmployees;
taskJobActivityEngineerTimers = taskData.taskJobActivityEngineerTimers;
taskJobHistories = taskData.taskJobHistories;
serialNo = taskData.serialNo;
installationDate = taskData.installationDate;
completedAction = taskData.completedAction;
impactStatus = taskData.impactStatus;
actionNeeded = taskData.actionNeeded;
typeOfAlert = taskData.typeOfAlert;
installationBuilding = taskData.installationBuilding;
installationDepartment = taskData.installationDepartment;
installationFloor = taskData.installationFloor;
isUserAcknowledge = taskData.isUserAcknowledge;
riskLevel = taskData.riskLevel;
resource = taskData.resource;
alertNo = taskData.alertNo;
estimationDeliveryDate = taskData.estimationDeliveryDate;
reasonOfFSCA = taskData.reasonOfFSCA;
correctiveActionDescription = taskData.correctiveActionDescription;
evaluatorUser = taskData.evaluatorUser;
site = taskData.site;
building = taskData.building;
floor = taskData.floor;
department = taskData.department;
room = taskData.room;
taskTimerModel = taskData.taskTimerModel;
totalWorkingHours = taskData.totalWorkingHours;
timerModelList = taskData.timerModelList;
taskTimePicker = taskData.taskTimePicker;
}
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{}; final Map<String, dynamic> data = <String, dynamic>{};
@ -400,7 +444,7 @@ class TaskData {
data['serialNo'] = serialNo; data['serialNo'] = serialNo;
data['installationDate'] = installationDate; data['installationDate'] = installationDate;
//this is not for recall and alert type.. //this is not for recall and alert type..
if(taskType?.isRecallAndAlert==true&&(typeOfAlert?.value==2||typeOfAlert?.value==3)){ if (taskType?.isRecallAndAlert == true && (typeOfAlert?.value == 2 || typeOfAlert?.value == 3)) {
data['completedActionId'] = actionNeeded?.id; data['completedActionId'] = actionNeeded?.id;
} }
data['impactStatusId'] = impactStatus?.id; data['impactStatusId'] = impactStatus?.id;

@ -0,0 +1,27 @@
class SiteContactInfoModel {
int? id;
int? assetGroupId;
int? siteId;
String? siteName;
String? phoneNumber;
SiteContactInfoModel({this.id, this.assetGroupId, this.siteId, this.siteName, this.phoneNumber});
SiteContactInfoModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
assetGroupId = json['assetGroupId'];
siteId = json['siteId'];
siteName = json['siteName'];
phoneNumber = json['phoneNumber'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['assetGroupId'] = this.assetGroupId;
data['siteId'] = this.siteId;
data['siteName'] = this.siteName;
data['phoneNumber'] = this.phoneNumber;
return data;
}
}

@ -201,14 +201,13 @@ class _UpdateTaskRequestState extends State<UpdateTaskRequest> {
void _updateTask({required BuildContext context, required int status}) async { void _updateTask({required BuildContext context, required int status}) async {
TaskRequestProvider taskRequestProvider = Provider.of<TaskRequestProvider>(context, listen: false); TaskRequestProvider taskRequestProvider = Provider.of<TaskRequestProvider>(context, listen: false);
TaskData? taskModel = TaskData.fromJson(taskRequestProvider.taskRequestModel!.toJson()); TaskData? taskModel = TaskData.copyWith(taskRequestProvider.taskRequestModel!);
taskModel?.statusValue = status; taskModel?.statusValue = status;
taskModel.taskTimePicker = taskRequestProvider.taskRequestModel?.taskTimePicker; // taskModel.taskTimePicker = taskRequestProvider.taskRequestModel?.taskTimePicker;
taskModel.totalWorkingHours = taskRequestProvider.taskRequestModel?.totalWorkingHours; // taskModel.totalWorkingHours = taskRequestProvider.taskRequestModel?.totalWorkingHours;
taskModel.taskTimerModel = taskRequestProvider.taskRequestModel?.taskTimerModel; // taskModel.taskTimerModel = taskRequestProvider.taskRequestModel?.taskTimerModel;
taskModel.timerModelList = taskRequestProvider.taskRequestModel?.timerModelList; // taskModel.timerModelList = taskRequestProvider.taskRequestModel?.timerModelList;
if (validate(model: taskModel)) { if (validate(model: taskModel)) {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());

@ -1,9 +1,15 @@
import 'package:clipboard/clipboard.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_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/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/site_contact_info_model.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
import '../../app_style/app_color.dart'; import '../../app_style/app_color.dart';
@ -15,8 +21,11 @@ class ContactUsBottomSheet extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
// String contactNumber = "+966 546345567"; // String contactNumber = "+966 546345567";
String contactNumber = ""; String contactNumber = "";
List<SiteContactInfoModel> sites = Provider.of<UserProvider>(context, listen: false).siteContactList;
return Container( return Container(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
height: MediaQuery.sizeOf(context).height * .5,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).scaffoldBackgroundColor, color: Theme.of(context).scaffoldBackgroundColor,
borderRadius: const BorderRadius.only( borderRadius: const BorderRadius.only(
@ -25,6 +34,7 @@ class ContactUsBottomSheet extends StatelessWidget {
), ),
), ),
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
child: SafeArea(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
@ -41,7 +51,43 @@ class ContactUsBottomSheet extends StatelessWidget {
style: AppTextStyles.heading3.copyWith(fontWeight: FontWeight.w600, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), style: AppTextStyles.heading3.copyWith(fontWeight: FontWeight.w600, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
), ),
), ),
16.height, 4.height,
if (sites.isNotEmpty)
ListView.separated(
padding: const EdgeInsets.only(top: 12, bottom: 12),
itemBuilder: (cxt, index) => Row(
children: [
8.width,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
sites[index].siteName ?? "",
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
4.height,
Text(
sites[index].phoneNumber ?? "",
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
).expanded,
IconButton(
icon: const Icon(Icons.copy_rounded),
padding: EdgeInsets.zero,
iconSize: 20,
onPressed: () {
FlutterClipboard.copy('Hello Flutter friends');
},
)
],
).toShadowContainer(context, padding: 8),
separatorBuilder: (cxt, index) => 12.height,
itemCount: sites.length)
.expanded
else
const NoDataFound().paddingOnly(top: 80).center
// Row( // Row(
// children: [ // children: [
// contactItem(context, context.isDark, "phone", context.translation.callUs, contactNumber).onPress(() { // contactItem(context, context.isDark, "phone", context.translation.callUs, contactNumber).onPress(() {
@ -55,9 +101,10 @@ class ContactUsBottomSheet extends StatelessWidget {
// }).expanded, // }).expanded,
// ], // ],
// ), // ),
32.height, // 32.height,
], ],
), ),
),
); );
} }

@ -108,6 +108,7 @@ class _LandPageState extends State<LandPage> {
if (_userProvider!.user != null && _userProvider!.user!.employeeIsHMG == false) { if (_userProvider!.user != null && _userProvider!.user!.employeeIsHMG == false) {
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
_userProvider!.getSwipeLastTransaction(userId: _userProvider!.user!.userID!); _userProvider!.getSwipeLastTransaction(userId: _userProvider!.user!.userID!);
_userProvider!.getSiteContactInfo();
Provider.of<VendorProvider>(context, listen: false).getData(); Provider.of<VendorProvider>(context, listen: false).getData();
}); });
} }

@ -1,11 +1,11 @@
class SwipeHistory { class SwipeHistory {
final int ?id; final int? id;
final String? swipeTypeName; final String? swipeTypeName;
final String? userName; final String? userName;
final String ?siteName; final String? siteName;
final String ?pointName; final String? pointName;
final String ?swipeTime; final String? swipeTime;
final bool ?isSuccess; final bool? isSuccess;
final String? errorMessage; final String? errorMessage;
SwipeHistory({ SwipeHistory({
@ -26,7 +26,7 @@ class SwipeHistory {
userName: json['userName'], userName: json['userName'],
siteName: json['siteName'], siteName: json['siteName'],
pointName: json['pointName'], pointName: json['pointName'],
swipeTime: json['swipeTime']!=null? DateTime.parse(json['swipeTime']).toIso8601String():'', swipeTime: json['swipeTime'] != null ? DateTime.parse(json['swipeTime']).toIso8601String() : '',
isSuccess: json['isSuccess'], isSuccess: json['isSuccess'],
errorMessage: json['errorMessage'], errorMessage: json['errorMessage'],
); );

@ -94,6 +94,7 @@ dependencies:
just_audio: ^0.9.30 just_audio: ^0.9.30
safe_device: ^1.2.1 safe_device: ^1.2.1
toggle_switch: ^2.3.0 toggle_switch: ^2.3.0
clipboard: ^2.0.2
local_auth_darwin: any local_auth_darwin: any
dev_dependencies: dev_dependencies:

Loading…
Cancel
Save