고객사 목록 쿼리스트링 연동 및 공통 JSON 파서 도입
This commit is contained in:
@@ -9,6 +9,8 @@ enum CustomerTypeFilter { all, partner, general }
|
||||
enum CustomerStatusFilter { all, activeOnly, inactiveOnly }
|
||||
|
||||
class CustomerController extends ChangeNotifier {
|
||||
static const int defaultPageSize = 20;
|
||||
|
||||
CustomerController({required CustomerRepository repository})
|
||||
: _repository = repository;
|
||||
|
||||
@@ -20,6 +22,7 @@ class CustomerController extends ChangeNotifier {
|
||||
String _query = '';
|
||||
CustomerTypeFilter _typeFilter = CustomerTypeFilter.all;
|
||||
CustomerStatusFilter _statusFilter = CustomerStatusFilter.all;
|
||||
int _pageSize = defaultPageSize;
|
||||
String? _errorMessage;
|
||||
|
||||
PaginatedResult<Customer>? get result => _result;
|
||||
@@ -28,6 +31,7 @@ class CustomerController extends ChangeNotifier {
|
||||
String get query => _query;
|
||||
CustomerTypeFilter get typeFilter => _typeFilter;
|
||||
CustomerStatusFilter get statusFilter => _statusFilter;
|
||||
int get pageSize => _pageSize;
|
||||
String? get errorMessage => _errorMessage;
|
||||
|
||||
Future<void> fetch({int page = 1}) async {
|
||||
@@ -60,13 +64,16 @@ class CustomerController extends ChangeNotifier {
|
||||
|
||||
final response = await _repository.list(
|
||||
page: page,
|
||||
pageSize: _result?.pageSize ?? 20,
|
||||
pageSize: _pageSize,
|
||||
query: _query.isEmpty ? null : _query,
|
||||
isPartner: isPartner,
|
||||
isGeneral: isGeneral,
|
||||
isActive: isActive,
|
||||
);
|
||||
_result = response;
|
||||
if (response.pageSize > 0 && response.pageSize != _pageSize) {
|
||||
_pageSize = response.pageSize;
|
||||
}
|
||||
} catch (e) {
|
||||
_errorMessage = e.toString();
|
||||
} finally {
|
||||
@@ -76,20 +83,37 @@ class CustomerController extends ChangeNotifier {
|
||||
}
|
||||
|
||||
void updateQuery(String value) {
|
||||
if (_query == value) {
|
||||
return;
|
||||
}
|
||||
_query = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updateTypeFilter(CustomerTypeFilter filter) {
|
||||
if (_typeFilter == filter) {
|
||||
return;
|
||||
}
|
||||
_typeFilter = filter;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updateStatusFilter(CustomerStatusFilter filter) {
|
||||
if (_statusFilter == filter) {
|
||||
return;
|
||||
}
|
||||
_statusFilter = filter;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updatePageSize(int size) {
|
||||
if (size <= 0 || _pageSize == size) {
|
||||
return;
|
||||
}
|
||||
_pageSize = size;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<Customer?> create(CustomerInput input) async {
|
||||
_setSubmitting(true);
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user