Application/medcify/lib/pages/main/changeTiming/change_timing_bloc.dart

87 lines
2.4 KiB
Dart
Raw Normal View History

2022-09-26 06:33:52 +00:00
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:intl/intl.dart';
import 'package:medcify/models/timing_item.dart';
import '../../../components/alert.dart';
import '../../../navigation/navigation.dart';
import '../../../network/api_provider.dart';
abstract class ChangeTimingState{}
class ChangeTimingInitial extends ChangeTimingState{}
class ChangeTimingLoading extends ChangeTimingState{}
class ChangeTimingSuccess extends ChangeTimingState{}
class ChangeTimingFailure extends ChangeTimingState{
String error;
ChangeTimingFailure(this.error);
}
class ChangeTimingCubit extends Cubit<ChangeTimingState> {
ChangeTimingCubit() : super(ChangeTimingInitial());
List<TimingItem> timings = [];
Future<void> fetchTimings() async{
emit(ChangeTimingLoading());
final response = await ApiProvider.instance.fetchTimings();
if(response.status ?? false){
timings = response.timings ?? [];
emit(ChangeTimingSuccess());
}else{
emit(ChangeTimingFailure(response.message ?? "Something went wrong"));
}
}
void onOpeningTimeChanged(DateTime? val,int pos){
if(val != null){
timings[pos].openingTime = DateFormat().add_jms().format(val);
emit(ChangeTimingSuccess());
}
}
void onClosingTimeChanged(DateTime? val,int pos){
if(val != null){
timings[pos].closingTime = DateFormat().add_jms().format(val);
emit(ChangeTimingSuccess());
}
}
Future<void> updateTiming() async{
Navigation.instance.navigate("/loading");
final response = await ApiProvider.instance.updateTimings(timings);
Navigation.instance.goBack();
if(response.status ?? false){
showToast("Timings updated successfully");
fetchTimings();
}else{
showAlert(response.message ?? "Something went wrong");
}
}
void showToast(String msg) {
Fluttertoast.showToast(
msg: msg,
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM,
timeInSecForIosWeb: 1,
backgroundColor: Colors.grey.shade200,
textColor: Colors.black,
fontSize: 14.0
);
}
void showAlert(String err){
AlertX.instance.showAlert(
title: "Error",
msg: err,
positiveButtonText: "Done",
positiveButtonPressed: (){
Navigation.instance.goBack();
}
);
}
}