| import 'package:farm_tpf/custom_model/SuppliesUsing.dart'; | |||||
| import 'package:farm_tpf/custom_model/action_form/ActionUIField.dart'; | |||||
| class RequestActivity { | class RequestActivity { | ||||
| int tbActivityTypeId; | int tbActivityTypeId; | ||||
| int tbCropId; | int tbCropId; | ||||
| int totalCost; | |||||
| num totalCost; | |||||
| String executeDate; | String executeDate; | ||||
| String externalTable; | String externalTable; | ||||
| String description; | String description; | ||||
| String media; | |||||
| List<TbObjectUpdateDTO> tbObjectUpdateDTOList; | List<TbObjectUpdateDTO> tbObjectUpdateDTOList; | ||||
| List<TbSuppliesUsingDetailsDTOs> tbSuppliesUsingDetailsDTOs; | |||||
| List<SuppliesUsing> tbSuppliesUsingDetailsDTOs; | |||||
| List<TbNurseryDetailsDTO> tbNurseryDetailsDTOList; | List<TbNurseryDetailsDTO> tbNurseryDetailsDTOList; | ||||
| List<String> deletedImages; | |||||
| RequestActivity( | RequestActivity( | ||||
| {this.tbActivityTypeId, | {this.tbActivityTypeId, | ||||
| this.executeDate, | this.executeDate, | ||||
| this.externalTable, | this.externalTable, | ||||
| this.description, | this.description, | ||||
| this.media, | |||||
| this.tbObjectUpdateDTOList, | this.tbObjectUpdateDTOList, | ||||
| this.tbSuppliesUsingDetailsDTOs, | this.tbSuppliesUsingDetailsDTOs, | ||||
| this.tbNurseryDetailsDTOList}); | |||||
| this.tbNurseryDetailsDTOList, | |||||
| this.deletedImages}); | |||||
| RequestActivity.fromJson(Map<String, dynamic> json) { | RequestActivity.fromJson(Map<String, dynamic> json) { | ||||
| tbActivityTypeId = json['tbActivityTypeId']; | tbActivityTypeId = json['tbActivityTypeId']; | ||||
| executeDate = json['executeDate']; | executeDate = json['executeDate']; | ||||
| externalTable = json['externalTable']; | externalTable = json['externalTable']; | ||||
| description = json['description']; | description = json['description']; | ||||
| media = json['media']; | |||||
| if (json['tbObjectUpdateDTOList'] != null) { | if (json['tbObjectUpdateDTOList'] != null) { | ||||
| tbObjectUpdateDTOList = new List<TbObjectUpdateDTO>(); | tbObjectUpdateDTOList = new List<TbObjectUpdateDTO>(); | ||||
| json['tbObjectUpdateDTOList'].forEach((v) { | json['tbObjectUpdateDTOList'].forEach((v) { | ||||
| }); | }); | ||||
| } | } | ||||
| if (json['tbSuppliesUsingDetailsDTOs'] != null) { | if (json['tbSuppliesUsingDetailsDTOs'] != null) { | ||||
| tbSuppliesUsingDetailsDTOs = new List<TbSuppliesUsingDetailsDTOs>(); | |||||
| tbSuppliesUsingDetailsDTOs = new List<SuppliesUsing>(); | |||||
| json['tbSuppliesUsingDetailsDTOs'].forEach((v) { | json['tbSuppliesUsingDetailsDTOs'].forEach((v) { | ||||
| tbSuppliesUsingDetailsDTOs | |||||
| .add(new TbSuppliesUsingDetailsDTOs.fromJson(v)); | |||||
| tbSuppliesUsingDetailsDTOs.add(new SuppliesUsing.fromJson(v)); | |||||
| }); | }); | ||||
| } | } | ||||
| if (json['tbNurseryDetailsDTOList'] != null) { | if (json['tbNurseryDetailsDTOList'] != null) { | ||||
| data['executeDate'] = this.executeDate; | data['executeDate'] = this.executeDate; | ||||
| data['externalTable'] = this.externalTable; | data['externalTable'] = this.externalTable; | ||||
| data['description'] = this.description; | data['description'] = this.description; | ||||
| data['media'] = this.media; | |||||
| if (this.tbObjectUpdateDTOList != null) { | if (this.tbObjectUpdateDTOList != null) { | ||||
| data['tbObjectUpdateDTOList'] = | data['tbObjectUpdateDTOList'] = | ||||
| this.tbObjectUpdateDTOList.map((v) => v.toJson()).toList(); | this.tbObjectUpdateDTOList.map((v) => v.toJson()).toList(); | ||||
| data['tbNurseryDetailsDTOList'] = | data['tbNurseryDetailsDTOList'] = | ||||
| this.tbNurseryDetailsDTOList.map((v) => v.toJson()).toList(); | this.tbNurseryDetailsDTOList.map((v) => v.toJson()).toList(); | ||||
| } | } | ||||
| data['deletedImages'] = this.deletedImages; | |||||
| return data; | return data; | ||||
| } | } | ||||
| } | } | ||||
| class TbObjectUpdateDTO { | class TbObjectUpdateDTO { | ||||
| int tbObjectParameterId; | int tbObjectParameterId; | ||||
| String index; | String index; | ||||
| int id; | |||||
| ActionUIField tbObjectParameterDTO; | |||||
| TbObjectUpdateDTO({this.tbObjectParameterId, this.index}); | |||||
| TbObjectUpdateDTO( | |||||
| {this.tbObjectParameterId, | |||||
| this.index, | |||||
| this.id, | |||||
| this.tbObjectParameterDTO}); | |||||
| TbObjectUpdateDTO.fromJson(Map<String, dynamic> json) { | TbObjectUpdateDTO.fromJson(Map<String, dynamic> json) { | ||||
| tbObjectParameterId = json['tbObjectParameterId']; | tbObjectParameterId = json['tbObjectParameterId']; | ||||
| index = json['index']; | index = json['index']; | ||||
| id = json['id']; | |||||
| tbObjectParameterDTO = json['tbObjectParameterDTO'] != null | |||||
| ? new ActionUIField.fromJson(json['tbObjectParameterDTO']) | |||||
| : null; | |||||
| } | } | ||||
| Map<String, dynamic> toJson() { | Map<String, dynamic> toJson() { | ||||
| final Map<String, dynamic> data = new Map<String, dynamic>(); | final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
| data['tbObjectParameterId'] = this.tbObjectParameterId; | data['tbObjectParameterId'] = this.tbObjectParameterId; | ||||
| data['index'] = this.index; | data['index'] = this.index; | ||||
| return data; | |||||
| } | |||||
| } | |||||
| class TbSuppliesUsingDetailsDTOs { | |||||
| int tbSuppliesInWarehouseId; | |||||
| String dosage; | |||||
| num quantity; | |||||
| int tbEquipmentOfCustomerId; | |||||
| String howToUse; | |||||
| TbSuppliesUsingDetailsDTOs( | |||||
| {this.tbSuppliesInWarehouseId, | |||||
| this.dosage, | |||||
| this.quantity, | |||||
| this.tbEquipmentOfCustomerId, | |||||
| this.howToUse}); | |||||
| TbSuppliesUsingDetailsDTOs.fromJson(Map<String, dynamic> json) { | |||||
| tbSuppliesInWarehouseId = json['tbSuppliesInWarehouseId']; | |||||
| dosage = json['dosage']; | |||||
| quantity = json['quantity']; | |||||
| tbEquipmentOfCustomerId = json['tbEquipmentOfCustomerId']; | |||||
| howToUse = json['howToUse']; | |||||
| } | |||||
| Map<String, dynamic> toJson() { | |||||
| final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
| data['tbSuppliesInWarehouseId'] = this.tbSuppliesInWarehouseId; | |||||
| data['dosage'] = this.dosage; | |||||
| data['quantity'] = this.quantity; | |||||
| data['tbEquipmentOfCustomerId'] = this.tbEquipmentOfCustomerId; | |||||
| data['howToUse'] = this.howToUse; | |||||
| data['id'] = this.id; | |||||
| if (this.tbObjectParameterDTO != null) { | |||||
| data['tbObjectParameterDTO'] = this.tbObjectParameterDTO.toJson(); | |||||
| } | |||||
| return data; | return data; | ||||
| } | } | ||||
| } | } |
| import 'package:farm_tpf/custom_model/WaterType.dart'; | import 'package:farm_tpf/custom_model/WaterType.dart'; | ||||
| import 'package:farm_tpf/custom_model/account.dart'; | import 'package:farm_tpf/custom_model/account.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/RequestActivity.dart'; | |||||
| import 'package:farm_tpf/custom_model/password.dart'; | import 'package:farm_tpf/custom_model/password.dart'; | ||||
| import 'package:farm_tpf/custom_model/user.dart'; | import 'package:farm_tpf/custom_model/user.dart'; | ||||
| import 'package:farm_tpf/custom_model/user_request.dart'; | import 'package:farm_tpf/custom_model/user_request.dart'; | ||||
| import 'package:farm_tpf/utils/const_common.dart'; | import 'package:farm_tpf/utils/const_common.dart'; | ||||
| import 'package:flutter/material.dart'; | |||||
| import 'package:retrofit/retrofit.dart'; | import 'package:retrofit/retrofit.dart'; | ||||
| part 'rest_client.g.dart'; | part 'rest_client.g.dart'; | ||||
| @GET('/api/display-object-param-dynamic-form/{idAction}') | @GET('/api/display-object-param-dynamic-form/{idAction}') | ||||
| Future<ActionUIForm> getActionUIForm( | Future<ActionUIForm> getActionUIForm( | ||||
| @Path() idAction, @DioOptions() Options options); | @Path() idAction, @DioOptions() Options options); | ||||
| @GET('/api/get-detail-common-activity/{actionType}/{activityId}') | |||||
| Future<RequestActivity> getDetailActivityCommon( | |||||
| {@required @Path() String actionType, @required @Path() int activityId}); | |||||
| } | } |
| final queryParameters = <String, dynamic>{}; | final queryParameters = <String, dynamic>{}; | ||||
| final _data = <String, dynamic>{}; | final _data = <String, dynamic>{}; | ||||
| _data.addAll(userRequest?.toJson() ?? <String, dynamic>{}); | _data.addAll(userRequest?.toJson() ?? <String, dynamic>{}); | ||||
| _data.removeWhere((k, v) => v == null); | |||||
| final _result = await _dio.request<Map<String, dynamic>>( | final _result = await _dio.request<Map<String, dynamic>>( | ||||
| '/api/authenticate', | '/api/authenticate', | ||||
| queryParameters: queryParameters, | queryParameters: queryParameters, | ||||
| final queryParameters = <String, dynamic>{}; | final queryParameters = <String, dynamic>{}; | ||||
| final _data = <String, dynamic>{}; | final _data = <String, dynamic>{}; | ||||
| _data.addAll(password?.toJson() ?? <String, dynamic>{}); | _data.addAll(password?.toJson() ?? <String, dynamic>{}); | ||||
| _data.removeWhere((k, v) => v == null); | |||||
| await _dio.request<void>('/api/account/reset-password/finish', | await _dio.request<void>('/api/account/reset-password/finish', | ||||
| queryParameters: queryParameters, | queryParameters: queryParameters, | ||||
| options: RequestOptions( | options: RequestOptions( | ||||
| final queryParameters = <String, dynamic>{}; | final queryParameters = <String, dynamic>{}; | ||||
| final _data = <String, dynamic>{}; | final _data = <String, dynamic>{}; | ||||
| _data.addAll(password?.toJson() ?? <String, dynamic>{}); | _data.addAll(password?.toJson() ?? <String, dynamic>{}); | ||||
| _data.removeWhere((k, v) => v == null); | |||||
| await _dio.request<void>('/api/account/change-password', | await _dio.request<void>('/api/account/change-password', | ||||
| queryParameters: queryParameters, | queryParameters: queryParameters, | ||||
| options: RequestOptions( | options: RequestOptions( | ||||
| final queryParameters = <String, dynamic>{}; | final queryParameters = <String, dynamic>{}; | ||||
| final _data = <String, dynamic>{}; | final _data = <String, dynamic>{}; | ||||
| _data.addAll(account?.toJson() ?? <String, dynamic>{}); | _data.addAll(account?.toJson() ?? <String, dynamic>{}); | ||||
| _data.removeWhere((k, v) => v == null); | |||||
| final _result = await _dio.request<Map<String, dynamic>>( | final _result = await _dio.request<Map<String, dynamic>>( | ||||
| '/api/update-my-profile', | '/api/update-my-profile', | ||||
| queryParameters: queryParameters, | queryParameters: queryParameters, | ||||
| final queryParameters = <String, dynamic>{}; | final queryParameters = <String, dynamic>{}; | ||||
| final _data = <String, dynamic>{}; | final _data = <String, dynamic>{}; | ||||
| _data.addAll(updateNoti?.toJson() ?? <String, dynamic>{}); | _data.addAll(updateNoti?.toJson() ?? <String, dynamic>{}); | ||||
| _data.removeWhere((k, v) => v == null); | |||||
| await _dio.request<void>('/api/notifications/update', | await _dio.request<void>('/api/notifications/update', | ||||
| queryParameters: queryParameters, | queryParameters: queryParameters, | ||||
| options: RequestOptions( | options: RequestOptions( | ||||
| final queryParameters = <String, dynamic>{}; | final queryParameters = <String, dynamic>{}; | ||||
| final _data = <String, dynamic>{}; | final _data = <String, dynamic>{}; | ||||
| _data.addAll(crop?.toJson() ?? <String, dynamic>{}); | _data.addAll(crop?.toJson() ?? <String, dynamic>{}); | ||||
| _data.removeWhere((k, v) => v == null); | |||||
| await _dio.request<void>('/api/tb-crops', | await _dio.request<void>('/api/tb-crops', | ||||
| queryParameters: queryParameters, | queryParameters: queryParameters, | ||||
| options: RequestOptions( | options: RequestOptions( | ||||
| return value; | return value; | ||||
| } | } | ||||
| @override | |||||
| Future<RequestActivity> getDetailActivityCommon( | |||||
| {actionType, activityId}) async { | |||||
| ArgumentError.checkNotNull(actionType, 'actionType'); | |||||
| ArgumentError.checkNotNull(activityId, 'activityId'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| queryParameters.removeWhere((k, v) => v == null); | |||||
| final _data = <String, dynamic>{}; | |||||
| final _result = await _dio.request<Map<String, dynamic>>( | |||||
| '/api/get-detail-common-activity/$actionType/$activityId', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'GET', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| final value = RequestActivity.fromJson(_result.data); | |||||
| return value; | |||||
| } | |||||
| RequestOptions newRequestOptions(Options options) { | RequestOptions newRequestOptions(Options options) { | ||||
| if (options is RequestOptions) { | if (options is RequestOptions) { | ||||
| return options; | return options; |
| import 'package:farm_tpf/custom_model/WaterType.dart'; | import 'package:farm_tpf/custom_model/WaterType.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/CommonData.dart'; | import 'package:farm_tpf/custom_model/action_form/CommonData.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/RequestActivity.dart'; | |||||
| import 'package:farm_tpf/custom_model/user.dart'; | import 'package:farm_tpf/custom_model/user.dart'; | ||||
| import 'package:farm_tpf/custom_model/user_request.dart'; | import 'package:farm_tpf/custom_model/user_request.dart'; | ||||
| import 'package:farm_tpf/data/api/dio_provider.dart'; | import 'package:farm_tpf/data/api/dio_provider.dart'; | ||||
| onError(e); | onError(e); | ||||
| } | } | ||||
| } | } | ||||
| Future<RequestActivity> detailCommonAction( | |||||
| {@required int activityId, @required String activityType}) async { | |||||
| final client = RestClient(dio); | |||||
| return client.getDetailActivityCommon( | |||||
| actionType: activityType, activityId: activityId); | |||||
| } | |||||
| } | } |
| import 'package:bloc/bloc.dart'; | import 'package:bloc/bloc.dart'; | ||||
| import 'package:dio/dio.dart'; | import 'package:dio/dio.dart'; | ||||
| import 'package:equatable/equatable.dart'; | import 'package:equatable/equatable.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | |||||
| import 'package:farm_tpf/custom_model/action_form/RequestActivity.dart'; | |||||
| import 'package:farm_tpf/data/api/app_exception.dart'; | import 'package:farm_tpf/data/api/app_exception.dart'; | ||||
| import 'package:farm_tpf/data/repository/repository.dart'; | import 'package:farm_tpf/data/repository/repository.dart'; | ||||
| import 'package:meta/meta.dart'; | import 'package:meta/meta.dart'; | ||||
| final Repository repository; | final Repository repository; | ||||
| ActionUiCubit({@required this.repository}) : super(ActionUiInitial()); | ActionUiCubit({@required this.repository}) : super(ActionUiInitial()); | ||||
| Future<void> getActionUIForm(int idAction) async { | |||||
| Future<void> getActionUIForm( | |||||
| {@required bool isEdit, | |||||
| @required int actionId, | |||||
| @required String actionType, | |||||
| @required int activityId}) async { | |||||
| try { | try { | ||||
| emit(ActionUiLoading()); | emit(ActionUiLoading()); | ||||
| repository.getActionUIForm(idAction: idAction).then((value) { | |||||
| emit(ActionUiSuccess(item: value)); | |||||
| }); | |||||
| var actionDetail = RequestActivity(); | |||||
| var actionUIForm = await repository.getActionUIForm(idAction: actionId); | |||||
| if (isEdit) { | |||||
| try { | |||||
| actionDetail = await repository.detailCommonAction( | |||||
| activityId: activityId, activityType: actionType); | |||||
| print(actionDetail); | |||||
| } catch (e) { | |||||
| print(e); | |||||
| } | |||||
| } | |||||
| emit(ActionUiSuccess( | |||||
| actionUIForm: actionUIForm, activityDetail: actionDetail)); | |||||
| } on DioError catch (e) { | } on DioError catch (e) { | ||||
| emit(ActionUiFailure(errorString: AppException.handleError(e))); | emit(ActionUiFailure(errorString: AppException.handleError(e))); | ||||
| } | } |
| ActionUiFailure({@required this.errorString}); | ActionUiFailure({@required this.errorString}); | ||||
| } | } | ||||
| class ActionUiSuccess<T> extends ActionUiState { | |||||
| final T item; | |||||
| class ActionUiSuccess extends ActionUiState { | |||||
| final ActionUIForm actionUIForm; | |||||
| final RequestActivity activityDetail; | |||||
| ActionUiSuccess({this.item}); | |||||
| ActionUiSuccess({this.actionUIForm, this.activityDetail}); | |||||
| @override | @override | ||||
| List<Object> get props => [item]; | |||||
| List<Object> get props => [actionUIForm, activityDetail]; | |||||
| } | } |
| Widget _buildListWorker() { | Widget _buildListWorker() { | ||||
| return GetBuilder<ChangeWorker>(builder: (data) { | return GetBuilder<ChangeWorker>(builder: (data) { | ||||
| widget.onChangeWorkers(data.currentItems); | |||||
| if (data.currentItems.length == 0) { | |||||
| widget.onChangeWorkers(data.currentItems ?? []); | |||||
| if (data.currentItems?.length == 0 || data.currentItems == null) { | |||||
| return Container(); | return Container(); | ||||
| } else { | } else { | ||||
| return Container( | return Container( |
| import 'package:farm_tpf/custom_model/SuppliesUsing.dart'; | import 'package:farm_tpf/custom_model/SuppliesUsing.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/ActionUIField.dart'; | import 'package:farm_tpf/custom_model/action_form/ActionUIField.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/CommonData.dart'; | |||||
| import 'package:farm_tpf/custom_model/action_form/RequestActivity.dart'; | import 'package:farm_tpf/custom_model/action_form/RequestActivity.dart'; | ||||
| import 'package:farm_tpf/data/api/app_exception.dart'; | import 'package:farm_tpf/data/api/app_exception.dart'; | ||||
| import 'package:farm_tpf/data/repository/repository.dart'; | import 'package:farm_tpf/data/repository/repository.dart'; | ||||
| import 'package:farm_tpf/utils/pref.dart'; | import 'package:farm_tpf/utils/pref.dart'; | ||||
| import 'package:farm_tpf/utils/validators.dart'; | import 'package:farm_tpf/utils/validators.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter/scheduler.dart'; | |||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | import 'package:flutter_bloc/flutter_bloc.dart'; | ||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | ||||
| import 'package:farm_tpf/utils/formatter.dart'; | import 'package:farm_tpf/utils/formatter.dart'; | ||||
| import 'controller/ChangeSupplyUsing.dart'; | |||||
| import 'controller/ChangeWorker.dart'; | |||||
| import 'dung/widget_dung_supply.dart'; | import 'dung/widget_dung_supply.dart'; | ||||
| import 'nursery/widget_worker.dart'; | import 'nursery/widget_worker.dart'; | ||||
| import 'plant/widget_plant_supply.dart'; | import 'plant/widget_plant_supply.dart'; | ||||
| import 'spraying/widget_spraying_supply.dart'; | import 'spraying/widget_spraying_supply.dart'; | ||||
| import 'state_management_helper/change_dropdown_controller.dart'; | |||||
| import 'state_management_helper/change_file_controller.dart'; | import 'state_management_helper/change_file_controller.dart'; | ||||
| import 'util_action.dart'; | |||||
| class ActionScreen extends StatefulWidget { | class ActionScreen extends StatefulWidget { | ||||
| final bool isEdit; | |||||
| final int cropId; | final int cropId; | ||||
| final int idAction; | final int idAction; | ||||
| final String activityType; | final String activityType; | ||||
| final String title; | final String title; | ||||
| final int activityId; | |||||
| ActionScreen( | ActionScreen( | ||||
| {@required this.cropId, | |||||
| {@required this.isEdit, | |||||
| @required this.cropId, | |||||
| @required this.idAction, | @required this.idAction, | ||||
| @required this.title, | @required this.title, | ||||
| @required this.activityType}); | |||||
| @required this.activityType, | |||||
| @required this.activityId}); | |||||
| @override | @override | ||||
| _ActionScreenState createState() => _ActionScreenState(); | _ActionScreenState createState() => _ActionScreenState(); | ||||
| //CHECK NURSERY | //CHECK NURSERY | ||||
| if (widget.activityType == 'ACTIVE_TYPE_NURSERY') { | if (widget.activityType == 'ACTIVE_TYPE_NURSERY') { | ||||
| _requestActivity.tbNurseryDetailsDTOList = _nurseryDetails; | _requestActivity.tbNurseryDetailsDTOList = _nurseryDetails; | ||||
| } else if (widget.activityType == 'ACTIVE_TYPE_PLANTING') { | |||||
| var _listSupplyUsingDetail = <TbSuppliesUsingDetailsDTOs>[]; | |||||
| _supplyUsings.forEach((element) { | |||||
| var usingSupplyDetail = TbSuppliesUsingDetailsDTOs() | |||||
| ..tbSuppliesInWarehouseId = element.tbSuppliesInWarehouseId | |||||
| ..dosage = element.dosage | |||||
| ..quantity = element.quantity; | |||||
| _listSupplyUsingDetail.add(usingSupplyDetail); | |||||
| }); | |||||
| _requestActivity.tbSuppliesUsingDetailsDTOs = _listSupplyUsingDetail; | |||||
| } else if (widget.activityType == 'ACTIVE_TYPE_FERTILIZE' || | |||||
| } else if (widget.activityType == 'ACTIVE_TYPE_PLANTING' || | |||||
| widget.activityType == 'ACTIVE_TYPE_FERTILIZE' || | |||||
| widget.activityType == 'ACTIVE_TYPE_SPRAYING_PESTICIDES') { | widget.activityType == 'ACTIVE_TYPE_SPRAYING_PESTICIDES') { | ||||
| var _listSupplyUsingDetail = <TbSuppliesUsingDetailsDTOs>[]; | |||||
| _supplyUsings.forEach((element) { | |||||
| var usingSupplyDetail = TbSuppliesUsingDetailsDTOs() | |||||
| ..tbSuppliesInWarehouseId = element.tbSuppliesInWarehouseId | |||||
| ..dosage = element.dosage | |||||
| ..quantity = element.quantity | |||||
| ..howToUse = element.howToUse ?? '' | |||||
| ..tbEquipmentOfCustomerId = element.equipmentOfCustomerId; | |||||
| _listSupplyUsingDetail.add(usingSupplyDetail); | |||||
| }); | |||||
| _requestActivity.tbSuppliesUsingDetailsDTOs = _listSupplyUsingDetail; | |||||
| _requestActivity.tbSuppliesUsingDetailsDTOs = _supplyUsings; | |||||
| } | } | ||||
| //convert data to json | //convert data to json | ||||
| var activityCommonData = | var activityCommonData = | ||||
| } | } | ||||
| } | } | ||||
| void showDataWhenEdit() { | |||||
| //Show media | |||||
| if (Validators.stringNotNullOrEmpty(_requestActivity.media)) { | |||||
| BlocProvider.of<MediaHelperBloc>(context).add(ChangeListMedia( | |||||
| items: UtilAction.convertFilePathToMedia(_requestActivity.media))); | |||||
| } | |||||
| SchedulerBinding.instance.addPostFrameCallback((_) { | |||||
| if (widget.activityType == 'ACTIVE_TYPE_PLANTING' || | |||||
| widget.activityType == 'ACTIVE_TYPE_FERTILIZE' || | |||||
| widget.activityType == 'ACTIVE_TYPE_SPRAYING_PESTICIDES') { | |||||
| //list supply | |||||
| Get.find<ChangeSupplyUsing>() | |||||
| .changeInitList(_requestActivity.tbSuppliesUsingDetailsDTOs); | |||||
| } else if (widget.activityType == 'ACTIVE_TYPE_NURSERY') { | |||||
| //list nursery | |||||
| Get.find<ChangeWorker>() | |||||
| .changeInitList(_requestActivity.tbNurseryDetailsDTOList); | |||||
| } | |||||
| }); | |||||
| //Show value textfield | |||||
| if (_requestActivity.tbObjectUpdateDTOList != null) { | |||||
| print(textFieldControllers.keys.toList()); | |||||
| _requestActivity.tbObjectUpdateDTOList.forEach((element) { | |||||
| if (element.tbObjectParameterDTO.tbControlTypeName == 'text' || | |||||
| element.tbObjectParameterDTO.tbControlTypeName == 'textarea') { | |||||
| SchedulerBinding.instance.addPostFrameCallback((_) { | |||||
| textFieldControllers[element.tbObjectParameterId.toString()].text = | |||||
| element.index; | |||||
| }); | |||||
| } else if (element.tbObjectParameterDTO.tbControlTypeName == 'number') { | |||||
| SchedulerBinding.instance.addPostFrameCallback((_) { | |||||
| textFieldControllers[element.tbObjectParameterId.toString()].text = | |||||
| element.index.formatStringToStringDecimal(); | |||||
| }); | |||||
| } else { | |||||
| SchedulerBinding.instance.addPostFrameCallback((_) { | |||||
| print("SchedulerBinding"); | |||||
| if (element.tbObjectParameterDTO.tbControlTypeName == 'dropdown' || | |||||
| element.tbObjectParameterDTO.tbControlTypeName == 'radio') { | |||||
| var commonData = CommonData() | |||||
| ..id = int.tryParse(element.index) | |||||
| ..name = ''; | |||||
| Get.find<ChangeDropdownController>( | |||||
| tag: element.tbObjectParameterDTO.name) | |||||
| .change(commonData); | |||||
| } else if (element.tbObjectParameterDTO.tbControlTypeName == | |||||
| 'date') { | |||||
| Get.find<ChangeDateTimePicker>( | |||||
| tag: element.tbObjectParameterDTO.name) | |||||
| .change(element.index | |||||
| .convertStringServerDateTimeToLocalDateTime()); | |||||
| } | |||||
| }); | |||||
| } | |||||
| }); | |||||
| } else { | |||||
| // | |||||
| } | |||||
| } | |||||
| @override | @override | ||||
| Widget build(BuildContext context) => KeyboardDismisser( | Widget build(BuildContext context) => KeyboardDismisser( | ||||
| gestures: [ | gestures: [ | ||||
| ], | ], | ||||
| child: Scaffold( | child: Scaffold( | ||||
| backgroundColor: Colors.white, | backgroundColor: Colors.white, | ||||
| key: _scaffoldKey, | |||||
| // key: _scaffoldKey, | |||||
| appBar: AppBarWidget( | appBar: AppBarWidget( | ||||
| isBack: true, | isBack: true, | ||||
| action: InkWell( | action: InkWell( | ||||
| color: Colors.red, fontWeight: FontWeight.normal), | color: Colors.red, fontWeight: FontWeight.normal), | ||||
| ), | ), | ||||
| onTap: () { | onTap: () { | ||||
| FocusScopeNode currentFocus = FocusScope.of(context); | |||||
| if (!currentFocus.hasPrimaryFocus) { | |||||
| currentFocus.unfocus(); | |||||
| } | |||||
| // FocusScopeNode currentFocus = FocusScope.of(context); | |||||
| // if (!currentFocus.hasPrimaryFocus) { | |||||
| // currentFocus.unfocus(); | |||||
| // } | |||||
| _validateInputs(); | _validateInputs(); | ||||
| }, | }, | ||||
| ), | ), | ||||
| ), | ), | ||||
| body: KeyboardDismisser( | |||||
| child: MultiBlocProvider( | |||||
| body: MultiBlocProvider( | |||||
| providers: [ | providers: [ | ||||
| BlocProvider<ActionUiCubit>( | BlocProvider<ActionUiCubit>( | ||||
| create: (context) => | create: (context) => | ||||
| ActionUiCubit(repository: Repository()) | ActionUiCubit(repository: Repository()) | ||||
| ..getActionUIForm(widget.idAction)), | |||||
| ..getActionUIForm( | |||||
| actionId: widget.idAction, | |||||
| actionType: widget.activityType, | |||||
| isEdit: widget.isEdit, | |||||
| activityId: widget.activityId)), | |||||
| BlocProvider<MediaHelperBloc>( | BlocProvider<MediaHelperBloc>( | ||||
| create: (context) => | create: (context) => | ||||
| MediaHelperBloc()..add(ChangeListMedia(items: [])), | MediaHelperBloc()..add(ChangeListMedia(items: [])), | ||||
| print('loading...'); | print('loading...'); | ||||
| return Center(child: CircularProgressIndicator()); | return Center(child: CircularProgressIndicator()); | ||||
| } else if (state is ActionUiSuccess) { | } else if (state is ActionUiSuccess) { | ||||
| _actionUIForm = state.item as ActionUIForm; | |||||
| _actionUIForm = state.actionUIForm; | |||||
| _requestActivity = state.activityDetail; | |||||
| //CREATE UI | |||||
| _actionUIForm.objectParameterDTOList | _actionUIForm.objectParameterDTOList | ||||
| .forEach((element) { | .forEach((element) { | ||||
| //generate controller | //generate controller | ||||
| valueObjects.putIfAbsent( | valueObjects.putIfAbsent( | ||||
| element.id.toString(), () => ''); | element.id.toString(), () => ''); | ||||
| }); | }); | ||||
| //SHOW EDIT DATA | |||||
| if (widget.isEdit) { | |||||
| showDataWhenEdit(); | |||||
| } | |||||
| return Column( | return Column( | ||||
| children: [ | children: [ | ||||
| Padding( | Padding( | ||||
| ], | ], | ||||
| ); | ); | ||||
| } else if (state is ActionUiFailure) { | } else if (state is ActionUiFailure) { | ||||
| print('error'); | |||||
| return Text(state.errorString); | return Text(state.errorString); | ||||
| // LoadingDialog.hideLoadingDialog(context); | |||||
| } | } | ||||
| return Container(); | |||||
| }, | }, | ||||
| ), | ), | ||||
| ), | ), | ||||
| )), | )), | ||||
| )))); | |||||
| ))); | |||||
| @override | @override | ||||
| void dispose() { | void dispose() { | ||||
| _executeByController.dispose(); | _executeByController.dispose(); |
| return GestureDetector( | return GestureDetector( | ||||
| onTap: () { | onTap: () { | ||||
| Get.to(ActionScreen( | Get.to(ActionScreen( | ||||
| cropId: widget.cropId, | |||||
| idAction: actionType.id, | |||||
| title: actionType.description, | |||||
| activityType: actionType.name)); | |||||
| cropId: widget.cropId, | |||||
| idAction: actionType.id, | |||||
| title: actionType.description, | |||||
| activityType: actionType.name, | |||||
| activityId: -1, | |||||
| isEdit: false, | |||||
| )); | |||||
| }, | }, | ||||
| child: Container( | child: Container( | ||||
| margin: EdgeInsets.all(8), | margin: EdgeInsets.all(8), |
| import 'package:farm_tpf/presentation/custom_widgets/bloc/widget_row_plot_info.dart'; | import 'package:farm_tpf/presentation/custom_widgets/bloc/widget_row_plot_info.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/bottom_loader.dart'; | import 'package:farm_tpf/presentation/custom_widgets/bottom_loader.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/loading_list_page.dart'; | import 'package:farm_tpf/presentation/custom_widgets/loading_list_page.dart'; | ||||
| import 'package:farm_tpf/presentation/screens/actions/crop_status/sc_edit_action_crop_status.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/disease/sc_edit_action_disease.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/dung/sc_edit_action_dung.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/end/sc_edit_action_end.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/environment_update/sc_edit_action_environment_update.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/harvest/sc_edit_action_harvest.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/harvest_process/sc_edit_action_harvest_process.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/nursery/sc_edit_action_nursery.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/other/sc_edit_action_other.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/packing/sc_edit_action_packing.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/plant/sc_edit_action_plant.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/sell/sc_edit_action_sell.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/spraying/sc_edit_action_spraying.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/use_water/sc_edit_action_user_water.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/sc_action.dart'; | |||||
| import 'package:farm_tpf/utils/const_color.dart'; | import 'package:farm_tpf/utils/const_color.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | import 'package:flutter_bloc/flutter_bloc.dart'; | ||||
| name: '${item.activityTypeDescription ?? ''}', | name: '${item.activityTypeDescription ?? ''}', | ||||
| value: item.executeDate.format_DDMMYY_HHmm() ?? ''), | value: item.executeDate.format_DDMMYY_HHmm() ?? ''), | ||||
| onTap: () { | onTap: () { | ||||
| if (item.activityTypeName == "ACTIVE_TYPE_NURSERY") { | |||||
| Get.to(EditActionNurseryScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_STATUS_CROP") { | |||||
| Get.to(EditActionCropStatusScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_UPDATE_ENV") { | |||||
| Get.to(EditActionEnvironmentUpdate( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == | |||||
| "ACTIVE_TYPE_PESTS_INVESTIGATION") { | |||||
| Get.to(EditActionDiseaseScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_USE_WATER") { | |||||
| Get.to(EditActionUseWaterScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_HARVEST") { | |||||
| Get.to(EditActionHarvestScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_PACKING") { | |||||
| Get.to(EditActionPackingScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_SELL") { | |||||
| Get.to(EditActionSellScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_END") { | |||||
| Get.to(EditActionEndScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_STATUS_GROW") { | |||||
| Get.to(EditActionPlantScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_MANURING") { | |||||
| Get.to(EditActionDungScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_SPRAY") { | |||||
| Get.to(EditActionSprayingScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else if (item.activityTypeName == "ACTIVE_TYPE_PROCESS") { | |||||
| Get.to(EditActionHarvestProcessScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } else { | |||||
| Get.to(EditActionOtherScreen( | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| isEdit: true, | |||||
| )); | |||||
| } | |||||
| Get.to(ActionScreen( | |||||
| isEdit: true, | |||||
| cropId: item.cropId, | |||||
| activityId: item.id, | |||||
| activityType: item.activityTypeName, | |||||
| title: 'ActionScreen', | |||||
| idAction: item.activityTypeId, | |||||
| )); | |||||
| }); | }); | ||||
| } | } | ||||
| } | } |