feat: update position table

This commit is contained in:
efrilm 2025-08-04 00:09:51 +07:00
parent 6afd62b617
commit 6302ea0282
7 changed files with 251 additions and 26 deletions

View File

@ -1,4 +1,5 @@
import 'dart:developer';
import 'dart:ui';
import 'package:dartz/dartz.dart';
import 'package:dio/dio.dart';
import 'package:enaklo_pos/core/network/dio_client.dart';
@ -88,4 +89,40 @@ class TableRemoteDataSource {
return const Left('Unexpected error occurred');
}
}
Future<Either<String, bool>> updatePosition({
required String tableId,
required Offset position,
}) async {
try {
final authData = await AuthLocalDataSource().getAuthData();
final url = '${Variables.baseUrl}/api/v1/tables/$tableId';
final response = await dio.put(
url,
data: {
"position_x": position.dx.round(),
"position_y": position.dy.round(),
},
options: Options(
headers: {
'Authorization': 'Bearer ${authData.token}',
'Accept': 'application/json',
},
),
);
if (response.statusCode == 200 || response.statusCode == 201) {
return Right(true);
} else {
return const Left('Failed to create table');
}
} on DioException catch (e) {
log("Dio error: ${e.message}");
return Left(e.response?.data['message'] ?? 'Gagal membuat table');
} catch (e) {
log("Unexpected error: $e");
return const Left('Unexpected error occurred');
}
}
}

View File

