fix design issues

faiz_marathon_signalR_critical
Fatimah Alshammari 2 years ago
parent 414cc587ea
commit 3d11273738

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22.289" height="22.289" viewBox="0 0 22.289 22.289">
<g id="Group_963" data-name="Group 963" transform="translate(0 0)">
<g id="Group_8600" data-name="Group 8600" transform="translate(0 0)">
<path id="Path_1064" data-name="Path 1064" d="M19.024,3.264a11.145,11.145,0,1,0,3.265,7.879,11.145,11.145,0,0,0-3.265-7.879M16.878,15.525h0v0l-.565.561a2.972,2.972,0,0,1-2.8.8A9.875,9.875,0,0,1,10.639,15.6a13.25,13.25,0,0,1-2.262-1.824,13.352,13.352,0,0,1-1.69-2.051,10.4,10.4,0,0,1-1.27-2.571A2.972,2.972,0,0,1,6.159,6.12l.661-.661a.472.472,0,0,1,.667,0h0L9.577,7.547a.472.472,0,0,1,0,.667h0L8.351,9.442a1,1,0,0,0-.1,1.3,14.337,14.337,0,0,0,1.467,1.713,14.249,14.249,0,0,0,1.932,1.623,1.007,1.007,0,0,0,1.285-.111l1.185-1.2a.472.472,0,0,1,.667,0h0l2.091,2.1a.472.472,0,0,1,0,.667" transform="translate(0 -0.001)" fill="#ddd"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 901 B

