Commit 38baf053 authored by Ade Fikriatul  Ilmi's avatar Ade Fikriatul Ilmi

menambahkan get and put per column

parent e430a69a
......@@ -26,11 +26,11 @@ Future<bool> createSosmed (wa, ln, tw, ig, yt) async{
}
}
Future<bool> updateSosmed (wa, ln, tw, ig, yt) async {
Future<bool> updateSosmed (id, wa, ln, tw, ig, yt) async {
final response = await http
.put(Uri.parse('$cmd/settingsosmed/saveSettingSosmed'),
.post(Uri.parse('$cmd/settingsosmed/saveSettingSosmed'),
body: jsonEncode({
// 'idSettingSosmed': id,
'idSettingSosmed': id,
'whatsapp': wa,
'linkedin': ln,
'twitter': tw,
......@@ -53,4 +53,141 @@ Future<List<dynamic>> getSosmedDesc() async {
//Uri.parse('$qry/settingsosmed/getSettingSosmedById'));
Uri.parse('$qry/settingsosmed/getSettingSosmedByIdDesc'));
return jsonDecode(response.body)['data'];
}
Future<bool> createWA (wa) async{
final response = await http.post(
Uri.parse('$cmd/settingsosmed/saveWhatsapp'),
body: jsonEncode(
{
"whatsapp": wa,
// "linkedin": ln,
// "twitter": tw,
// "instagram": ig,
// "youtube": yt,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
});
if (response.statusCode == 200) {
return true;
} else {
return false;
}
}
Future<bool> createLN (ln) async{
final response = await http.post(
Uri.parse('$cmd/settingsosmed/saveLinkedin'),
body: jsonEncode(
{
// "whatsapp": wa,
"linkedin": ln,
// "twitter": tw,
// "instagram": ig,
// "youtube": yt,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
});
if (response.statusCode == 200) {
return true;
} else {
return false;
}
}
Future<bool> createTW (tw) async{
final response = await http.post(
Uri.parse('$cmd/settingsosmed/saveTwitter'),
body: jsonEncode(
{
// "whatsapp": wa,
// "linkedin": ln,
"twitter": tw,
// "instagram": ig,
// "youtube": yt,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
});
if (response.statusCode == 200) {
return true;
} else {
return false;
}
}
Future<bool> createIG (ig) async{
final response = await http.post(
Uri.parse('$cmd/settingsosmed/saveInstagram'),
body: jsonEncode(
{
// "whatsapp": wa,
// "linkedin": ln,
// "twitter": tw,
"instagram": ig,
// "youtube": yt,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
});
if (response.statusCode == 200) {
return true;
} else {
return false;
}
}
Future<bool> createYT (yt) async{
final response = await http.post(
Uri.parse('$cmd/settingsosmed/saveYoutube'),
body: jsonEncode(
{
// "whatsapp": wa,
// "linkedin": ln,
// "twitter": tw,
// "instagram": ig,
"youtube": yt,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
});
if (response.statusCode == 200) {
return true;
} else {
return false;
}
}
Future<List<dynamic>> getWaDesc() async {
var response = await http.get(
Uri.parse('$qry/settingsosmed/getWhatsappByIdDesc'));
return jsonDecode(response.body)['data'];
}
Future<List<dynamic>> getLnDesc() async {
var response = await http.get(
Uri.parse('$qry/settingsosmed/getLinkedinByIdDesc'));
return jsonDecode(response.body)['data'];
}
Future<List<dynamic>> getTwDesc() async {
var response = await http.get(
Uri.parse('$qry/settingsosmed/getTwitterByIdDesc'));
return jsonDecode(response.body)['data'];
}
Future<List<dynamic>> getIgDesc() async {
var response = await http.get(
Uri.parse('$qry/settingsosmed/getInstagramByIdDesc'));
return jsonDecode(response.body)['data'];
}
Future<List<dynamic>> getYtDesc() async {
var response = await http.get(
Uri.parse('$qry/settingsosmed/getYoutubeByIdDesc'));
return jsonDecode(response.body)['data'];
}
\ No newline at end of file
......@@ -29,6 +29,7 @@ Future<bool> signUp(namars,nors,alamatrs,namapic,nopic,email, password)async{
}
// return response.statusCode;
}
Future<bool> signIn(username, password)async{
final response = await http.post(
Uri.parse('$cmd/user/signin'),
......
......@@ -15,19 +15,22 @@ class _SosmedDashboardState extends State<SosmedDashboard> {
var enb = true;
final formKey = GlobalKey<FormState>();
TextEditingController waController = new TextEditingController();
// final waController = TextEditingController();
//TextEditingController waController = new TextEditingController();
final waController = TextEditingController();
final linkedController = TextEditingController();
final twitterController = TextEditingController();
final igController = TextEditingController();
final youtubeController = TextEditingController();
String wa = '';
String ln = '';
String tw ='';
String ig = '';
String yt = '';
String pattern = r'(\62)(\d{2,3})?\)?[ .-]?\d{2,4}[ .-]?\d{2,4}[ .-]?\d{2,4}';
@override
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
......@@ -35,7 +38,7 @@ class _SosmedDashboardState extends State<SosmedDashboard> {
color: const Color.fromRGBO(238, 224, 224, 1),
padding: EdgeInsets.symmetric(
horizontal: screenSize.width * 0.05,
vertical: screenSize.height * 0.05),
vertical: screenSize.height * 0.04),
child: Container(
width: screenSize.width,
height: screenSize.height * 0.8,
......@@ -62,14 +65,37 @@ class _SosmedDashboardState extends State<SosmedDashboard> {
),
primary: const Color.fromARGB(255, 0, 67, 192),
),
onPressed: () {
switch (btnText) {
onPressed: () async {
switch (btnText) {
case 'Save Setting':
createSosmed(wa, ln, tw, ig, yt);
{
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Save Data Success'),));
if (formKey.currentState!.validate()) {
// await updateSosmed(wa, ln, tw, ig, yt);
// await createSosmed(wa, ln, tw, ig, yt);
await createWA(wa);
await createLN(ln);
await createTW(tw);
await createIG(ig);
await createYT(yt);
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Data Saved'),
backgroundColor: Colors.green)
);
}else if(formKey.currentState!.validate()){}
else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Failed to save data, please edit all field'),
backgroundColor: Colors.red)
);
}
// waController.clear();
// linkedController.clear();
// twitterController.clear();
......@@ -96,16 +122,35 @@ class _SosmedDashboardState extends State<SosmedDashboard> {
});
break;
case 'Save Update':
createSosmed(wa, ln, tw, ig, yt);
{
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Save Data Success'),));
if (formKey.currentState!.validate()) {
// await updateSosmed(wa, ln, tw, ig, yt);
// await createSosmed(wa, ln, tw, ig, yt);
await createWA(wa);
await createLN(ln);
await createTW(tw);
await createIG(ig);
await createYT(yt);
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Data Saved'),
backgroundColor: Colors.green)
);
}else if(formKey.currentState!.validate()){}
else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Failed to save data, please edit all field'),
backgroundColor: Colors.red)
);
}
break;
default:
createSosmed(wa, ln, tw, ig, yt);
{
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Save Data Success'),));
}
}
},
child: Text(
......@@ -123,192 +168,266 @@ class _SosmedDashboardState extends State<SosmedDashboard> {
// endIndent: 0,
color: Colors.grey,
),
SizedBox(
height: 25,
// Text('Data Must Be Edited'),
// Text('For data that is not modified, Please copy last data , delete then paste again'),
const SizedBox(
height: 10,
),
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
listsosmed(
Icon(
Icons.whatsapp,
color: Colors.green,
),
TextFormField(
controller: waController,
decoration: InputDecoration(
hintText:
'Enter WhatsApp number without +, Ex : 6280000000000 '),
onChanged: (value) => wa = value,
enabled: enb,
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:FutureBuilder<List<dynamic>>(
future: getSosmedDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return Text('Active WA : '+pgm['whatsapp']);
},
),
) ,
);
}, child: Text('View Active'))),
SizedBox(
height: 10,
),
listsosmed(
Icon(
FontAwesomeIcons.linkedin,
color: Colors.blue,
),
TextFormField(
controller: linkedController,
decoration: InputDecoration(
hintText: 'Enter a new Linkedin link address'),
onChanged: (value) => ln = value,
enabled: enb,
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:FutureBuilder<List<dynamic>>(
future: getSosmedDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return Text('Active Linkedin : '+pgm['linkedin']);
},
),
) ,
);
}, child: Text('View Active'))),
SizedBox(
height: 10,
),
listsosmed(
Icon(
FontAwesomeIcons.twitterSquare,
color: Colors.blueAccent,
),
TextFormField(
controller: twitterController,
decoration: InputDecoration(
hintText: 'Enter a new Twitter link address'),
onChanged: (value) => tw = value,
enabled: enb,
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:FutureBuilder<List<dynamic>>(
future: getSosmedDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return Text('Active Twitter : '+pgm['twitter']);
},
),
) ,
);
}, child: Text('View Active'))),
SizedBox(
height: 10,
),
listsosmed(
Icon(
FontAwesomeIcons.instagramSquare,
color: Colors.pink,
),
TextFormField(
controller: igController,
decoration: InputDecoration(
hintText: 'Enter a new Instagram link address'),
onChanged: (value) => ig = value,
enabled: enb,
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:FutureBuilder<List<dynamic>>(
future: getSosmedDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return Text('Active Instagram : '+pgm['instagram']);
},
),
) ,
);
}, child: Text('View Active'))),
SizedBox(
height: 10,
),
listsosmed(
Icon(
FontAwesomeIcons.youtube,
color: Colors.red,
),
TextFormField(
controller: youtubeController,
decoration: InputDecoration(
hintText: 'Enter a new Youtube link address'),
onChanged: (value) => yt = value,
enabled: enb,
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:FutureBuilder<List<dynamic>>(
future: getSosmedDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return Text('Active Youtube : '+pgm['youtube']);
},
),
) ,
);
}, child: Text('View Active'))),
],
// FutureBuilder<List<dynamic>>(
// future: getSosmedDesc(),
// builder: (BuildContext context, AsyncSnapshot snapshot) {
// var pgm = snapshot.data[0];
//
// if (snapshot.hasError ||
// snapshot.data == null ||
// snapshot.connectionState == ConnectionState.waiting) {
// return const CircularProgressIndicator();
// }
// return
// },
// ),
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
FutureBuilder<List<dynamic>>(
future: getWaDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return listsosmed(
const Icon(
Icons.whatsapp,
color: Colors.green,
),
TextFormField(
controller: waController..text = pgm['whatsapp'],
//initialValue: pgm['whatsapp'],
decoration: const InputDecoration(
errorStyle: TextStyle(color: Colors.red),
hintText:
'Enter WhatsApp number without +, Ex : 6280000000000 ',
helperText: 'Enter WhatsApp number without +, Ex : 6280000000000 ',
),
onChanged: (value) => wa = value,
enabled: enb,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter your phone number';
}else if(!RegExp(pattern).hasMatch(value)){
return 'Please enter with 628 only';
}
return null;
},
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:Text('Active WA : '+pgm['whatsapp'])
) ,
);
}, child: const Text('View Active')));
},
),
const SizedBox(
height: 10,
),
FutureBuilder<List<dynamic>>(
future: getLnDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return listsosmed(
const Icon(
FontAwesomeIcons.linkedin,
color: Colors.blue,
),
TextFormField(
controller: linkedController..text = pgm['linkedin'],
//initialValue: pgm['linkedin'],
decoration: const InputDecoration(
errorStyle: TextStyle(color: Colors.red),
hintText: 'Enter a new Linkedin link address'),
onChanged: (value) => ln = value,
enabled: enb,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter linkedin link';
}
return null;
},
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:Text('Active Linkedin : '+pgm['linkedin'])
) ,
);
}, child: const Text('View Active')));
},
),
const SizedBox(
height: 10,
),
FutureBuilder<List<dynamic>>(
future: getTwDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return listsosmed(
const Icon(
FontAwesomeIcons.twitterSquare,
color: Colors.blueAccent,
),
TextFormField(
controller: twitterController..text = pgm['twitter'],
//initialValue: pgm['twitter'],
decoration: const InputDecoration(
errorStyle: TextStyle(color: Colors.red),
hintText: 'Enter a new Twitter link address'),
onChanged: (value) => tw = value,
enabled: enb,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter twitter link';
}
return null;
},
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:Text('Active Twitter : '+pgm['twitter'])
) ,
);
}, child: const Text('View Active')));
},
),
const SizedBox(
height: 10,
),
FutureBuilder<List<dynamic>>(
future: getIgDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return listsosmed(
const Icon(
FontAwesomeIcons.instagramSquare,
color: Colors.pink,
),
TextFormField(
controller: igController..text = pgm['instagram'],
// initialValue: pgm['instagram'],
decoration: const InputDecoration(
errorStyle: TextStyle(color: Colors.red),
hintText: 'Enter a new Instagram link address'),
onChanged: (value) => ig = value,
enabled: enb,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter instagram link';
}
return null;
},
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:Text('Active Instagram : '+pgm['instagram'])
) ,
);
}, child: const Text('View Active')));
},
),
const SizedBox(
height: 10,
),
FutureBuilder<List<dynamic>>(
future: getYtDesc(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
var pgm = snapshot.data[0];
if (snapshot.hasError ||
snapshot.data == null ||
snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return listsosmed(
const Icon(
FontAwesomeIcons.youtube,
color: Colors.red,
),
TextFormField(
controller: youtubeController..text = pgm['youtube'],
//initialValue: pgm['youtube'],
decoration: const InputDecoration(
errorStyle: TextStyle(color: Colors.red),
hintText: 'Enter a new Youtube link address'),
onChanged: (value) => yt = value,
enabled: enb,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter youtube link';
}
return null;
},
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context)=>
AlertDialog(
content:Text('Active Youtube : '+pgm['youtube'])
) ,
);
}, child: const Text('View Active')));
},
),
],
),
],
),
),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment