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
static get getComments => "$_baseUrl/CallRequest/GetHistoryComments"; // get
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/update_password.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/new_views/swipe_module/models/swipe_model.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();
SwipeTransaction _swipeTransactionModel = SwipeTransaction();
List<SwipeHistory> _swipeHistory = [];
List<SiteContactInfoModel> _siteContactList = [];
UserContactInfoModel userInfoModel = UserContactInfoModel();
SwipeTransaction get swipeTransactionModel => _swipeTransactionModel;
List<SwipeHistory> get swipeHistory => _swipeHistory;
List<SiteContactInfoModel> get siteContactList => _siteContactList;
set swipeHistory(List<SwipeHistory> value) {
_swipeHistory = value;
notifyListeners();
@ -57,6 +61,11 @@ class UserProvider extends ChangeNotifier {
notifyListeners();
}
set siteContactList(List<SiteContactInfoModel> value) {
_siteContactList = value;
notifyListeners();
}
VerifyOtpModel get verifyOtpModel => _verifyOtpModel;
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 {
isLoading = true;
notifyListeners();

@ -202,6 +202,50 @@ class TaskData {
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() {
final Map<String, dynamic> data = <String, dynamic>{};
@ -400,7 +444,7 @@ class TaskData {
data['serialNo'] = serialNo;
data['installationDate'] = installationDate;
//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['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 {
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.taskTimePicker = taskRequestProvider.taskRequestModel?.taskTimePicker;
taskModel.totalWorkingHours = taskRequestProvider.taskRequestModel?.totalWorkingHours;
taskModel.taskTimerModel = taskRequestProvider.taskRequestModel?.taskTimerModel;
taskModel.timerModelList = taskRequestProvider.taskRequestModel?.timerModelList;
// taskModel.taskTimePicker = taskRequestProvider.taskRequestModel?.taskTimePicker;
// taskModel.totalWorkingHours = taskRequestProvider.taskRequestModel?.totalWorkingHours;
// taskModel.taskTimerModel = taskRequestProvider.taskRequestModel?.taskTimerModel;
// taskModel.timerModelList = taskRequestProvider.taskRequestModel?.timerModelList;
if (validate(model: taskModel)) {
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_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/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/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 '../../app_style/app_color.dart';
@ -15,8 +21,11 @@ class ContactUsBottomSheet extends StatelessWidget {
Widget build(BuildContext context) {
// String contactNumber = "+966 546345567";
String contactNumber = "";
List<SiteContactInfoModel> sites = Provider.of<UserProvider>(context, listen: false).siteContactList;
return Container(
clipBehavior: Clip.antiAlias,
height: MediaQuery.sizeOf(context).height * .5,
decoration: BoxDecoration(
color: Theme.of(context).scaffoldBackgroundColor,
borderRadius: const BorderRadius.only(
@ -25,6 +34,7 @@ class ContactUsBottomSheet extends StatelessWidget {
),
),
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
child: SafeArea(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
@ -41,7 +51,43 @@ class ContactUsBottomSheet extends StatelessWidget {
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(
// children: [
// contactItem(context, context.isDark, "phone", context.translation.callUs, contactNumber).onPress(() {
@ -55,9 +101,10 @@ class ContactUsBottomSheet extends StatelessWidget {
// }).expanded,
// ],
// ),
32.height,
// 32.height,
],
),
),
);
}

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

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

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

Loading…
Cancel
Save