@ -17,7 +17,7 @@ extension EmailValidator on String {
Widget toText10({Color? color, bool isBold = false, int? maxLine}) => Text( Widget toText10({Color? color, bool isBold = false, int? maxLine}) => Text(
this, this,
maxLines: maxlines, //maxLines: maxlines,
style: TextStyle(fontSize: 10, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4), style: TextStyle(fontSize: 10, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4),
); );
@ -83,6 +83,12 @@ extension EmailValidator on String {
style: TextStyle(fontSize: 20, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4), style: TextStyle(fontSize: 20, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4),
); );
Widget toText21({Color? color, bool isBold = false, FontWeight? weight, int? maxlines}) => Text(
this,
maxLines: maxlines,
style: TextStyle(color: color ?? MyColors.grey3AColor, fontSize: 21, letterSpacing: -0.31, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.w600)),
);
Widget toText22({Color? color, bool isBold = false}) => Text( Widget toText22({Color? color, bool isBold = false}) => Text(
this, this,
style: TextStyle(height: 1, color: color ?? MyColors.darkTextColor, fontSize: 22, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), style: TextStyle(height: 1, color: color ?? MyColors.darkTextColor, fontSize: 22, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),

@ -91,11 +91,11 @@ class _EmployeeDetailsState extends State<EmployeeDetails> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
80.height, 60.height,
Container( Container(
padding: EdgeInsets.only(left: 15, right: 15), padding: EdgeInsets.only(left: 15, right: 15, bottom: 8),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
IconButton( IconButton(
onPressed: () { onPressed: () {
@ -124,103 +124,80 @@ class _EmployeeDetailsState extends State<EmployeeDetails> {
.width; .width;
return Column( return Column(
children: [ children: [
Container( Stack(children: [
margin: EdgeInsets.fromLTRB(21, 0, 21, 10), Container(
child: Stack(children: [ margin: EdgeInsets.fromLTRB(21, 40, 21, 0),
Container( child: Column(
width: _width, children: [
margin: EdgeInsets.only(top: 50), Row(
//padding: EdgeInsets.only(right: 17, left: 17), mainAxisAlignment: MainAxisAlignment.spaceBetween,
decoration: BoxDecoration(
color: MyColors.whiteColor,
borderRadius: const BorderRadius.all(Radius.circular(15)),
boxShadow: [BoxShadow(color: MyColors.lightGreyColor, blurRadius: 15, spreadRadius: 3)],
),
child: Column(
children: [ children: [
Row( IconButton(
mainAxisAlignment: MainAxisAlignment.spaceBetween, onPressed: (){
children: [ if(getEmployeeSubordinates!.isFavorite != true){
IconButton( showFavoriteAlertDialog(context);
onPressed: (){ setState(() {});
if(getEmployeeSubordinates!.isFavorite != true){ }else{
showFavoriteAlertDialog(context); fetchChangeFav(
setState(() {}); email: getEmployeeSubordinates?.eMPLOYEEEMAILADDRESS ?? "",
}else{ employeName: getEmployeeSubordinates!.eMPLOYEENAME ?? "",
fetchChangeFav( image: getEmployeeSubordinates!.eMPLOYEEIMAGE ?? "",
email: getEmployeeSubordinates?.eMPLOYEEEMAILADDRESS ?? "", userName: getEmployeeSubordinates!.eMPLOYEENUMBER ?? "",
employeName: getEmployeeSubordinates!.eMPLOYEENAME ?? "", isFav: false,);
image: getEmployeeSubordinates!.eMPLOYEEIMAGE ?? "", setState(() {});
userName: getEmployeeSubordinates!.eMPLOYEENUMBER ?? "", } },
isFav: false,); icon: getEmployeeSubordinates!.isFavorite != true
setState(() {}); ? Icon(
} }, Icons.star_outline,
icon: getEmployeeSubordinates!.isFavorite != true size: 35,
? Icon( color: MyColors.green9CColor,
Icons.star_outline, )
size: 35, : Icon(
color: MyColors.green9CColor, Icons.star_outlined,
) size: 35,
: Icon( color: MyColors.green9CColor,
Icons.star_outlined, ),
size: 35, ),
color: MyColors.green9CColor, getEmployeeSubordinates?.eMPLOYEEMOBILENUMBER == ""
), ? SvgPicture.asset("assets/images/call-disable.svg", height: 25, width: 25,).paddingOnly(left:6, right: 17)
), : InkWell(
InkWell( onTap:() {
onTap:() { launchUrl(phoneNumber);
launchUrl(phoneNumber); },
}, child: SvgPicture.asset("assets/images/call.svg", height: 25, width: 25,).paddingOnly(left:6, right: 17),
child: SvgPicture.asset("assets/images/call.svg"), ),
),
],
).paddingOnly(left:6, right: 17, top: 16),
Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
/// card header
customLabel(getEmployeeSubordinates!.eMPLOYEENAME.toString(), 21, MyColors.grey3AColor, true),
customLabel(getEmployeeSubordinates!.eMPLOYEENUMBER.toString() + ' | ' + getEmployeeSubordinates!.jOBNAME.toString(), 13, MyColors.grey80Color, true),
customLabel(getEmployeeSubordinates!.eMPLOYEEEMAILADDRESS.toString(), 13, MyColors.grey3AColor, true),
],
).paddingOnly(bottom: 10, left: 35,right: 31),
], ],
), ),
), getEmployeeSubordinates!.eMPLOYEENAME!.toText21(maxlines: 2),
Container(height: 100, alignment: Alignment.center, child: ProfileImage()), ("${getEmployeeSubordinates!.eMPLOYEENUMBER!} | ${getEmployeeSubordinates!.jOBNAME!}").toText13(color: MyColors.grey80Color),
]) getEmployeeSubordinates!.eMPLOYEEEMAILADDRESS!.toText13(),
), ],
Container( ).objectContainerView(),
margin: EdgeInsets.fromLTRB(21, 8, 21, 10), ),
height: 260, Container(
padding: EdgeInsets.only(top: 15, bottom: 15), height: 68, alignment: Alignment.center, child: ProfileImage()).paddingOnly(top: 10),
decoration: BoxDecoration( ]),
color: Colors.white, 12.height,
borderRadius: const BorderRadius.all(Radius.circular(15)), Container(
boxShadow: [BoxShadow(color: MyColors.lightGreyColor, blurRadius: 15, spreadRadius: 3)], margin: EdgeInsets.fromLTRB(21, 0, 21, 0),
), child: Column(
child: Column( children: menu.map((ProfileMenu i) => rowItem(i, context)).toList(),
children: menu.map((ProfileMenu i) => rowItem(i, context)).toList(), ).objectContainerView(),
), ),
), // ),
], ],
); );
} }
Widget ProfileImage() => Widget ProfileImage() =>
CircleAvatar( getEmployeeSubordinates?.eMPLOYEEIMAGE == null
? SvgPicture.asset("assets/images/user.svg",height: 68, width: 68, )
: CircleAvatar(
radius: 70, radius: 70,
backgroundImage: MemoryImage(Utils.getPostBytes(getEmployeeSubordinates?.eMPLOYEEIMAGE)), backgroundImage: MemoryImage(Utils.getPostBytes(getEmployeeSubordinates?.eMPLOYEEIMAGE)),
backgroundColor: Colors.black, backgroundColor: Colors.black,
); );
Widget customLabel(String label, double size, Color color, bool isBold, {double padding = 0.0}) =>
Container(
padding: EdgeInsets.all(padding),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [Text(label, style: TextStyle(color: color, fontSize: size, fontWeight: isBold ? FontWeight.bold : FontWeight.normal))]));
Widget rowItem(obj, context) { Widget rowItem(obj, context) {
return InkWell( return InkWell(
@ -233,7 +210,6 @@ class _EmployeeDetailsState extends State<EmployeeDetails> {
leading: SvgPicture.asset('assets/images/' + obj.icon), leading: SvgPicture.asset('assets/images/' + obj.icon),
title: Text(obj.name, title: Text(obj.name,
style: TextStyle(color: MyColors.grey3AColor, style: TextStyle(color: MyColors.grey3AColor,
fontWeight: FontWeight.w600,
fontSize: 16)), fontSize: 16)),
trailing: Icon(Icons.arrow_forward, trailing: Icon(Icons.arrow_forward,
color: MyColors.grey3AColor,), color: MyColors.grey3AColor,),
@ -242,10 +218,10 @@ class _EmployeeDetailsState extends State<EmployeeDetails> {
} }
void setMenu(){ void setMenu(){
menu = [ menu = [
ProfileMenu(name: "Profile Details", icon: "profile_details.svg", route: AppRoutes.profileDetails, arguments:getEmployeeSubordinates), ProfileMenu(name: LocaleKeys.profileDetails.tr(), icon: "profile_details.svg", route: AppRoutes.profileDetails, arguments:getEmployeeSubordinates),
ProfileMenu(name: "Create Request", icon: "create_request.svg", route: AppRoutes.createRequest,arguments: getEmployeeSubordinates), ProfileMenu(name: LocaleKeys.createRequest.tr(), icon: "create_request.svg", route: AppRoutes.createRequest,arguments: getEmployeeSubordinates),
ProfileMenu(name: "View Attendance", icon: "view_attendance.svg", route: AppRoutes.viewAttendance, arguments: getEmployeeSubordinates), ProfileMenu(name: LocaleKeys.viewAttendance.tr(), icon: "view_attendance.svg", route: AppRoutes.viewAttendance, arguments: getEmployeeSubordinates),
ProfileMenu(name: "Team Members", icon: "team.svg", route: AppRoutes.teamMembers, arguments: getEmployeeSubordinates), ProfileMenu(name: LocaleKeys.teamMembers.tr(), icon: "team.svg", route: AppRoutes.teamMembers, arguments: getEmployeeSubordinates),
]; ];
} }

@ -126,42 +126,52 @@ class _MyTeamState extends State<MyTeam> {
itemCount: _textEditingController!.text.isNotEmpty ? getEmployeeSListOnSearch.length : getEmployeeSubordinatesList.length, itemCount: _textEditingController!.text.isNotEmpty ? getEmployeeSListOnSearch.length : getEmployeeSubordinatesList.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
var phoneNumber = Uri.parse('tel:${getEmployeeSListOnSearch[index].eMPLOYEEMOBILENUMBER}'); var phoneNumber = Uri.parse('tel:${getEmployeeSListOnSearch[index].eMPLOYEEMOBILENUMBER}');
return Row( return InkWell(
mainAxisAlignment: MainAxisAlignment.spaceBetween, onTap: () async {
children: [ Navigator.pushNamed(context, AppRoutes.employeeDetails, arguments: getEmployeeSListOnSearch[index]);
CircleAvatar( },
radius: 25, child: Row(
backgroundImage: MemoryImage(Utils.getPostBytes(getEmployeeSListOnSearch[index].eMPLOYEEIMAGE)), //mainAxisAlignment: MainAxisAlignment.spaceBetween,
backgroundColor: Colors.black, crossAxisAlignment: CrossAxisAlignment.start,
), children: [
10.width, getEmployeeSListOnSearch[index].eMPLOYEEIMAGE == null
Column( ? SvgPicture.asset("assets/images/user.svg",height: 34, width: 34, ).paddingOnly(top: 4)
crossAxisAlignment: CrossAxisAlignment.start, : Container(
children: [ height: 34,
// "Present".toText13(color: MyColors.greenColor), width: 34,
"${getEmployeeSListOnSearch[index].eMPLOYEENAME}".toText16(color: MyColors.grey3AColor), child: CircleAvatar(
"${getEmployeeSListOnSearch[index].pOSITIONNAME}".toText10(color: MyColors.grey57Color), radius: 25,
], backgroundImage: MemoryImage(Utils.getPostBytes(getEmployeeSListOnSearch[index].eMPLOYEEIMAGE)),
).expanded, backgroundColor: Colors.black,
Column( ).paddingOnly(top: 4),
children: [ ),
InkWell( 9.width,
onTap: () { Column(
launchUrl(phoneNumber); crossAxisAlignment: CrossAxisAlignment.start,
}, children: [
child: SvgPicture.asset("assets/images/call.svg"), // "Present".toText13(color: MyColors.greenColor),
), "${getEmployeeSListOnSearch[index].eMPLOYEENAME}".toText16(color: MyColors.grey3AColor),
21.height, "${getEmployeeSListOnSearch[index].pOSITIONNAME}".toText10(color: MyColors.grey57Color),
InkWell( ],
onTap: () async { ).expanded,
Navigator.pushNamed(context, AppRoutes.employeeDetails, arguments: getEmployeeSListOnSearch[index]); Column(
}, crossAxisAlignment: CrossAxisAlignment.end,
child: Icon(Icons.arrow_forward_outlined, color: MyColors.grey3AColor), children: [
), getEmployeeSListOnSearch[index].eMPLOYEEMOBILENUMBER == ""
], ? SvgPicture.asset("assets/images/call-disable.svg", width: 22, height: 22).paddingOnly(bottom: 23)
), : InkWell(
], onTap: () {
).objectContainerView(); launchUrl(phoneNumber);
},
child: SvgPicture.asset("assets/images/call.svg", width: 22, height: 22).paddingOnly(bottom: 23),
),
// 21.height,
Icon(Icons.arrow_forward_outlined, color: MyColors.grey3AColor),
],
).expanded,
],
).objectContainerView(),
);
}) })
], ],
), ),

@ -36,19 +36,19 @@ class _ProfileDetailsState extends State<ProfileDetails> {
children: [ children: [
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor), LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor),
"${getEmployeeSubordinates?.eMPLOYMENTCATEGORYMEANING}".toText16(isBold: true, color: MyColors.darkTextColor), "${getEmployeeSubordinates?.eMPLOYMENTCATEGORYMEANING}".toText16(color: MyColors.darkTextColor),
23.height, 23.height,
LocaleKeys.address.tr().toText13(color: MyColors.lightGrayColor), LocaleKeys.address.tr().toText13(color: MyColors.lightGrayColor),
"${getEmployeeSubordinates?.lOCATIONNAME}".toText16(isBold: true, color: MyColors.darkTextColor), "${getEmployeeSubordinates?.lOCATIONNAME}".toText16(color: MyColors.darkTextColor),
23.height, 23.height,
LocaleKeys.phoneNumber.tr().toText13(color: MyColors.lightGrayColor), LocaleKeys.phoneNumber.tr().toText13(color: MyColors.lightGrayColor),
"${getEmployeeSubordinates?.eMPLOYEEMOBILENUMBER}".toText16(isBold: true, color: MyColors.darkTextColor), "${getEmployeeSubordinates?.eMPLOYEEMOBILENUMBER}".toText16(color: MyColors.darkTextColor),
23.height, 23.height,
LocaleKeys.businessGroup.tr().toText13(color: MyColors.lightGrayColor), LocaleKeys.businessGroup.tr().toText13(color: MyColors.lightGrayColor),
"${getEmployeeSubordinates?.bUSINESSGROUPNAME}".toText16(isBold: true, color: MyColors.darkTextColor), "${getEmployeeSubordinates?.bUSINESSGROUPNAME}".toText16(color: MyColors.darkTextColor),
23.height, 23.height,
LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor), LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor),
"${getEmployeeSubordinates?.pAYROLLNAME}".toText16(isBold: true, color: MyColors.darkTextColor), "${getEmployeeSubordinates?.pAYROLLNAME}".toText16(color: MyColors.darkTextColor),
]).objectContainerView(), ]).objectContainerView(),
], ],
)); ));

