add sick leave

merge-requests/197/head
Sultan Khan 5 years ago
parent 4f96cff585
commit e61f3f0281

@ -85,7 +85,7 @@ class BaseAppClient {
if (!parsed['IsAuthenticated']) { if (!parsed['IsAuthenticated']) {
//need to uncomment //need to uncomment
// await helpers.logout(); // await helpers.logout();
onSuccess(parsed, statusCode);
helpers.showErrorToast('Your session expired Please login agian'); helpers.showErrorToast('Your session expired Please login agian');
} else if (parsed['MessageStatus'] == 1) { } else if (parsed['MessageStatus'] == 1) {
onSuccess(parsed, statusCode); onSuccess(parsed, statusCode);

@ -83,7 +83,9 @@ const GET_SICKLEAVE_STATISTIC =
'Services/DoctorApplication.svc/REST/PreSickLeaveStatistics'; 'Services/DoctorApplication.svc/REST/PreSickLeaveStatistics';
const ARRIVED_PATIENT_URL = const ARRIVED_PATIENT_URL =
'Services/DoctorApplication.svc/REST/PatientArrivalList'; 'Services/DoctorApplication.svc/REST/PatientArrivalList';
const ADD_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/PostSickLeave';
const GET_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/GetAllSickLeaves';
const EXTEND_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/ExtendSickLeave';
var selectedPatientType = 1; var selectedPatientType = 1;
//*********change value to decode json from Dropdown ************ //*********change value to decode json from Dropdown ************

@ -266,7 +266,7 @@ const Map<String, Map<String, String>> localizedValues = {
}, },
'gender2': {'en': 'Gender: ', 'ar': 'الجنس: '}, 'gender2': {'en': 'Gender: ', 'ar': 'الجنس: '},
'age2': {'en': 'Age: ', 'ar': 'العمر: '}, 'age2': {'en': 'Age: ', 'ar': 'العمر: '},
"sick-leaves": {"en": "Patient Sick", "ar": "الاجازات المرضية"}, "sick-leaves": {"en": "Patient Sick Leave", "ar": "الاجازات المرضية"},
"patient-sick": {"en": "Patient Sick", "ar": "المرضية"}, "patient-sick": {"en": "Patient Sick", "ar": "المرضية"},
"leave": {"en": "Leave", "ar": "غادر"}, "leave": {"en": "Leave", "ar": "غادر"},
"submit": {"en": "Submit", "ar": "ارسال"}, "submit": {"en": "Submit", "ar": "ارسال"},
@ -295,4 +295,14 @@ const Map<String, Map<String, String>> localizedValues = {
'applynow': {'en': "Apply Now", 'ar': 'قدم الآن'}, 'applynow': {'en': "Apply Now", 'ar': 'قدم الآن'},
'add-sickleave': {'en': "ADD SICK LEAVE", 'ar': 'أضف إجازة مرضية'}, 'add-sickleave': {'en': "ADD SICK LEAVE", 'ar': 'أضف إجازة مرضية'},
'add': {'en': "Add", 'ar': 'أضف'}, 'add': {'en': "Add", 'ar': 'أضف'},
'approved': {'en': "Approved", 'ar': 'وافق'},
'extended': {'en': "Extended", 'ar': 'وسعوا'},
'pending': {'en': "Pending", 'ar': 'قيد الانتظار'},
'leave-start-date': {'en': "Leave start date", 'ar': 'تاريخ بدء المغادرة'},
'days-sick-leave': {'en': "DAYS OF SICK LEAVE", 'ar': 'أيام الإجازة المرضية'},
'extend': {'en': "Extend", 'ar': 'تمديد'},
'extend-sickleave': {
'en': "EXTEND SICK LEAVE",
'ar': 'قم بتمديد الإجازة المرضية'
},
}; };

@ -1,10 +1,16 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/extend_sick_leave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
// import 'package:doctor_app_flutter/models/dashboard/dashboard_model.dart'; // import 'package:doctor_app_flutter/models/dashboard/dashboard_model.dart';
class SickLeaveService extends BaseService { class SickLeaveService extends BaseService {
Map get sickLeavestatisitics => _statistics; Map get sickLeavestatisitics => _statistics;
Map _statistics = {}; Map _statistics = {};
List<GetAllSickLeaveResponse> get getAllSickLeave => _getAllsickLeave;
List<GetAllSickLeaveResponse> _getAllsickLeave = [];
Future getStatistics() async { Future getStatistics() async {
hasError = false; hasError = false;
await baseAppClient.post( await baseAppClient.post(
@ -18,7 +24,70 @@ class SickLeaveService extends BaseService {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, },
body: {"PatientMRN": 3120737, "AppointmentNo": 2016055008}, body: {"PatientMRN": 3120746, "AppointmentNo": 2016054661},
);
}
Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async {
addSickLeaveRequest.appointmentNo = '2016054661';
addSickLeaveRequest.patientMRN = '3120746';
hasError = false;
await baseAppClient.post(
ADD_SICK_LEAVE,
onSuccess: (dynamic response, int statusCode) {
Future.value(response);
print(response);
// _statistics = {};
// _statistics = response['SickLeaveStatistics'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: addSickLeaveRequest.toJson(),
);
}
Future extendSickLeave(GetAllSickLeaveResponse request) async {
var extendSickLeaveRequest = ExtendSickLeaveRequest();
extendSickLeaveRequest.patientMRN =
request.patientMRN.toString(); //'3120746';
extendSickLeaveRequest.previousRequestNo = request.requestNo.toString();
extendSickLeaveRequest.noOfDays = request.noOfDays.toString();
extendSickLeaveRequest.remarks = request.remarks;
hasError = false;
await baseAppClient.post(
EXTEND_SICK_LEAVE,
onSuccess: (dynamic response, int statusCode) {
Future.value(response);
print(response);
// _statistics = {};
// _statistics = response['SickLeaveStatistics'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: extendSickLeaveRequest.toJson(),
);
}
Future getSickLeave() async {
hasError = false;
await baseAppClient.post(
GET_SICK_LEAVE,
onSuccess: (dynamic response, int statusCode) {
Future.value(response);
_getAllsickLeave.clear();
response['SickLeavesList']['entityList'].forEach((v) {
_getAllsickLeave.add(GetAllSickLeaveResponse.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: {'PatientMRN': 3120772},
); );
} }
} }

@ -1,6 +1,9 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/service/sickleave_service.dart'; import 'package:doctor_app_flutter/core/service/sickleave_service.dart';
import 'package:doctor_app_flutter/core/service/medicine_service.dart'; import 'package:doctor_app_flutter/core/service/medicine_service.dart';
import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/extend_sick_leave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
import '../../locator.dart'; import '../../locator.dart';
import 'base_view_model.dart'; import 'base_view_model.dart';
@ -8,16 +11,26 @@ import 'base_view_model.dart';
class SickLeaveViewModel extends BaseViewModel { class SickLeaveViewModel extends BaseViewModel {
SickLeaveService _sickLeaveService = locator<SickLeaveService>(); SickLeaveService _sickLeaveService = locator<SickLeaveService>();
get sickLeaveStatistics => _sickLeaveService.sickLeavestatisitics; get sickLeaveStatistics => _sickLeaveService.sickLeavestatisitics;
get getAllSIckLeave => _sickLeaveService.getAllSickLeave;
Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async {
setState(ViewState.Busy);
await _sickLeaveService.addSickLeave(addSickLeaveRequest);
if (_sickLeaveService.hasError) {
error = _sickLeaveService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
// Future getDashboard() async { Future extendSickLeave(GetAllSickLeaveResponse extendSickLeaveRequest) async {
// setState(ViewState.Busy); setState(ViewState.Busy);
// await _dashboardService.getDashboard(); await _sickLeaveService.extendSickLeave(extendSickLeaveRequest);
// if (_dashboardService.hasError) { if (_sickLeaveService.hasError) {
// error = _dashboardService.error; error = _sickLeaveService.error;
// setState(ViewState.Error); setState(ViewState.Error);
// } else } else
// setState(ViewState.Idle); setState(ViewState.Idle);
// } }
Future preSickLeaveStatistics() async { Future preSickLeaveStatistics() async {
setState(ViewState.Busy); setState(ViewState.Busy);
@ -28,4 +41,14 @@ class SickLeaveViewModel extends BaseViewModel {
} else } else
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getSickLeave() async {
setState(ViewState.Busy);
await _sickLeaveService.getSickLeave();
if (_sickLeaveService.hasError) {
error = _sickLeaveService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
} }

@ -0,0 +1,32 @@
class AddSickLeaveRequest {
String patientMRN;
String appointmentNo;
String startDate;
String noOfDays;
String remarks;
AddSickLeaveRequest(
{this.patientMRN,
this.appointmentNo,
this.startDate,
this.noOfDays,
this.remarks});
AddSickLeaveRequest.fromJson(Map<String, dynamic> json) {
patientMRN = json['PatientMRN'];
appointmentNo = json['AppointmentNo'];
startDate = json['StartDate'];
noOfDays = json['NoOfDays'];
remarks = json['Remarks'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['PatientMRN'] = this.patientMRN;
data['AppointmentNo'] = this.appointmentNo;
data['StartDate'] = this.startDate;
data['NoOfDays'] = this.noOfDays;
data['Remarks'] = this.remarks;
return data;
}
}

@ -0,0 +1,25 @@
class ExtendSickLeaveRequest {
String patientMRN;
String previousRequestNo;
String noOfDays;
String remarks;
ExtendSickLeaveRequest(
{this.patientMRN, this.previousRequestNo, this.noOfDays, this.remarks});
ExtendSickLeaveRequest.fromJson(Map<String, dynamic> json) {
patientMRN = json['PatientMRN'];
previousRequestNo = json['PreviousRequestNo'];
noOfDays = json['NoOfDays'];
remarks = json['Remarks'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['PatientMRN'] = this.patientMRN;
data['PreviousRequestNo'] = this.previousRequestNo;
data['NoOfDays'] = this.noOfDays;
data['Remarks'] = this.remarks;
return data;
}
}

@ -0,0 +1,44 @@
class GetAllSickLeaveResponse {
int appointmentNo;
bool isExtendedLeave;
int noOfDays;
int patientMRN;
String remarks;
int requestNo;
String startDate;
int status;
GetAllSickLeaveResponse(
{this.appointmentNo,
this.isExtendedLeave,
this.noOfDays,
this.patientMRN,
this.remarks,
this.requestNo,
this.startDate,
this.status});
GetAllSickLeaveResponse.fromJson(Map<String, dynamic> json) {
appointmentNo = json['appointmentNo'];
isExtendedLeave = json['isExtendedLeave'];
noOfDays = json['noOfDays'];
patientMRN = json['patientMRN'];
remarks = json['remarks'];
requestNo = json['requestNo'];
startDate = json['startDate'];
status = json['status'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['appointmentNo'] = this.appointmentNo;
data['isExtendedLeave'] = this.isExtendedLeave;
data['noOfDays'] = this.noOfDays;
data['patientMRN'] = this.patientMRN;
data['remarks'] = this.remarks;
data['requestNo'] = this.requestNo;
data['startDate'] = this.startDate;
data['status'] = this.status;
return data;
}
}

@ -1,58 +1,184 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart'; import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
class AddSickLeavScreen extends StatelessWidget { class AddSickLeavScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<SickLeaveViewModel>(
appBarTitle: TranslationBase.of(context).sickleave, onModelReady: (model) => model.getSickLeave(),
body: new Builder(builder: (context) { builder: (_, model, w) => AppScaffold(
return Center( baseViewModel: model,
child: Column( appBarTitle: TranslationBase.of(context).sickleave,
mainAxisAlignment: MainAxisAlignment.center, body: model.getAllSIckLeave.length > 0
children: [ ? SingleChildScrollView(
Container( child: Column(
padding: EdgeInsets.all(40), children: model.getAllSIckLeave
decoration: BoxDecoration( .map<Widget>((GetAllSickLeaveResponse item) {
border: Border.all(color: HexColor('#B8382C'), width: 4), return CardWithBgWidgetNew(
borderRadius: BorderRadius.all(Radius.circular(100))), widget: Column(
child: IconButton( children: [
icon: Icon( Container(
Icons.add, padding: EdgeInsets.only(left: 10, right: 10),
size: 35, child: Row(
), mainAxisAlignment: MainAxisAlignment.start,
onPressed: () { children: <Widget>[
openSickLeave(context); Expanded(
flex: 4,
child: Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: <Widget>[
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Container(
padding: EdgeInsets.all(3),
child: AppText(
item.status == 1
? TranslationBase.of(
context)
.approved
: item.status == 2
? TranslationBase
.of(context)
.extended
: TranslationBase
.of(context)
.pending,
fontWeight: FontWeight.bold,
color: Colors.white,
),
color: item.status == 1
? Colors.green
: Colors.yellow[800],
),
Row(
children: [
AppText(
TranslationBase.of(
context)
.leaveStartDate,
fontWeight:
FontWeight.bold,
),
AppText(item.startDate)
],
),
AppText(
item.noOfDays.toString() +
' ' +
TranslationBase.of(
context)
.daysSickleave,
fontWeight: FontWeight.bold,
),
Row(children: [
AppText(
item.remarks,
)
]),
],
),
SizedBox(
width: 20,
),
],
),
),
(item.status == 1 || item.status == 2)
? Expanded(
flex: 1,
child: IconButton(
icon: Icon(
Icons.open_in_full,
size: 40,
),
// color: Colors.green, //Colors.black,
onPressed: () => {
openSickLeave(context, true,
extendedData: item)
},
))
: SizedBox(),
],
)),
SizedBox(
height: 20,
),
Divider(
height: 1,
),
],
));
}).toList(),
),
)
: new Builder(builder: (context) {
return Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
padding: EdgeInsets.all(40),
decoration: BoxDecoration(
border: Border.all(
color: HexColor('#B8382C'), width: 4),
borderRadius:
BorderRadius.all(Radius.circular(100))),
child: IconButton(
icon: Icon(
Icons.add,
size: 35,
),
onPressed: () {
openSickLeave(
context,
false,
);
}),
),
Padding(
child: AppText(
TranslationBase.of(context).noSickLeaveApplied,
fontWeight: FontWeight.bold,
),
padding: EdgeInsets.all(10),
),
AppText(
TranslationBase.of(context).applyNow,
fontWeight: FontWeight.bold,
color: HexColor('#B8382C'),
)
],
),
));
}), }),
), ));
Padding(
child: AppText(
TranslationBase.of(context).noSickLeaveApplied,
fontWeight: FontWeight.bold,
),
padding: EdgeInsets.all(10),
),
AppText(
TranslationBase.of(context).applyNow,
fontWeight: FontWeight.bold,
color: HexColor('#B8382C'),
)
],
),
);
}),
);
} }
openSickLeave(BuildContext context) { openSickLeave(BuildContext context, isExtend,
{GetAllSickLeaveResponse extendedData}) {
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
builder: (context) { builder: (context) {
return new Container(child: SickLeaveScreen()); return new Container(
child: SickLeaveScreen(
isExtended: isExtend,
extendedData: extendedData,
));
}); });
} }
} }

@ -3,9 +3,11 @@ import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/text_validator.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
@ -17,10 +19,14 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
Helpers helpers = Helpers(); Helpers helpers = Helpers();
class SickLeaveScreen extends StatefulWidget { class SickLeaveScreen extends StatefulWidget {
final bool isExtended;
final GetAllSickLeaveResponse extendedData;
SickLeaveScreen({this.isExtended = false, this.extendedData});
@override @override
_SickLeaveScreenState createState() => _SickLeaveScreenState(); _SickLeaveScreenState createState() => _SickLeaveScreenState();
} }
@ -30,6 +36,7 @@ class _SickLeaveScreenState extends State<SickLeaveScreen> {
TextEditingController _toDateController = new TextEditingController(); TextEditingController _toDateController = new TextEditingController();
String _selectedClinic; String _selectedClinic;
Map profile = {}; Map profile = {};
AddSickLeaveRequest addSickLeave = AddSickLeaveRequest();
void _presentDatePicker(id) { void _presentDatePicker(id) {
showDatePicker( showDatePicker(
context: context, context: context,
@ -41,8 +48,12 @@ class _SickLeaveScreenState extends State<SickLeaveScreen> {
return; return;
} }
setState(() { setState(() {
var selectedDate = DateFormat.yMd().format(pickedDate); // var selectedDate = DateFormat.yMd().format(pickedDate);
_toDateController.text = selectedDate; final df = new DateFormat('yyyy-MM-dd');
addSickLeave.startDate = df.format(pickedDate);
_toDateController.text = addSickLeave.startDate;
//addSickLeave.startDate = selectedDate;
}); });
}); });
} }
@ -58,233 +69,291 @@ class _SickLeaveScreenState extends State<SickLeaveScreen> {
return BaseView<PatientViewModel>( return BaseView<PatientViewModel>(
onModelReady: (model) => model.getClinicsList(), onModelReady: (model) => model.getClinicsList(),
builder: (_, model, w) => BaseView<SickLeaveViewModel>( builder: (_, model, w) => BaseView<SickLeaveViewModel>(
onModelReady: (model2) => model2.preSickLeaveStatistics(), onModelReady: (model2) => model2.preSickLeaveStatistics(),
builder: (_, model2, w) => Center( builder: (_, model2, w) => AppScaffold(
child: Container( baseViewModel: model2,
margin: EdgeInsets.only(top: 10), isShowAppBar: false,
child: FractionallySizedBox( body: Center(
widthFactor: 0.9, child: Container(
child: ListView( margin: EdgeInsets.only(top: 10),
children: [ child: FractionallySizedBox(
Padding( widthFactor: 0.9,
child: AppText( child: ListView(
TranslationBase.of(context).addSickLeave, children: [
fontWeight: FontWeight.bold, Padding(
child: AppText(
widget.isExtended == true
? TranslationBase.of(context)
.extendSickLeave
: TranslationBase.of(context)
.addSickLeave,
fontWeight: FontWeight.bold,
),
padding: EdgeInsets.all(10)),
Container(
margin: EdgeInsets.only(left: 10, right: 10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(6.0)),
border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppTextFormField(
borderColor: Colors.white,
onChanged: (value) {
addSickLeave.noOfDays = value;
},
hintText: widget.extendedData != null
? widget.extendedData.noOfDays
.toString()
: TranslationBase.of(context)
.sickLeaveDays,
// validator: (value) {
// return TextValidator().validateName(value);
// },
inputFormatter: ONLY_NUMBERS)
]),
), ),
padding: EdgeInsets.all(10)), SizedBox(
Container( height: 10,
margin: EdgeInsets.only(left: 10, right: 10), ),
decoration: BoxDecoration( Container(
borderRadius: margin: EdgeInsets.only(left: 10, right: 10),
BorderRadius.all(Radius.circular(6.0)), decoration: BoxDecoration(
border: Border.all( borderRadius:
width: 1.0, color: HexColor("#CCCCCC"))), BorderRadius.all(Radius.circular(6.0)),
padding: EdgeInsets.all(5), border: Border.all(
child: Column( width: 1.0,
crossAxisAlignment: CrossAxisAlignment.start, color: HexColor("#CCCCCC"))),
children: [ padding: EdgeInsets.all(5),
AppTextFormField( child: Column(
borderColor: Colors.white, crossAxisAlignment: CrossAxisAlignment.start,
onSaved: (value) {}, children: [
hintText: TranslationBase.of(context) // AppText(
.sickLeaveDays, // TranslationBase.of(context).sickLeaveDate,
// validator: (value) { // fontSize: 10,
// return TextValidator().validateName(value); // ),
// }, AppTextFormField(
inputFormatter: ONLY_NUMBERS) hintText: widget.extendedData != null
]), ? widget.extendedData.startDate
), : TranslationBase.of(context)
SizedBox( .sickLeaveDate,
height: 10, borderColor: Colors.white,
), prefix: IconButton(
Container( icon: Icon(Icons.calendar_today)),
margin: EdgeInsets.only(left: 10, right: 10), textInputType: TextInputType.number,
decoration: BoxDecoration( controller: _toDateController,
borderRadius: onTap: () {
BorderRadius.all(Radius.circular(6.0)), _presentDatePicker('_selectedToDate');
border: Border.all( },
width: 1.0, color: HexColor("#CCCCCC"))), inputFormatter: ONLY_DATE,
padding: EdgeInsets.all(5), onChanged: (value) {
child: Column( addSickLeave.startDate = value;
crossAxisAlignment: CrossAxisAlignment.start, }),
children: [ ],
// AppText( )),
// TranslationBase.of(context).sickLeaveDate, Container(
// fontSize: 10, margin: EdgeInsets.only(
// ), top: 10, left: 10, right: 10),
AppTextFormField( decoration: BoxDecoration(
hintText: TranslationBase.of(context) borderRadius:
.sickLeaveDate, BorderRadius.all(Radius.circular(6.0)),
borderColor: Colors.white, border: Border.all(
prefix: IconButton( width: 1.0,
icon: Icon(Icons.calendar_today)), color: HexColor("#CCCCCC"))),
textInputType: TextInputType.number, width: double.infinity,
controller: _toDateController, child: Padding(
onTap: () { padding: EdgeInsets.only(
_presentDatePicker('_selectedToDate'); top: SizeConfig.widthMultiplier * 0.9,
}, bottom: SizeConfig.widthMultiplier * 0.9,
inputFormatter: ONLY_DATE, right: SizeConfig.widthMultiplier * 3,
onSaved: (value) {}), left: SizeConfig.widthMultiplier * 3),
], child: Column(
)), crossAxisAlignment:
Container( CrossAxisAlignment.start,
margin: EdgeInsets.all(10), children: [
decoration: BoxDecoration( // AppText(
borderRadius: // TranslationBase.of(context).clinicName,
BorderRadius.all(Radius.circular(6.0)), // fontSize: 10,
border: Border.all( // ),
width: 1.0, color: HexColor("#CCCCCC"))), Row(
width: double.infinity, mainAxisSize: MainAxisSize.max,
child: Padding( children: <Widget>[
padding: EdgeInsets.only( Expanded(
top: SizeConfig.widthMultiplier * 0.9, // add Expanded to have your dropdown button fill remaining space
bottom: SizeConfig.widthMultiplier * 0.9, child: DropdownButtonHideUnderline(
right: SizeConfig.widthMultiplier * 3, child: new IgnorePointer(
left: SizeConfig.widthMultiplier * 3), ignoring: true,
child: DropdownButton(
isExpanded: true,
value: getClinicName(
model) ??
"",
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext
context) {
return model
.getClinicNameList()
.map((item) {
return Row(
mainAxisSize:
MainAxisSize
.max,
children: <Widget>[
AppText(
item,
fontSize: SizeConfig
.textMultiplier *
2.1,
),
],
);
}).toList();
},
onChanged: (newValue) =>
{},
items: model
.getClinicNameList()
.map((item) {
return DropdownMenuItem(
value:
item.toString(),
child: Text(
item,
textAlign:
TextAlign.end,
),
);
}).toList(),
))),
),
],
)
],
),
)),
model2.sickLeaveStatistics[
'recommendedSickLeaveDays'] !=
null
? Padding(
child: AppText(
model2.sickLeaveStatistics[
'recommendedSickLeaveDays'],
fontWeight: FontWeight.bold,
),
padding: EdgeInsets.all(10),
)
: SizedBox(
height: 10,
),
Container(
margin: EdgeInsets.only(left: 10, right: 10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(6.0)),
border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(5),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
// AppText( // AppText(
// TranslationBase.of(context).clinicName, // TranslationBase.of(context).doctorName,
// fontSize: 10, // fontSize: 10,
// ), // ),
Row( new IgnorePointer(
mainAxisSize: MainAxisSize.max, ignoring: true,
children: <Widget>[ child: AppTextFormField(
Expanded( readOnly: true,
// add Expanded to have your dropdown button fill remaining space hintText: profile['DoctorName'],
child: DropdownButtonHideUnderline( borderColor: Colors.white,
child: new IgnorePointer( onSaved: (value) {},
ignoring: true, // validator: (value) {
child: DropdownButton( // return TextValidator().validateName(value);
isExpanded: true, // },
value: getClinicName(model) ?? inputFormatter: ONLY_NUMBERS))
"",
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return model
.getClinicNameList()
.map((item) {
return Row(
mainAxisSize:
MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize: SizeConfig
.textMultiplier *
2.1,
),
],
);
}).toList();
},
onChanged: (newValue) => {},
items: model
.getClinicNameList()
.map((item) {
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign:
TextAlign.end,
),
);
}).toList(),
))),
),
],
)
], ],
), ),
)), ),
Container( SizedBox(
margin: EdgeInsets.only(left: 10, right: 10), height: 10,
decoration: BoxDecoration( ),
borderRadius: Container(
BorderRadius.all(Radius.circular(6.0)), margin: EdgeInsets.only(left: 10, right: 10),
border: Border.all( decoration: BoxDecoration(
width: 1.0, color: HexColor("#CCCCCC"))), borderRadius:
padding: EdgeInsets.all(5), BorderRadius.all(Radius.circular(6.0)),
child: Column( border: Border.all(
crossAxisAlignment: CrossAxisAlignment.start, width: 1.0, color: HexColor("#CCCCCC"))),
children: [ padding: EdgeInsets.all(5),
// AppText( child: Column(
// TranslationBase.of(context).doctorName, crossAxisAlignment: CrossAxisAlignment.start,
// fontSize: 10, children: [
// ), // AppText(
AppTextFormField( // TranslationBase.of(context).remarks,
readOnly: true, // fontSize: 10,
hintText: profile['DoctorName'], // ),
borderColor: Colors.white, AppTextFormField(
onSaved: (value) {}, borderColor: Colors.white,
// validator: (value) { hintText: widget.extendedData != null
// return TextValidator().validateName(value); ? widget.extendedData.remarks
// }, : TranslationBase.of(context).remarks,
inputFormatter: ONLY_NUMBERS) onChanged: (value) {
], addSickLeave.remarks = value;
), },
), validator: (value) {
SizedBox( // return TextValidator().validateName(value);
height: 10, },
), inputFormatter: ONLY_LETTERS)
Container( ],
margin: EdgeInsets.only(left: 10, right: 10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(6.0)),
border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// AppText(
// TranslationBase.of(context).remarks,
// fontSize: 10,
// ),
AppTextFormField(
borderColor: Colors.white,
hintText: TranslationBase.of(context).remarks,
onSaved: (value) {},
// validator: (value) {
// return TextValidator().validateName(value);
// },
inputFormatter: ONLY_NUMBERS)
],
),
),
Container(
margin:
EdgeInsets.all(SizeConfig.widthMultiplier * 5),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
AppButton(
title: TranslationBase.of(context).add,
onPressed: () {
// _validateInputs();
},
), ),
], ),
), Container(
), margin: EdgeInsets.all(
Column( SizeConfig.widthMultiplier * 5),
children: [ child: Wrap(
Texts(TranslationBase.of(context) alignment: WrapAlignment.center,
.previousSickLeaveIssue + children: <Widget>[
' ') AppButton(
title: widget.isExtended == true
? TranslationBase.of(context).extend
: TranslationBase.of(context).add,
onPressed: () {
if (widget.isExtended) {
model2
.extendSickLeave(
widget.extendedData)
.then((value) => (value) {
print(value);
});
} else {
model2
.addSickLeave(addSickLeave)
.then((value) => print(value));
}
},
),
],
),
),
// Column(
// children: [
// Texts(TranslationBase.of(context)
// .previousSickLeaveIssue +
// ' ')
// ],
// )
], ],
) ),
], ),
), ),
), ),
), )));
),
));
} }
getProfile() async { getProfile() async {

@ -326,6 +326,16 @@ class TranslationBase {
String get addSickLeave => String get addSickLeave =>
localizedValues['add-sickleave'][locale.languageCode]; localizedValues['add-sickleave'][locale.languageCode];
String get add => localizedValues['add'][locale.languageCode]; String get add => localizedValues['add'][locale.languageCode];
String get approved => localizedValues['approved'][locale.languageCode];
String get extended => localizedValues['extended'][locale.languageCode];
String get pending => localizedValues['pending'][locale.languageCode];
String get leaveStartDate =>
localizedValues['leave-start-date'][locale.languageCode];
String get daysSickleave =>
localizedValues['days-sick-leave'][locale.languageCode];
String get extend => localizedValues['extend'][locale.languageCode];
String get extendSickLeave =>
localizedValues['extend-sickleave'][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

Loading…
Cancel
Save