@ -151,7 +151,7 @@ class _MyAppState extends State<MyApp> {
create: (context) => CreateTableBloc(TableRemoteDataSource()),
),
BlocProvider(
create: (context) => ChangePositionTableBloc(),
create: (context) => ChangePositionTableBloc(TableRemoteDataSource()),
),
BlocProvider(
create: (context) => GetTableBloc(TableRemoteDataSource()),

View File

@ -1,7 +1,7 @@
import 'dart:ui';
import 'package:bloc/bloc.dart';
import 'package:enaklo_pos/data/datasources/product_local_datasource.dart';
import 'package:enaklo_pos/data/datasources/table_remote_datasource.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'change_position_table_event.dart';
@ -10,11 +10,19 @@ part 'change_position_table_bloc.freezed.dart';
class ChangePositionTableBloc
extends Bloc<ChangePositionTableEvent, ChangePositionTableState> {
ChangePositionTableBloc() : super(_Initial()) {
final TableRemoteDataSource _tableRemoteDataSource;
ChangePositionTableBloc(this._tableRemoteDataSource)
: super(ChangePositionTableState.initial()) {
on<_ChangePositionTable>((event, emit) async {
emit(_Loading());
await ProductLocalDatasource.instance
.changePositionTable(event.tableId, event.position);
final result = await _tableRemoteDataSource.updatePosition(
tableId: event.tableId,
position: event.position,
);
result.fold(
(l) => emit(_Error(l)),
(r) => emit(_Success('Generate Success')),
);
emit(_Success('Generate Success'));
});
}

View File

@ -19,19 +19,20 @@ mixin _$ChangePositionTableEvent {
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() started,
required TResult Function(int tableId, Offset position) changePositionTable,
required TResult Function(String tableId, Offset position)
changePositionTable,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? started,
TResult? Function(int tableId, Offset position)? changePositionTable,
TResult? Function(String tableId, Offset position)? changePositionTable,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? started,
TResult Function(int tableId, Offset position)? changePositionTable,
TResult Function(String tableId, Offset position)? changePositionTable,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@ -120,7 +121,8 @@ class _$StartedImpl implements _Started {
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() started,
required TResult Function(int tableId, Offset position) changePositionTable,
required TResult Function(String tableId, Offset position)
changePositionTable,
}) {
return started();
}
@ -129,7 +131,7 @@ class _$StartedImpl implements _Started {
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? started,
TResult? Function(int tableId, Offset position)? changePositionTable,
TResult? Function(String tableId, Offset position)? changePositionTable,
}) {
return started?.call();
}
@ -138,7 +140,7 @@ class _$StartedImpl implements _Started {
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? started,
TResult Function(int tableId, Offset position)? changePositionTable,
TResult Function(String tableId, Offset position)? changePositionTable,
required TResult orElse(),
}) {
if (started != null) {
@ -189,7 +191,7 @@ abstract class _$$ChangePositionTableImplCopyWith<$Res> {
$Res Function(_$ChangePositionTableImpl) then) =
__$$ChangePositionTableImplCopyWithImpl<$Res>;
@useResult
$Res call({int tableId, Offset position});
$Res call({String tableId, Offset position});
}
/// @nodoc
@ -213,7 +215,7 @@ class __$$ChangePositionTableImplCopyWithImpl<$Res>
tableId: null == tableId
? _value.tableId
: tableId // ignore: cast_nullable_to_non_nullable
as int,
as String,
position: null == position
? _value.position
: position // ignore: cast_nullable_to_non_nullable
@ -229,7 +231,7 @@ class _$ChangePositionTableImpl implements _ChangePositionTable {
{required this.tableId, required this.position});
@override
final int tableId;
final String tableId;
@override
final Offset position;
@ -264,7 +266,8 @@ class _$ChangePositionTableImpl implements _ChangePositionTable {
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() started,
required TResult Function(int tableId, Offset position) changePositionTable,
required TResult Function(String tableId, Offset position)
changePositionTable,
}) {
return changePositionTable(tableId, position);
}
@ -273,7 +276,7 @@ class _$ChangePositionTableImpl implements _ChangePositionTable {
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? started,
TResult? Function(int tableId, Offset position)? changePositionTable,
TResult? Function(String tableId, Offset position)? changePositionTable,
}) {
return changePositionTable?.call(tableId, position);
}
@ -282,7 +285,7 @@ class _$ChangePositionTableImpl implements _ChangePositionTable {
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? started,
TResult Function(int tableId, Offset position)? changePositionTable,
TResult Function(String tableId, Offset position)? changePositionTable,
required TResult orElse(),
}) {
if (changePositionTable != null) {
@ -325,10 +328,10 @@ class _$ChangePositionTableImpl implements _ChangePositionTable {
abstract class _ChangePositionTable implements ChangePositionTableEvent {
const factory _ChangePositionTable(
{required final int tableId,
{required final String tableId,
required final Offset position}) = _$ChangePositionTableImpl;
int get tableId;
String get tableId;
Offset get position;
/// Create a copy of ChangePositionTableEvent
@ -345,6 +348,7 @@ mixin _$ChangePositionTableState {
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(String message) success,
required TResult Function(String message) error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
@ -352,6 +356,7 @@ mixin _$ChangePositionTableState {
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(String message)? success,
TResult? Function(String message)? error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
@ -359,6 +364,7 @@ mixin _$ChangePositionTableState {
TResult Function()? initial,
TResult Function()? loading,
TResult Function(String message)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@ -367,6 +373,7 @@ mixin _$ChangePositionTableState {
required TResult Function(_Initial value) initial,
required TResult Function(_Loading value) loading,
required TResult Function(_Success value) success,
required TResult Function(_Error value) error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
@ -374,6 +381,7 @@ mixin _$ChangePositionTableState {
TResult? Function(_Initial value)? initial,
TResult? Function(_Loading value)? loading,
TResult? Function(_Success value)? success,
TResult? Function(_Error value)? error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
@ -381,6 +389,7 @@ mixin _$ChangePositionTableState {
TResult Function(_Initial value)? initial,
TResult Function(_Loading value)? loading,
TResult Function(_Success value)? success,
TResult Function(_Error value)? error,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@ -452,6 +461,7 @@ class _$InitialImpl implements _Initial {
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(String message) success,
required TResult Function(String message) error,
}) {
return initial();
}
@ -462,6 +472,7 @@ class _$InitialImpl implements _Initial {
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(String message)? success,
TResult? Function(String message)? error,
}) {
return initial?.call();
}
@ -472,6 +483,7 @@ class _$InitialImpl implements _Initial {
TResult Function()? initial,
TResult Function()? loading,
TResult Function(String message)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) {
if (initial != null) {
@ -486,6 +498,7 @@ class _$InitialImpl implements _Initial {
required TResult Function(_Initial value) initial,
required TResult Function(_Loading value) loading,
required TResult Function(_Success value) success,
required TResult Function(_Error value) error,
}) {
return initial(this);
}
@ -496,6 +509,7 @@ class _$InitialImpl implements _Initial {
TResult? Function(_Initial value)? initial,
TResult? Function(_Loading value)? loading,
TResult? Function(_Success value)? success,
TResult? Function(_Error value)? error,
}) {
return initial?.call(this);
}
@ -506,6 +520,7 @@ class _$InitialImpl implements _Initial {
TResult Function(_Initial value)? initial,
TResult Function(_Loading value)? loading,
TResult Function(_Success value)? success,
TResult Function(_Error value)? error,
required TResult orElse(),
}) {
if (initial != null) {
@ -563,6 +578,7 @@ class _$LoadingImpl implements _Loading {
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(String message) success,
required TResult Function(String message) error,
}) {
return loading();
}
@ -573,6 +589,7 @@ class _$LoadingImpl implements _Loading {
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(String message)? success,
TResult? Function(String message)? error,
}) {
return loading?.call();
}
@ -583,6 +600,7 @@ class _$LoadingImpl implements _Loading {
TResult Function()? initial,
TResult Function()? loading,
TResult Function(String message)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) {
if (loading != null) {
@ -597,6 +615,7 @@ class _$LoadingImpl implements _Loading {
required TResult Function(_Initial value) initial,
required TResult Function(_Loading value) loading,
required TResult Function(_Success value) success,
required TResult Function(_Error value) error,
}) {
return loading(this);
}
@ -607,6 +626,7 @@ class _$LoadingImpl implements _Loading {
TResult? Function(_Initial value)? initial,
TResult? Function(_Loading value)? loading,
TResult? Function(_Success value)? success,
TResult? Function(_Error value)? error,
}) {
return loading?.call(this);
}
@ -617,6 +637,7 @@ class _$LoadingImpl implements _Loading {
TResult Function(_Initial value)? initial,
TResult Function(_Loading value)? loading,
TResult Function(_Success value)? success,
TResult Function(_Error value)? error,
required TResult orElse(),
}) {
if (loading != null) {
@ -701,6 +722,7 @@ class _$SuccessImpl implements _Success {
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(String message) success,
required TResult Function(String message) error,
}) {
return success(message);
}
@ -711,6 +733,7 @@ class _$SuccessImpl implements _Success {
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(String message)? success,
TResult? Function(String message)? error,
}) {
return success?.call(message);
}
@ -721,6 +744,7 @@ class _$SuccessImpl implements _Success {
TResult Function()? initial,
TResult Function()? loading,
TResult Function(String message)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) {
if (success != null) {
@ -735,6 +759,7 @@ class _$SuccessImpl implements _Success {
required TResult Function(_Initial value) initial,
required TResult Function(_Loading value) loading,
required TResult Function(_Success value) success,
required TResult Function(_Error value) error,
}) {
return success(this);
}
@ -745,6 +770,7 @@ class _$SuccessImpl implements _Success {
TResult? Function(_Initial value)? initial,
TResult? Function(_Loading value)? loading,
TResult? Function(_Success value)? success,
TResult? Function(_Error value)? error,
}) {
return success?.call(this);
}
@ -755,6 +781,7 @@ class _$SuccessImpl implements _Success {
TResult Function(_Initial value)? initial,
TResult Function(_Loading value)? loading,
TResult Function(_Success value)? success,
TResult Function(_Error value)? error,
required TResult orElse(),
}) {
if (success != null) {
@ -775,3 +802,155 @@ abstract class _Success implements ChangePositionTableState {
_$$SuccessImplCopyWith<_$SuccessImpl> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class _$$ErrorImplCopyWith<$Res> {
factory _$$ErrorImplCopyWith(
_$ErrorImpl value, $Res Function(_$ErrorImpl) then) =
__$$ErrorImplCopyWithImpl<$Res>;
@useResult
$Res call({String message});
}
/// @nodoc
class __$$ErrorImplCopyWithImpl<$Res>
extends _$ChangePositionTableStateCopyWithImpl<$Res, _$ErrorImpl>
implements _$$ErrorImplCopyWith<$Res> {
__$$ErrorImplCopyWithImpl(
_$ErrorImpl _value, $Res Function(_$ErrorImpl) _then)
: super(_value, _then);
/// Create a copy of ChangePositionTableState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? message = null,
}) {
return _then(_$ErrorImpl(
null == message
? _value.message
: message // ignore: cast_nullable_to_non_nullable
as String,
));
}
}
/// @nodoc
class _$ErrorImpl implements _Error {
const _$ErrorImpl(this.message);
@override
final String message;
@override
String toString() {
return 'ChangePositionTableState.error(message: $message)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$ErrorImpl &&
(identical(other.message, message) || other.message == message));
}
@override
int get hashCode => Object.hash(runtimeType, message);
/// Create a copy of ChangePositionTableState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$ErrorImplCopyWith<_$ErrorImpl> get copyWith =>
__$$ErrorImplCopyWithImpl<_$ErrorImpl>(this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(String message) success,
required TResult Function(String message) error,
}) {
return error(message);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(String message)? success,
TResult? Function(String message)? error,
}) {
return error?.call(message);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(String message)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) {
if (error != null) {
return error(message);
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(_Initial value) initial,
required TResult Function(_Loading value) loading,
required TResult Function(_Success value) success,
required TResult Function(_Error value) error,
}) {
return error(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult? Function(_Initial value)? initial,
TResult? Function(_Loading value)? loading,
TResult? Function(_Success value)? success,
TResult? Function(_Error value)? error,
}) {
return error?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(_Initial value)? initial,
TResult Function(_Loading value)? loading,
TResult Function(_Success value)? success,
TResult Function(_Error value)? error,
required TResult orElse(),
}) {
if (error != null) {
return error(this);
}
return orElse();
}
}
abstract class _Error implements ChangePositionTableState {
const factory _Error(final String message) = _$ErrorImpl;
String get message;
/// Create a copy of ChangePositionTableState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
_$$ErrorImplCopyWith<_$ErrorImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -4,7 +4,7 @@ part of 'change_position_table_bloc.dart';
class ChangePositionTableEvent with _$ChangePositionTableEvent {
const factory ChangePositionTableEvent.started() = _Started;
const factory ChangePositionTableEvent.changePositionTable({
required int tableId,
required String tableId,
required Offset position,
}) = _ChangePositionTable;
}

View File

@ -7,4 +7,5 @@ class ChangePositionTableState with _$ChangePositionTableState {
const factory ChangePositionTableState.loading() = _Loading;
const factory ChangePositionTableState.success(String message) = _Success;
const factory ChangePositionTableState.error(String message) = _Error;
}

View File

@ -110,12 +110,12 @@ class _TableManagementScreenState extends State<TableManagementScreen> {
feedback: TableWidget(table: table),
childWhenDragging: SizedBox.shrink(),
onDragEnd: (details) {
// context
// .read<ChangePositionTableBloc>()
// .add(ChangePositionTableEvent.changePositionTable(
// tableId: table.id,
// position: details.offset,
// ));
context
.read<ChangePositionTableBloc>()
.add(ChangePositionTableEvent.changePositionTable(
tableId: table.id ?? "",
position: details.offset,
));
},
child: TableWidget(table: table),
),