@ -88,7 +88,9 @@ class _SubordinateLeaveState extends State<SubordinateLeave> {
], ],
).objectContainerView(), ).objectContainerView(),
if (showList) if (showList)
ListView.separated( getSubordinatesLeavesTotalList.isEmpty?
Utils.getNoDataWidget(context).paddingOnly(top: 21)
: ListView.separated(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
physics: ScrollPhysics(), physics: ScrollPhysics(),
padding: const EdgeInsets.all(21), padding: const EdgeInsets.all(21),
@ -98,9 +100,7 @@ class _SubordinateLeaveState extends State<SubordinateLeave> {
var diffDays = DateUtil.convertStringToDate(getSubordinatesLeavesTotalList[index].dATEEND!) var diffDays = DateUtil.convertStringToDate(getSubordinatesLeavesTotalList[index].dATEEND!)
.difference(DateUtil.convertStringToDate(getSubordinatesLeavesTotalList[index].dATESTART!)) .difference(DateUtil.convertStringToDate(getSubordinatesLeavesTotalList[index].dATESTART!))
.inDays; .inDays;
return getSubordinatesLeavesTotalList.isEmpty return Row(
? Utils.getNoDataWidget(context)
: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SvgPicture.asset("assets/images/user.svg", width: 34, height: 34).paddingOnly(top: 4), SvgPicture.asset("assets/images/user.svg", width: 34, height: 34).paddingOnly(top: 4),

@ -1,5 +1,6 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/api/my_team/my_team_api_client.dart'; import 'package:mohem_flutter_app/api/my_team/my_team_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
@ -59,7 +60,9 @@ class _TeamMembersState extends State<TeamMembers> {
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
getEmployeeSubordinatesList.isEmpty getEmployeeSubordinatesList.isEmpty
? Utils.getNoDataWidget(context): ? Container(
margin: const EdgeInsets.only(top: 100),
child: Utils.getNoDataWidget(context)):
ListView.separated( ListView.separated(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
shrinkWrap: true, shrinkWrap: true,
@ -69,40 +72,51 @@ class _TeamMembersState extends State<TeamMembers> {
itemCount: getEmployeeSubordinatesList.length, itemCount: getEmployeeSubordinatesList.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
var phoneNumber = Uri.parse('tel:${getEmployeeSubordinatesList[index].eMPLOYEEMOBILENUMBER}'); var phoneNumber = Uri.parse('tel:${getEmployeeSubordinatesList[index].eMPLOYEEMOBILENUMBER}');
return Container( return InkWell(
onTap: () async {
// Navigator.pushNamed(context, AppRoutes.employeeDetails, arguments: getEmployeeSubordinatesList[index]);
},
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
CircleAvatar( getEmployeeSubordinatesList[index].eMPLOYEEIMAGE == null
radius: 25, ? SvgPicture.asset("assets/images/user.svg",height: 34, width: 34, ).paddingOnly(top: 4)
backgroundImage: MemoryImage(Utils.getPostBytes(getEmployeeSubordinatesList[index].eMPLOYEEIMAGE)), : Container(
backgroundColor: Colors.black, height: 34,
), width: 34,
SizedBox(width: 10,), child: CircleAvatar(
radius: 25,
backgroundImage: MemoryImage(Utils.getPostBytes(getEmployeeSubordinatesList[index].eMPLOYEEIMAGE)),
backgroundColor: Colors.black,
).paddingOnly(top: 4),
),
9.width,
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
// "Present".toText13(color: MyColors.greenColor), // "Present".toText13(color: MyColors.greenColor),
"${getEmployeeSubordinatesList[index].eMPLOYEENAME}".toText16(isBold: true, color: MyColors.grey3AColor), "${getEmployeeSubordinatesList[index].eMPLOYEENAME}".toText16(color: MyColors.grey3AColor),
"${getEmployeeSubordinatesList[index].pOSITIONNAME}".toText10(isBold: true, color: MyColors.grey57Color), "${getEmployeeSubordinatesList[index].pOSITIONNAME}".toText10( color: MyColors.grey57Color),
], ],
).expanded, ).expanded,
Column( Column(
children: [ crossAxisAlignment: CrossAxisAlignment.end,
IconButton( children: [
onPressed: () { getEmployeeSubordinatesList[index].eMPLOYEEMOBILENUMBER == ""
launchUrl(phoneNumber); ? SvgPicture.asset("assets/images/call-disable.svg", width: 22, height: 22).paddingOnly(bottom: 23)
}, :InkWell(
icon: Icon( onTap: () {
Icons.whatsapp, launchUrl(phoneNumber);
color: Colors.green, },
), child: SvgPicture.asset("assets/images/call.svg", width: 22, height: 22).paddingOnly(bottom: 23),
), ),
], // 21.height,
), Icon(Icons.arrow_forward_outlined, color: MyColors.grey3AColor),
],
).expanded,
], ],
), ),
).objectContainerView(); ).objectContainerView();
}), }),
], ],
) )

Loading…
Cancel
Save