Fixed minor bugs on adding land faas and editing land faas
parent
874f9653c0
commit
9fe152b793
|
@ -41,6 +41,8 @@ class AdditionalItemBloc
|
|||
globalAdditionalItems.add(newAdditional);
|
||||
|
||||
emit(AdditionalItemsLoaded(globalAdditionalItems));
|
||||
} else {
|
||||
emit(AdditionalItemsErrorState('error'));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(AdditionalItemsErrorState(e.toString()));
|
||||
|
|
|
@ -18,7 +18,7 @@ class PropertyAppraisalBloc
|
|||
emit(PropertyAppraisalLoading());
|
||||
try {
|
||||
final appraisal = await PropertyAppraisalServices.instance.fetch();
|
||||
|
||||
print(appraisal);
|
||||
emit(PropertyAppraisalLoaded(appraisal));
|
||||
} catch (e) {
|
||||
emit(PropertyAppraisalErrorState(e.toString()));
|
||||
|
@ -30,11 +30,16 @@ class PropertyAppraisalBloc
|
|||
try {
|
||||
http.Response response = (await PropertyAppraisalServices.instance
|
||||
.update(event.appraisal, tempID.getInt('tempid')! - 1))!;
|
||||
|
||||
print('Appraisal');
|
||||
print(tempID.getInt('tempid')! - 1);
|
||||
print(event.appraisal.toJson());
|
||||
print(response.body);
|
||||
if (response.statusCode == 200) {
|
||||
emit(ShowPropertyAppraisalSuccessAlertState());
|
||||
}
|
||||
} catch (e) {
|
||||
print('app error');
|
||||
print(e.toString());
|
||||
emit(ShowPropertyAppraisalErrorAlertState());
|
||||
}
|
||||
});
|
||||
|
|
|
@ -18,10 +18,11 @@ class PropertyAssessmentBloc
|
|||
emit(PropertyAssessmentLoading());
|
||||
try {
|
||||
final tempID = await SharedPreferences.getInstance();
|
||||
|
||||
print(tempID.getInt('tempid')! - 1);
|
||||
final assessments = await PropertyAssessmentServices.instance
|
||||
.fetch(tempID.getInt('tempid')! + 1);
|
||||
.fetch(tempID.getInt('tempid')! - 1);
|
||||
|
||||
print(assessments);
|
||||
emit(PropertyAssessmentLoaded(assessments));
|
||||
} catch (e) {
|
||||
emit(PropertyAssessmentErrorState(e.toString()));
|
||||
|
|
|
@ -18,8 +18,6 @@ class PropertyAssessmentEditBloc
|
|||
on<LoadPropertyAssessmentEdit>((event, emit) async {
|
||||
emit(PropertyAssessmentEditLoading());
|
||||
try {
|
||||
final tempID = await SharedPreferences.getInstance();
|
||||
|
||||
final assessments =
|
||||
await PropertyAssessmentServices.instance.fetchEdit(event.id);
|
||||
|
||||
|
|
|
@ -27,6 +27,19 @@ class LandAppraisalBloc extends Bloc<LandAppraisalEvent, LandAppraisalState> {
|
|||
emit(LandAppraisalErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
on<LoadLandAppraisalEdit>((event, emit) async {
|
||||
emit(LandAppraisalLoading());
|
||||
try {
|
||||
final additionalItems =
|
||||
await LandAppraisalServices.instance.fetch(event.id);
|
||||
globalLandAppraisal.clear();
|
||||
globalLandAppraisal
|
||||
.addAll(additionalItems); // Append all items to the list
|
||||
emit(LandAppraisalLoaded(globalLandAppraisal));
|
||||
} catch (e) {
|
||||
emit(LandAppraisalErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
on<AddLandAppraisal>((event, emit) async {
|
||||
http.Response response =
|
||||
(await LandAppraisalServices.instance.add(event.land_appr))!;
|
||||
|
|
|
@ -16,6 +16,16 @@ class LoadLandAppraisal extends LandAppraisalEvent {
|
|||
List<Object> get props => [land_appr];
|
||||
}
|
||||
|
||||
class LoadLandAppraisalEdit extends LandAppraisalEvent {
|
||||
final List<LandAppr> land_appr;
|
||||
final int id;
|
||||
|
||||
const LoadLandAppraisalEdit({required this.land_appr, required this.id});
|
||||
|
||||
@override
|
||||
List<Object> get props => [land_appr];
|
||||
}
|
||||
|
||||
class AddLandAppraisal extends LandAppraisalEvent {
|
||||
final LandAppr land_appr;
|
||||
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
import 'package:bloc/bloc.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:unit2/model/passo/land_ext.dart';
|
||||
import 'package:unit2/sevices/passo/land/land_ext.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
part 'land_ext_edit_event.dart';
|
||||
part 'land_ext_edit_state.dart';
|
||||
|
||||
class LandExtEditBloc extends Bloc<LandExtEditEvent, LandExtEditState> {
|
||||
LandExtEditBloc() : super(LandExtEditInitial()) {
|
||||
on<LoadLandExtEdit>((event, emit) async {
|
||||
emit(LandExtEditLoading());
|
||||
try {
|
||||
final tempID = await SharedPreferences.getInstance();
|
||||
|
||||
final assessments = await LandExtServices.instance.fetchEdit(event.id);
|
||||
|
||||
emit(LandExtEditLoaded(assessments));
|
||||
} catch (e) {
|
||||
print(e.toString());
|
||||
emit(LandExtEditErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
// on<AddLandLocationEdit>((event, emit) async {
|
||||
// http.Response response = (await LandLocationService.instance
|
||||
// .addEdit(event.land_loc_edit))!;
|
||||
// print('Assessment');
|
||||
// print(response.statusCode);
|
||||
// print(response.body);
|
||||
// if (response.statusCode == 201) {
|
||||
// var jsonResponse = jsonDecode(response.body);
|
||||
// LandPropertyLoc newAssessment =
|
||||
// LandPropertyLoc.fromJson(jsonResponse['data']);
|
||||
|
||||
// globalLandLocationEdit = newAssessment;
|
||||
|
||||
// emit(LandLocationEditLoaded(globalLandLocationEdit));
|
||||
// }
|
||||
// });
|
||||
on<UpdateLandExtEdit>((event, emit) async {
|
||||
http.Response response = (await LandExtServices.instance
|
||||
.updateEdit(event.land_ext_edit, event.id))!;
|
||||
print('landloc edit');
|
||||
print(response.statusCode);
|
||||
print(response.body);
|
||||
// if (response.statusCode == 201) {
|
||||
// final faas = await PropertyInfoRepository.getUsers();
|
||||
// emit(FaasLoaded(faas));
|
||||
// }
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
part of 'land_ext_edit_bloc.dart';
|
||||
|
||||
class LandExtEditEvent extends Equatable {
|
||||
const LandExtEditEvent();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class LoadLandExtEdit extends LandExtEditEvent {
|
||||
final LandExt land_ext_edit;
|
||||
final int? id;
|
||||
|
||||
const LoadLandExtEdit({required this.land_ext_edit, required this.id});
|
||||
|
||||
@override
|
||||
List<Object> get props => [land_ext_edit];
|
||||
}
|
||||
|
||||
class AddLandExtEdit extends LandExtEditEvent {
|
||||
final LandExt land_ext_edit;
|
||||
|
||||
const AddLandExtEdit({required this.land_ext_edit});
|
||||
|
||||
@override
|
||||
List<Object> get props => [land_ext_edit];
|
||||
}
|
||||
|
||||
class UpdateLandExtEdit extends LandExtEditEvent {
|
||||
// ignore: non_constant_identifier_names
|
||||
final LandExt land_ext_edit;
|
||||
final int id;
|
||||
|
||||
// ignore: non_constant_identifier_names
|
||||
const UpdateLandExtEdit({required this.land_ext_edit, required this.id});
|
||||
|
||||
@override
|
||||
List<Object> get props => [land_ext_edit];
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
part of 'land_ext_edit_bloc.dart';
|
||||
|
||||
class LandExtEditState extends Equatable {
|
||||
const LandExtEditState();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class LandExtEditInitial extends LandExtEditState {}
|
||||
|
||||
class LandExtEditLoading extends LandExtEditState {}
|
||||
|
||||
class LandExtEditLoaded extends LandExtEditState {
|
||||
LandExtEditLoaded(this.land_ext_edit);
|
||||
final LandExt land_ext_edit;
|
||||
|
||||
@override
|
||||
List<Object> get props => [land_ext_edit];
|
||||
}
|
||||
|
||||
class LandExtEditErrorState extends LandExtEditState {
|
||||
LandExtEditErrorState(this.error);
|
||||
final String error;
|
||||
|
||||
@override
|
||||
List<Object> get props => [error];
|
||||
}
|
|
@ -29,6 +29,19 @@ class LandPropertyAssessmentBloc
|
|||
emit(LandPropertyAssessmentErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
on<LoadLandPropertyAssessmentEdit>((event, emit) async {
|
||||
emit(LandPropertyAssessmentLoading());
|
||||
try {
|
||||
final additionalItems =
|
||||
await LandPropertyAssessmentServices.instance.fetch(event.id);
|
||||
globalLandPropertyAssessment.clear();
|
||||
globalLandPropertyAssessment
|
||||
.addAll(additionalItems); // Append all items to the list
|
||||
emit(LandPropertyAssessmentLoaded(globalLandPropertyAssessment));
|
||||
} catch (e) {
|
||||
emit(LandPropertyAssessmentErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
on<AddLandPropertyAssessment>((event, emit) async {
|
||||
http.Response response = (await LandPropertyAssessmentServices.instance
|
||||
.add(event.assessment))!;
|
||||
|
|
|
@ -17,6 +17,17 @@ class LoadLandPropertyAssessment extends LandPropertyAssessmentEvent {
|
|||
List<Object> get props => [assessment];
|
||||
}
|
||||
|
||||
class LoadLandPropertyAssessmentEdit extends LandPropertyAssessmentEvent {
|
||||
final List<LandPropertyAssessment> assessment;
|
||||
final int id;
|
||||
|
||||
const LoadLandPropertyAssessmentEdit(
|
||||
{required this.assessment, required this.id});
|
||||
|
||||
@override
|
||||
List<Object> get props => [assessment];
|
||||
}
|
||||
|
||||
class AddLandPropertyAssessment extends LandPropertyAssessmentEvent {
|
||||
final LandPropertyAssessment assessment;
|
||||
|
||||
|
|
|
@ -25,6 +25,19 @@ class LandValueAdjustmentsBloc
|
|||
emit(LandValueAdjustmentsErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
on<LoadLandValueAdjustmentsEdit>((event, emit) async {
|
||||
emit(LandValueAdjustmentsLoading());
|
||||
try {
|
||||
final additionalItems =
|
||||
await ValueAdjustmentsServices.instance.fetch(event.id);
|
||||
globalLandValueAdjustments.clear();
|
||||
globalLandValueAdjustments
|
||||
.addAll(additionalItems); // Append all items to the list
|
||||
emit(LandValueAdjustmentsLoaded(globalLandValueAdjustments));
|
||||
} catch (e) {
|
||||
emit(LandValueAdjustmentsErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
on<AddLandValueAdjustments>((event, emit) async {
|
||||
http.Response response =
|
||||
(await ValueAdjustmentsServices.instance.add(event.val_adj))!;
|
||||
|
|
|
@ -16,6 +16,16 @@ class LoadLandValueAdjustments extends LandValueAdjustmentsEvent {
|
|||
List<Object> get props => [val_adj];
|
||||
}
|
||||
|
||||
class LoadLandValueAdjustmentsEdit extends LandValueAdjustmentsEvent {
|
||||
final List<ValueAdjustments> val_adj;
|
||||
final int id;
|
||||
|
||||
const LoadLandValueAdjustmentsEdit({required this.val_adj, required this.id});
|
||||
|
||||
@override
|
||||
List<Object> get props => [val_adj];
|
||||
}
|
||||
|
||||
class AddLandValueAdjustments extends LandValueAdjustmentsEvent {
|
||||
final ValueAdjustments val_adj;
|
||||
|
||||
|
|
|
@ -25,6 +25,21 @@ class OtherImprovementsBloc
|
|||
emit(OtherImprovementErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
on<LoadOtherImprovementEdit>((event, emit) async {
|
||||
emit(OtherImprovementLoading());
|
||||
try {
|
||||
final additionalItems =
|
||||
await OtherImprovementServices.instance.fetch(event.ids);
|
||||
print(additionalItems);
|
||||
globalOtherImprovement.clear();
|
||||
globalOtherImprovement
|
||||
.addAll(additionalItems); // Append all items to the list
|
||||
emit(OtherImprovementLoaded(globalOtherImprovement));
|
||||
} catch (e) {
|
||||
print(e.toString());
|
||||
emit(OtherImprovementErrorState(e.toString()));
|
||||
}
|
||||
});
|
||||
on<AddOtherImprovement>((event, emit) async {
|
||||
http.Response response =
|
||||
(await OtherImprovementServices.instance.add(event.other_imp))!;
|
||||
|
|
|
@ -16,6 +16,16 @@ class LoadOtherImprovement extends OtherImprovementsEvent {
|
|||
List<Object> get props => [other_imp];
|
||||
}
|
||||
|
||||
class LoadOtherImprovementEdit extends OtherImprovementsEvent {
|
||||
final List<OtherImprovements> other_imps;
|
||||
final int ids;
|
||||
|
||||
const LoadOtherImprovementEdit({required this.other_imps, required this.ids});
|
||||
|
||||
@override
|
||||
List<Object> get props => [other_imps];
|
||||
}
|
||||
|
||||
class AddOtherImprovement extends OtherImprovementsEvent {
|
||||
final OtherImprovements other_imp;
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:unit2/model/passo/memoranda.dart';
|
||||
|
@ -7,12 +9,22 @@ part 'memoranda_event.dart';
|
|||
part 'memoranda_state.dart';
|
||||
|
||||
class MemorandaBloc extends Bloc<MemorandaEvent, MemorandaState> {
|
||||
MemorandaBloc() : super(MemorandaInitial()) {
|
||||
MemorandaBloc() : super(MemorandaLoading()) {
|
||||
on<LoadMemoranda>((event, emit) async {
|
||||
emit(MemorandaLoading());
|
||||
try {
|
||||
final municipality = await MemorandaServices.instance.fetch();
|
||||
emit(MemorandaLoaded(municipality));
|
||||
final response = await MemorandaServices.instance.fetch();
|
||||
print('Memoranda bloc');
|
||||
print(response.statusCode);
|
||||
print(response.body);
|
||||
if (response.statusCode == 200) {
|
||||
final List result = jsonDecode(response.body)['data'];
|
||||
|
||||
emit(MemorandaLoaded(
|
||||
result.map(((e) => Memoranda.fromJson(e))).toList()));
|
||||
} else {
|
||||
emit(MemorandaErrorState(response.reasonPhrase!));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(MemorandaErrorState(e.toString()));
|
||||
}
|
||||
|
|
|
@ -12,15 +12,14 @@ class MemorandaInitial extends MemorandaState {}
|
|||
class MemorandaLoading extends MemorandaState {}
|
||||
|
||||
class MemorandaLoaded extends MemorandaState {
|
||||
MemorandaLoaded(this.memorada);
|
||||
final List<Memoranda> memorada;
|
||||
|
||||
const MemorandaLoaded(this.memorada);
|
||||
@override
|
||||
List<Object> get props => [memorada];
|
||||
}
|
||||
|
||||
class MemorandaErrorState extends MemorandaState {
|
||||
MemorandaErrorState(this.error);
|
||||
const MemorandaErrorState(this.error);
|
||||
final String error;
|
||||
|
||||
@override
|
||||
|
|
|
@ -27,6 +27,7 @@ class PropertyAppraisal {
|
|||
final String? totalpercentDepreciation;
|
||||
final String? marketValue;
|
||||
final String? totalArea;
|
||||
final String? actualUse;
|
||||
|
||||
PropertyAppraisal(
|
||||
{this.id,
|
||||
|
@ -44,7 +45,8 @@ class PropertyAppraisal {
|
|||
this.addItemsSubtotal,
|
||||
this.totalpercentDepreciation,
|
||||
this.marketValue,
|
||||
this.totalArea});
|
||||
this.totalArea,
|
||||
this.actualUse});
|
||||
|
||||
factory PropertyAppraisal.fromJson(Map<String, dynamic> json) =>
|
||||
PropertyAppraisal(
|
||||
|
@ -68,7 +70,7 @@ class PropertyAppraisal {
|
|||
totalpercentDepreciation: json["totalpercent_depreciation"],
|
||||
marketValue: json["market_value"],
|
||||
totalArea: json["total_area"],
|
||||
);
|
||||
actualUse: json["actual_use"]);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"id": id,
|
||||
|
@ -86,6 +88,7 @@ class PropertyAppraisal {
|
|||
"add_items_subtotal": addItemsSubtotal,
|
||||
"totalpercent_depreciation": totalpercentDepreciation,
|
||||
"market_value": marketValue,
|
||||
"total_area": totalArea
|
||||
"total_area": totalArea,
|
||||
"actual_use": actualUse
|
||||
};
|
||||
}
|
||||
|
|
|
@ -49,20 +49,10 @@ class _BldgLocationLandrefPage extends State<BldgLocationLandrefPage> {
|
|||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is MunicipalityLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
|
||||
if (state is MunicipalityErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
// Fluttertoast.showToast(
|
||||
// msg: onError,
|
||||
// fontSize: 24,
|
||||
// toastLength: Toast.LENGTH_LONG,
|
||||
// gravity: ToastGravity.CENTER,
|
||||
// backgroundColor: Colors.black,
|
||||
// textColor: Colors.white);
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
|
@ -75,6 +65,7 @@ class _BldgLocationLandrefPage extends State<BldgLocationLandrefPage> {
|
|||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
|
||||
if (state is BarangayLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
|
@ -82,13 +73,6 @@ class _BldgLocationLandrefPage extends State<BldgLocationLandrefPage> {
|
|||
if (state is BarangayErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
// Fluttertoast.showToast(
|
||||
// msg: onError,
|
||||
// fontSize: 24,
|
||||
// toastLength: Toast.LENGTH_LONG,
|
||||
// gravity: ToastGravity.CENTER,
|
||||
// backgroundColor: Colors.black,
|
||||
// textColor: Colors.white);
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
|
@ -130,7 +114,7 @@ class _BldgLocationLandrefPage extends State<BldgLocationLandrefPage> {
|
|||
borderRadius:
|
||||
BorderRadius.circular(5.0),
|
||||
),
|
||||
child: Align(
|
||||
child: const Align(
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
"AGUSAN DEL NORTE",
|
||||
|
@ -244,7 +228,7 @@ class _BldgLocationLandrefPage extends State<BldgLocationLandrefPage> {
|
|||
child:
|
||||
customTextField("Area", "", 'area'))
|
||||
]),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 50,
|
||||
),
|
||||
Row(
|
||||
|
|
|
@ -231,17 +231,4 @@ class _GeneralDescriptionPage extends State<GeneralDescriptionPage> {
|
|||
),
|
||||
);
|
||||
}
|
||||
|
||||
Future<bool> _waitForAddPropertyInfoToComplete() async {
|
||||
// Wait for the state change indicating completion
|
||||
final propertyInfoState = context.read<PropertyInfoBloc>().state;
|
||||
|
||||
if (propertyInfoState is ShowGenDescErrorAlertState) {
|
||||
// Check if the add operation was unsuccessful
|
||||
return true; // You'll need to define this in your state class
|
||||
}
|
||||
|
||||
// Return false if the state didn't change as expected
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:form_builder_validators/form_builder_validators.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
@ -502,8 +504,26 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocConsumer<AdditionalItemBloc, AdditionalItemState>(
|
||||
listener: (context, state) {},
|
||||
return Scaffold(
|
||||
body: ProgressHUD(
|
||||
padding: const EdgeInsets.all(24),
|
||||
backgroundColor: Colors.black87,
|
||||
indicatorWidget: const SpinKitFadingCircle(color: Colors.white),
|
||||
child: BlocConsumer<AdditionalItemBloc, AdditionalItemState>(
|
||||
listener: (context, state) {
|
||||
if (state is AdditionalItemsLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is AdditionalItemsLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is AdditionalItemsErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is AdditionalItemsLoaded) {
|
||||
return SingleChildScrollView(
|
||||
|
@ -532,7 +552,8 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
),
|
||||
Container(
|
||||
child: Text(
|
||||
formKey.currentState!.value['bldg_type'].unitValue +
|
||||
formKey.currentState!.value['bldg_type']
|
||||
.unitValue +
|
||||
' sq.m',
|
||||
textAlign: TextAlign.right,
|
||||
),
|
||||
|
@ -638,8 +659,8 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
Container(
|
||||
child: Text(
|
||||
calculateTotalConstructionCost(
|
||||
(double.parse(formKey
|
||||
.currentState!.value['total_area']) *
|
||||
(double.parse(formKey.currentState!
|
||||
.value['total_area']) *
|
||||
double.parse(formKey.currentState!
|
||||
.value['bldg_type'].unitValue)),
|
||||
state.items)
|
||||
|
@ -692,8 +713,8 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
Container(
|
||||
child: Text(
|
||||
calculateDepCost(
|
||||
(double.parse(formKey
|
||||
.currentState!.value['total_area']) *
|
||||
(double.parse(formKey.currentState!
|
||||
.value['total_area']) *
|
||||
double.parse(formKey.currentState!
|
||||
.value['bldg_type'].unitValue)),
|
||||
state.items,
|
||||
|
@ -739,8 +760,8 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
Container(
|
||||
child: Text(
|
||||
calculateMarketValue(
|
||||
(double.parse(formKey
|
||||
.currentState!.value['total_area']) *
|
||||
(double.parse(formKey.currentState!
|
||||
.value['total_area']) *
|
||||
double.parse(formKey.currentState!
|
||||
.value['bldg_type'].unitValue)),
|
||||
state.items,
|
||||
|
@ -761,7 +782,8 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
margin: const EdgeInsets.only(
|
||||
left: 20.0, right: 20.0),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
margin: const EdgeInsets.only(
|
||||
|
@ -769,7 +791,8 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
top: 20,
|
||||
right: 0,
|
||||
bottom: 20),
|
||||
child: const Text('PROPERTY ASSESSMENT',
|
||||
child: const Text(
|
||||
'PROPERTY ASSESSMENT',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 18),
|
||||
|
@ -781,62 +804,78 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
children: [
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
margin:
|
||||
const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: const Text(
|
||||
'Actual Use',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
margin:
|
||||
const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: const Text(
|
||||
'Market Value',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
margin:
|
||||
const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: const Text(
|
||||
'Ass. Level',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
margin:
|
||||
const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: const Text(
|
||||
'Ass. Value',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -847,27 +886,35 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
children: [
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
margin:
|
||||
const EdgeInsets.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: Text(
|
||||
formKey.currentState
|
||||
?.value['actual_use']!,
|
||||
?.value[
|
||||
'actual_use']!,
|
||||
style: TextStyle(
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
margin:
|
||||
const EdgeInsets.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: Text(
|
||||
calculateMarketValue(
|
||||
(double.parse(formKey
|
||||
|
@ -887,21 +934,23 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
FontWeight.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
margin:
|
||||
const EdgeInsets.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: Text(
|
||||
assessmentLevel(
|
||||
calculateMarketValue(
|
||||
(double.parse(formKey
|
||||
.currentState!
|
||||
.value[
|
||||
(double.parse(formKey.currentState!.value[
|
||||
'total_area']) *
|
||||
double.parse(formKey
|
||||
.currentState!
|
||||
|
@ -919,26 +968,30 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
FontWeight.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
margin:
|
||||
const EdgeInsets.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: Text(
|
||||
assessmentValue(
|
||||
calculateMarketValue(
|
||||
(double.parse(formKey.currentState!.value[
|
||||
'total_area']) *
|
||||
(double.parse(formKey.currentState!.value['total_area']) *
|
||||
double.parse(formKey
|
||||
.currentState!
|
||||
.value[
|
||||
'bldg_type']
|
||||
.unitValue)),
|
||||
state.items,
|
||||
state
|
||||
.items,
|
||||
depRate)
|
||||
.toString(),
|
||||
formKey.currentState
|
||||
|
@ -950,7 +1003,8 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
FontWeight.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -988,20 +1042,22 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
print(tempID.getInt('tempid'));
|
||||
var appraisals = PropertyAppraisal(
|
||||
id: 1,
|
||||
bldgapprDetailsId: tempID.getInt('tempid')!,
|
||||
unitconstructCost: formKey
|
||||
.currentState!.value['bldg_type'].unitValue,
|
||||
bldgapprDetailsId:
|
||||
tempID.getInt('tempid')! - 1,
|
||||
unitconstructCost: formKey.currentState!
|
||||
.value['bldg_type'].unitValue,
|
||||
buildingCore: 'test',
|
||||
unitconstructSubtotal:
|
||||
(double.parse(formKey.currentState!.value['total_area']) *
|
||||
double.parse(formKey.currentState!
|
||||
.value['bldg_type'].unitValue))
|
||||
double.parse(formKey
|
||||
.currentState!
|
||||
.value['bldg_type']
|
||||
.unitValue))
|
||||
.toString(),
|
||||
depreciationRate: depRate.toString(),
|
||||
depreciationCost: calculateDepCost(
|
||||
(double.parse(formKey.currentState!.value['total_area']) *
|
||||
double.parse(
|
||||
formKey.currentState!.value['bldg_type'].unitValue)),
|
||||
double.parse(formKey.currentState!.value['bldg_type'].unitValue)),
|
||||
state.items,
|
||||
depRate)
|
||||
.toString(),
|
||||
|
@ -1009,10 +1065,11 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
addItemsSubtotal: calculateAdditionalItems(state.items).toString(),
|
||||
totalpercentDepreciation: (depRate * 100).toStringAsFixed(2),
|
||||
marketValue: calculateMarketValue((double.parse(formKey.currentState!.value['total_area']) * double.parse(formKey.currentState!.value['bldg_type'].unitValue)), state.items, depRate).toString(),
|
||||
totalArea: formKey.currentState!.value['total_area']);
|
||||
totalArea: formKey.currentState!.value['total_area'],
|
||||
actualUse: "Residential");
|
||||
context.read<PropertyAppraisalBloc>()
|
||||
..add(
|
||||
AddPropertyAppraisal(appraisal: appraisals));
|
||||
..add(AddPropertyAppraisal(
|
||||
appraisal: appraisals));
|
||||
|
||||
widget.NextBtn();
|
||||
}
|
||||
|
@ -1028,6 +1085,8 @@ class _PropertyAppraisalPage extends State<PropertyAppraisalPage> {
|
|||
}
|
||||
return Container();
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,424 +40,6 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
String _memoranda = '';
|
||||
final focus = FocusNode();
|
||||
|
||||
String assessmentLevel(marketValues, property_class) {
|
||||
final marketValue = double.parse(marketValues);
|
||||
switch (property_class) {
|
||||
case 'Residential':
|
||||
if (marketValue < 175000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0;
|
||||
// });
|
||||
return '0 ';
|
||||
} else if (marketValue < 300000 && marketValue > 175000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.10;
|
||||
// });
|
||||
return '10 ';
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.20;
|
||||
// });
|
||||
return '20 ';
|
||||
} else if (marketValue < 750000 && marketValue > 500000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.25;
|
||||
// });
|
||||
return '25 ';
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.30;
|
||||
// });
|
||||
return '30 ';
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.35;
|
||||
// });
|
||||
return '35 ';
|
||||
} else if (marketValue < 5000000 && marketValue > 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.40;
|
||||
// });
|
||||
return '40 ';
|
||||
} else if (marketValue < 10000000 && marketValue > 5000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return '50 ';
|
||||
} else if (marketValue > 10000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return '60 ';
|
||||
}
|
||||
break;
|
||||
case 'Agricultural':
|
||||
if (marketValue < 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.45;
|
||||
// });
|
||||
return '45 ';
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return '50 ';
|
||||
} else if (marketValue < 750000 && marketValue > 5000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.55;
|
||||
// });
|
||||
return '55 ';
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return '60 ';
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.65;
|
||||
// });
|
||||
return '65 ';
|
||||
} else if (marketValue > 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.70;
|
||||
// });
|
||||
return '70 ';
|
||||
}
|
||||
break;
|
||||
case 'Commercial':
|
||||
if (marketValue < 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.30;
|
||||
// });
|
||||
return '30 ';
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.35;
|
||||
// });
|
||||
return '35 ';
|
||||
} else if (marketValue < 750000 && marketValue > 500000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.40;
|
||||
// });
|
||||
return '40 ';
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return '50 ';
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return '60 ';
|
||||
} else if (marketValue < 5000000 && marketValue > 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.70;
|
||||
// });
|
||||
return '70 ';
|
||||
} else if (marketValue < 10000000 && marketValue > 5000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.75;
|
||||
// });
|
||||
return '75 ';
|
||||
} else if (marketValue > 10000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.80;
|
||||
// });
|
||||
}
|
||||
break;
|
||||
case 'Industrial':
|
||||
if (marketValue < 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.30;
|
||||
// });
|
||||
return '30 ';
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.35;
|
||||
// });
|
||||
return '35 ';
|
||||
} else if (marketValue < 750000 && marketValue > 500000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.40;
|
||||
// });
|
||||
return '40 ';
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return '50 ';
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return '60 ';
|
||||
} else if (marketValue < 5000000 && marketValue > 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.70;
|
||||
// });
|
||||
return '70 ';
|
||||
} else if (marketValue < 10000000 && marketValue > 5000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.75;
|
||||
// });
|
||||
return '75 ';
|
||||
} else if (marketValue > 10000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.80;
|
||||
// });
|
||||
return '80 ';
|
||||
}
|
||||
break;
|
||||
case 'Mineral':
|
||||
break;
|
||||
case 'Timberland':
|
||||
if (marketValue < 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.45;
|
||||
// });
|
||||
return '45 ';
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return '50 ';
|
||||
} else if (marketValue < 750000 && marketValue > 500000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.55;
|
||||
// });
|
||||
return '55 ';
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return '60 ';
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.65;
|
||||
// });
|
||||
return '65 ';
|
||||
} else if (marketValue < 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.70;
|
||||
// });
|
||||
return '70 ';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
double assessmentValue(marketValues, property_class) {
|
||||
final marketValue = double.parse(marketValues);
|
||||
switch (property_class) {
|
||||
case 'Residential':
|
||||
if (marketValue < 175000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0;
|
||||
// });
|
||||
return marketValue * 0;
|
||||
} else if (marketValue < 300000 && marketValue > 175000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.10;
|
||||
// });
|
||||
return marketValue * 0.10;
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.20;
|
||||
// });
|
||||
return marketValue * 0.20;
|
||||
} else if (marketValue < 750000 && marketValue > 500000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.25;
|
||||
// });
|
||||
return marketValue * 0.25;
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.30;
|
||||
// });
|
||||
return marketValue * 0.30;
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.35;
|
||||
// });
|
||||
return marketValue * 0.35;
|
||||
} else if (marketValue < 5000000 && marketValue > 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.40;
|
||||
// });
|
||||
return marketValue * 0.40;
|
||||
} else if (marketValue < 10000000 && marketValue > 5000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return marketValue * 0.50;
|
||||
} else if (marketValue > 10000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return marketValue * 0.60;
|
||||
}
|
||||
break;
|
||||
case 'Agricultural':
|
||||
if (marketValue < 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.45;
|
||||
// });
|
||||
return marketValue * 0.45;
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return marketValue * 0.50;
|
||||
} else if (marketValue < 750000 && marketValue > 5000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.55;
|
||||
// });
|
||||
return marketValue * 0.55;
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return marketValue * 0.60;
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.65;
|
||||
// });
|
||||
return marketValue * 0.65;
|
||||
} else if (marketValue > 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.70;
|
||||
// });
|
||||
return marketValue * 0.70;
|
||||
}
|
||||
break;
|
||||
case 'Commercial':
|
||||
if (marketValue < 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.30;
|
||||
// });
|
||||
return marketValue * 0.30;
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.35;
|
||||
// });
|
||||
return marketValue * 0.35;
|
||||
} else if (marketValue < 750000 && marketValue > 500000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.40;
|
||||
// });
|
||||
return marketValue * 0.40;
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return marketValue * 0.50;
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return marketValue * 0.60;
|
||||
} else if (marketValue < 5000000 && marketValue > 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.70;
|
||||
// });
|
||||
return marketValue * 0.70;
|
||||
} else if (marketValue < 10000000 && marketValue > 5000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.75;
|
||||
// });
|
||||
return marketValue * 0.75;
|
||||
} else if (marketValue > 10000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.80;
|
||||
// });
|
||||
}
|
||||
break;
|
||||
case 'Industrial':
|
||||
if (marketValue < 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.30;
|
||||
// });
|
||||
return marketValue * 0.30;
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.35;
|
||||
// });
|
||||
return marketValue * 0.35;
|
||||
} else if (marketValue < 750000 && marketValue > 500000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.40;
|
||||
// });
|
||||
return marketValue * 0.40;
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return marketValue * 0.50;
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return marketValue * 0.60;
|
||||
} else if (marketValue < 5000000 && marketValue > 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.70;
|
||||
// });
|
||||
return marketValue * 0.70;
|
||||
} else if (marketValue < 10000000 && marketValue > 5000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.75;
|
||||
// });
|
||||
return marketValue * 0.75;
|
||||
} else if (marketValue > 10000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.80;
|
||||
// });
|
||||
return marketValue * 0.80;
|
||||
}
|
||||
break;
|
||||
case 'Mineral':
|
||||
break;
|
||||
case 'Timberland':
|
||||
if (marketValue < 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.45;
|
||||
// });
|
||||
return marketValue * 0.45;
|
||||
} else if (marketValue < 500000 && marketValue > 300000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.50;
|
||||
// });
|
||||
return marketValue * 0.50;
|
||||
} else if (marketValue < 750000 && marketValue > 500000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.55;
|
||||
// });
|
||||
return marketValue * 0.55;
|
||||
} else if (marketValue < 1000000 && marketValue > 750000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.60;
|
||||
// });
|
||||
return marketValue * 0.60;
|
||||
} else if (marketValue < 2000000 && marketValue > 1000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.65;
|
||||
// });
|
||||
return marketValue * 0.65;
|
||||
} else if (marketValue < 2000000) {
|
||||
// setState(() {
|
||||
// assessment_level = 0.70;
|
||||
// });
|
||||
return marketValue * 0.70;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
|
@ -466,111 +48,26 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
padding: const EdgeInsets.all(24),
|
||||
backgroundColor: Colors.black87,
|
||||
indicatorWidget: const SpinKitFadingCircle(color: Colors.white),
|
||||
child: BlocConsumer<PropertyAssessmentBloc, PropertyAssessmentState>(
|
||||
child: BlocConsumer<SignatoriesBloc, SignatoriesState>(
|
||||
listener: (context, state) {
|
||||
if (state is PropertyAssessmentLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is PropertyAssessmentLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is PropertyAssessmentErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
// Fluttertoast.showToast(
|
||||
// msg: onError,
|
||||
// fontSize: 24,
|
||||
// toastLength: Toast.LENGTH_LONG,
|
||||
// gravity: ToastGravity.CENTER,
|
||||
// backgroundColor: Colors.black,
|
||||
// textColor: Colors.white);
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is PropertyAssessmentLoaded) {
|
||||
return BlocConsumer<SignatoriesBloc, SignatoriesState>(
|
||||
listener: (context, state) {
|
||||
if (state is SignatoriesLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is SignatoriesLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is SignatoriesErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
// Fluttertoast.showToast(
|
||||
// msg: onError,
|
||||
// fontSize: 24,
|
||||
// toastLength: Toast.LENGTH_LONG,
|
||||
// gravity: ToastGravity.CENTER,
|
||||
// backgroundColor: Colors.black,
|
||||
// textColor: Colors.white);
|
||||
}
|
||||
// TODO: implement listener
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is SignatoriesLoaded) {
|
||||
final signatories = state.signatories;
|
||||
return BlocConsumer<MemorandaBloc, MemorandaState>(
|
||||
listener: (context, state) {
|
||||
if (state is MemorandaLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is MemorandaLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is MemorandaErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
// Fluttertoast.showToast(
|
||||
// msg: onError,
|
||||
// fontSize: 24,
|
||||
// toastLength: Toast.LENGTH_LONG,
|
||||
// gravity: ToastGravity.CENTER,
|
||||
// backgroundColor: Colors.black,
|
||||
// textColor: Colors.white);
|
||||
}
|
||||
// TODO: implement listener
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is MemorandaLoaded) {
|
||||
final memoranda = state.memorada;
|
||||
return BlocConsumer<PropertyAppraisalBloc,
|
||||
PropertyAppraisalState>(
|
||||
listener: (context, state) {
|
||||
if (state is PropertyAppraisalLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is PropertyAppraisalLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is PropertyAppraisalErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
// Fluttertoast.showToast(
|
||||
// msg: onError,
|
||||
// fontSize: 24,
|
||||
// toastLength: Toast.LENGTH_LONG,
|
||||
// gravity: ToastGravity.CENTER,
|
||||
// backgroundColor: Colors.black,
|
||||
// textColor: Colors.white);
|
||||
}
|
||||
}, builder: (context, state) {
|
||||
if (state is PropertyAppraisalLoaded) {
|
||||
return ListView(
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: Container(
|
||||
margin: const EdgeInsets.fromLTRB(
|
||||
0, 20, 0, 20),
|
||||
margin: const EdgeInsets.fromLTRB(0, 20, 0, 20),
|
||||
child: const Text(
|
||||
'PROPERTY ASSESSMENT cont..',
|
||||
style: TextStyle(
|
||||
|
@ -584,8 +81,8 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
Expanded(
|
||||
flex: 3,
|
||||
child: SingleChildScrollView(
|
||||
padding: EdgeInsets.only(
|
||||
left: 20.0, right: 20.0),
|
||||
padding:
|
||||
EdgeInsets.only(left: 20.0, right: 20.0),
|
||||
scrollDirection: Axis.vertical,
|
||||
child: Column(children: [
|
||||
Row(
|
||||
|
@ -646,8 +143,8 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
child: FormBuilderTextField(
|
||||
name: 'qtr',
|
||||
validator:
|
||||
FormBuilderValidators
|
||||
.compose([]),
|
||||
FormBuilderValidators.compose(
|
||||
[]),
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
|
@ -660,8 +157,8 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
child: FormBuilderTextField(
|
||||
name: 'yr',
|
||||
validator:
|
||||
FormBuilderValidators
|
||||
.compose([]),
|
||||
FormBuilderValidators.compose(
|
||||
[]),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -695,8 +192,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
items: signatories
|
||||
.map((signatories) =>
|
||||
DropdownMenuItem(
|
||||
value:
|
||||
signatories,
|
||||
value: signatories,
|
||||
child: Text(
|
||||
'${signatories.firstname} ${signatories.middlename} ${signatories.lastname}'),
|
||||
))
|
||||
|
@ -712,18 +208,15 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
children: [
|
||||
SizedBox(
|
||||
width: 100,
|
||||
child:
|
||||
FormBuilderDateTimePicker(
|
||||
child: FormBuilderDateTimePicker(
|
||||
name: 'app_date',
|
||||
initialEntryMode:
|
||||
DatePickerEntryMode
|
||||
.calendarOnly,
|
||||
initialValue:
|
||||
DateTime.now(),
|
||||
initialValue: DateTime.now(),
|
||||
inputType: InputType.date,
|
||||
|
||||
initialTime:
|
||||
const TimeOfDay(
|
||||
initialTime: const TimeOfDay(
|
||||
hour: 8, minute: 0),
|
||||
// locale: const Locale.fromSubtags(languageCode: 'fr'),
|
||||
),
|
||||
|
@ -758,8 +251,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
items: signatories
|
||||
.map((signatories) =>
|
||||
DropdownMenuItem(
|
||||
value:
|
||||
signatories,
|
||||
value: signatories,
|
||||
child: Text(
|
||||
'${signatories.firstname} ${signatories.middlename} ${signatories.lastname}'),
|
||||
))
|
||||
|
@ -775,18 +267,15 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
children: [
|
||||
SizedBox(
|
||||
width: 100,
|
||||
child:
|
||||
FormBuilderDateTimePicker(
|
||||
child: FormBuilderDateTimePicker(
|
||||
name: 'rec_date',
|
||||
initialEntryMode:
|
||||
DatePickerEntryMode
|
||||
.calendarOnly,
|
||||
initialValue:
|
||||
DateTime.now(),
|
||||
initialValue: DateTime.now(),
|
||||
inputType: InputType.date,
|
||||
|
||||
initialTime:
|
||||
const TimeOfDay(
|
||||
initialTime: const TimeOfDay(
|
||||
hour: 8, minute: 0),
|
||||
// locale: const Locale.fromSubtags(languageCode: 'fr'),
|
||||
),
|
||||
|
@ -808,8 +297,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
),
|
||||
)),
|
||||
Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Column(
|
||||
children: [
|
||||
|
@ -822,8 +310,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
items: signatories
|
||||
.map((signatories) =>
|
||||
DropdownMenuItem(
|
||||
value:
|
||||
signatories,
|
||||
value: signatories,
|
||||
child: Text(
|
||||
'${signatories.firstname} ${signatories.middlename} ${signatories.lastname}'),
|
||||
))
|
||||
|
@ -863,14 +350,13 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
title: Text(
|
||||
'${memoranda.memoranda}',
|
||||
overflow:
|
||||
TextOverflow
|
||||
.ellipsis,
|
||||
TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
))
|
||||
.toList(),
|
||||
validator: FormBuilderValidators
|
||||
.required(
|
||||
validator:
|
||||
FormBuilderValidators.required(
|
||||
errorText:
|
||||
"This field is required"),
|
||||
// searchInputDecoration:
|
||||
|
@ -881,12 +367,11 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
// Icons.arrow_drop_down),
|
||||
// ),
|
||||
// focusNode: focus,
|
||||
suggestionState:
|
||||
Suggestion.expand,
|
||||
suggestionState: Suggestion.expand,
|
||||
onSuggestionTap: (memoranda) {
|
||||
setState(() {
|
||||
_memoranda = memoranda
|
||||
.item!.memoranda!;
|
||||
_memoranda =
|
||||
memoranda.item!.memoranda!;
|
||||
});
|
||||
focus.unfocus();
|
||||
},
|
||||
|
@ -905,8 +390,8 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
child: FormBuilderTextField(
|
||||
name: 'sworn_statement',
|
||||
decoration: InputDecoration(),
|
||||
validator: FormBuilderValidators
|
||||
.compose([]),
|
||||
validator:
|
||||
FormBuilderValidators.compose([]),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -925,8 +410,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
child: FormBuilderDateTimePicker(
|
||||
name: 'date_received',
|
||||
initialEntryMode:
|
||||
DatePickerEntryMode
|
||||
.calendarOnly,
|
||||
DatePickerEntryMode.calendarOnly,
|
||||
initialValue: DateTime.now(),
|
||||
inputType: InputType.date,
|
||||
|
||||
|
@ -952,8 +436,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
child: FormBuilderDateTimePicker(
|
||||
name: 'date_of_entry',
|
||||
initialEntryMode:
|
||||
DatePickerEntryMode
|
||||
.calendarOnly,
|
||||
DatePickerEntryMode.calendarOnly,
|
||||
initialValue: DateTime.now(),
|
||||
inputType: InputType.date,
|
||||
|
||||
|
@ -978,8 +461,8 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
child: FormBuilderTextField(
|
||||
name: 'by',
|
||||
decoration: InputDecoration(),
|
||||
validator: FormBuilderValidators
|
||||
.compose([]),
|
||||
validator:
|
||||
FormBuilderValidators.compose([]),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -990,8 +473,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
ElevatedButton(
|
||||
onPressed: () async {
|
||||
final tempID =
|
||||
await SharedPreferences
|
||||
.getInstance();
|
||||
await SharedPreferences.getInstance();
|
||||
print(tempID.getInt('tempid')! - 1);
|
||||
final List<PropertyAssessment>
|
||||
propertyAssessments = [];
|
||||
|
@ -1010,12 +492,10 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
taxable: isTaxable,
|
||||
exempt: isExempt,
|
||||
qtr: int.parse(formKey
|
||||
.currentState!
|
||||
.value['qtr'] ??
|
||||
.currentState!.value['qtr'] ??
|
||||
'0'), // Replace null with '0'
|
||||
yr: int.parse(formKey
|
||||
.currentState!
|
||||
.value['yr'] ??
|
||||
yr: int.parse(
|
||||
formKey.currentState!.value['yr'] ??
|
||||
'0'), // Replace null with '0'
|
||||
appraisedbyName: (formKey
|
||||
.currentState!
|
||||
|
@ -1034,8 +514,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
.value['appraised_by']
|
||||
?.lastname ??
|
||||
''),
|
||||
appraisedbyDate: formKey
|
||||
.currentState!
|
||||
appraisedbyDate: formKey.currentState!
|
||||
.value['app_date']
|
||||
as DateTime? ??
|
||||
DateTime
|
||||
|
@ -1057,8 +536,7 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
.value['rec_approval']
|
||||
?.lastname ??
|
||||
''),
|
||||
recommendapprDate: formKey
|
||||
.currentState!
|
||||
recommendapprDate: formKey.currentState!
|
||||
.value['rec_date']
|
||||
as DateTime? ??
|
||||
DateTime
|
||||
|
@ -1081,12 +559,10 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
?.lastname ??
|
||||
''),
|
||||
memoranda: _memoranda,
|
||||
swornstatementNo: formKey
|
||||
.currentState!.value[
|
||||
'sworn_statement'] ??
|
||||
swornstatementNo: formKey.currentState!
|
||||
.value['sworn_statement'] ??
|
||||
'', // Replace null with an empty string
|
||||
dateReceived: formKey
|
||||
.currentState!
|
||||
dateReceived: formKey.currentState!
|
||||
.value['date_received']
|
||||
as DateTime? ??
|
||||
DateTime
|
||||
|
@ -1097,15 +573,14 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
as DateTime? ??
|
||||
DateTime
|
||||
.now(), // Replace null with current date
|
||||
entryDateBy: formKey.currentState!
|
||||
.value['by'] ??
|
||||
entryDateBy: formKey
|
||||
.currentState!.value['by'] ??
|
||||
'', // Replace null with an empty string
|
||||
);
|
||||
|
||||
propertyAssessments.add(ass);
|
||||
|
||||
context
|
||||
.read<PropertyAssessmentBloc>()
|
||||
context.read<PropertyAssessmentBloc>()
|
||||
..add(UpdatePropertyAssessment(
|
||||
assessment:
|
||||
propertyAssessments[0]));
|
||||
|
@ -1138,59 +613,12 @@ class _PropertyAssessmentPage extends State<PropertyAssessmentPage> {
|
|||
],
|
||||
);
|
||||
}
|
||||
if (state is PropertyAppraisalErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<PropertyAppraisalBloc>().add(
|
||||
LoadPropertyAppraisal(
|
||||
appraisal: PropertyAppraisal()));
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}
|
||||
if (state is MemorandaErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<MemorandaBloc>()
|
||||
.add(LoadMemoranda());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
);
|
||||
}
|
||||
if (state is SignatoriesErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<SignatoriesBloc>().add(LoadSignatories());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
);
|
||||
}
|
||||
if (state is PropertyAssessmentErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<PropertyAssessmentBloc>()
|
||||
.add(LoadPropertyAssessment());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,10 +46,7 @@ class _BldgLocLandRefEdit extends State<BldgLocLandRefEdit> {
|
|||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is LocationLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
|
||||
if (state is LocationErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
|
@ -64,10 +61,6 @@ class _BldgLocLandRefEdit extends State<BldgLocLandRefEdit> {
|
|||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is LandrefLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is LandrefErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
|
@ -82,10 +75,6 @@ class _BldgLocLandRefEdit extends State<BldgLocLandRefEdit> {
|
|||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is MunicipalityLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is MunicipalityErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
|
|
|
@ -33,24 +33,24 @@ class PropertyAppraisalEditPage extends StatefulWidget {
|
|||
|
||||
class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
||||
double depRate = 0;
|
||||
int totalAreas = 0;
|
||||
String actualUse = "";
|
||||
// int totalAreas = 0;
|
||||
// String actualUse = "";
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_loadDataFromSharedPreferences(); // Call the method to load data
|
||||
}
|
||||
// @override
|
||||
// void initState() {
|
||||
// super.initState();
|
||||
// _loadDataFromSharedPreferences(); // Call the method to load data
|
||||
// }
|
||||
|
||||
// Method to load data from SharedPreferences
|
||||
_loadDataFromSharedPreferences() async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
setState(() {
|
||||
actualUse = prefs.getString('actualUse') ?? '';
|
||||
totalAreas = prefs.getInt('totalArea') ??
|
||||
0; // Provide a default value if the key doesn't exist
|
||||
});
|
||||
}
|
||||
// _loadDataFromSharedPreferences() async {
|
||||
// SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
// setState(() {
|
||||
// actualUse = prefs.getString('actualUse') ?? '';
|
||||
// totalAreas = prefs.getInt('totalArea') ??
|
||||
// 0; // Provide a default value if the key doesn't exist
|
||||
// });
|
||||
// }
|
||||
|
||||
calculateAdditionalItems(List<AdditionalItems> items) {
|
||||
double sum = 0;
|
||||
|
@ -529,10 +529,7 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is PropertyAppraisalEditLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
|
||||
if (state is PropertyAppraisalEditErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
|
@ -543,38 +540,78 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
final appraisal = state.appraisalEdit;
|
||||
return BlocConsumer<AdditionalItemsEditBloc,
|
||||
AdditionalItemsEditState>(listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is PropertyAppraisalEditLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is AdditionalItemsEditLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is AdditionalItemsEditErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
}, builder: (context, state) {
|
||||
if (state is AdditionalItemsEditLoaded) {
|
||||
final item = state.items;
|
||||
|
||||
double totalArea = double.tryParse(totalAreas.toString() ??
|
||||
appraisal.totalArea.toString()) ??
|
||||
return BlocConsumer<GeneralDescriptionBloc,
|
||||
GeneralDescriptionState>(
|
||||
listener: (context, state) {
|
||||
if (state is GenDescLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is GenDescLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is GenDescErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is GenDescLoaded) {
|
||||
double totalArea = double.tryParse(
|
||||
(state.gendesc.totalFloorArea ??
|
||||
appraisal.totalArea)
|
||||
?.toString() ??
|
||||
'0.0') ??
|
||||
0.0;
|
||||
|
||||
double bldgUnitValue = double.tryParse(
|
||||
keys.currentState?.value['bldg_type']?.unitValue ??
|
||||
double bldgUnitValue = double.tryParse(keys.currentState
|
||||
?.value['bldg_type']?.unitValue ??
|
||||
appraisal.unitconstructCost) ??
|
||||
0.0;
|
||||
return Expanded(
|
||||
return Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: SingleChildScrollView(
|
||||
child: Container(
|
||||
margin: const EdgeInsets.only(left: 20.0, right: 20.0),
|
||||
margin: const EdgeInsets.only(
|
||||
left: 20.0, right: 20.0),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
margin: const EdgeInsets.only(
|
||||
left: 0, top: 20, right: 0, bottom: 20),
|
||||
left: 0,
|
||||
top: 20,
|
||||
right: 0,
|
||||
bottom: 20),
|
||||
child: const Text('PROPERTY APPRAISAL',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold, fontSize: 18),
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 18),
|
||||
textAlign: TextAlign.left),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Unit Construction Cost",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -592,10 +629,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 15),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Building Core",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -604,7 +642,7 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
),
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
'',
|
||||
textAlign: TextAlign.right,
|
||||
),
|
||||
|
@ -613,10 +651,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 40),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Sub-total",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -634,10 +673,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 40),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Cost of Additional Items",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -646,7 +686,7 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
),
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
'',
|
||||
textAlign: TextAlign.right,
|
||||
),
|
||||
|
@ -655,10 +695,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 15),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Sub-total",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -668,7 +709,8 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
Container(
|
||||
child: Text(
|
||||
appraisal.addItemsSubtotal ?? '0.00',
|
||||
appraisal.addItemsSubtotal ??
|
||||
'0.00',
|
||||
textAlign: TextAlign.right,
|
||||
),
|
||||
)
|
||||
|
@ -676,10 +718,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 15),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Total Construction Cost",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -690,11 +733,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
Container(
|
||||
child: Text(
|
||||
calculateConstructionCost(
|
||||
double.parse(
|
||||
appraisal.unitconstructSubtotal!),
|
||||
double.parse(
|
||||
appraisal.addItemsSubtotal!))
|
||||
.toString()!,
|
||||
double.parse(appraisal
|
||||
.unitconstructSubtotal!),
|
||||
double.parse(appraisal
|
||||
.addItemsSubtotal!))
|
||||
.toString(),
|
||||
textAlign: TextAlign.right,
|
||||
),
|
||||
)
|
||||
|
@ -702,10 +745,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 40),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Depreciation Rate",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -718,8 +762,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
height: 25,
|
||||
child: FormBuilderTextField(
|
||||
name: 'depRate',
|
||||
decoration: normalTextFieldStyle("0.00", ""),
|
||||
validator: FormBuilderValidators.compose([]),
|
||||
decoration: normalTextFieldStyle(
|
||||
"0.00", ""),
|
||||
validator:
|
||||
FormBuilderValidators.compose(
|
||||
[]),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
depRate = double.parse(value!);
|
||||
|
@ -731,10 +778,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 15),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Depreciation Cost",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -747,9 +795,12 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
calculateDepCost(
|
||||
(totalArea * bldgUnitValue),
|
||||
item,
|
||||
double.parse(keys.currentState
|
||||
?.value['depRate'] ??
|
||||
appraisal.depreciationRate))
|
||||
double.parse(keys
|
||||
.currentState
|
||||
?.value[
|
||||
'depRate'] ??
|
||||
appraisal
|
||||
.depreciationRate))
|
||||
.toString(),
|
||||
textAlign: TextAlign.right,
|
||||
),
|
||||
|
@ -758,10 +809,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 15),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Total % Depreciation",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -779,10 +831,11 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
const SizedBox(height: 15),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(
|
||||
child: Text(
|
||||
child: const Text(
|
||||
"Market Value",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -795,9 +848,12 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
calculateMarketValue(
|
||||
(totalArea * bldgUnitValue),
|
||||
item,
|
||||
double.parse(keys.currentState
|
||||
?.value['depRate'] ??
|
||||
appraisal.depreciationRate))
|
||||
double.parse(keys
|
||||
.currentState
|
||||
?.value[
|
||||
'depRate'] ??
|
||||
appraisal
|
||||
.depreciationRate))
|
||||
.toString(),
|
||||
textAlign: TextAlign.right,
|
||||
),
|
||||
|
@ -811,19 +867,21 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
child: SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: Container(
|
||||
margin: const EdgeInsets.symmetric(
|
||||
margin:
|
||||
const EdgeInsets.symmetric(
|
||||
horizontal: 20.0),
|
||||
child: Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
margin: const EdgeInsets.fromLTRB(
|
||||
0, 20, 0, 20),
|
||||
margin: const EdgeInsets
|
||||
.fromLTRB(0, 20, 0, 20),
|
||||
child: const Text(
|
||||
'PROPERTY ASSESSMENT',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
fontSize: 18,
|
||||
),
|
||||
textAlign: TextAlign.left,
|
||||
|
@ -835,73 +893,102 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
children: [
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
margin:
|
||||
const EdgeInsets
|
||||
.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets
|
||||
.all(5.0),
|
||||
child: const Text(
|
||||
'Actual Use',
|
||||
style: TextStyle(
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
FontWeight
|
||||
.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign
|
||||
.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 150,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
margin:
|
||||
const EdgeInsets
|
||||
.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets
|
||||
.all(5.0),
|
||||
child: const Text(
|
||||
'Market Value',
|
||||
style: TextStyle(
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
FontWeight
|
||||
.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign
|
||||
.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 100,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
margin:
|
||||
const EdgeInsets
|
||||
.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets
|
||||
.all(5.0),
|
||||
child: const Text(
|
||||
'Ass. Level',
|
||||
style: TextStyle(
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
FontWeight
|
||||
.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign
|
||||
.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 150,
|
||||
margin: const EdgeInsets.only(
|
||||
top: 15, left: 15),
|
||||
margin:
|
||||
const EdgeInsets
|
||||
.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
padding:
|
||||
const EdgeInsets.all(5.0),
|
||||
const EdgeInsets
|
||||
.all(5.0),
|
||||
child: const Text(
|
||||
'Ass. Value',
|
||||
style: TextStyle(
|
||||
fontWeight:
|
||||
FontWeight.bold,
|
||||
FontWeight
|
||||
.bold,
|
||||
fontSize: 13,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
textAlign:
|
||||
TextAlign
|
||||
.center,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 50,
|
||||
child: SingleChildScrollView(
|
||||
child:
|
||||
SingleChildScrollView(
|
||||
scrollDirection:
|
||||
Axis.horizontal,
|
||||
child: Row(children: [
|
||||
|
@ -911,125 +998,123 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
children: [
|
||||
Container(
|
||||
width: 100,
|
||||
margin:
|
||||
const EdgeInsets
|
||||
margin: const EdgeInsets
|
||||
.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
left:
|
||||
15),
|
||||
padding:
|
||||
const EdgeInsets
|
||||
.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: Text(
|
||||
actualUse ?? "",
|
||||
style: TextStyle(
|
||||
state.gendesc
|
||||
.actualUse ??
|
||||
"",
|
||||
style:
|
||||
const TextStyle(
|
||||
fontWeight:
|
||||
FontWeight
|
||||
.bold,
|
||||
fontSize: 13,
|
||||
FontWeight.bold,
|
||||
fontSize:
|
||||
13,
|
||||
),
|
||||
textAlign: TextAlign
|
||||
textAlign:
|
||||
TextAlign
|
||||
.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 150,
|
||||
margin:
|
||||
const EdgeInsets
|
||||
margin: const EdgeInsets
|
||||
.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
left:
|
||||
15),
|
||||
padding:
|
||||
const EdgeInsets
|
||||
.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: Text(
|
||||
NumberFormat
|
||||
.currency(
|
||||
locale: 'en-PH',
|
||||
symbol: "₱",
|
||||
locale:
|
||||
'en-PH',
|
||||
symbol:
|
||||
"₱",
|
||||
).format(
|
||||
calculateMarketValue(
|
||||
(totalArea *
|
||||
bldgUnitValue),
|
||||
item,
|
||||
double.parse(keys
|
||||
.currentState
|
||||
?.value[
|
||||
'depRate'] ??
|
||||
appraisal
|
||||
.depreciationRate)),
|
||||
double.parse(keys.currentState?.value['depRate'] ??
|
||||
appraisal.depreciationRate)),
|
||||
),
|
||||
style: TextStyle(
|
||||
style:
|
||||
const TextStyle(
|
||||
fontWeight:
|
||||
FontWeight
|
||||
.bold,
|
||||
fontSize: 13,
|
||||
FontWeight.bold,
|
||||
fontSize:
|
||||
13,
|
||||
),
|
||||
textAlign: TextAlign
|
||||
textAlign:
|
||||
TextAlign
|
||||
.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 100,
|
||||
margin:
|
||||
const EdgeInsets
|
||||
margin: const EdgeInsets
|
||||
.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
left:
|
||||
15),
|
||||
padding:
|
||||
const EdgeInsets
|
||||
.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: Text(
|
||||
assessmentLevel(
|
||||
calculateMarketValue(
|
||||
(totalArea *
|
||||
bldgUnitValue),
|
||||
item,
|
||||
double.parse(keys.currentState?.value['depRate'] ??
|
||||
appraisal.depreciationRate))
|
||||
.toString(),
|
||||
actualUse) +
|
||||
'%',
|
||||
style: TextStyle(
|
||||
'${assessmentLevel(calculateMarketValue((totalArea * bldgUnitValue), item, double.parse(keys.currentState?.value['depRate'] ?? appraisal.depreciationRate)).toString(), state.gendesc.actualUse)}%',
|
||||
style:
|
||||
const TextStyle(
|
||||
fontWeight:
|
||||
FontWeight
|
||||
.bold,
|
||||
fontSize: 13,
|
||||
FontWeight.bold,
|
||||
fontSize:
|
||||
13,
|
||||
),
|
||||
textAlign: TextAlign
|
||||
textAlign:
|
||||
TextAlign
|
||||
.center,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 150,
|
||||
margin:
|
||||
const EdgeInsets
|
||||
margin: const EdgeInsets
|
||||
.only(
|
||||
top: 15,
|
||||
left: 15),
|
||||
left:
|
||||
15),
|
||||
padding:
|
||||
const EdgeInsets
|
||||
.all(5.0),
|
||||
const EdgeInsets.all(
|
||||
5.0),
|
||||
child: Text(
|
||||
NumberFormat
|
||||
.currency(
|
||||
locale: 'en-PH',
|
||||
symbol: "₱",
|
||||
locale:
|
||||
'en-PH',
|
||||
symbol:
|
||||
"₱",
|
||||
).format(assessmentValue(
|
||||
calculateMarketValue(
|
||||
(totalArea *
|
||||
bldgUnitValue),
|
||||
item,
|
||||
double.parse(keys.currentState?.value['depRate'] ??
|
||||
appraisal.depreciationRate))
|
||||
calculateMarketValue((totalArea * bldgUnitValue), item, double.parse(keys.currentState?.value['depRate'] ?? appraisal.depreciationRate))
|
||||
.toString(),
|
||||
actualUse)),
|
||||
style: TextStyle(
|
||||
state
|
||||
.gendesc
|
||||
.actualUse)),
|
||||
style:
|
||||
const TextStyle(
|
||||
fontWeight:
|
||||
FontWeight
|
||||
.bold,
|
||||
fontSize: 13,
|
||||
FontWeight.bold,
|
||||
fontSize:
|
||||
13,
|
||||
),
|
||||
textAlign: TextAlign
|
||||
textAlign:
|
||||
TextAlign
|
||||
.center,
|
||||
),
|
||||
),
|
||||
|
@ -1052,10 +1137,12 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
],
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
CustomButton(
|
||||
icon: const Icon(Icons.chevron_left_rounded,
|
||||
icon: const Icon(
|
||||
Icons.chevron_left_rounded,
|
||||
color: Colors.white),
|
||||
onPressed: () {
|
||||
{
|
||||
|
@ -1065,45 +1152,53 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
},
|
||||
),
|
||||
CustomButton(
|
||||
icon: const Icon(Icons.chevron_right_rounded,
|
||||
icon: const Icon(
|
||||
Icons.chevron_right_rounded,
|
||||
color: Colors.white),
|
||||
onPressed: () async {
|
||||
final tempID =
|
||||
await SharedPreferences.getInstance();
|
||||
await SharedPreferences
|
||||
.getInstance();
|
||||
|
||||
final id = tempID.getInt('tempid')! - 1;
|
||||
final id =
|
||||
tempID.getInt('tempid')! - 1;
|
||||
{
|
||||
var appraisals = PropertyAppraisalEdit(
|
||||
id: 1,
|
||||
bldgapprDetailsId: id,
|
||||
unitconstructCost: bldgUnitValue
|
||||
.toString(),
|
||||
unitconstructCost:
|
||||
bldgUnitValue.toString(),
|
||||
buildingCore: 'test',
|
||||
unitconstructSubtotal: (totalArea *
|
||||
bldgUnitValue)
|
||||
unitconstructSubtotal:
|
||||
(totalArea * bldgUnitValue)
|
||||
.toString(),
|
||||
depreciationRate: depRate.toString(),
|
||||
depreciationCost: calculateDepCost(
|
||||
(totalArea * bldgUnitValue),
|
||||
item,
|
||||
depRate)
|
||||
depreciationRate:
|
||||
depRate.toString(),
|
||||
depreciationCost:
|
||||
calculateDepCost((totalArea * bldgUnitValue), item, depRate)
|
||||
.toString(),
|
||||
costAddItems: calculateAdditionalItems(item)
|
||||
costAddItems:
|
||||
calculateAdditionalItems(item)
|
||||
.toString(),
|
||||
addItemsSubtotal:
|
||||
calculateAdditionalItems(item)
|
||||
.toString(),
|
||||
totalpercentDepreciation:
|
||||
(depRate * 100).toStringAsFixed(2),
|
||||
(depRate * 100)
|
||||
.toStringAsFixed(2),
|
||||
marketValue: calculateMarketValue(
|
||||
(totalArea * bldgUnitValue),
|
||||
item,
|
||||
depRate)
|
||||
.toString(),
|
||||
totalArea: totalArea.toString());
|
||||
context.read<PropertyAppraisalEditBloc>()
|
||||
..add(UpdatePropertyAppraisalEdit(
|
||||
appraisalEdit: appraisals,
|
||||
context
|
||||
.read<
|
||||
PropertyAppraisalEditBloc>()
|
||||
.add(
|
||||
UpdatePropertyAppraisalEdit(
|
||||
appraisalEdit:
|
||||
appraisals,
|
||||
id: widget.tempId));
|
||||
|
||||
widget.NextBtn();
|
||||
|
@ -1117,6 +1212,12 @@ class _PropertyAppraisalEditPage extends State<PropertyAppraisalEditPage> {
|
|||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
|
|
|
@ -484,7 +484,15 @@ class _PropertyAssessmentEditPage extends State<PropertyAssessmentEditPage> {
|
|||
final assessment = state.assessmentsEdit;
|
||||
return BlocConsumer<SignatoriesBloc, SignatoriesState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is SignatoriesLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
|
||||
if (state is SignatoriesErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is SignatoriesLoaded) {
|
||||
|
@ -492,26 +500,39 @@ class _PropertyAssessmentEditPage extends State<PropertyAssessmentEditPage> {
|
|||
|
||||
return BlocConsumer<MemorandaBloc, MemorandaState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is MemorandaLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is MemorandaLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is MemorandaErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is MemorandaLoaded) {
|
||||
return FormBuilder(
|
||||
key: keys,
|
||||
initialValue: {
|
||||
'qtr': assessment.qtr.toString(),
|
||||
'yr': assessment.qtr.toString(),
|
||||
// 'appraised_by': assessment.appraisedbyName,
|
||||
'app_date': assessment.appraisedbyDate.toString(),
|
||||
// 'rec_approval': assessment.recommendapprName,
|
||||
'rec_date': assessment.recommendapprDate.toString(),
|
||||
// 'apprvd_by': assessment.approvedbyName,
|
||||
'memoranda': assessment.memoranda,
|
||||
'sworn_statement': assessment.swornstatementNo,
|
||||
'date_received': assessment.dateReceived.toString(),
|
||||
'qtr': assessment.qtr?.toString() ?? '',
|
||||
'yr': assessment.qtr?.toString() ?? '',
|
||||
'app_date':
|
||||
assessment.appraisedbyDate?.toString() ?? '',
|
||||
'rec_date':
|
||||
assessment.recommendapprDate?.toString() ?? '',
|
||||
'memoranda': assessment.memoranda ?? '',
|
||||
'sworn_statement':
|
||||
assessment.swornstatementNo ?? '',
|
||||
'date_received':
|
||||
assessment.dateReceived?.toString() ?? '',
|
||||
'date_of_entry':
|
||||
assessment.entryDateAssessment.toString(),
|
||||
'by': assessment.entryDateBy
|
||||
assessment.entryDateAssessment?.toString() ??
|
||||
'',
|
||||
'by': assessment.entryDateBy ?? '',
|
||||
},
|
||||
enabled: true,
|
||||
onChanged: () {
|
||||
|
@ -649,7 +670,8 @@ class _PropertyAssessmentEditPage extends State<PropertyAssessmentEditPage> {
|
|||
decoration:
|
||||
InputDecoration(
|
||||
labelText: assessment
|
||||
.appraisedbyName!,
|
||||
.appraisedbyName ??
|
||||
"",
|
||||
labelStyle:
|
||||
const TextStyle(
|
||||
color: Colors
|
||||
|
@ -723,7 +745,8 @@ class _PropertyAssessmentEditPage extends State<PropertyAssessmentEditPage> {
|
|||
decoration:
|
||||
InputDecoration(
|
||||
labelText: assessment
|
||||
.recommendapprName!,
|
||||
.recommendapprName ??
|
||||
"",
|
||||
labelStyle:
|
||||
const TextStyle(
|
||||
color: Colors
|
||||
|
@ -798,7 +821,8 @@ class _PropertyAssessmentEditPage extends State<PropertyAssessmentEditPage> {
|
|||
decoration:
|
||||
InputDecoration(
|
||||
labelText: assessment
|
||||
.approvedbyName!,
|
||||
.approvedbyName ??
|
||||
"",
|
||||
labelStyle:
|
||||
const TextStyle(
|
||||
color: Colors
|
||||
|
@ -1087,9 +1111,10 @@ class _PropertyAssessmentEditPage extends State<PropertyAssessmentEditPage> {
|
|||
|
||||
propertyAssessments.add(ass);
|
||||
|
||||
context.read<
|
||||
context
|
||||
.read<
|
||||
PropertyAssessmentEditBloc>()
|
||||
..add(UpdatePropertyAssessmentEdit(
|
||||
.add(UpdatePropertyAssessmentEdit(
|
||||
assessmentsEdit:
|
||||
propertyAssessments[
|
||||
0]));
|
||||
|
@ -1114,7 +1139,7 @@ class _PropertyAssessmentEditPage extends State<PropertyAssessmentEditPage> {
|
|||
}
|
||||
if (state is PropertyAssessmentEditErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
message: state.error,
|
||||
onpressed: () {
|
||||
context.read<PropertyAssessmentEditBloc>().add(
|
||||
LoadPropertyAssessmentEdit(
|
||||
|
|
|
@ -62,7 +62,19 @@ class _PropertyOwnerInfoEdit extends State<PropertyOwnerInfoEdit> {
|
|||
Widget build(BuildContext context) {
|
||||
return BlocConsumer<PropertyInfoBloc, PropertyInfoState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is PropertyInfoLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is PropertyInfoLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
|
||||
if (state is PropertyInfoErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
}, builder: (context, state) {
|
||||
if (state is PropertyInfoLoaded) {
|
||||
return SingleChildScrollView(
|
||||
|
|
|
@ -79,22 +79,10 @@ class _EditLand extends State<EditLand> {
|
|||
},
|
||||
),
|
||||
Expanded(
|
||||
child: FormBuilder(
|
||||
key: landKey,
|
||||
|
||||
// enabled: false,
|
||||
onChanged: () {
|
||||
landKey.currentState?.save();
|
||||
|
||||
print(landKey.currentState?.value.toString());
|
||||
},
|
||||
autovalidateMode: AutovalidateMode.disabled,
|
||||
skipDisabled: true,
|
||||
child: Container(
|
||||
child: content(PrevBtn, NextBtn, onSAveAll),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -111,15 +99,16 @@ class _EditLand extends State<EditLand> {
|
|||
case 1:
|
||||
return LandLocationAndBoundariesEdit(PrevBtn, NextBtn, widget.faas!);
|
||||
case 2:
|
||||
return LandAppraisalEdit(PrevBtn, NextBtn);
|
||||
return LandAppraisalEdit(PrevBtn, NextBtn, widget.faas.id!);
|
||||
case 3:
|
||||
return OtherImprovementEditPage(PrevBtn, NextBtn);
|
||||
return OtherImprovementEditPage(PrevBtn, NextBtn, widget.faas.id!);
|
||||
case 4:
|
||||
return ValueAdjustmentEditPage(PrevBtn, NextBtn);
|
||||
return ValueAdjustmentEditPage(PrevBtn, NextBtn, widget.faas.id!);
|
||||
case 5:
|
||||
return LandPropertyAssessmentEditPage(PrevBtn, NextBtn);
|
||||
return LandPropertyAssessmentEditPage(
|
||||
PrevBtn, NextBtn, widget.faas.id!);
|
||||
case 6:
|
||||
return LandSignatoriesEdit(onSAveAll);
|
||||
return LandSignatoriesEdit(onSAveAll, widget.faas.id!);
|
||||
|
||||
default:
|
||||
return LandPropertyOwnerInfoEdit(NextBtn, widget.faas!);
|
||||
|
|
|
@ -0,0 +1,464 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
|
||||
import 'package:form_builder_validators/form_builder_validators.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:searchfield/searchfield.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:unit2/bloc/passo/bulding/additional_item/additional_item_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_appraisal/land_appraisal_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_classification/land_classification_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_subclassification/land_subclassification_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/municipality/municipality_bloc.dart';
|
||||
import 'package:unit2/model/passo/additional_items.dart';
|
||||
import 'package:unit2/model/passo/city.dart';
|
||||
import 'package:unit2/model/passo/class_components.dart';
|
||||
import 'package:unit2/model/passo/land_appr.dart';
|
||||
import 'package:unit2/model/passo/land_classification.dart';
|
||||
import 'package:unit2/model/passo/land_subclassification.dart';
|
||||
import 'package:unit2/model/passo/unit_construct.dart';
|
||||
import 'package:unit2/screens/passo/Land/add_land.dart';
|
||||
import 'package:unit2/theme-data.dart/form-style.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
import 'package:unit2/widgets/passo/custom_formBuilder_fields.dart';
|
||||
|
||||
class AddLandAppraisalEditModal extends StatefulWidget {
|
||||
// final List<UnitConstruct> unit;
|
||||
// final List<ClassComponents> options;
|
||||
final int tempId;
|
||||
|
||||
AddLandAppraisalEditModal(this.tempId);
|
||||
|
||||
@override
|
||||
_AddLandAppraisalEditModal createState() => _AddLandAppraisalEditModal();
|
||||
}
|
||||
|
||||
class _AddLandAppraisalEditModal extends State<AddLandAppraisalEditModal> {
|
||||
final focus = FocusNode();
|
||||
bool isPainted = false;
|
||||
bool isSecondHand = false;
|
||||
TextEditingController textEditingController = TextEditingController();
|
||||
double _unitBase = 0;
|
||||
int _areaValue = 0;
|
||||
final double _depValue = 0;
|
||||
double _unitValue = 0;
|
||||
String _subClassDesc = "";
|
||||
int _classId = 0;
|
||||
String _structureType = "";
|
||||
bool _withoutBUCC = false;
|
||||
int _notPaintedUnitVal = 0;
|
||||
int _secondHandUnitVal = 0;
|
||||
String cityCode = '';
|
||||
String cityDesc = '';
|
||||
int classCode = 1;
|
||||
String _classDesc = '';
|
||||
|
||||
GlobalKey<FormBuilderState> appraisalLandKey = GlobalKey<FormBuilderState>();
|
||||
|
||||
BoxDecoration box1() {
|
||||
return const BoxDecoration(boxShadow: [
|
||||
BoxShadow(color: Colors.black12, spreadRadius: 5, blurRadius: 5)
|
||||
], color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(3)));
|
||||
}
|
||||
|
||||
double _amountofDepreciation(unitVal, unitBase, area, depreciation) {
|
||||
return ((unitVal * unitBase) * area) * depreciation;
|
||||
}
|
||||
|
||||
double _totalMarketValue(unitBase, area) {
|
||||
return unitBase * area;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocConsumer<LandAppraisalBloc, LandAppraisalState>(
|
||||
listener: (context, state) {
|
||||
if (state is LandAppraisalLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is LandAppraisalLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is LandAppraisalErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
}, buildWhen: (previous, current) {
|
||||
return false;
|
||||
}, builder: (context, state) {
|
||||
if (state is ShowAddLandAppraisalScreen) {
|
||||
return BlocConsumer<LandClassificationBloc, LandClassificationState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is LandClassificationLoaded) {
|
||||
final classification = state.land_classification;
|
||||
return BlocConsumer<LandSubClassificationBloc,
|
||||
LandSubClassificationState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is LandSubClassificationLoaded) {
|
||||
final subclassification = state.land_subclassification;
|
||||
return BlocConsumer<MunicipalityBloc, MunicipalityState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is MunicipalityLoaded) {
|
||||
return FormBuilder(
|
||||
key: appraisalLandKey,
|
||||
onChanged: () {
|
||||
appraisalLandKey.currentState?.save();
|
||||
},
|
||||
autovalidateMode: AutovalidateMode.disabled,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
child: SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
Container(
|
||||
margin: const EdgeInsets.only(
|
||||
left: 0,
|
||||
top: 10,
|
||||
right: 0,
|
||||
bottom: 0),
|
||||
child: Expanded(
|
||||
flex: 1,
|
||||
child:
|
||||
FormBuilderDropdown<City>(
|
||||
name:
|
||||
'appraisal_municipality',
|
||||
autofocus: false,
|
||||
decoration:
|
||||
normalTextFieldStyle(
|
||||
cityDesc ??
|
||||
"Municipality",
|
||||
""),
|
||||
items: state.municipality
|
||||
.map((municipality) =>
|
||||
DropdownMenuItem<
|
||||
City>(
|
||||
value: municipality,
|
||||
child: Text(municipality
|
||||
.cityDescription!), // Use cityDescription instead of cityName
|
||||
))
|
||||
.toList(),
|
||||
onChanged: (selectedCity) {
|
||||
if (selectedCity != null) {
|
||||
final selectedCityCode =
|
||||
selectedCity.cityCode;
|
||||
setState(() {
|
||||
cityCode =
|
||||
selectedCityCode!;
|
||||
cityDesc = selectedCity
|
||||
.cityDescription!;
|
||||
});
|
||||
final barangayBloc =
|
||||
context.read<
|
||||
LandSubClassificationBloc>();
|
||||
barangayBloc.add(
|
||||
LoadLandSubClassification(
|
||||
classCode:
|
||||
classCode!,
|
||||
cityCode:
|
||||
selectedCityCode!)); // Use selectedCityCode directly
|
||||
}
|
||||
},
|
||||
)),
|
||||
),
|
||||
Container(
|
||||
margin: const EdgeInsets.only(
|
||||
left: 0,
|
||||
top: 10,
|
||||
right: 0,
|
||||
bottom: 0),
|
||||
child: Expanded(
|
||||
flex: 1,
|
||||
child: FormBuilderDropdown<
|
||||
LandClassification>(
|
||||
name: 'classification',
|
||||
autofocus: false,
|
||||
decoration:
|
||||
normalTextFieldStyle(
|
||||
_classDesc
|
||||
.toString() ??
|
||||
"Classification",
|
||||
""),
|
||||
items: classification
|
||||
.map((classification) =>
|
||||
DropdownMenuItem<
|
||||
LandClassification>(
|
||||
value:
|
||||
classification,
|
||||
child: Text(
|
||||
classification
|
||||
.description!), // Use cityDescription instead of cityName
|
||||
))
|
||||
.toList(),
|
||||
onChanged: (selectedClass) {
|
||||
if (selectedClass != null) {
|
||||
final selectedClassCode =
|
||||
selectedClass.id;
|
||||
setState(() {
|
||||
classCode =
|
||||
selectedClassCode!;
|
||||
_classDesc =
|
||||
selectedClass
|
||||
.description!;
|
||||
});
|
||||
final barangayBloc =
|
||||
context.read<
|
||||
LandSubClassificationBloc>();
|
||||
barangayBloc.add(
|
||||
LoadLandSubClassification(
|
||||
classCode:
|
||||
selectedClassCode!,
|
||||
cityCode:
|
||||
cityCode)); // Use selectedCityCode directly
|
||||
}
|
||||
},
|
||||
)),
|
||||
),
|
||||
Container(
|
||||
margin: const EdgeInsets.only(
|
||||
left: 0,
|
||||
top: 10,
|
||||
right: 0,
|
||||
bottom: 0),
|
||||
child: SizedBox(
|
||||
height: 45,
|
||||
child: SearchField(
|
||||
itemHeight: 70,
|
||||
suggestions: subclassification
|
||||
.map((LandSubClassification
|
||||
subclass) =>
|
||||
SearchFieldListItem(
|
||||
'${subclass.subclassCode} - ${subclass.subclassDescription}',
|
||||
item: subclass,
|
||||
child: ListTile(
|
||||
title: Text(
|
||||
'${subclass.subclassCode} - ${subclass.subclassDescription!.toUpperCase()}',
|
||||
overflow:
|
||||
TextOverflow
|
||||
.ellipsis,
|
||||
),
|
||||
)))
|
||||
.toList(),
|
||||
|
||||
validator: FormBuilderValidators
|
||||
.required(
|
||||
errorText:
|
||||
"This field is required"),
|
||||
|
||||
searchInputDecoration:
|
||||
normalTextFieldStyle(
|
||||
"Structure Type",
|
||||
"")
|
||||
.copyWith(
|
||||
suffixIcon:
|
||||
const Icon(Icons
|
||||
.arrow_drop_down)),
|
||||
////agency suggestion tap
|
||||
focusNode: focus,
|
||||
suggestionState:
|
||||
Suggestion.expand,
|
||||
onSuggestionTap: (subclass) {
|
||||
setState(() {
|
||||
_unitBase = double.parse(
|
||||
subclass.item!
|
||||
.baseUnitMarketval!);
|
||||
_subClassDesc =
|
||||
'${subclass.item!.subclassCode} - ${subclass.item!.subclassDescription}';
|
||||
});
|
||||
focus.unfocus();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
FormBuilderTextField(
|
||||
name: 'land_appraisal_area',
|
||||
decoration: normalTextFieldStyle(
|
||||
"Area", ""),
|
||||
validator:
|
||||
FormBuilderValidators.compose(
|
||||
[]),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_areaValue = int.parse(value!);
|
||||
});
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
const Text('Market Value'),
|
||||
const SizedBox(height: 5),
|
||||
Container(
|
||||
height: 45.0,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
border: Border.all(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(5.0),
|
||||
),
|
||||
child: Align(
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
NumberFormat.currency(
|
||||
locale: 'en-PH',
|
||||
symbol: "₱")
|
||||
.format(
|
||||
_totalMarketValue(
|
||||
_unitBase,
|
||||
_areaValue)))),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 120,
|
||||
height: 60,
|
||||
padding:
|
||||
const EdgeInsets.all(8.0),
|
||||
child: ElevatedButton(
|
||||
onPressed: () async {
|
||||
final tempID =
|
||||
await SharedPreferences
|
||||
.getInstance();
|
||||
print(tempID
|
||||
.getInt('landid'));
|
||||
var land_appraisal = LandAppr(
|
||||
landapprDetailsId:
|
||||
widget.tempId,
|
||||
classification:
|
||||
_classDesc,
|
||||
subClass: _subClassDesc,
|
||||
area: _areaValue
|
||||
.toString(),
|
||||
unitValue: _unitBase
|
||||
.toString(),
|
||||
baseMarketval:
|
||||
_totalMarketValue(
|
||||
_unitBase,
|
||||
_areaValue)
|
||||
.toString());
|
||||
|
||||
context
|
||||
.read<
|
||||
LandAppraisalBloc>()
|
||||
.add(AddLandAppraisal(
|
||||
land_appr:
|
||||
land_appraisal));
|
||||
},
|
||||
style:
|
||||
ElevatedButton.styleFrom(
|
||||
primary: Colors.black,
|
||||
),
|
||||
child: const Text("Submit"),
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
width:
|
||||
5), // Use SizedBox for horizontal spacing in a Row
|
||||
Container(
|
||||
width: 120,
|
||||
height: 60,
|
||||
padding:
|
||||
const EdgeInsets.all(8.0),
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
context
|
||||
.read<
|
||||
LandAppraisalBloc>()
|
||||
.add(
|
||||
LoadLandAppraisalEdit(
|
||||
land_appr: <
|
||||
LandAppr>[],
|
||||
id: widget.tempId,
|
||||
));
|
||||
},
|
||||
style:
|
||||
ElevatedButton.styleFrom(
|
||||
primary: Colors.black,
|
||||
),
|
||||
child: const Text("Cancel"),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)));
|
||||
}
|
||||
if (state is MunicipalityErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<MunicipalityBloc>()
|
||||
.add(LoadMunicipality());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
);
|
||||
}
|
||||
if (state is LandSubClassificationErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<LandSubClassificationBloc>().add(
|
||||
const LoadLandSubClassification(
|
||||
cityCode: '1', classCode: 1));
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
);
|
||||
}
|
||||
if (state is LandClassificationErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<LandClassificationBloc>()
|
||||
.add(LoadLandClassification());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
);
|
||||
}
|
||||
if (state is LandAppraisalErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<LandAppraisalBloc>().add(LoadLandAppraisal());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,357 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||
import 'package:form_builder_validators/form_builder_validators.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_trees_improvements/land_trees_improvements_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/other_improvements/other_improvements_bloc.dart';
|
||||
import 'package:unit2/model/passo/other_improvements.dart';
|
||||
import 'package:unit2/model/passo/trees_improvements.dart';
|
||||
import 'package:unit2/theme-data.dart/form-style.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
|
||||
class AddOtherImprovementEditModal extends StatefulWidget {
|
||||
// final List<UnitConstruct> unit;
|
||||
// final List<ClassComponents> options;
|
||||
final int tempId;
|
||||
|
||||
AddOtherImprovementEditModal(this.tempId);
|
||||
|
||||
@override
|
||||
_AddOtherImprovementEditModal createState() =>
|
||||
_AddOtherImprovementEditModal();
|
||||
}
|
||||
|
||||
class _AddOtherImprovementEditModal
|
||||
extends State<AddOtherImprovementEditModal> {
|
||||
final focus = FocusNode();
|
||||
bool isPainted = false;
|
||||
bool isSecondHand = false;
|
||||
TextEditingController textEditingController = TextEditingController();
|
||||
double _unitBase = 0;
|
||||
int _areaValue = 0;
|
||||
final double _depValue = 0;
|
||||
double _unitValue = 0;
|
||||
String _subClassDesc = "";
|
||||
int _classId = 0;
|
||||
String _structureType = "";
|
||||
int _notPaintedUnitVal = 0;
|
||||
int _secondHandUnitVal = 0;
|
||||
String cityCode = '';
|
||||
String cityDesc = '';
|
||||
int classCode = 1;
|
||||
String _classDesc = '';
|
||||
String _treeType = "";
|
||||
bool _nonfruitBearing = false;
|
||||
bool _fruitBearing = false;
|
||||
int qty = 0;
|
||||
int pr_qty = 0;
|
||||
int nonpr_qty = 0;
|
||||
|
||||
GlobalKey<FormBuilderState> otherImpKey = GlobalKey<FormBuilderState>();
|
||||
|
||||
final typeOfTree = [
|
||||
"Non-Fruit Bearing",
|
||||
"Fruit Bearing",
|
||||
];
|
||||
|
||||
_calculateBaseMarketValue() {
|
||||
double base = 0.00;
|
||||
if (_fruitBearing) {
|
||||
base = (pr_qty + nonpr_qty) * _unitValue;
|
||||
} else {
|
||||
base = qty * _unitValue;
|
||||
}
|
||||
return base;
|
||||
}
|
||||
|
||||
BoxDecoration box1() {
|
||||
return const BoxDecoration(boxShadow: [
|
||||
BoxShadow(color: Colors.black12, spreadRadius: 5, blurRadius: 5)
|
||||
], color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(3)));
|
||||
}
|
||||
|
||||
double _amountofDepreciation(unitVal, unitBase, area, depreciation) {
|
||||
return ((unitVal * unitBase) * area) * depreciation;
|
||||
}
|
||||
|
||||
double _totalMarketValue(unitBase, area) {
|
||||
return unitBase * area;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocBuilder<OtherImprovementsBloc, OtherImprovementsState>(
|
||||
buildWhen: (previous, current) {
|
||||
return false;
|
||||
}, builder: (context, state) {
|
||||
if (state is ShowAddOtherImprovementScreen) {
|
||||
return BlocConsumer<LandTreesImprovementsBloc,
|
||||
LandTreesImprovementsState>(listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
}, builder: (context, state) {
|
||||
if (state is LandTreesImprovementsLoaded) {
|
||||
final trees = state.trees_imp;
|
||||
return FormBuilder(
|
||||
key: otherImpKey,
|
||||
onChanged: () {
|
||||
otherImpKey.currentState?.save();
|
||||
},
|
||||
autovalidateMode: AutovalidateMode.disabled,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
child: SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
Container(
|
||||
margin: const EdgeInsets.only(
|
||||
left: 0, top: 10, right: 0, bottom: 0),
|
||||
child: Expanded(
|
||||
flex: 1,
|
||||
child: FormBuilderDropdown<TreesImprovements>(
|
||||
name: 'kinds_of_trees',
|
||||
autofocus: false,
|
||||
decoration: normalTextFieldStyle(
|
||||
"Kinds of Trees", ""),
|
||||
items: state.trees_imp
|
||||
.map((trees) =>
|
||||
DropdownMenuItem<TreesImprovements>(
|
||||
value: trees,
|
||||
child: Text(
|
||||
(trees.improvement ?? "") +
|
||||
" " +
|
||||
(trees.subclassCode ?? ""),
|
||||
),
|
||||
))
|
||||
.toList(),
|
||||
onChanged: (selectedTree) {
|
||||
if (selectedTree != null) {
|
||||
setState(() {
|
||||
_unitValue = double.parse(
|
||||
selectedTree.pricePerTree!);
|
||||
_treeType = selectedTree.improvement!;
|
||||
});
|
||||
}
|
||||
},
|
||||
)),
|
||||
),
|
||||
Container(
|
||||
child: Row(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Checkbox(
|
||||
value: _fruitBearing,
|
||||
onChanged: (bool? value) {
|
||||
setState(() {
|
||||
_fruitBearing = value!;
|
||||
});
|
||||
},
|
||||
),
|
||||
Text('Fruit Bearing ?'),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Visibility(
|
||||
visible: !_fruitBearing,
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: FormBuilderTextField(
|
||||
name: 'subClass',
|
||||
decoration: normalTextFieldStyle(
|
||||
"SubClass/Age", ""),
|
||||
validator:
|
||||
FormBuilderValidators.compose([]),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_subClassDesc = value!;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Expanded(
|
||||
child: FormBuilderTextField(
|
||||
name: 'qty',
|
||||
decoration: normalTextFieldStyle("No.", ""),
|
||||
validator:
|
||||
FormBuilderValidators.compose([]),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
qty = int.parse(value!);
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
replacement: Column(
|
||||
children: [
|
||||
FormBuilderTextField(
|
||||
name: 'no_of_productive',
|
||||
decoration: normalTextFieldStyle(
|
||||
"No. of Productive", ""),
|
||||
validator: FormBuilderValidators.compose([]),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
pr_qty = int.parse(value!);
|
||||
});
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
FormBuilderTextField(
|
||||
name: 'no_of_nonproductive',
|
||||
decoration: normalTextFieldStyle(
|
||||
"No. of Non-Productive", ""),
|
||||
validator: FormBuilderValidators.compose([]),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
nonpr_qty = int.parse(value!);
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
const Text('Market Value'),
|
||||
const SizedBox(height: 5),
|
||||
Container(
|
||||
height: 45.0,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
border: Border.all(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
child: Align(
|
||||
alignment: Alignment.center,
|
||||
child: Text(NumberFormat.currency(
|
||||
locale: 'en-PH', symbol: "₱")
|
||||
.format(_unitValue))),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
const Text('Base Market Value'),
|
||||
const SizedBox(height: 5),
|
||||
Container(
|
||||
height: 45.0,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
border: Border.all(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
child: Align(
|
||||
alignment: Alignment.center,
|
||||
child: Text(NumberFormat.currency(
|
||||
locale: 'en-PH',
|
||||
symbol: "₱",
|
||||
).format(_calculateBaseMarketValue().toString() ==
|
||||
"0.00"
|
||||
? "00.0"
|
||||
: _calculateBaseMarketValue())),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 120,
|
||||
height: 60,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: ElevatedButton(
|
||||
onPressed: () async {
|
||||
var improvement = OtherImprovements(
|
||||
landapprDetailsId: widget.tempId,
|
||||
kindsOfTrees: _treeType,
|
||||
subclassAge: _subClassDesc,
|
||||
quantity: qty,
|
||||
unitValue: _unitValue.toString(),
|
||||
baseMarketval:
|
||||
_calculateBaseMarketValue()
|
||||
.toString(),
|
||||
noOfProductive: pr_qty,
|
||||
noOfNonproductive: nonpr_qty,
|
||||
fruitBearing: _fruitBearing);
|
||||
|
||||
context.read<OtherImprovementsBloc>().add(
|
||||
AddOtherImprovement(
|
||||
other_imp: improvement));
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
primary: Colors.black,
|
||||
),
|
||||
child: const Text("Submit"),
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
width:
|
||||
5), // Use SizedBox for horizontal spacing in a Row
|
||||
Container(
|
||||
width: 120,
|
||||
height: 60,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
context.read<OtherImprovementsBloc>().add(
|
||||
LoadOtherImprovementEdit(
|
||||
other_imps: <OtherImprovements>[],
|
||||
ids: widget.tempId));
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
primary: Colors.black,
|
||||
),
|
||||
child: const Text("Cancel"),
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
if (state is LandTreesImprovementsErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<LandTreesImprovementsBloc>()
|
||||
.add(LoadLandTreesImprovements());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}
|
||||
if (state is OtherImprovementErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<OtherImprovementsBloc>().add(LoadOtherImprovement());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,356 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_property_assessment/land_property_assessment_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_value_adjustments/land_value_adjustments_bloc.dart';
|
||||
import 'package:unit2/model/passo/land_property_assessment.dart';
|
||||
import 'package:unit2/model/passo/land_value_adjustment.dart';
|
||||
import 'package:unit2/theme-data.dart/form-style.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
|
||||
class AddPropertyAssessmentEditModal extends StatefulWidget {
|
||||
// final List<UnitConstruct> unit;
|
||||
// final List<ClassComponents> options;
|
||||
final int tempId;
|
||||
|
||||
AddPropertyAssessmentEditModal(this.tempId);
|
||||
|
||||
@override
|
||||
_AddPropertyAssessmentEditModal createState() =>
|
||||
_AddPropertyAssessmentEditModal();
|
||||
}
|
||||
|
||||
class _AddPropertyAssessmentEditModal
|
||||
extends State<AddPropertyAssessmentEditModal> {
|
||||
final focus = FocusNode();
|
||||
bool isPainted = false;
|
||||
bool isSecondHand = false;
|
||||
TextEditingController textEditingController = TextEditingController();
|
||||
double _unitBase = 0;
|
||||
int _areaValue = 0;
|
||||
final double _depValue = 0;
|
||||
double _unitValue = 0;
|
||||
String _subClassDesc = "";
|
||||
int _classId = 0;
|
||||
String _structureType = "";
|
||||
int _notPaintedUnitVal = 0;
|
||||
int _secondHandUnitVal = 0;
|
||||
String cityCode = '';
|
||||
String cityDesc = '';
|
||||
int classCode = 1;
|
||||
String _classDesc = '';
|
||||
String _treeType = "";
|
||||
bool _nonfruitBearing = false;
|
||||
bool _fruitBearing = false;
|
||||
int qty = 0;
|
||||
int pr_qty = 0;
|
||||
int nonpr_qty = 0;
|
||||
String _actualUse = "Residential";
|
||||
String _assessmentLevel = "";
|
||||
|
||||
GlobalKey<FormBuilderState> assessmentKey = GlobalKey<FormBuilderState>();
|
||||
|
||||
final typeOfTree = [
|
||||
"Non-Fruit Bearing",
|
||||
"Fruit Bearing",
|
||||
];
|
||||
|
||||
final actual_use = [
|
||||
"Residential",
|
||||
"Agricultural",
|
||||
"Commercial",
|
||||
"Industrial",
|
||||
"Mineral",
|
||||
"Timberland",
|
||||
];
|
||||
|
||||
calculateAssessmentValue() {
|
||||
switch (_actualUse) {
|
||||
case "Residential":
|
||||
return _unitValue * 0.20;
|
||||
break;
|
||||
case "Agricultural":
|
||||
return _unitValue * 0.40;
|
||||
break;
|
||||
case "Commercial":
|
||||
return _unitValue * 0.50;
|
||||
break;
|
||||
case "Industrial":
|
||||
return _unitValue * 0.50;
|
||||
break;
|
||||
case "Mineral":
|
||||
return _unitValue * 0.50;
|
||||
break;
|
||||
case "Timberland":
|
||||
return _unitValue * 0.20;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
BoxDecoration box1() {
|
||||
return const BoxDecoration(boxShadow: [
|
||||
BoxShadow(color: Colors.black12, spreadRadius: 5, blurRadius: 5)
|
||||
], color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(3)));
|
||||
}
|
||||
|
||||
double _amountofDepreciation(unitVal, unitBase, area, depreciation) {
|
||||
return ((unitVal * unitBase) * area) * depreciation;
|
||||
}
|
||||
|
||||
double _totalMarketValue(unitBase, area) {
|
||||
return unitBase * area;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocBuilder<LandPropertyAssessmentBloc, LandPropertyAssessmentState>(
|
||||
buildWhen: (previous, current) {
|
||||
return false;
|
||||
}, builder: (context, state) {
|
||||
if (state is ShowAddLandPropertyAssessmentScreen) {
|
||||
return BlocConsumer<LandValueAdjustmentsBloc,
|
||||
LandValueAdjustmentsState>(listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
}, builder: (context, state) {
|
||||
if (state is LandValueAdjustmentsLoaded) {
|
||||
final assessment = state.val_adj;
|
||||
return FormBuilder(
|
||||
key: assessmentKey,
|
||||
onChanged: () {
|
||||
assessmentKey.currentState?.save();
|
||||
},
|
||||
autovalidateMode: AutovalidateMode.disabled,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
child: SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
Container(
|
||||
margin: const EdgeInsets.only(
|
||||
left: 0, top: 10, right: 0, bottom: 0),
|
||||
child: Expanded(
|
||||
flex: 1,
|
||||
child: FormBuilderDropdown<ValueAdjustments>(
|
||||
name: 'value_adjustments',
|
||||
autofocus: false,
|
||||
decoration: normalTextFieldStyle(
|
||||
"Value Adjustments", ""),
|
||||
items: state.val_adj
|
||||
.map((adj) =>
|
||||
DropdownMenuItem<ValueAdjustments>(
|
||||
value: adj,
|
||||
child: Text(
|
||||
(adj.adjustmentFactors ?? ""),
|
||||
),
|
||||
))
|
||||
.toList(),
|
||||
onChanged: (selectedAdj) {
|
||||
if (selectedAdj != null) {
|
||||
setState(() {
|
||||
_unitValue = double.parse(
|
||||
selectedAdj.marketValue!);
|
||||
});
|
||||
}
|
||||
},
|
||||
)),
|
||||
),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
FormBuilderDropdown<String?>(
|
||||
name: "land_actual_use",
|
||||
autofocus: false,
|
||||
decoration: normalTextFieldStyle("Actual Use", ""),
|
||||
items: actual_use
|
||||
.map((item) => DropdownMenuItem(
|
||||
value: item,
|
||||
child: Text(item),
|
||||
))
|
||||
.toList(),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_actualUse = value!;
|
||||
|
||||
switch (value) {
|
||||
case "Residential":
|
||||
setState(() {
|
||||
_assessmentLevel = '20';
|
||||
});
|
||||
|
||||
break;
|
||||
case "Agricultural":
|
||||
setState(() {
|
||||
_assessmentLevel = '40';
|
||||
});
|
||||
|
||||
break;
|
||||
case "Commercial":
|
||||
setState(() {
|
||||
_assessmentLevel = '50';
|
||||
});
|
||||
|
||||
break;
|
||||
case "Industrial":
|
||||
setState(() {
|
||||
_assessmentLevel = '50';
|
||||
});
|
||||
|
||||
break;
|
||||
case "Mineral":
|
||||
setState(() {
|
||||
_assessmentLevel = '50';
|
||||
});
|
||||
|
||||
break;
|
||||
case "Timberland":
|
||||
setState(() {
|
||||
_assessmentLevel = '20';
|
||||
});
|
||||
|
||||
break;
|
||||
default:
|
||||
}
|
||||
});
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
Text('Assessment Level'),
|
||||
Container(
|
||||
height: 45.0,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
border: Border.all(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
child: Align(
|
||||
alignment: Alignment.center,
|
||||
child: Text(_assessmentLevel + '%'),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
Text('Assessment Value'),
|
||||
Container(
|
||||
height: 45.0,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
border: Border.all(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
child: Align(
|
||||
alignment: Alignment.center,
|
||||
child: Text(NumberFormat.currency(
|
||||
locale: 'en-PH',
|
||||
symbol: "₱",
|
||||
).format(calculateAssessmentValue().toString() ==
|
||||
"0.00"
|
||||
? "00.0"
|
||||
: calculateAssessmentValue())),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 120,
|
||||
height: 60,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: ElevatedButton(
|
||||
onPressed: () async {
|
||||
var assessment = LandPropertyAssessment(
|
||||
landapprDetailsId: widget.tempId,
|
||||
actualUse: _actualUse,
|
||||
marketval: _unitValue.toString(),
|
||||
assessmentLevel: _assessmentLevel,
|
||||
assessedValue:
|
||||
calculateAssessmentValue()
|
||||
.toString(),
|
||||
totalMarketval: '0',
|
||||
totalAssessedval: '0');
|
||||
|
||||
context
|
||||
.read<LandPropertyAssessmentBloc>()
|
||||
.add(AddLandPropertyAssessment(
|
||||
assessment: assessment));
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
primary: Colors.black,
|
||||
),
|
||||
child: const Text("Submit"),
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
width:
|
||||
5), // Use SizedBox for horizontal spacing in a Row
|
||||
Container(
|
||||
width: 120,
|
||||
height: 60,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
context
|
||||
.read<LandPropertyAssessmentBloc>()
|
||||
.add(
|
||||
const LoadLandPropertyAssessment());
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
primary: Colors.black,
|
||||
),
|
||||
child: const Text("Cancel"),
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
if (state is LandValueAdjustmentsErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<LandValueAdjustmentsBloc>()
|
||||
.add(LoadLandValueAdjustments());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}
|
||||
if (state is LandPropertyAssessmentErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<LandPropertyAssessmentBloc>()
|
||||
.add(LoadLandPropertyAssessment());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,9 +1,12 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_appraisal/land_appraisal_bloc.dart';
|
||||
import 'package:unit2/model/passo/land_appr.dart';
|
||||
import 'package:unit2/screens/passo/Land/add_land/AddLandAppraisal.dart';
|
||||
import 'package:unit2/screens/passo/Land/edit_land/AddLandAppraisalEdit.dart';
|
||||
|
||||
import 'package:unit2/utils/alerts.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
|
@ -12,7 +15,8 @@ import 'package:unit2/widgets/passo/custom_button.dart';
|
|||
class LandAppraisalEdit extends StatefulWidget {
|
||||
Function PrevBtn;
|
||||
Function NextBtn;
|
||||
LandAppraisalEdit(this.PrevBtn, this.NextBtn);
|
||||
final int faasId;
|
||||
LandAppraisalEdit(this.PrevBtn, this.NextBtn, this.faasId);
|
||||
@override
|
||||
_LandAppraisalEdit createState() => _LandAppraisalEdit();
|
||||
}
|
||||
|
@ -32,9 +36,24 @@ class _LandAppraisalEdit extends State<LandAppraisalEdit> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocConsumer<LandAppraisalBloc, LandAppraisalState>(
|
||||
return ProgressHUD(
|
||||
padding: const EdgeInsets.all(24),
|
||||
backgroundColor: Colors.black87,
|
||||
indicatorWidget: const SpinKitFadingCircle(color: Colors.white),
|
||||
child: BlocConsumer<LandAppraisalBloc, LandAppraisalState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is LandAppraisalLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is LandAppraisalLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is LandAppraisalErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
}, builder: (context, state) {
|
||||
final state = context.watch<LandAppraisalBloc>().state;
|
||||
if (state is LandAppraisalLoaded) {
|
||||
|
@ -219,22 +238,23 @@ class _LandAppraisalEdit extends State<LandAppraisalEdit> {
|
|||
successAlert(context, "Deletion Successful",
|
||||
"Extra item has been deleted successfully", () {
|
||||
Navigator.of(context).pop();
|
||||
context.read<LandAppraisalBloc>().add(const LoadLandAppraisal());
|
||||
context.read<LandAppraisalBloc>().add(LoadLandAppraisalEdit(
|
||||
land_appr: const <LandAppr>[], id: widget.faasId!));
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
if (state is ShowAddLandAppraisalScreen) {
|
||||
return ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
constraints: const BoxConstraints(
|
||||
maxHeight: 700.0,
|
||||
),
|
||||
child: AlertDialog(
|
||||
insetPadding: EdgeInsets.symmetric(
|
||||
insetPadding: const EdgeInsets.symmetric(
|
||||
horizontal: 20.0,
|
||||
vertical: 10.0,
|
||||
),
|
||||
title: Text(
|
||||
title: const Text(
|
||||
'ADD LAND APPRAISAL',
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
|
@ -242,7 +262,17 @@ class _LandAppraisalEdit extends State<LandAppraisalEdit> {
|
|||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(child: AddLandAppraisalModal()),
|
||||
Align(
|
||||
alignment: Alignment.topCenter,
|
||||
child: Container(
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(maxHeight: 500),
|
||||
child: Container(
|
||||
child: AddLandAppraisalEditModal(widget.faasId),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -252,11 +282,13 @@ class _LandAppraisalEdit extends State<LandAppraisalEdit> {
|
|||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<LandAppraisalBloc>().add(LoadLandAppraisal());
|
||||
context.read<LandAppraisalBloc>().add(LoadLandAppraisalEdit(
|
||||
land_appr: <LandAppr>[], id: widget.faasId!));
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,11 +5,9 @@ import 'package:flutter_progress_hud/flutter_progress_hud.dart';
|
|||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_boundaries_edit/land_boundaries_edit_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_location_edit/land_location_edit_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_property_owner_info/land_property_owner_info_bloc.dart';
|
||||
import 'package:unit2/model/passo/land_property_boundaries.dart';
|
||||
import 'package:unit2/model/passo/land_property_loc.dart';
|
||||
import 'package:unit2/model/passo/land_property_owner.dart';
|
||||
import 'package:unit2/screens/passo/Land/add_land.dart';
|
||||
import 'package:unit2/screens/passo/Land/edit_land/property_owner_info_edit.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
|
@ -53,7 +51,7 @@ class _LandLocationAndBoundariesEdit
|
|||
return BlocConsumer<LandBoundariesEditBloc,
|
||||
LandBoundariesEditState>(
|
||||
listener: (context, state) {
|
||||
if (state is LandLocationEditLoaded) {
|
||||
if (state is LandBoundariesEditLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
|
@ -70,7 +68,11 @@ class _LandLocationAndBoundariesEdit
|
|||
'street': landLoc.street,
|
||||
'brgy': landLoc.barangay,
|
||||
'municipality': landLoc.municipality,
|
||||
'province': landLoc.province
|
||||
'province': landLoc.province,
|
||||
'north': state.land_boundaries_edit.north,
|
||||
'south': state.land_boundaries_edit.south,
|
||||
'east': state.land_boundaries_edit.east,
|
||||
'west': state.land_boundaries_edit.west
|
||||
},
|
||||
enabled: true,
|
||||
onChanged: () {
|
||||
|
@ -169,7 +171,7 @@ class _LandLocationAndBoundariesEdit
|
|||
child: customTextField(
|
||||
"West", "", "west"))
|
||||
]),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 50,
|
||||
),
|
||||
Row(
|
||||
|
@ -212,13 +214,15 @@ class _LandLocationAndBoundariesEdit
|
|||
?.value['province'],
|
||||
);
|
||||
|
||||
context.read<LandLocationEditBloc>()
|
||||
..add(UpdateLandLocationEdit(
|
||||
context
|
||||
.read<LandLocationEditBloc>()
|
||||
.add(UpdateLandLocationEdit(
|
||||
land_loc_edit: location,
|
||||
id: widget.land.id!));
|
||||
|
||||
context.read<LandBoundariesEditBloc>()
|
||||
..add(UpdateLandBoundariesEdit(
|
||||
context
|
||||
.read<LandBoundariesEditBloc>()
|
||||
.add(UpdateLandBoundariesEdit(
|
||||
land_boundaries_edit:
|
||||
boundaries,
|
||||
id: widget.land.id!));
|
||||
|
|
|
@ -1,14 +1,21 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:unit2/bloc/passo/land/other_improvements/other_improvements_bloc.dart';
|
||||
import 'package:unit2/model/passo/other_improvements.dart';
|
||||
import 'package:unit2/screens/passo/Land/add_land/AddOtherImprovementModal.dart';
|
||||
import 'package:unit2/screens/passo/Land/edit_land/AddOtherImprovementEditModal.dart';
|
||||
import 'package:unit2/utils/alerts.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
import 'package:unit2/widgets/passo/custom_button.dart';
|
||||
|
||||
class OtherImprovementEditPage extends StatefulWidget {
|
||||
Function PrevBtn;
|
||||
Function NextBtn;
|
||||
OtherImprovementEditPage(this.PrevBtn, this.NextBtn);
|
||||
final int faasId;
|
||||
OtherImprovementEditPage(this.PrevBtn, this.NextBtn, this.faasId);
|
||||
@override
|
||||
_OtherImprovementEditPage createState() => _OtherImprovementEditPage();
|
||||
}
|
||||
|
@ -30,9 +37,25 @@ class _OtherImprovementEditPage extends State<OtherImprovementEditPage> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocConsumer<OtherImprovementsBloc, OtherImprovementsState>(
|
||||
return Scaffold(
|
||||
body: ProgressHUD(
|
||||
padding: const EdgeInsets.all(24),
|
||||
backgroundColor: Colors.black87,
|
||||
indicatorWidget: const SpinKitFadingCircle(color: Colors.white),
|
||||
child: BlocConsumer<OtherImprovementsBloc, OtherImprovementsState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is OtherImprovementLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is OtherImprovementLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is OtherImprovementErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
}, builder: (context, state) {
|
||||
final state = context.watch<OtherImprovementsBloc>().state;
|
||||
if (state is OtherImprovementLoaded) {
|
||||
|
@ -120,14 +143,16 @@ class _OtherImprovementEditPage extends State<OtherImprovementEditPage> {
|
|||
DataCell(Text(dataRow.fruitBearing!
|
||||
? "Fruit Bearing"
|
||||
: "Non-Fruit Bearing")),
|
||||
DataCell(Text(dataRow.quantity.toString()!)),
|
||||
DataCell(
|
||||
Text(dataRow.noOfProductive.toString()!)),
|
||||
Text(dataRow.quantity.toString()!)),
|
||||
DataCell(Text(
|
||||
dataRow.noOfNonproductive.toString()!)),
|
||||
DataCell(Text(dataRow.unitValue.toString()!)),
|
||||
dataRow.noOfProductive.toString()!)),
|
||||
DataCell(Text(dataRow.noOfNonproductive
|
||||
.toString()!)),
|
||||
DataCell(
|
||||
Text(dataRow.baseMarketval.toString()!)),
|
||||
Text(dataRow.unitValue.toString()!)),
|
||||
DataCell(Text(
|
||||
dataRow.baseMarketval.toString()!)),
|
||||
DataCell(Row(
|
||||
children: [
|
||||
InkWell(
|
||||
|
@ -252,12 +277,37 @@ class _OtherImprovementEditPage extends State<OtherImprovementEditPage> {
|
|||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [Container(child: AddOtherImprovementModal())],
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.topCenter,
|
||||
child: Container(
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(maxHeight: 500),
|
||||
child: Container(
|
||||
child: AddOtherImprovementEditModal(widget.faasId),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
if (state is OtherImprovementErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<OtherImprovementsBloc>().add(
|
||||
LoadOtherImprovementEdit(
|
||||
other_imps: const <OtherImprovements>[],
|
||||
ids: widget.faasId));
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,21 +1,26 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:form_builder_validators/form_builder_validators.dart';
|
||||
import 'package:searchfield/searchfield.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_ext/land_ext_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_ext_bloc/land_ext_edit_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/memoranda/memoranda_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/signatories/signatories_bloc.dart';
|
||||
import 'package:unit2/model/passo/land_ext.dart';
|
||||
import 'package:unit2/model/passo/memoranda.dart';
|
||||
import 'package:unit2/model/passo/signatories.dart';
|
||||
import 'package:unit2/screens/passo/Land/add_land.dart';
|
||||
import 'package:unit2/screens/passo/Land/edit_land/property_owner_info_edit.dart';
|
||||
import 'package:unit2/theme-data.dart/colors.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
|
||||
class LandSignatoriesEdit extends StatefulWidget {
|
||||
Function onSAve;
|
||||
LandSignatoriesEdit(this.onSAve);
|
||||
final int faasId;
|
||||
LandSignatoriesEdit(this.onSAve, this.faasId);
|
||||
|
||||
@override
|
||||
_LandSignatoriesEdit createState() => _LandSignatoriesEdit();
|
||||
|
@ -28,38 +33,86 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
String _memoranda = "";
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocConsumer<LandExtBloc, LandExtState>(
|
||||
return Scaffold(
|
||||
body: ProgressHUD(
|
||||
padding: const EdgeInsets.all(24),
|
||||
backgroundColor: Colors.black87,
|
||||
indicatorWidget: const SpinKitFadingCircle(color: Colors.white),
|
||||
child: BlocConsumer<LandExtEditBloc, LandExtEditState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is LandExtEditLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
|
||||
if (state is LandExtEditErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is LandExtLoaded) {
|
||||
if (state is LandExtEditLoaded) {
|
||||
final landext = state.land_ext_edit;
|
||||
return BlocConsumer<SignatoriesBloc, SignatoriesState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is SignatoriesErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is SignatoriesLoaded) {
|
||||
final signatories = state.signatories;
|
||||
return BlocConsumer<MemorandaBloc, MemorandaState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is MemorandaLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is MemorandaErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
if (state is MemorandaLoaded) {
|
||||
return SingleChildScrollView(
|
||||
return FormBuilder(
|
||||
key: landEditKey,
|
||||
initialValue: {
|
||||
'land_qtr': landext.qtr.toString(),
|
||||
'land_yr': landext.yr.toString(),
|
||||
'app_date_land': landext.appraisedbyDate,
|
||||
'rec_date_land': landext.recommendapprDate,
|
||||
'apprvd_by_date_land': landext.approvedbyDate,
|
||||
'sworn_statement_land': landext.swornstatementNo,
|
||||
'date_received_land': landext.dateReceived,
|
||||
'date_of_entry_land': landext.entryDateAssessment,
|
||||
'by_land': landext.entryDateBy
|
||||
},
|
||||
enabled: true,
|
||||
onChanged: () {
|
||||
landEditKey.currentState!.save();
|
||||
debugPrint(
|
||||
landEditKey.currentState!.value.toString());
|
||||
},
|
||||
autovalidateMode: AutovalidateMode.disabled,
|
||||
skipDisabled: true,
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
margin: const EdgeInsets.only(
|
||||
left: 0, top: 20, right: 0, bottom: 10),
|
||||
child: const Text('PROPERTY ASSESSMENT cont..',
|
||||
child: const Text(
|
||||
'PROPERTY ASSESSMENT cont..',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold, fontSize: 18),
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 18),
|
||||
textAlign: TextAlign.left),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceAround,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
|
@ -98,7 +151,8 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
),
|
||||
const Text(
|
||||
'EFFECTIVITY OF ASSESSMENT / REASSESSMENT :',
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold),
|
||||
),
|
||||
const SizedBox(
|
||||
height: 20,
|
||||
|
@ -114,7 +168,8 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
child: FormBuilderTextField(
|
||||
name: 'land_qtr',
|
||||
validator:
|
||||
FormBuilderValidators.compose([]),
|
||||
FormBuilderValidators.compose(
|
||||
[]),
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
|
@ -127,7 +182,8 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
child: FormBuilderTextField(
|
||||
name: 'land_yr',
|
||||
validator:
|
||||
FormBuilderValidators.compose([]),
|
||||
FormBuilderValidators.compose(
|
||||
[]),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -139,29 +195,39 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
left: 0, top: 40, right: 0, bottom: 10),
|
||||
child: const Text('SIGNATORIES',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold, fontSize: 18),
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 18),
|
||||
textAlign: TextAlign.left),
|
||||
),
|
||||
const SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
Align(
|
||||
const Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(
|
||||
'APPRAISED/ASSESSED BY:',
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
style:
|
||||
TextStyle(fontWeight: FontWeight.bold),
|
||||
textAlign: TextAlign.start,
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceAround,
|
||||
children: [
|
||||
Column(
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 200,
|
||||
child: FormBuilderDropdown<Signatories>(
|
||||
child:
|
||||
FormBuilderDropdown<Signatories>(
|
||||
name: 'appraised_by_land',
|
||||
decoration: InputDecoration(
|
||||
labelText: landext
|
||||
.appraisedbyName!,
|
||||
labelStyle: const TextStyle(
|
||||
color: Colors.black),
|
||||
),
|
||||
autofocus: false,
|
||||
items: signatories
|
||||
.map((signatories) =>
|
||||
|
@ -172,7 +238,7 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
))
|
||||
.toList()),
|
||||
),
|
||||
Text('Name'),
|
||||
const Text('Name'),
|
||||
],
|
||||
),
|
||||
const SizedBox(
|
||||
|
@ -185,16 +251,17 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
child: FormBuilderDateTimePicker(
|
||||
name: 'app_date_land',
|
||||
initialEntryMode:
|
||||
DatePickerEntryMode.calendarOnly,
|
||||
DatePickerEntryMode
|
||||
.calendarOnly,
|
||||
initialValue: DateTime.now(),
|
||||
inputType: InputType.date,
|
||||
|
||||
initialTime:
|
||||
const TimeOfDay(hour: 8, minute: 0),
|
||||
initialTime: const TimeOfDay(
|
||||
hour: 8, minute: 0),
|
||||
// locale: const Locale.fromSubtags(languageCode: 'fr'),
|
||||
),
|
||||
),
|
||||
Text('Date'),
|
||||
const Text('Date'),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
@ -206,17 +273,26 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
alignment: Alignment.centerLeft,
|
||||
child: Text(
|
||||
'RECOMMENDING APPROVAL:',
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold),
|
||||
)),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceAround,
|
||||
children: [
|
||||
Column(
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 200,
|
||||
child: FormBuilderDropdown<Signatories>(
|
||||
child:
|
||||
FormBuilderDropdown<Signatories>(
|
||||
name: 'rec_approval_land',
|
||||
decoration: InputDecoration(
|
||||
labelText: landext
|
||||
.recommendapprName!,
|
||||
labelStyle: const TextStyle(
|
||||
color: Colors.black),
|
||||
),
|
||||
autofocus: false,
|
||||
items: signatories
|
||||
.map((signatories) =>
|
||||
|
@ -227,7 +303,7 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
))
|
||||
.toList()),
|
||||
),
|
||||
Text('Name'),
|
||||
const Text('Name'),
|
||||
],
|
||||
),
|
||||
const SizedBox(
|
||||
|
@ -240,16 +316,17 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
child: FormBuilderDateTimePicker(
|
||||
name: 'rec_date_land',
|
||||
initialEntryMode:
|
||||
DatePickerEntryMode.calendarOnly,
|
||||
DatePickerEntryMode
|
||||
.calendarOnly,
|
||||
initialValue: DateTime.now(),
|
||||
inputType: InputType.date,
|
||||
|
||||
initialTime:
|
||||
const TimeOfDay(hour: 8, minute: 0),
|
||||
initialTime: const TimeOfDay(
|
||||
hour: 8, minute: 0),
|
||||
// locale: const Locale.fromSubtags(languageCode: 'fr'),
|
||||
),
|
||||
),
|
||||
Text('Date'),
|
||||
const Text('Date'),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
@ -272,8 +349,15 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
children: [
|
||||
SizedBox(
|
||||
width: 200,
|
||||
child: FormBuilderDropdown<Signatories>(
|
||||
child:
|
||||
FormBuilderDropdown<Signatories>(
|
||||
name: 'apprvd_by_land',
|
||||
decoration: InputDecoration(
|
||||
labelText:
|
||||
landext.approvedbyName!,
|
||||
labelStyle: const TextStyle(
|
||||
color: Colors.black),
|
||||
),
|
||||
autofocus: false,
|
||||
items: signatories
|
||||
.map((signatories) =>
|
||||
|
@ -284,7 +368,7 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
))
|
||||
.toList()),
|
||||
),
|
||||
Text('Name'),
|
||||
const Text('Name'),
|
||||
],
|
||||
),
|
||||
const SizedBox(
|
||||
|
@ -297,12 +381,13 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
child: FormBuilderDateTimePicker(
|
||||
name: 'apprvd_by_date_land',
|
||||
initialEntryMode:
|
||||
DatePickerEntryMode.calendarOnly,
|
||||
DatePickerEntryMode
|
||||
.calendarOnly,
|
||||
initialValue: DateTime.now(),
|
||||
inputType: InputType.date,
|
||||
|
||||
initialTime:
|
||||
const TimeOfDay(hour: 8, minute: 0),
|
||||
initialTime: const TimeOfDay(
|
||||
hour: 8, minute: 0),
|
||||
// locale: const Locale.fromSubtags(languageCode: 'fr'),
|
||||
),
|
||||
),
|
||||
|
@ -322,7 +407,7 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
)),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 50,
|
||||
),
|
||||
SizedBox(
|
||||
|
@ -338,7 +423,8 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
child: ListTile(
|
||||
title: Text(
|
||||
'${memoranda.memoranda}',
|
||||
overflow: TextOverflow.ellipsis,
|
||||
overflow:
|
||||
TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
))
|
||||
|
@ -356,16 +442,18 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
suggestionState: Suggestion.expand,
|
||||
onSuggestionTap: (memoranda) {
|
||||
setState(() {
|
||||
_memoranda = memoranda.item!.memoranda!;
|
||||
_memoranda =
|
||||
memoranda.item!.memoranda!;
|
||||
});
|
||||
focus.unfocus();
|
||||
},
|
||||
)),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Sworn Statement No. :'),
|
||||
SizedBox(
|
||||
|
@ -374,16 +462,18 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
child: FormBuilderTextField(
|
||||
name: 'sworn_statement_land',
|
||||
decoration: InputDecoration(),
|
||||
validator: FormBuilderValidators.compose([]),
|
||||
validator:
|
||||
FormBuilderValidators.compose([]),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Date Received:'),
|
||||
SizedBox(
|
||||
|
@ -403,13 +493,15 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Date of Entry in the Rec. of Ass. :'),
|
||||
const Text(
|
||||
'Date of Entry in the Rec. of Ass. :'),
|
||||
SizedBox(
|
||||
width: 100,
|
||||
height: 20,
|
||||
|
@ -427,25 +519,27 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('By:'),
|
||||
const Text('By:'),
|
||||
SizedBox(
|
||||
width: 150,
|
||||
height: 20,
|
||||
child: FormBuilderTextField(
|
||||
name: 'by_land',
|
||||
decoration: InputDecoration(),
|
||||
validator: FormBuilderValidators.compose([]),
|
||||
decoration: const InputDecoration(),
|
||||
validator:
|
||||
FormBuilderValidators.compose([]),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
ElevatedButton(
|
||||
|
@ -457,55 +551,48 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
tempID.getInt('landid')! - 1,
|
||||
taxable: isTaxable,
|
||||
exempt: isExempt,
|
||||
qtr: int.parse(
|
||||
landKey.currentState!.value['land_qtr']),
|
||||
yr: int.parse(
|
||||
landKey.currentState!.value['land_yr']),
|
||||
appraisedbyName: landKey.currentState!.value['appraised_by_land'].firstname +
|
||||
qtr: int.parse(landEditKey
|
||||
.currentState!.value['land_qtr']),
|
||||
yr: int.parse(landEditKey
|
||||
.currentState!.value['land_yr']),
|
||||
appraisedbyName: landEditKey.currentState!.value['appraised_by_land'].firstname +
|
||||
' ' +
|
||||
landKey
|
||||
landEditKey
|
||||
.currentState!
|
||||
.value['appraised_by_land']
|
||||
.middlename +
|
||||
' ' +
|
||||
landKey.currentState!
|
||||
.value['appraised_by_land'].lastname,
|
||||
appraisedbyDate: landKey
|
||||
.currentState!.value['app_date_land'],
|
||||
recommendapprName: landKey
|
||||
landEditKey
|
||||
.currentState!
|
||||
.value['rec_approval_land']
|
||||
.firstname +
|
||||
' ' +
|
||||
landKey
|
||||
.value['appraised_by_land']
|
||||
.lastname,
|
||||
appraisedbyDate: landEditKey
|
||||
.currentState!
|
||||
.value['rec_approval_land']
|
||||
.middlename +
|
||||
.value['app_date_land'],
|
||||
recommendapprName: landEditKey.currentState!.value['rec_approval_land'].firstname +
|
||||
' ' +
|
||||
landKey.currentState!
|
||||
.value['rec_approval_land'].lastname,
|
||||
recommendapprDate: landKey
|
||||
.currentState!.value['rec_date_land'],
|
||||
approvedbyName: landKey.currentState!.value['apprvd_by_land'].firstname +
|
||||
landEditKey.currentState!.value['rec_approval_land'].middlename +
|
||||
' ' +
|
||||
landKey.currentState!.value['apprvd_by_land'].middlename +
|
||||
' ' +
|
||||
landKey.currentState!.value['apprvd_by_land'].lastname,
|
||||
approvedbyDate: landKey.currentState!.value['apprvd_by_date_land'],
|
||||
landEditKey.currentState!.value['rec_approval_land'].lastname,
|
||||
recommendapprDate: landEditKey.currentState!.value['rec_date_land'],
|
||||
approvedbyName: landEditKey.currentState!.value['apprvd_by_land'].firstname + ' ' + landEditKey.currentState!.value['apprvd_by_land'].middlename + ' ' + landEditKey.currentState!.value['apprvd_by_land'].lastname,
|
||||
approvedbyDate: landEditKey.currentState!.value['apprvd_by_date_land'],
|
||||
memoranda: _memoranda,
|
||||
swornstatementNo: landKey.currentState!.value['sworn_statement_land'],
|
||||
dateReceived: landKey.currentState!.value['date_received_land'],
|
||||
entryDateAssessment: landKey.currentState!.value['date_of_entry_land'],
|
||||
entryDateBy: landKey.currentState!.value['by_land']);
|
||||
swornstatementNo: landEditKey.currentState!.value['sworn_statement_land'],
|
||||
dateReceived: landEditKey.currentState!.value['date_received_land'],
|
||||
entryDateAssessment: landEditKey.currentState!.value['date_of_entry_land'],
|
||||
entryDateBy: landEditKey.currentState!.value['by_land']);
|
||||
|
||||
context.read<LandExtBloc>()
|
||||
..add(UpdateLandExt(landext: ext));
|
||||
context.read<LandExtEditBloc>().add(
|
||||
UpdateLandExtEdit(
|
||||
land_ext_edit: ext,
|
||||
id: widget.faasId));
|
||||
widget.onSAve();
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: primary,
|
||||
foregroundColor: Colors.red),
|
||||
child: SizedBox(
|
||||
child: const SizedBox(
|
||||
width: 250,
|
||||
height: 50,
|
||||
child: Align(
|
||||
|
@ -520,13 +607,20 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
],
|
||||
));
|
||||
)),
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
if (state is MemorandaErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<MemorandaBloc>()
|
||||
.add(const LoadMemoranda());
|
||||
},
|
||||
);
|
||||
}
|
||||
|
@ -534,8 +628,33 @@ class _LandSignatoriesEdit extends State<LandSignatoriesEdit> {
|
|||
},
|
||||
);
|
||||
}
|
||||
if (state is SignatoriesErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context
|
||||
.read<SignatoriesBloc>()
|
||||
.add(const LoadSignatories());
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
);
|
||||
}
|
||||
if (state is LandExtEditErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<LandExtEditBloc>().add(LoadLandExtEdit(
|
||||
land_ext_edit: LandExt(), id: widget.faasId));
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,22 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:unit2/bloc/passo/bulding/property_assessment_edit/property_assessment_edit_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_property_assessment/land_property_assessment_bloc.dart';
|
||||
import 'package:unit2/model/passo/land_property_assessment.dart';
|
||||
import 'package:unit2/screens/passo/Land/add_land/AddPropertyAssessmentModal.dart';
|
||||
import 'package:unit2/screens/passo/Land/edit_land/AddPropertyAssessmentEditModal.dart';
|
||||
import 'package:unit2/utils/alerts.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
import 'package:unit2/widgets/passo/custom_button.dart';
|
||||
|
||||
class LandPropertyAssessmentEditPage extends StatefulWidget {
|
||||
Function PrevBtn;
|
||||
Function NextBtn;
|
||||
LandPropertyAssessmentEditPage(this.PrevBtn, this.NextBtn);
|
||||
final int faasId;
|
||||
LandPropertyAssessmentEditPage(this.PrevBtn, this.NextBtn, this.faasId);
|
||||
@override
|
||||
_LandPropertyAssessmentEditPage createState() =>
|
||||
_LandPropertyAssessmentEditPage();
|
||||
|
@ -32,9 +40,25 @@ class _LandPropertyAssessmentEditPage
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocConsumer<LandPropertyAssessmentBloc,
|
||||
return Scaffold(
|
||||
body: ProgressHUD(
|
||||
padding: const EdgeInsets.all(24),
|
||||
backgroundColor: Colors.black87,
|
||||
indicatorWidget: const SpinKitFadingCircle(color: Colors.white),
|
||||
child: BlocConsumer<LandPropertyAssessmentBloc,
|
||||
LandPropertyAssessmentState>(listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is LandPropertyAssessmentLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is LandPropertyAssessmentLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is LandPropertyAssessmentErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
}, builder: (context, state) {
|
||||
final state = context.watch<LandPropertyAssessmentBloc>().state;
|
||||
if (state is LandPropertyAssessmentLoaded) {
|
||||
|
@ -212,9 +236,10 @@ class _LandPropertyAssessmentEditPage
|
|||
successAlert(context, "Deletion Successful",
|
||||
"Extra item has been deleted successfully", () {
|
||||
Navigator.of(context).pop();
|
||||
context
|
||||
.read<LandPropertyAssessmentBloc>()
|
||||
.add(const LoadLandPropertyAssessment());
|
||||
context.read<LandPropertyAssessmentBloc>().add(
|
||||
LoadLandPropertyAssessmentEdit(
|
||||
assessment: <LandPropertyAssessment>[],
|
||||
id: widget.faasId));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -234,12 +259,29 @@ class _LandPropertyAssessmentEditPage
|
|||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [Container(child: AddPropertyAssessmentModal())],
|
||||
children: [
|
||||
Container(
|
||||
child: AddPropertyAssessmentEditModal(widget.faasId))
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
if (state is LandPropertyAssessmentErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<LandPropertyAssessmentBloc>().add(
|
||||
LoadLandPropertyAssessmentEdit(
|
||||
assessment: const <LandPropertyAssessment>[],
|
||||
id: widget.faasId));
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
return Container();
|
||||
});
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,20 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_value_adjustments/land_value_adjustments_bloc.dart';
|
||||
import 'package:unit2/model/passo/land_value_adjustment.dart';
|
||||
import 'package:unit2/screens/passo/Land/add_land/AddLandValueAdjustmentModal.dart';
|
||||
import 'package:unit2/utils/alerts.dart';
|
||||
import 'package:unit2/utils/text_container.dart';
|
||||
import 'package:unit2/widgets/error_state.dart';
|
||||
import 'package:unit2/widgets/passo/custom_button.dart';
|
||||
|
||||
class ValueAdjustmentEditPage extends StatefulWidget {
|
||||
Function PrevBtn;
|
||||
Function NextBtn;
|
||||
ValueAdjustmentEditPage(this.PrevBtn, this.NextBtn);
|
||||
final int faasId;
|
||||
ValueAdjustmentEditPage(this.PrevBtn, this.NextBtn, this.faasId);
|
||||
@override
|
||||
_ValueAdjustmentEditPage createState() => _ValueAdjustmentEditPage();
|
||||
}
|
||||
|
@ -30,9 +36,26 @@ class _ValueAdjustmentEditPage extends State<ValueAdjustmentEditPage> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocConsumer<LandValueAdjustmentsBloc, LandValueAdjustmentsState>(
|
||||
return Scaffold(
|
||||
body: ProgressHUD(
|
||||
padding: const EdgeInsets.all(24),
|
||||
backgroundColor: Colors.black87,
|
||||
indicatorWidget: const SpinKitFadingCircle(color: Colors.white),
|
||||
child:
|
||||
BlocConsumer<LandValueAdjustmentsBloc, LandValueAdjustmentsState>(
|
||||
listener: (context, state) {
|
||||
// TODO: implement listener
|
||||
if (state is LandValueAdjustmentsLoading) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is LandValueAdjustmentsLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is LandValueAdjustmentsErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
}, builder: (context, state) {
|
||||
final state = context.watch<LandValueAdjustmentsBloc>().state;
|
||||
if (state is LandValueAdjustmentsLoaded) {
|
||||
|
@ -107,7 +130,8 @@ class _ValueAdjustmentEditPage extends State<ValueAdjustmentEditPage> {
|
|||
return DataRow(
|
||||
cells: [
|
||||
DataCell(Text(dataRow.baseMarketval!)),
|
||||
DataCell(Text(dataRow.adjustmentFactors!)),
|
||||
DataCell(
|
||||
Text(dataRow.adjustmentFactors!)),
|
||||
DataCell(Text(dataRow.adjustment!)),
|
||||
DataCell(Text(dataRow.valueAdjustment!)),
|
||||
DataCell(Text(dataRow.marketValue!)),
|
||||
|
@ -213,9 +237,9 @@ class _ValueAdjustmentEditPage extends State<ValueAdjustmentEditPage> {
|
|||
successAlert(context, "Deletion Successful",
|
||||
"Extra item has been deleted successfully", () {
|
||||
Navigator.of(context).pop();
|
||||
context
|
||||
.read<LandValueAdjustmentsBloc>()
|
||||
.add(const LoadLandValueAdjustments());
|
||||
context.read<LandValueAdjustmentsBloc>().add(
|
||||
LoadLandValueAdjustmentsEdit(
|
||||
val_adj: <ValueAdjustments>[], id: widget.faasId));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -240,7 +264,20 @@ class _ValueAdjustmentEditPage extends State<ValueAdjustmentEditPage> {
|
|||
),
|
||||
);
|
||||
}
|
||||
if (state is LandValueAdjustmentsErrorState) {
|
||||
return SomethingWentWrong(
|
||||
message: onError,
|
||||
onpressed: () {
|
||||
context.read<LandValueAdjustmentsBloc>().add(
|
||||
LoadLandValueAdjustmentsEdit(
|
||||
val_adj: const <ValueAdjustments>[],
|
||||
id: widget.faasId));
|
||||
},
|
||||
);
|
||||
}
|
||||
return Container();
|
||||
});
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,8 +90,11 @@ class BuildingHome extends StatelessWidget {
|
|||
final progress = ProgressHUD.of(context);
|
||||
progress!.showWithText("Please wait...");
|
||||
}
|
||||
if (state is PropertyInfoLoaded ||
|
||||
state is PropertyInfoErrorState) {
|
||||
if (state is PropertyInfoLoaded) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
if (state is PropertyInfoErrorState) {
|
||||
final progress = ProgressHUD.of(context);
|
||||
progress?.dismiss();
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import 'package:unit2/bloc/passo/land/land_appraisal/land_appraisal_bloc.dart';
|
|||
import 'package:unit2/bloc/passo/land/land_boundaries_edit/land_boundaries_edit_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_classification/land_classification_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_ext/land_ext_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_ext_bloc/land_ext_edit_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_location_edit/land_location_edit_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_property_assessment/land_property_assessment_bloc.dart';
|
||||
import 'package:unit2/bloc/passo/land/land_property_owner_info/land_property_owner_info_bloc.dart';
|
||||
|
@ -39,10 +40,15 @@ import 'package:unit2/bloc/passo/signatories/signatories_bloc.dart';
|
|||
import 'package:unit2/bloc/user/user_bloc.dart';
|
||||
import 'package:unit2/model/passo/additional_items.dart';
|
||||
import 'package:unit2/model/passo/general_description.dart';
|
||||
import 'package:unit2/model/passo/land_appr.dart';
|
||||
import 'package:unit2/model/passo/land_ext.dart';
|
||||
import 'package:unit2/model/passo/land_property_assessment.dart';
|
||||
import 'package:unit2/model/passo/land_property_boundaries.dart';
|
||||
import 'package:unit2/model/passo/land_property_loc.dart';
|
||||
import 'package:unit2/model/passo/land_property_owner.dart';
|
||||
import 'package:unit2/model/passo/land_ref.dart';
|
||||
import 'package:unit2/model/passo/land_value_adjustment.dart';
|
||||
import 'package:unit2/model/passo/other_improvements.dart';
|
||||
import 'package:unit2/model/passo/property_appraisal.dart';
|
||||
import 'package:unit2/model/passo/property_appraisal_edit.dart';
|
||||
import 'package:unit2/model/passo/property_assessment_edit.dart';
|
||||
|
@ -300,14 +306,20 @@ Card _listCard(LandPropertyOwner property_info, context, index) {
|
|||
..add(LoadLandLocationEdit(
|
||||
land_loc_edit: LandPropertyLoc(),
|
||||
id: property_info.id))),
|
||||
BlocProvider(
|
||||
create: (context) => LandExtEditBloc()
|
||||
..add(LoadLandExtEdit(
|
||||
land_ext_edit: LandExt(), id: property_info.id))),
|
||||
BlocProvider(
|
||||
create: (context) => LandBoundariesEditBloc()
|
||||
..add(LoadLandBoundariesEdit(
|
||||
land_boundaries_edit: LandPropertyBoundaries(),
|
||||
id: property_info.id))),
|
||||
BlocProvider(
|
||||
create: (context) =>
|
||||
LandAppraisalBloc()..add(LoadLandAppraisal())),
|
||||
create: (context) => LandAppraisalBloc()
|
||||
..add(LoadLandAppraisalEdit(
|
||||
land_appr: const <LandAppr>[],
|
||||
id: property_info.id!))),
|
||||
BlocProvider(
|
||||
create: (context) => LandClassificationBloc()
|
||||
..add(LoadLandClassification())),
|
||||
|
@ -316,8 +328,10 @@ Card _listCard(LandPropertyOwner property_info, context, index) {
|
|||
..add(LoadLandSubClassification(
|
||||
cityCode: "1", classCode: 1))),
|
||||
BlocProvider(
|
||||
create: (context) =>
|
||||
OtherImprovementsBloc()..add(LoadOtherImprovement())),
|
||||
create: (context) => OtherImprovementsBloc()
|
||||
..add(LoadOtherImprovementEdit(
|
||||
other_imps: const <OtherImprovements>[],
|
||||
ids: property_info.id!))),
|
||||
BlocProvider(
|
||||
create: (context) =>
|
||||
TypeOfLocationBloc()..add(LoadTypeOfLocation())),
|
||||
|
@ -326,7 +340,9 @@ Card _listCard(LandPropertyOwner property_info, context, index) {
|
|||
TypeOfRoadBloc()..add(LoadTypeOfRoad())),
|
||||
BlocProvider(
|
||||
create: (context) => LandPropertyAssessmentBloc()
|
||||
..add(LoadLandPropertyAssessment())),
|
||||
..add(LoadLandPropertyAssessmentEdit(
|
||||
assessment: <LandPropertyAssessment>[],
|
||||
id: property_info.id!))),
|
||||
BlocProvider(
|
||||
create: (context) => LandTreesImprovementsBloc()
|
||||
..add(LoadLandTreesImprovements())),
|
||||
|
@ -334,7 +350,9 @@ Card _listCard(LandPropertyOwner property_info, context, index) {
|
|||
create: (context) => LandExtBloc()..add(LoadLandExt())),
|
||||
BlocProvider(
|
||||
create: (context) => LandValueAdjustmentsBloc()
|
||||
..add(LoadLandValueAdjustments())),
|
||||
..add(LoadLandValueAdjustmentsEdit(
|
||||
val_adj: <ValueAdjustments>[],
|
||||
id: property_info.id!))),
|
||||
BlocProvider(
|
||||
create: (context) =>
|
||||
SignatoriesBloc()..add(LoadSignatories())),
|
||||
|
|
|
@ -51,7 +51,7 @@ class _PassoDashBoard extends State<PassoDashBoard> {
|
|||
child: const LandHome(),
|
||||
),
|
||||
EmptyData(
|
||||
message: "Development ongoing ...",
|
||||
message: "Sorry, this page is under construction.",
|
||||
)
|
||||
],
|
||||
),
|
||||
|
|
|
@ -90,7 +90,7 @@ class PropertyAppraisalServices {
|
|||
http.Response response = await Request.instance
|
||||
.getRequest(param: params, path: path, headers: headers);
|
||||
print('Property_Apraisaledit');
|
||||
print(response.statusCode);
|
||||
print(response.body);
|
||||
if (response.statusCode == 200) {
|
||||
final jsonData = jsonDecode(response.body);
|
||||
final dataList = jsonData['data'] as List<dynamic>;
|
||||
|
|
|
@ -98,6 +98,7 @@ class PropertyAssessmentServices {
|
|||
http.Response response = await Request.instance
|
||||
.getRequest(param: params, path: path, headers: headers);
|
||||
print('Assessment');
|
||||
print(response.statusCode);
|
||||
print(response.body);
|
||||
if (response.statusCode == 200) {
|
||||
final jsonData = jsonDecode(response.body);
|
||||
|
|
|
@ -84,53 +84,55 @@ class LandExtServices {
|
|||
return response;
|
||||
}
|
||||
|
||||
// Future<LandExtEdit> fetchEdit(tempID) async {
|
||||
// http.Response response = await http.get(Uri.parse(
|
||||
// '$baseUrl${Url.instance.getLandExt()}?bldgappr_details_id=$tempID'));
|
||||
// print('Assessment');
|
||||
// print(response.body);
|
||||
// if (response.statusCode == 200) {
|
||||
// final jsonData = jsonDecode(response.body);
|
||||
// final dataList = jsonData['data'] as List<dynamic>;
|
||||
// final result =
|
||||
// LandExtEdit.fromJson(dataList[0] as Map<String, dynamic>);
|
||||
Future<http.Response?> updateEdit(LandExt data, id) async {
|
||||
String path = Url.instance.getLandExt();
|
||||
Map<String, String> headers = {
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
'X-Client-Key': xClientKey,
|
||||
'X-Client-Secret': xClientKeySecret
|
||||
};
|
||||
Map<String, String> params = {
|
||||
"landappr_details_id": id.toString(),
|
||||
};
|
||||
http.Response? response;
|
||||
try {
|
||||
response = await Request.instance.putRequest(
|
||||
path: path, body: data.toJson(), headers: headers, param: params);
|
||||
} catch (e) {
|
||||
log(e.toString());
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
// return result;
|
||||
// } else {
|
||||
// throw Exception(response.reasonPhrase);
|
||||
// }
|
||||
// }
|
||||
Future<LandExt> fetchEdit(tempID) async {
|
||||
String path = Url.instance.getLandExt();
|
||||
Map<String, String> headers = {
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
'X-Client-Key': xClientKey,
|
||||
'X-Client-Secret': xClientKeySecret
|
||||
};
|
||||
Map<String, String> params = {
|
||||
"landappr_details_id": tempID.toString(),
|
||||
};
|
||||
try {
|
||||
http.Response response = await Request.instance
|
||||
.getRequest(param: params, path: path, headers: headers);
|
||||
|
||||
// Future<http.Response?> addEdit(LandExtEdit assessment) async {
|
||||
// http.Response? response;
|
||||
// try {
|
||||
// response = await http.post(
|
||||
// Uri.parse("$baseUrl${Url.instance.getLandExt()}"),
|
||||
// headers: {
|
||||
// HttpHeaders.contentTypeHeader: "application/json",
|
||||
// },
|
||||
// body: jsonEncode(assessment.toJson()));
|
||||
// } catch (e) {
|
||||
// log(e.toString());
|
||||
// }
|
||||
// return response;
|
||||
// }
|
||||
print('Landextedit');
|
||||
print(response.body);
|
||||
|
||||
// Future<http.Response?> updateEdit(
|
||||
// LandExtEdit assessment, id) async {
|
||||
// print(id);
|
||||
// http.Response? response;
|
||||
// try {
|
||||
// response = await http.put(Uri.parse(
|
||||
// // ignore: unnecessary_brace_in_string_interps
|
||||
// "$baseUrl${Url.instance.getLandExt()}?bldgappr_details_id=${id}"),
|
||||
// headers: {
|
||||
// HttpHeaders.contentTypeHeader: "application/json",
|
||||
// },
|
||||
// body: jsonEncode(assessment.toJson()));
|
||||
// } catch (e) {
|
||||
// log(e.toString());
|
||||
// }
|
||||
// return response;
|
||||
// }
|
||||
if (response.statusCode == 200) {
|
||||
final jsonData = jsonDecode(response.body);
|
||||
final dataList = jsonData['data'] as List<dynamic>;
|
||||
final result = LandExt.fromJson(dataList[0] as Map<String, dynamic>);
|
||||
|
||||
return result;
|
||||
} else {
|
||||
print(response.reasonPhrase);
|
||||
throw Exception(response.reasonPhrase);
|
||||
}
|
||||
} catch (e) {
|
||||
throw e.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,11 +24,11 @@ class OtherImprovementServices {
|
|||
'X-Client-Secret': xClientKeySecret
|
||||
};
|
||||
Map<String, String> params = {
|
||||
"landappr_details_id": tempID,
|
||||
"landappr_details_id": tempID.toString(),
|
||||
};
|
||||
try {
|
||||
http.Response response = await Request.instance
|
||||
.getRequest(param: {}, path: path, headers: headers);
|
||||
.getRequest(param: params, path: path, headers: headers);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
final List result = jsonDecode(response.body)['data'];
|
||||
|
@ -67,11 +67,11 @@ class OtherImprovementServices {
|
|||
'X-Client-Secret': xClientKeySecret
|
||||
};
|
||||
Map<String, String> params = {
|
||||
"id": id,
|
||||
"id": id.toString(),
|
||||
};
|
||||
try {
|
||||
http.Response response = await Request.instance
|
||||
.deleteRequest(path: path, headers: headers, body: {}, param: {});
|
||||
.deleteRequest(path: path, headers: headers, body: {}, param: params);
|
||||
print(id);
|
||||
if (response.statusCode == 200) {
|
||||
print(response.body);
|
||||
|
|
|
@ -25,11 +25,11 @@ class ValueAdjustmentsServices {
|
|||
'X-Client-Secret': xClientKeySecret
|
||||
};
|
||||
Map<String, String> params = {
|
||||
"landappr_details_id": tempID,
|
||||
"landappr_details_id": tempID.toString(),
|
||||
};
|
||||
try {
|
||||
http.Response response = await Request.instance
|
||||
.getRequest(param: {}, path: path, headers: headers);
|
||||
.getRequest(param: params, path: path, headers: headers);
|
||||
if (response.statusCode == 200) {
|
||||
final List result = jsonDecode(response.body)['data'];
|
||||
print(result);
|
||||
|
@ -67,11 +67,11 @@ class ValueAdjustmentsServices {
|
|||
'X-Client-Secret': xClientKeySecret
|
||||
};
|
||||
Map<String, String> params = {
|
||||
"id": id,
|
||||
"id": id.toString(),
|
||||
};
|
||||
try {
|
||||
http.Response response = await Request.instance
|
||||
.deleteRequest(path: path, headers: headers, body: {}, param: {});
|
||||
.deleteRequest(path: path, headers: headers, body: {}, param: params);
|
||||
print(id);
|
||||
if (response.statusCode == 200) {
|
||||
print(response.body);
|
||||
|
|
|
@ -1,9 +1,4 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:unit2/model/passo/barangay.dart';
|
||||
import 'package:unit2/model/passo/class_components.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:unit2/model/passo/memoranda.dart';
|
||||
import 'package:unit2/utils/request.dart';
|
||||
import 'package:unit2/utils/urls.dart';
|
||||
|
||||
|
@ -14,25 +9,16 @@ class MemorandaServices {
|
|||
String xClientKey = "unitK3CQaXiWlPReDsBzmmwBZPd9Re1z";
|
||||
String xClientKeySecret = "unitcYqAN7GGalyz";
|
||||
|
||||
Future<List<Memoranda>> fetch() async {
|
||||
Future<http.Response> fetch() async {
|
||||
String path = Url.instance.getMemoranda();
|
||||
Map<String, String> headers = {
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
'X-Client-Key': xClientKey,
|
||||
'X-Client-Secret': xClientKeySecret
|
||||
};
|
||||
try {
|
||||
|
||||
http.Response response = await Request.instance
|
||||
.getRequest(param: {}, path: path, headers: headers);
|
||||
if (response.statusCode == 200) {
|
||||
final List result = jsonDecode(response.body)['data'];
|
||||
|
||||
return result.map(((e) => Memoranda.fromJson(e))).toList();
|
||||
} else {
|
||||
throw Exception(response.reasonPhrase);
|
||||
}
|
||||
} catch (e) {
|
||||
throw e.toString();
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ class SignatoriesServices {
|
|||
'X-Client-Key': xClientKey,
|
||||
'X-Client-Secret': xClientKeySecret
|
||||
};
|
||||
try {
|
||||
|
||||
http.Response response = await Request.instance
|
||||
.getRequest(param: {}, path: path, headers: headers);
|
||||
|
||||
|
@ -33,8 +33,5 @@ class SignatoriesServices {
|
|||
print(response.reasonPhrase);
|
||||
throw Exception(response.reasonPhrase);
|
||||
}
|
||||
} catch (e) {
|
||||
throw e.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue