Pushing after Testing on Panel

dev_faiz
Faiz Hashmi 3 years ago
parent 7e82746ce3
commit 54f6c7c185

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
<string>11.0</string>
</dict>
</plist>

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

@ -1,29 +1,47 @@
PODS:
- audio_session (0.0.1):
- Flutter
- connectivity (0.0.1):
- Flutter
- Reachability
- Flutter (1.0.0)
- just_audio (0.0.1):
- Flutter
- path_provider_ios (0.0.1):
- Flutter
- Reachability (3.2)
DEPENDENCIES:
- audio_session (from `.symlinks/plugins/audio_session/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- Flutter (from `Flutter`)
- just_audio (from `.symlinks/plugins/just_audio/ios`)
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
SPEC REPOS:
trunk:
- Reachability
EXTERNAL SOURCES:
audio_session:
:path: ".symlinks/plugins/audio_session/ios"
connectivity:
:path: ".symlinks/plugins/connectivity/ios"
Flutter:
:path: Flutter
just_audio:
:path: ".symlinks/plugins/just_audio/ios"
path_provider_ios:
:path: ".symlinks/plugins/path_provider_ios/ios"
SPEC CHECKSUMS:
audio_session: 4f3e461722055d21515cf3261b64c973c062f345
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
COCOAPODS: 1.11.2
COCOAPODS: 1.11.3

@ -340,7 +340,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@ -418,7 +418,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@ -467,7 +467,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;

@ -43,5 +43,7 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
</dict>
</plist>

@ -1,47 +1,57 @@
import 'package:flutter/cupertino.dart';
import 'package:queuing_system/core/base/base_app_client.dart';
import 'package:queuing_system/core/response_model/patient_call.dart';
const _getCallRequestInfoByClinicInfo = "/GetCallRequestInfoByClinincInfo";
const _call_UpdateNotIsQueueRecordByIDAsync = "/Call_UpdateNotIsQueueRecordByIDAsync";
class API{
static GetCallRequestInfoByClinincInfo(String deviceIp, {@required Function(List<Tickets>, List<Tickets>) onSuccess, @required Function(dynamic) onFailure}) async{
final body = { "IPAdress" : deviceIp };
BaseAppClient.post(_getCallRequestInfoByClinicInfo, body: body, onSuccess: (response, status){
if(status == 200){
final calledByNurse = (response["CalledByNurse"] as List).map((j) => Tickets.fromJson(j)).toList();
final clinicCurrentPatient = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList();
onSuccess(calledByNurse, clinicCurrentPatient);
}else{
onFailure(response);
}
}, onFailure: (error, status) => onFailure(error));
const _call_UpdateNotIsQueueRecordByIDAsync = "/Call_UpdateNotIsQueueRecordByID";
class API {
static GetCallRequestInfoByClinincInfo(String deviceIp, {@required Function(List<Tickets>) onSuccess, @required Function(dynamic) onFailure}) async {
final body = {"IPAdress": deviceIp};
BaseAppClient.post(_getCallRequestInfoByClinicInfo,
body: body,
onSuccess: (response, status) {
if (status == 200) {
var calledByNurse = (response["CalledByNurse"] as List).map((j) => Tickets.fromJson(j)).toList();
final patients = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList();
calledByNurse.addAll(patients);
calledByNurse.sort((a, b) => a.callNo.compareTo(b.callNo));
// final clinicCurrentPatient = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList();
onSuccess(calledByNurse);
} else {
onFailure(response);
}
},
onFailure: (error, status) => onFailure(error));
}
// static Call_UpdateNotIsQueueRecordByIDAsync(String deviceIp, {@required List<Tickets> tickets, @required Function(List<Tickets>) onSuccess, @required Function(dynamic) onFailure}) async{
// if(tickets.isEmpty) {
// return;
// }
//
// List<Tickets> _ticketsUpdated = [];
//
// for (var ticket in tickets) {
// final body = { "CallID" : ticket.callNo};
// await BaseAppClient.post(_call_UpdateNotIsQueueRecordByIDAsync, body: body, onSuccess: (response, status){
// if(status == 200){
// ticket.call_updated = true;
// _ticketsUpdated.add(ticket);
// }
// }, onFailure: (error, status) => onFailure(error));
// }
//
// if(_ticketsUpdated.isNotEmpty) {
// onSuccess(_ticketsUpdated);
// }else{
// onFailure(false);
// }
// }
static Call_UpdateNotIsQueueRecordByIDAsync(String deviceIp, {@required List<Tickets> tickets, @required Function(List<Tickets>) onSuccess, @required Function(dynamic) onFailure}) async {
if (tickets.isEmpty) {
return;
}
List<Tickets> _ticketsUpdated = [];
for (var ticket in tickets) {
final body = {"CallID": ticket.callNo};
await BaseAppClient.post(_call_UpdateNotIsQueueRecordByIDAsync,
body: body,
onSuccess: (response, status) {
print("response: $response");
if (status == 200) {
ticket.call_updated = true;
_ticketsUpdated.add(ticket);
}
},
onFailure: (error, status) => onFailure(error));
}
if (_ticketsUpdated.isNotEmpty) {
onSuccess(_ticketsUpdated);
} else {
onFailure(false);
}
}
}

@ -4,6 +4,7 @@ import 'package:connectivity/connectivity.dart';
import 'package:flutter/material.dart';
import 'package:queuing_system/core/api.dart';
import 'package:queuing_system/core/base/app_scaffold_widget.dart';
import 'package:queuing_system/core/config/config.dart';
import 'package:queuing_system/core/config/size_config.dart';
import 'package:queuing_system/core/response_model/patient_call.dart';
import 'package:queuing_system/header/app_header.dart';
@ -14,7 +15,10 @@ import 'package:queuing_system/utils/signalR_utils.dart';
import 'package:queuing_system/utils/utils.dart';
import 'package:queuing_system/widget/data_display/app_texts_widget.dart';
var DEVICE_IP = "10.10.14.11"; // Testing IP
var DEVICE_IP = "10.10.14.11"; // Testing IP
// var DEVICE_IP = "10.10.14.11"; // Testing IP
// var DEVICE_IP = "10.10.15.11";
// var DEVICE_IP = "10.70.249.21"; // (Make sure by Haroon before use it) Production IP
class MyHomePage extends StatefulWidget {
@ -30,31 +34,25 @@ class _MyHomePageState extends State<MyHomePage> {
List<Tickets> waitings = [];
List<Tickets> currents = [];
bool isLoading = false;
@override
void dispose() {
super.dispose();
}
@override
void initState() {
listenNetworkConnectivity();
if (!signalRHelper.getConnectionState()) {
signalRHelper.startSignalRConnection(
DEVICE_IP,
onUpdateAvailable: onUpdateAvailable,
onConnect: onConnect,
onConnecting: onConnecting,
onDisconnect: onDisconnect
);
signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect);
}
super.initState();
}
TextEditingController controller = TextEditingController();
@override
Widget build(BuildContext context) {
return AppScaffold(
@ -66,48 +64,91 @@ class _MyHomePageState extends State<MyHomePage> {
width: double.infinity,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const SizedBox(width: 20),
AppText(
"Powered By",
fontSize: SizeConfig.getWidthMultiplier() * 2.6,
fontFamily: 'Poppins-Medium.ttf',
Row(
children: [
const SizedBox(width: 20),
AppText(
"Powered By",
fontSize: SizeConfig.getWidthMultiplier() * 2.6,
fontFamily: 'Poppins-Medium.ttf',
),
const SizedBox(width: 20),
Image.asset(
"assets/images/cloud_logo.png",
height: SizeConfig.getHeightMultiplier() * 4,
),
],
),
const SizedBox(width: 20),
Image.asset(
"assets/images/cloud_logo.png",
height: SizeConfig.getHeightMultiplier() * 4,
Row(
children: [
const SizedBox(width: 60),
SizedBox(
width: 200,
child: TextField(
controller: controller,
)),
const SizedBox(width: 30),
isLoading
? const CircularProgressIndicator()
: ElevatedButton(
onPressed: onUpdateIPPressed,
child: const Text(
"Update IP",
style: TextStyle(color: Colors.white),
),
style: ElevatedButton.styleFrom(backgroundColor: AppGlobal.appRedColor),
),
const SizedBox(width: 30),
Text("IP: $DEVICE_IP", style: const TextStyle(fontWeight: FontWeight.w600)),
const SizedBox(width: 20),
],
),
const SizedBox(width: 20),
],
),
),
);
}
Widget content(){
onUpdateIPPressed() async {
if (controller.text.isNotEmpty) {
isLoading = true;
setState(() {});
DEVICE_IP = controller.text;
await signalRHelper.connection.stop();
if (!signalRHelper.getConnectionState()) {
await signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect);
}
controller.clear();
waitings.clear();
isLoading = false;
setState(() {});
}
}
Widget content() {
// waitings = waitings.sublist(0,3);
voiceCall();
if(waitings.isEmpty) {
if (waitings.isEmpty) {
// No Patient in Queue
return noPatientInQueue();
}else if(waitings.length > 4){
} else if (waitings.length > 4) {
// Return Content With Side List
return priorityTicketsWithSideList(waitings);
}else{
} else {
// Return Content In Center Aligned
return priorityTickets(waitings);
}
}
CallByVoice voiceCaller;
voiceCall() async{
if(waitings.isNotEmpty && voiceCaller == null){
voiceCall() async {
if (waitings.isNotEmpty && voiceCaller == null) {
final postVoice = waitings.first.getCallType().audio('en');
voiceCaller = CallByVoice(waitings.first.callNo.toString(), preVoice: 'ticket_number.mp3', postVoice: postVoice, lang: 'en');
await voiceCaller.start();
@ -115,54 +156,47 @@ class _MyHomePageState extends State<MyHomePage> {
}
}
onUpdateAvailable(data) async{
API.GetCallRequestInfoByClinincInfo(
DEVICE_IP,
onSuccess: (waitingCalls, currentInClinic){
setState(() {
waitings = waitingCalls;
currents = currentInClinic;
});
log("\n\n");
log("--------------------");
log("Current: $currentInClinic");
log("Waiting: $waitingCalls");
log("--------------------");
log("\n\n");
updateTickets();
}, onFailure: (error){
});
onUpdateAvailable(data) async {
API.GetCallRequestInfoByClinincInfo(DEVICE_IP, onSuccess: (waitingCalls) {
setState(() {
waitings = waitingCalls;
// currents = currentInClinic;
});
log("\n\n");
log("--------------------");
// log("Current: $currentInClinic");
log("Waiting: $waitingCalls");
log("--------------------");
log("\n\n");
updateTickets();
}, onFailure: (error) {});
}
updateTickets(){
// List<Tickets> _ticketsToUpdate = waitings.where((t) => t.call_updated == false);
// API.Call_UpdateNotIsQueueRecordByIDAsync(DEVICE_IP, tickets: _ticketsToUpdate, onSuccess: (tickets_updated){
// print("[${tickets_updated.length}] Tickets Updated: $tickets_updated");
// }, onFailure: (e){
//
// });
updateTickets() {
List<Tickets> _ticketsToUpdate = waitings.where((t) => t.call_updated == false).toList();
API.Call_UpdateNotIsQueueRecordByIDAsync(DEVICE_IP, tickets: _ticketsToUpdate, onSuccess: (tickets_updated) {
print("[${tickets_updated.length}] Tickets Updated: $tickets_updated");
}, onFailure: (e) {
print("API UPDate Tickets Failed with : ${e.toString()}");
});
}
onConnect(){
onConnect() {
log("SignalR: onConnect");
}
onDisconnect(exception){
onDisconnect(exception) {
log("SignalR: onDisconnect");
signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect);
}
onConnecting(){
onConnecting() {
log("SignalR: onConnecting");
}
listenNetworkConnectivity() async{
listenNetworkConnectivity() async {
Connectivity().onConnectivityChanged.listen((event) {
switch (event) {
case ConnectivityResult.wifi:

@ -1,9 +1,7 @@
import 'package:flutter/cupertino.dart';
import 'package:just_audio/just_audio.dart';
import 'package:queuing_system/utils/call_type.dart';
class CallByVoice{
class CallByVoice {
final String lang;
final String preVoice;
final String ticketNo;
@ -12,19 +10,19 @@ class CallByVoice{
CallByVoice(this.ticketNo, {this.lang = 'en', @required this.preVoice, @required this.postVoice});
final _player = AudioPlayer();
start() async{
start() async {
// Create Pre Voice Players
if(preVoice != null && preVoice.isNotEmpty) {
if (preVoice != null && preVoice.isNotEmpty) {
await _player.setAsset('assets/voice_$lang/$preVoice');
await _player.play();
}
// Create Ticket Number Voice Players
final characters = ticketNo.characters.toList();
for(int i = 0; i< characters.length; i++){
for (int i = 0; i < characters.length; i++) {
final no = characters[i];
if(no.isNotEmpty){
if (no.isNotEmpty) {
await Future.delayed(const Duration(milliseconds: 200));
await _player.stop();
@ -33,9 +31,8 @@ class CallByVoice{
}
}
// Create Post Voice Players
if(postVoice != null && postVoice.isNotEmpty) {
if (postVoice != null && postVoice.isNotEmpty) {
await Future.delayed(const Duration(milliseconds: 1000));
await _player.stop();
@ -45,4 +42,9 @@ class CallByVoice{
_player.dispose();
}
}
stop() async {
await _player.stop();
}
}

@ -25,7 +25,8 @@ class SignalRHelper{
startSignalRConnection(String deviceIp, {@required Function(dynamic) onUpdateAvailable, @required VoidCallback onConnect, @required Function(dynamic) onDisconnect, @required VoidCallback onConnecting}) async {
// Hardcoded IP For Testing
deviceIp = "10.10.14.11";
// deviceIp = "10.10.14.11";
print("Connecting Signal R with: $deviceIp");
final url = hubBaseURL+"?IPAddress=$deviceIp";
connection = HubConnectionBuilder()

Loading…
Cancel
Save