Merge branch 'dev' into 312-feature-integrate-google-maps-places-autocomplete-for-hub-address-validation
This commit is contained in:
BIN
apps/mobile/packages/features/staff/availability/all_errors.txt
Normal file
BIN
apps/mobile/packages/features/staff/availability/all_errors.txt
Normal file
Binary file not shown.
BIN
apps/mobile/packages/features/staff/availability/errors.txt
Normal file
BIN
apps/mobile/packages/features/staff/availability/errors.txt
Normal file
Binary file not shown.
@@ -1,9 +1,8 @@
|
||||
import 'package:krow_data_connect/krow_data_connect.dart';
|
||||
import 'package:krow_data_connect/krow_data_connect.dart' as dc;
|
||||
import 'package:firebase_data_connect/firebase_data_connect.dart';
|
||||
import 'package:krow_data_connect/src/session/staff_session_store.dart';
|
||||
import '../../domain/repositories/availability_repository.dart';
|
||||
import '../../domain/entities/day_availability.dart';
|
||||
import '../../domain/entities/availability_slot.dart' as local_slot;
|
||||
import 'package:krow_domain/krow_domain.dart';
|
||||
|
||||
|
||||
/// Implementation of [AvailabilityRepository].
|
||||
@@ -41,10 +40,10 @@ class AvailabilityRepositoryImpl implements AvailabilityRepository {
|
||||
DateTime start, DateTime end) async {
|
||||
|
||||
// 1. Fetch Weekly Template from Backend
|
||||
Map<DayOfWeek, Map<AvailabilitySlot, bool>> weeklyTemplate = {};
|
||||
Map<dc.DayOfWeek, Map<dc.AvailabilitySlot, bool>> weeklyTemplate = {};
|
||||
|
||||
try {
|
||||
final response = await ExampleConnector.instance
|
||||
final response = await dc.ExampleConnector.instance
|
||||
.getStaffAvailabilityStatsByStaffId(staffId: _currentStaffId)
|
||||
.execute();
|
||||
|
||||
@@ -62,7 +61,7 @@ class AvailabilityRepositoryImpl implements AvailabilityRepository {
|
||||
// The snippet showed `listStaffAvailabilityStats`.
|
||||
|
||||
// Let's try to infer from the code I saw earlier.
|
||||
// `ExampleConnector.instance.listStaffAvailabilitiesByStaffId` was used.
|
||||
// `dc.ExampleConnector.instance.listStaffAvailabilitiesByStaffId` was used.
|
||||
// If that produced an error "Method not defined", I should fix it.
|
||||
// But the error log didn't show "Method not defined" for `listStaffAvailabilitiesByStaffId`.
|
||||
// It showed mismatch in return types of `getAvailability`.
|
||||
@@ -92,7 +91,7 @@ class AvailabilityRepositoryImpl implements AvailabilityRepository {
|
||||
// final slotEnum = _mapStringToSlotEnum(def['id']!);
|
||||
// final isSlotAvailable = daySlotsMap[slotEnum] ?? false; // Default false if not set
|
||||
|
||||
return local_slot.AvailabilitySlot(
|
||||
return AvailabilitySlot(
|
||||
id: def['id']!,
|
||||
label: def['label']!,
|
||||
timeRange: def['timeRange']!,
|
||||
@@ -141,7 +140,7 @@ class AvailabilityRepositoryImpl implements AvailabilityRepository {
|
||||
}
|
||||
|
||||
final slots = _slotDefinitions.map((def) {
|
||||
return local_slot.AvailabilitySlot(
|
||||
return AvailabilitySlot(
|
||||
id: def['id']!,
|
||||
label: def['label']!,
|
||||
timeRange: def['timeRange']!,
|
||||
@@ -160,25 +159,25 @@ class AvailabilityRepositoryImpl implements AvailabilityRepository {
|
||||
|
||||
// --- Helpers ---
|
||||
|
||||
DayOfWeek _mapDateTimeToDayOfWeek(int weekday) {
|
||||
switch (weekday) {
|
||||
case DateTime.monday: return DayOfWeek.MONDAY;
|
||||
case DateTime.tuesday: return DayOfWeek.TUESDAY;
|
||||
case DateTime.wednesday: return DayOfWeek.WEDNESDAY;
|
||||
case DateTime.thursday: return DayOfWeek.THURSDAY;
|
||||
case DateTime.friday: return DayOfWeek.FRIDAY;
|
||||
case DateTime.saturday: return DayOfWeek.SATURDAY;
|
||||
case DateTime.sunday: return DayOfWeek.SUNDAY;
|
||||
default: return DayOfWeek.MONDAY;
|
||||
dc.DayOfWeek _mapDateTimeToDayOfWeek(DateTime date) {
|
||||
switch (date.weekday) {
|
||||
case DateTime.monday: return dc.DayOfWeek.MONDAY;
|
||||
case DateTime.tuesday: return dc.DayOfWeek.TUESDAY;
|
||||
case DateTime.wednesday: return dc.DayOfWeek.WEDNESDAY;
|
||||
case DateTime.thursday: return dc.DayOfWeek.THURSDAY;
|
||||
case DateTime.friday: return dc.DayOfWeek.FRIDAY;
|
||||
case DateTime.saturday: return dc.DayOfWeek.SATURDAY;
|
||||
case DateTime.sunday: return dc.DayOfWeek.SUNDAY;
|
||||
default: return dc.DayOfWeek.MONDAY;
|
||||
}
|
||||
}
|
||||
|
||||
AvailabilitySlot _mapStringToSlotEnum(String id) {
|
||||
dc.AvailabilitySlot _mapStringToSlotEnum(String id) {
|
||||
switch (id.toLowerCase()) {
|
||||
case 'morning': return AvailabilitySlot.MORNING;
|
||||
case 'afternoon': return AvailabilitySlot.AFTERNOON;
|
||||
case 'evening': return AvailabilitySlot.EVENING;
|
||||
default: return AvailabilitySlot.MORNING;
|
||||
case 'morning': return dc.AvailabilitySlot.MORNING;
|
||||
case 'afternoon': return dc.AvailabilitySlot.AFTERNOON;
|
||||
case 'evening': return dc.AvailabilitySlot.EVENING;
|
||||
default: return dc.AvailabilitySlot.MORNING;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class AvailabilitySlot extends Equatable {
|
||||
final String id;
|
||||
final String label;
|
||||
final String timeRange;
|
||||
final bool isAvailable;
|
||||
|
||||
const AvailabilitySlot({
|
||||
required this.id,
|
||||
required this.label,
|
||||
required this.timeRange,
|
||||
this.isAvailable = false,
|
||||
});
|
||||
|
||||
AvailabilitySlot copyWith({
|
||||
String? id,
|
||||
String? label,
|
||||
String? timeRange,
|
||||
bool? isAvailable,
|
||||
}) {
|
||||
return AvailabilitySlot(
|
||||
id: id ?? this.id,
|
||||
label: label ?? this.label,
|
||||
timeRange: timeRange ?? this.timeRange,
|
||||
isAvailable: isAvailable ?? this.isAvailable,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [id, label, timeRange, isAvailable];
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'availability_slot.dart';
|
||||
|
||||
class DayAvailability extends Equatable {
|
||||
final DateTime date;
|
||||
final bool isAvailable;
|
||||
final List<AvailabilitySlot> slots;
|
||||
|
||||
const DayAvailability({
|
||||
required this.date,
|
||||
this.isAvailable = false,
|
||||
this.slots = const [],
|
||||
});
|
||||
|
||||
DayAvailability copyWith({
|
||||
DateTime? date,
|
||||
bool? isAvailable,
|
||||
List<AvailabilitySlot>? slots,
|
||||
}) {
|
||||
return DayAvailability(
|
||||
date: date ?? this.date,
|
||||
isAvailable: isAvailable ?? this.isAvailable,
|
||||
slots: slots ?? this.slots,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [date, isAvailable, slots];
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import '../entities/day_availability.dart';
|
||||
import 'package:krow_domain/krow_domain.dart';
|
||||
|
||||
abstract class AvailabilityRepository {
|
||||
/// Fetches availability for a given date range (usually a week).
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:krow_core/core.dart';
|
||||
import '../entities/day_availability.dart';
|
||||
import 'package:krow_domain/krow_domain.dart';
|
||||
import '../repositories/availability_repository.dart';
|
||||
|
||||
/// Use case to apply a quick-set availability pattern (e.g., "Weekdays", "All Week") to a week.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:krow_core/core.dart';
|
||||
import '../entities/day_availability.dart';
|
||||
import 'package:krow_domain/krow_domain.dart';
|
||||
import '../repositories/availability_repository.dart';
|
||||
|
||||
/// Use case to fetch availability for a specific week.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:krow_core/core.dart';
|
||||
import '../entities/day_availability.dart';
|
||||
import 'package:krow_domain/krow_domain.dart';
|
||||
import '../repositories/availability_repository.dart';
|
||||
|
||||
/// Use case to update the availability configuration for a specific day.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import '../../domain/entities/day_availability.dart';
|
||||
import 'package:krow_domain/krow_domain.dart';
|
||||
import '../../domain/usecases/apply_quick_set_usecase.dart';
|
||||
import '../../domain/usecases/get_weekly_availability_usecase.dart';
|
||||
import '../../domain/usecases/update_day_availability_usecase.dart';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import '../../domain/entities/day_availability.dart';
|
||||
import 'package:krow_domain/krow_domain.dart';
|
||||
|
||||
abstract class AvailabilityEvent extends Equatable {
|
||||
const AvailabilityEvent();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import '../../domain/entities/day_availability.dart';
|
||||
import 'package:krow_domain/krow_domain.dart';
|
||||
|
||||
abstract class AvailabilityState extends Equatable {
|
||||
const AvailabilityState();
|
||||
|
||||
@@ -29,3 +29,5 @@ dependencies:
|
||||
krow_core:
|
||||
path: ../../../core
|
||||
firebase_data_connect: ^0.2.2+2
|
||||
geolocator: ^10.1.0
|
||||
permission_handler: ^11.0.1
|
||||
|
||||
Reference in New Issue
Block a user