fix issues in feedback

merge-requests/34/merge
Mohammad Aljammal 6 years ago
parent 5619b8c06f
commit 8495260c5a

@ -55,6 +55,7 @@ class BaseAppClient {
'Accept': 'application/json' 'Accept': 'application/json'
}); });
final int statusCode = response.statusCode; final int statusCode = response.statusCode;
print("statusCode :$statusCode");
if (statusCode < 200 || statusCode >= 400 || json == null) { if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode); onFailure('Error While Fetching data', statusCode);
} else { } else {

@ -59,7 +59,7 @@ class FeedbackService extends BaseService {
onFailure: (String error, int statusCode) { onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: _requestInsertCOCItem.toJson()); }, body: body);
} }
Future getStatusCOC() async { Future getStatusCOC() async {

@ -6,6 +6,9 @@ class MedicalService extends BaseService {
List<AppoitmentAllHistoryResultList> appoitmentAllHistoryResultList = List(); List<AppoitmentAllHistoryResultList> appoitmentAllHistoryResultList = List();
getAppointmentHistory() async { getAppointmentHistory() async {
hasError = false;
super.error = "";
await baseAppClient.post(GET_PATIENT_APPOINTMENT_HISTORY, await baseAppClient.post(GET_PATIENT_APPOINTMENT_HISTORY,
onSuccess: (response, statusCode) async { onSuccess: (response, statusCode) async {
appoitmentAllHistoryResultList.clear(); appoitmentAllHistoryResultList.clear();

@ -6,10 +6,52 @@ import 'package:diplomaticquarterapp/pages/feedback/appointment_history.dart';
import '../../../locator.dart'; import '../../../locator.dart';
enum MessageType {
ComplaintOnAnAppointment,
ComplaintWithoutAppointment,
Question,
Compliment,
Suggestion,
NON
}
class FeedbackViewModel extends BaseViewModel { class FeedbackViewModel extends BaseViewModel {
FeedbackService _feedbackService = locator<FeedbackService>(); FeedbackService _feedbackService = locator<FeedbackService>();
List<COCItem> get cOCItemList => _feedbackService.cOCItemList; List<COCItem> get cOCItemList => _feedbackService.cOCItemList;
MessageType messageType = MessageType.NON;
MessageType messageTypeDialog = MessageType.NON;
String selected = "not selected";
setMessageDialogType(MessageType messageType) {
messageTypeDialog = messageType;
notifyListeners();
}
setMessageType(MessageType messageType) {
this.messageType = messageType;
switch (messageType) {
case MessageType.ComplaintOnAnAppointment:
selected = "Complaint on an appointment";
break;
case MessageType.ComplaintWithoutAppointment:
selected = "Complaint without appointment";
break;
case MessageType.Question:
selected = "Question";
break;
case MessageType.Compliment:
selected = "Compliment";
break;
case MessageType.Suggestion:
selected = "Suggestion";
break;
case MessageType.NON:
break;
}
notifyListeners();
}
List<AppointmentHistory> get appointHistoryList => List<AppointmentHistory> get appointHistoryList =>
_feedbackService.appointHistoryList; _feedbackService.appointHistoryList;
@ -30,9 +72,11 @@ class FeedbackViewModel extends BaseViewModel {
if (_feedbackService.hasError) { if (_feedbackService.hasError) {
error = _feedbackService.error; error = _feedbackService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
setMessageType(MessageType.NON);
return false; return false;
} else { } else {
setState(ViewState.Idle); setState(ViewState.Idle);
setMessageType(MessageType.NON);
return true; return true;
} }
} }
@ -48,7 +92,7 @@ class FeedbackViewModel extends BaseViewModel {
} }
} }
getPatentAppointmentHistory() async { Future getPatentAppointmentHistory() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _feedbackService.getPatentAppointmentHistory(); await _feedbackService.getPatentAppointmentHistory();
if (_feedbackService.hasError) { if (_feedbackService.hasError) {

@ -10,22 +10,12 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
import 'package:diplomaticquarterapp/widgets/others/StarRating.dart'; import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'appointment_history.dart'; import 'appointment_history.dart';
enum MessageType {
ComplaintOnAnAppointment,
ComplaintWithoutAppointment,
Question,
Compliment,
Suggestion,
NON
}
class SendFeedbackPage extends StatefulWidget { class SendFeedbackPage extends StatefulWidget {
@override @override
_SendFeedbackPageState createState() => _SendFeedbackPageState(); _SendFeedbackPageState createState() => _SendFeedbackPageState();
@ -34,8 +24,6 @@ class SendFeedbackPage extends StatefulWidget {
class _SendFeedbackPageState extends State<SendFeedbackPage> { class _SendFeedbackPageState extends State<SendFeedbackPage> {
TextEditingController titleController = TextEditingController(); TextEditingController titleController = TextEditingController();
TextEditingController messageController = TextEditingController(); TextEditingController messageController = TextEditingController();
MessageType messageType = MessageType.NON;
String _selected = "not selected";
List<String> images = []; List<String> images = [];
String title; String title;
AppointmentHistory appointHistory; AppointmentHistory appointHistory;
@ -86,7 +74,7 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
children: <Widget>[ children: <Widget>[
Container( Container(
child: Texts( child: Texts(
_selected, model.selected,
variant: 'bodyText', variant: 'bodyText',
), ),
margin: EdgeInsets.only(left: 10), margin: EdgeInsets.only(left: 10),
@ -100,7 +88,8 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
), ),
), ),
), ),
if (appointHistory != null) if (appointHistory != null && model.messageType ==
MessageType.ComplaintOnAnAppointment)
InkWell( InkWell(
onTap: () { onTap: () {
setState(() { setState(() {
@ -175,7 +164,8 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
), ),
), ),
), ),
if (messageType == MessageType.ComplaintOnAnAppointment && if (model.messageType ==
MessageType.ComplaintOnAnAppointment &&
model.appointHistoryList.length != 0 && model.appointHistoryList.length != 0 &&
isShowListAppointHistory) isShowListAppointHistory)
Container( Container(
@ -403,14 +393,14 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
loading: model.state == ViewState.BusyLocal, loading: model.state == ViewState.BusyLocal,
onTap: () { onTap: () {
final form = formKey.currentState; final form = formKey.currentState;
if (form.validate()) if (messageType != MessageType.NON) if (form.validate()) if (model.messageType != MessageType.NON)
model model
.sendCOCItem( .sendCOCItem(
title: titleController.text, title: titleController.text,
attachment: images.length > 0 ? images[0] : "", attachment: images.length > 0 ? images[0] : "",
details: messageController.text, details: messageController.text,
cOCTypeName: getCOCName(), cOCTypeName: getCOCName(model),
appointHistory: messageType == appointHistory: model.messageType ==
MessageType.ComplaintOnAnAppointment MessageType.ComplaintOnAnAppointment
? appointHistory ? appointHistory
: null) : null)
@ -420,8 +410,8 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
titleController.text = ""; titleController.text = "";
messageController.text = ""; messageController.text = "";
images = []; images = [];
messageType = MessageType.NON;
}); });
model.setMessageType(MessageType.NON);
AppToast.showSuccessToast( AppToast.showSuccessToast(
message: "Your feedback was send"); message: "Your feedback was send");
} else { } else {
@ -440,8 +430,8 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
); );
} }
String getCOCName() { String getCOCName(FeedbackViewModel model) {
switch (messageType) { switch (model.messageType) {
case MessageType.ComplaintOnAnAppointment: case MessageType.ComplaintOnAnAppointment:
return "1"; return "1";
break; break;
@ -469,69 +459,33 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
showDialog( showDialog(
context: context, context: context,
child: FeedbackTypeDialog( child: FeedbackTypeDialog(
onValueChange: (MessageType value) { onValueSelected: (MessageType value) {
if (value == MessageType.ComplaintOnAnAppointment) { if (value == MessageType.ComplaintOnAnAppointment) {
model.getPatentAppointmentHistory(); model.getPatentAppointmentHistory().then((value) {
setState(() { setState(() {
appointHistory = null; appointHistory = null;
}); });
}
setState(() {
messageType = value;
}); });
},
initialValue: messageType,
onValueSelected: () {
setState(() {
switch (messageType) {
case MessageType.ComplaintOnAnAppointment:
_selected = "Complaint on an appointment";
break;
case MessageType.ComplaintWithoutAppointment:
_selected = "Complaint without appointment";
break;
case MessageType.Question:
_selected = "Question";
break;
case MessageType.Compliment:
_selected = "Compliment";
break;
case MessageType.Suggestion:
_selected = "Suggestion";
break;
case MessageType.NON:
break;
} }
}); model.setMessageType(value);
Navigator.pop(context);
}, },
)); ));
} }
} }
class FeedbackTypeDialog extends StatefulWidget { class FeedbackTypeDialog extends StatefulWidget {
const FeedbackTypeDialog( final Function(MessageType) onValueSelected;
{this.onValueChange, this.initialValue, this.onValueSelected});
final MessageType initialValue; const FeedbackTypeDialog({Key key, this.onValueSelected}) : super(key: key);
final void Function(MessageType) onValueChange;
final GestureTapCallback onValueSelected;
@override @override
State createState() => new FeedbackTypeDialogState(); State createState() => new FeedbackTypeDialogState();
} }
class FeedbackTypeDialogState extends State<FeedbackTypeDialog> { class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
MessageType _messageType;
@override
void initState() {
super.initState();
_messageType = widget.initialValue;
}
Widget build(BuildContext context) { Widget build(BuildContext context) {
return new SimpleDialog( return BaseView<FeedbackViewModel>(
builder: (_, model, widge) => SimpleDialog(
title: Text( title: Text(
"Message Type", "Message Type",
textAlign: TextAlign.center, textAlign: TextAlign.center,
@ -550,24 +504,16 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () { onTap: () => model.setMessageDialogType(
setState(() { MessageType.ComplaintOnAnAppointment),
_messageType = MessageType.ComplaintOnAnAppointment;
widget.onValueChange(_messageType);
});
},
child: ListTile( child: ListTile(
title: const Text('Complaint on an appointment'), title: const Text('Complaint on an appointment'),
leading: Radio( leading: Radio(
value: MessageType.ComplaintOnAnAppointment, value: MessageType.ComplaintOnAnAppointment,
groupValue: _messageType, groupValue: model.messageTypeDialog,
activeColor: Colors.red[800], activeColor: Colors.red[800],
onChanged: (MessageType value) { onChanged: (MessageType value) =>
setState(() { model.setMessageDialogType(value),
_messageType = MessageType.ComplaintOnAnAppointment;
widget.onValueChange(_messageType);
});
},
), ),
), ),
), ),
@ -582,25 +528,16 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () { onTap: () => model.setMessageDialogType(
setState(() { MessageType.ComplaintWithoutAppointment),
_messageType = MessageType.ComplaintWithoutAppointment;
widget.onValueChange(_messageType);
});
},
child: ListTile( child: ListTile(
title: const Text('Complaint without appointment'), title: const Text('Complaint without appointment'),
leading: Radio( leading: Radio(
value: MessageType.ComplaintWithoutAppointment, value: MessageType.ComplaintWithoutAppointment,
groupValue: _messageType, groupValue: model.messageTypeDialog,
activeColor: Colors.red[800], activeColor: Colors.red[800],
onChanged: (MessageType value) { onChanged: (MessageType value) =>
setState(() { model.setMessageDialogType(value),
_messageType =
MessageType.ComplaintWithoutAppointment;
widget.onValueChange(_messageType);
});
},
), ),
), ),
), ),
@ -615,24 +552,16 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () { onTap: () =>
setState(() { model.setMessageDialogType(MessageType.Question),
_messageType = MessageType.Question;
widget.onValueChange(_messageType);
});
},
child: ListTile( child: ListTile(
title: const Text('Question'), title: const Text('Question'),
leading: Radio( leading: Radio(
value: MessageType.Question, value: MessageType.Question,
groupValue: _messageType, groupValue: model.messageTypeDialog,
activeColor: Colors.red[800], activeColor: Colors.red[800],
onChanged: (MessageType value) { onChanged: (MessageType value) =>
setState(() { model.setMessageDialogType(value),
_messageType = MessageType.Question;
widget.onValueChange(_messageType);
});
},
), ),
), ),
), ),
@ -647,24 +576,16 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () { onTap: () =>
setState(() { model.setMessageDialogType(MessageType.Compliment),
_messageType = MessageType.Compliment;
widget.onValueChange(_messageType);
});
},
child: ListTile( child: ListTile(
title: const Text('compliment'), title: const Text('compliment'),
leading: Radio( leading: Radio(
value: MessageType.Compliment, value: MessageType.Compliment,
groupValue: _messageType, groupValue: model.messageTypeDialog,
activeColor: Colors.red[800], activeColor: Colors.red[800],
onChanged: (MessageType value) { onChanged: (MessageType value) =>
setState(() { model.setMessageDialogType(value),
_messageType = MessageType.Compliment;
widget.onValueChange(_messageType);
});
},
), ),
), ),
), ),
@ -679,24 +600,16 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () { onTap: () =>
setState(() { model.setMessageDialogType(MessageType.Suggestion),
_messageType = MessageType.Suggestion;
widget.onValueChange(_messageType);
});
},
child: ListTile( child: ListTile(
title: const Text('Suggestion'), title: const Text('Suggestion'),
leading: Radio( leading: Radio(
value: MessageType.Suggestion, value: MessageType.Suggestion,
groupValue: _messageType, groupValue: model.messageTypeDialog,
activeColor: Colors.red[800], activeColor: Colors.red[800],
onChanged: (MessageType value) { onChanged: (MessageType value) =>
setState(() { model.setMessageDialogType(value),
_messageType = MessageType.Suggestion;
widget.onValueChange(_messageType);
});
},
), ),
), ),
), ),
@ -729,9 +642,12 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
child: Texts( child: Texts(
'cancel', 'cancel',
color: Colors.red, color: Colors.red,
))),
), ),
)), ),
),
),
),
),
Container( Container(
width: 1, width: 1,
height: 30, height: 30,
@ -740,7 +656,10 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: widget.onValueSelected, onTap: () {
widget.onValueSelected(model.messageTypeDialog);
Navigator.pop(context);
},
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
@ -753,8 +672,10 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
], ],
) )
], ],
)), ),
),
], ],
),
); );
} }
} }

@ -43,7 +43,8 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Column( Expanded(
child: Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
@ -54,7 +55,9 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
), ),
], ],
), ),
Column( ),
Expanded(
child: Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
@ -65,6 +68,7 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
), ),
], ],
), ),
),
], ],
), ),
Texts('${model.cOCItemList[index].formType}'), Texts('${model.cOCItemList[index].formType}'),

@ -0,0 +1,34 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class TimeLineWidget extends StatefulWidget {
final bool isUp;
TimeLineWidget({Key key, this.isUp});
_TimeLineWidgetState createState() => _TimeLineWidgetState();
}
class _TimeLineWidgetState extends State<TimeLineWidget> {
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Container(
width: double.infinity,
height: 150,
color: Colors.grey[400],
child: Center(
child: Divider(
color: Colors.white,
height: 5,
thickness: 5,
),
),
),
if (widget.isUp) Container() else Container(),
Container()
],
);
}
}
Loading…
Cancel
Save