chnages has been made and net salary is being displayed

This commit is contained in:
Daniah Ayad Al-sultani
2026-02-11 14:31:03 +03:00
parent 1002937045
commit a7930d19e5
23 changed files with 691 additions and 141 deletions

View File

@@ -3,6 +3,7 @@ import '../../../domain/usecases/get_attendance_records_usecase.dart';
import '../../../domain/usecases/get_extra_hours_usecase.dart';
import '../../../domain/usecases/get_rewards_usecase.dart';
import '../../../domain/usecases/get_punishments_usecase.dart';
import '../../../domain/usecases/get_salary_summary_usecase.dart';
import '../../../domain/models/finance_record.dart';
import '../../../domain/models/finance_category.dart';
import '../../../core/error/exceptions.dart';
@@ -13,8 +14,15 @@ abstract class FinanceEvent {}
class LoadFinanceDataEvent extends FinanceEvent {
final String employeeId;
final FinanceCategory category;
final int? month;
final int? year;
LoadFinanceDataEvent({required this.employeeId, required this.category});
LoadFinanceDataEvent({
required this.employeeId,
required this.category,
this.month,
this.year,
});
}
// States
@@ -27,8 +35,13 @@ class FinanceLoading extends FinanceState {}
class FinanceLoaded extends FinanceState {
final List<FinanceRecord> records;
final FinanceCategory category;
final double netSalary;
FinanceLoaded({required this.records, required this.category});
FinanceLoaded({
required this.records,
required this.category,
this.netSalary = 0.0,
});
}
class FinanceError extends FinanceState {
@@ -43,12 +56,14 @@ class FinanceBloc extends Bloc<FinanceEvent, FinanceState> {
final GetExtraHoursUseCase getExtraHoursUseCase;
final GetRewardsUseCase getRewardsUseCase;
final GetPunishmentsUseCase getPunishmentsUseCase;
final GetSalarySummaryUseCase getSalarySummaryUseCase;
FinanceBloc({
required this.getAttendanceRecordsUseCase,
required this.getExtraHoursUseCase,
required this.getRewardsUseCase,
required this.getPunishmentsUseCase,
required this.getSalarySummaryUseCase,
}) : super(FinanceInitial()) {
on<LoadFinanceDataEvent>(_onLoadFinanceData);
}
@@ -64,6 +79,27 @@ class FinanceBloc extends Bloc<FinanceEvent, FinanceState> {
emit(FinanceLoading());
try {
final now = DateTime.now();
final month = event.month ?? now.month;
final year = event.year ?? now.year;
double netSalary = 0.0;
print(
'Fetching salary for Employee: ${event.employeeId}, Month: $month, Year: $year',
);
try {
final salaryModel = await getSalarySummaryUseCase.execute(
employeeId: event.employeeId,
month: month,
year: year,
);
print('Salary Model fetched: ${salaryModel.netAmount}');
netSalary = salaryModel.netAmount;
} catch (e) {
print('Error fetching salary: $e');
// We continue even if salary fails, to show the list at least
}
List<FinanceRecord> records;
switch (event.category) {
case FinanceCategory.attendance:
@@ -87,7 +123,13 @@ class FinanceBloc extends Bloc<FinanceEvent, FinanceState> {
);
break;
}
emit(FinanceLoaded(records: records, category: event.category));
emit(
FinanceLoaded(
records: records,
category: event.category,
netSalary: netSalary,
),
);
} on ServerException catch (e) {
emit(FinanceError(message: e.message));
} on NetworkException catch (e) {