feat : buy in province all

This commit is contained in:
2025-07-16 11:47:51 +03:30
parent f1b2e20056
commit 6d5f918fbb
21 changed files with 1304 additions and 419 deletions

View File

@@ -1,3 +1,4 @@
import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart';
import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
import 'package:rasadyar_chicken/data/models/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
@@ -25,6 +26,7 @@ import 'package:rasadyar_core/core.dart';
import '../models/request/create_steward_free_bar/create_steward_free_bar.dart';
abstract class ChickenRepository {
//region Remote
Future<List<InventoryModel>?> getInventory({required String token, CancelToken? cancelToken});
Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({required String token});
@@ -153,4 +155,12 @@ abstract class ChickenRepository {
Future<void> editSegmentation({required String token, required SegmentationModel model});
Future<SegmentationModel?> deleteSegmentation({required String token, required String key});
//endregion
//region local
Future<void> initWidleyUsed();
WidelyUsedLocalModel? getAllWidely();
//endregion
}

View File

@@ -1,3 +1,6 @@
import 'package:rasadyar_chicken/data/datasource/local/chicken_local_imp.dart';
import 'package:rasadyar_chicken/data/datasource/remote/chicken_remote_imp.dart';
import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart';
import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
import 'package:rasadyar_chicken/data/models/request/create_steward_free_bar/create_steward_free_bar.dart';
@@ -25,37 +28,26 @@ import 'package:rasadyar_core/core.dart';
import 'chicken_repository.dart';
class ChickenRepositoryImpl implements ChickenRepository {
final DioRemote _httpClient;
class ChickenRepositoryImp implements ChickenRepository {
final ChickenRemoteDatasourceImp remote;
final ChickenLocalDataSourceImp local;
ChickenRepositoryImpl(this._httpClient);
ChickenRepositoryImp({required this.remote, required this.local});
//region Remote
@override
Future<List<InventoryModel>?> getInventory({
required String token,
CancelToken? cancelToken,
}) async {
eLog(_httpClient.baseUrl);
var res = await _httpClient.get(
'/roles-products/?role=Steward',
headers: {'Authorization': 'Bearer $token'},
fromJsonList: (json) =>
(json).map((item) => InventoryModel.fromJson(item as Map<String, dynamic>)).toList(),
);
return res.data;
var res = await remote.getInventory(token: token, cancelToken: cancelToken);
return res;
}
@override
Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({required String token}) async {
var res = await _httpClient.get(
'/kill-house-distribution-info/?role=Steward',
headers: {'Authorization': 'Bearer $token'},
fromJson: KillHouseDistributionInfo.fromJson,
);
return res.data;
var res = await remote.getKillHouseDistributionInfo(token: token);
return res;
}
@override
@@ -63,13 +55,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/bars_for_kill_house_dashboard/?role=Steward',
queryParameters: queryParameters,
headers: {'Authorization': 'Bearer $token'},
fromJson: BarInformation.fromJson,
);
return res.data;
var res = await remote.getGeneralBarInformation(token: token, queryParameters: queryParameters);
return res;
}
@override
@@ -77,16 +64,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/steward-allocation/',
headers: {'Authorization': 'Bearer $token'},
queryParameters: queryParameters,
fromJson: (json) => PaginationModel<WaitingArrivalModel>.fromJson(
json,
(json) => WaitingArrivalModel.fromJson(json as Map<String, dynamic>),
),
);
return res.data;
var res = await remote.getWaitingArrivals(token: token, queryParameters: queryParameters);
return res;
}
@override
@@ -94,11 +73,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required Map<String, dynamic> request,
}) async {
await _httpClient.put(
'/steward-allocation/0/',
headers: {'Authorization': 'Bearer $token'},
data: request,
);
await remote.setSateForArrivals(token: token, request: request);
}
@override
@@ -106,16 +81,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/steward-allocation/',
queryParameters: queryParameters,
headers: {'Authorization': 'Bearer $token'},
fromJson: (json) => PaginationModel.fromJson(
json,
(data) => ImportedLoadsModel.fromJson(data as Map<String, dynamic>),
),
);
return res.data;
var res = await remote.getImportedLoadsModel(token: token, queryParameters: queryParameters);
return res;
}
@override
@@ -123,16 +90,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/steward-allocation/',
queryParameters: queryParameters,
headers: {'Authorization': 'Bearer $token'},
fromJson: (json) => PaginationModel<AllocatedMadeModel>.fromJson(
json,
(json) => AllocatedMadeModel.fromJson(json as Map<String, dynamic>),
),
);
return res.data;
var res = await remote.getAllocatedMade(token: token, queryParameters: queryParameters);
return res;
}
@override
@@ -140,19 +99,12 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required Map<String, dynamic> allocation,
}) async {
var res = await _httpClient.put(
'/steward-allocation/0/',
headers: {'Authorization': 'Bearer $token'},
data: allocation,
);
await remote.confirmAllocation(token: token, allocation: allocation);
}
@override
Future<void> denyAllocation({required String token, required String allocationToken}) async {
await _httpClient.delete(
'/steward-allocation/0/?steward_allocation_key=$allocationToken',
headers: {'Authorization': 'Bearer $token'},
);
await remote.denyAllocation(token: token, allocationToken: allocationToken);
}
@override
@@ -160,22 +112,13 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required List<String> allocationTokens,
}) async {
await _httpClient.put(
'/steward-allocation/0/',
headers: {'Authorization': 'Bearer $token'},
data: {'steward_allocation_list': allocationTokens},
);
await remote.confirmAllAllocation(token: token, allocationTokens: allocationTokens);
}
@override
Future<List<ProductModel>?> getRolesProducts({required String token}) async {
var res = await _httpClient.get(
'/roles-products/?role=Steward',
headers: {'Authorization': 'Bearer $token'},
fromJsonList: (json) =>
json.map((item) => ProductModel.fromJson(item as Map<String, dynamic>)).toList(),
);
return res.data;
var res = await remote.getRolesProducts(token: token);
return res;
}
@override
@@ -183,24 +126,14 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/guilds/',
queryParameters: queryParameters,
headers: {'Authorization': 'Bearer $token'},
fromJsonList: (json) =>
json.map((item) => GuildModel.fromJson(item as Map<String, dynamic>)).toList(),
);
return res.data;
var res = await remote.getGuilds(token: token, queryParameters: queryParameters);
return res;
}
@override
Future<GuildProfile?> getProfile({required String token}) async {
var res = await _httpClient.get(
'/guilds/0/?profile',
headers: {'Authorization': 'Bearer $token'},
fromJson: GuildProfile.fromJson,
);
return res.data;
var res = await remote.getProfile(token: token);
return res;
}
@override
@@ -208,11 +141,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required SubmitStewardAllocation request,
}) async {
await _httpClient.post(
'/steward-allocation/',
headers: {'Authorization': 'Bearer $token'},
data: request.toJson(),
);
await remote.postSubmitStewardAllocation(token: token, request: request);
}
@override
@@ -220,11 +149,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
await _httpClient.delete(
'/steward-allocation/0/',
headers: {'Authorization': 'Bearer $token'},
queryParameters: queryParameters,
);
await remote.deleteStewardAllocation(token: token, queryParameters: queryParameters);
}
@override
@@ -232,11 +157,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required ConformAllocation request,
}) async {
await _httpClient.put(
'/steward-allocation/0/',
headers: {'Authorization': 'Bearer $token'},
queryParameters: request.toJson(),
);
await remote.updateStewardAllocation(token: token, request: request);
}
@override
@@ -245,12 +166,12 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String stratDate,
required String endDate,
}) async {
var res = await _httpClient.get(
'/steward_free_bar_dashboard/?date1=$stratDate&date2=$endDate&search=filter',
headers: {'Authorization': 'Bearer $token'},
fromJson: StewardFreeBarDashboard.fromJson,
var res = await remote.getStewardDashboard(
token: token,
stratDate: stratDate,
endDate: endDate,
);
return res.data;
return res;
}
@override
@@ -259,12 +180,12 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String stratDate,
required String endDate,
}) async {
var res = await _httpClient.get(
'/dashboard_kill_house_free_bar/?date1=$stratDate&date2=$endDate&search=filter',
headers: {'Authorization': 'Bearer $token'},
fromJson: DashboardKillHouseFreeBar.fromJson,
var res = await remote.getDashboardKillHouseFreeBar(
token: token,
stratDate: stratDate,
endDate: endDate,
);
return res.data;
return res;
}
@override
@@ -272,37 +193,23 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/steward_free_bar/',
var res = await remote.getStewardPurchasesOutSideOfTheProvince(
token: token,
queryParameters: queryParameters,
headers: {'Authorization': 'Bearer $token'},
fromJson: (json) => PaginationModel<StewardFreeBar>.fromJson(
json,
(json) => StewardFreeBar.fromJson(json as Map<String, dynamic>),
),
);
return res.data;
return res;
}
@override
Future<List<IranProvinceCityModel>?> getCity({required String provinceName}) async {
var res = await _httpClient.get(
'/iran_city/',
queryParameters: {'name': provinceName},
fromJsonList: (json) =>
json.map((item) => IranProvinceCityModel.fromJson(item as Map<String, dynamic>)).toList(),
);
return res.data;
var res = await remote.getCity(provinceName: provinceName);
return res;
}
@override
Future<List<IranProvinceCityModel>?> getProvince({CancelToken? cancelToken}) async {
var res = await _httpClient.get(
'/iran_province/',
fromJsonList: (json) =>
json.map((item) => IranProvinceCityModel.fromJson(item as Map<String, dynamic>)).toList(),
);
return res.data;
var res = await remote.getProvince(cancelToken: cancelToken);
return res;
}
@override
@@ -310,11 +217,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required CreateStewardFreeBar body,
}) async {
var res = await _httpClient.post(
'/steward_free_bar/',
headers: {'Authorization': 'Bearer $token'},
data: body.toJson(),
);
await remote.createStewardPurchasesOutSideOfTheProvince(token: token, body: body);
}
@override
@@ -322,10 +225,9 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required String stewardFreeBarKey,
}) async {
await _httpClient.delete(
'/steward_free_bar/0/',
headers: {'Authorization': 'Bearer $token'},
queryParameters: {'key': stewardFreeBarKey},
await remote.deleteStewardPurchasesOutSideOfTheProvince(
token: token,
stewardFreeBarKey: stewardFreeBarKey,
);
}
@@ -334,16 +236,11 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/out-province-carcasses-buyer/',
var res = await remote.getOutProvinceCarcassesBuyer(
token: token,
queryParameters: queryParameters,
headers: {'Authorization': 'Bearer $token'},
fromJson: (json) => PaginationModel<OutProvinceCarcassesBuyer>.fromJson(
json,
(json) => OutProvinceCarcassesBuyer.fromJson(json as Map<String, dynamic>),
),
);
return res.data;
return res;
}
@override
@@ -351,11 +248,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required OutProvinceCarcassesBuyer body,
}) async {
await _httpClient.post(
'/out-province-carcasses-buyer/',
data: body.toJson()..removeWhere((key, value) => value == null),
headers: {'Authorization': 'Bearer $token'},
);
await remote.createOutProvinceCarcassesBuyer(token: token, body: body);
}
@override
@@ -363,16 +256,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/steward_free_sale_bar/',
queryParameters: queryParameters,
headers: {'Authorization': 'Bearer $token'},
fromJson: (json) => PaginationModel<StewardFreeSaleBar>.fromJson(
json,
(json) => StewardFreeSaleBar.fromJson(json as Map<String, dynamic>),
),
);
return res.data;
var res = await remote.getStewardFreeSaleBar(token: token, queryParameters: queryParameters);
return res;
}
@override
@@ -380,11 +265,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required StewardFreeSaleBarRequest body,
}) async {
await _httpClient.post(
'/steward_free_sale_bar/',
data: body.toJson()..removeWhere((key, value) => value == null),
headers: {'Authorization': 'Bearer $token'},
);
await remote.createOutProvinceStewardFreeBar(token: token, body: body);
}
@override
@@ -392,33 +273,18 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required StewardFreeSaleBarRequest body,
}) async {
await _httpClient.put(
'/steward_free_sale_bar/0/',
data: body.toJson()
..removeWhere((key, value) => value == null)
..addAll({'carcassWeight': body.weightOfCarcasses, 'carcassCount': body.numberOfCarcasses}),
headers: {'Authorization': 'Bearer $token'},
);
await remote.updateOutProvinceStewardFreeBar(token: token, body: body);
}
@override
Future<UserProfile?> getUserProfile({required String token}) async {
var res = await _httpClient.get(
'/system_user_profile/?self-profile',
headers: {'Authorization': 'Bearer $token'},
fromJson: (json) => UserProfile.fromJson(json),
);
return res.data;
var res = await remote.getUserProfile(token: token);
return res;
}
@override
Future<void> updateUserProfile({required String token, required UserProfile userProfile}) async {
await _httpClient.put(
'/system_user_profile/?self-profile/0/',
headers: {'Authorization': 'Bearer $token'},
data: userProfile.toJson()..removeWhere((key, value) => value == null),
);
await remote.updateUserProfile(token: token, userProfile: userProfile);
}
@override
@@ -426,11 +292,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required ChangePasswordRequestModel model,
}) async {
await _httpClient.post(
'/api/change_password/',
headers: {'Authorization': 'Bearer $token'},
data: model.toJson()..removeWhere((key, value) => value == null),
);
await remote.updatePassword(token: token, model: model);
}
@override
@@ -438,45 +300,36 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/app-segmentation/',
queryParameters: queryParameters,
headers: {'Authorization': 'Bearer $token'},
fromJson: (json) => PaginationModel<SegmentationModel>.fromJson(
json,
(json) => SegmentationModel.fromJson(json as Map<String, dynamic>),
),
);
return res.data;
var res = await remote.getSegmentation(token: token, queryParameters: queryParameters);
return res;
}
@override
Future<void> createSegmentation({required String token, required SegmentationModel model}) async {
await _httpClient.post(
'/app-segmentation/',
data: model.toJson()..removeWhere((key, value) => value == null),
headers: {'Authorization': 'Bearer $token'},
);
await remote.createSegmentation(token: token, model: model);
}
@override
Future<void> editSegmentation({required String token, required SegmentationModel model}) async {
await _httpClient.put(
'/app-segmentation/0/',
data: model.toJson()..removeWhere((key, value) => value == null),
headers: {'Authorization': 'Bearer $token'},
);
await remote.editSegmentation(token: token, model: model);
}
@override
Future<SegmentationModel?> deleteSegmentation({required String token, required String key}) async {
var res = await _httpClient.delete(
'/app-segmentation/0/',
queryParameters: {'key': key},
headers: {'Authorization': 'Bearer $token'},
fromJson: (json) => SegmentationModel.fromJson(json),
);
return res.data;
Future<SegmentationModel?> deleteSegmentation({
required String token,
required String key,
}) async {
var res = await remote.deleteSegmentation(token: token, key: key);
return res;
}
//endregion
//region local
@override
WidelyUsedLocalModel? getAllWidely() => local.getAllWidely();
@override
Future<void> initWidleyUsed() async => local.initWidleyUsed();
//endregion
}