mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-09 14:47:23 +00:00
use TimeOfDay instead of String
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_config.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_config.dart';
|
||||||
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/params/bookable_spaces_params.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/params/bookable_spaces_params.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/service/bookable_spaces_service.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/service/bookable_spaces_service.dart';
|
||||||
import 'package:syncrow_web/pages/space_management_v2/main_module/shared/models/paginated_data_model.dart';
|
import 'package:syncrow_web/pages/space_management_v2/main_module/shared/models/paginated_data_model.dart';
|
||||||
@ -16,8 +17,8 @@ class DummyBookableSpacesService implements BookableSpacesService {
|
|||||||
configUuid: 'uuid',
|
configUuid: 'uuid',
|
||||||
bookableDays: ['wed', 'saturday'],
|
bookableDays: ['wed', 'saturday'],
|
||||||
availability: true,
|
availability: true,
|
||||||
bookingEndTime: '08:00 PM',
|
bookingEndTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
bookingStartTime: '5:00 PM',
|
bookingStartTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
cost: 6,
|
cost: 6,
|
||||||
),
|
),
|
||||||
spaceUuid: 'uuiiddd',
|
spaceUuid: 'uuiiddd',
|
||||||
@ -29,8 +30,8 @@ class DummyBookableSpacesService implements BookableSpacesService {
|
|||||||
configUuid: 'uuid',
|
configUuid: 'uuid',
|
||||||
bookableDays: ['wed', 'thur'],
|
bookableDays: ['wed', 'thur'],
|
||||||
availability: true,
|
availability: true,
|
||||||
bookingEndTime: '08:00 PM',
|
bookingEndTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
bookingStartTime: '5:00 PM',
|
bookingStartTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
cost: 6,
|
cost: 6,
|
||||||
),
|
),
|
||||||
spaceUuid: 'uuiiddd',
|
spaceUuid: 'uuiiddd',
|
||||||
@ -42,8 +43,8 @@ class DummyBookableSpacesService implements BookableSpacesService {
|
|||||||
configUuid: 'uuid',
|
configUuid: 'uuid',
|
||||||
bookableDays: ['wed', 'fri', 'tues'],
|
bookableDays: ['wed', 'fri', 'tues'],
|
||||||
availability: true,
|
availability: true,
|
||||||
bookingEndTime: '08:00 PM',
|
bookingEndTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
bookingStartTime: '5:00 PM',
|
bookingStartTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
cost: 6,
|
cost: 6,
|
||||||
),
|
),
|
||||||
spaceUuid: 'uuiiddd',
|
spaceUuid: 'uuiiddd',
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_config.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_config.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/params/non_bookable_spaces_params.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/params/non_bookable_spaces_params.dart';
|
||||||
@ -17,8 +18,8 @@ class DummyNonNookableSpaces implements NonBookableSpacesService {
|
|||||||
configUuid: 'uuid',
|
configUuid: 'uuid',
|
||||||
bookableDays: ['wed', 'saturday'],
|
bookableDays: ['wed', 'saturday'],
|
||||||
availability: true,
|
availability: true,
|
||||||
bookingEndTime: '08:00 PM',
|
bookingEndTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
bookingStartTime: '5:00 PM',
|
bookingStartTime: const TimeOfDay(hour: 6, minute: 20),
|
||||||
cost: 6,
|
cost: 6,
|
||||||
),
|
),
|
||||||
spaceUuid: 'uuiiddd',
|
spaceUuid: 'uuiiddd',
|
||||||
@ -30,8 +31,8 @@ class DummyNonNookableSpaces implements NonBookableSpacesService {
|
|||||||
configUuid: 'uuid',
|
configUuid: 'uuid',
|
||||||
bookableDays: ['wed', 'saturday', 'thuresday'],
|
bookableDays: ['wed', 'saturday', 'thuresday'],
|
||||||
availability: true,
|
availability: true,
|
||||||
bookingEndTime: '08:00 PM',
|
bookingEndTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
bookingStartTime: '5:00 PM',
|
bookingStartTime: const TimeOfDay(hour: 5, minute: 20),
|
||||||
cost: 5,
|
cost: 5,
|
||||||
),
|
),
|
||||||
spaceUuid: 'uuiiddd',
|
spaceUuid: 'uuiiddd',
|
||||||
@ -50,8 +51,8 @@ class DummyNonNookableSpaces implements NonBookableSpacesService {
|
|||||||
'thuresday'
|
'thuresday'
|
||||||
],
|
],
|
||||||
availability: true,
|
availability: true,
|
||||||
bookingEndTime: '08:00 PM',
|
bookingEndTime: const TimeOfDay(hour: 13, minute: 20),
|
||||||
bookingStartTime: '5:00 PM',
|
bookingStartTime: const TimeOfDay(hour: 15, minute: 20),
|
||||||
cost: 2,
|
cost: 2,
|
||||||
),
|
),
|
||||||
spaceUuid: 'uuiiddd',
|
spaceUuid: 'uuiiddd',
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class BookableSpaceConfig {
|
class BookableSpaceConfig {
|
||||||
String configUuid;
|
String configUuid;
|
||||||
List<String> bookableDays;
|
List<String> bookableDays;
|
||||||
String bookingStartTime;
|
TimeOfDay bookingStartTime;
|
||||||
String bookingEndTime;
|
TimeOfDay bookingEndTime;
|
||||||
int cost;
|
int cost;
|
||||||
bool availability;
|
bool availability;
|
||||||
BookableSpaceConfig({
|
BookableSpaceConfig({
|
||||||
@ -17,8 +19,8 @@ class BookableSpaceConfig {
|
|||||||
configUuid: '',
|
configUuid: '',
|
||||||
bookableDays: [],
|
bookableDays: [],
|
||||||
availability: false,
|
availability: false,
|
||||||
bookingEndTime: '',
|
bookingEndTime: TimeOfDay.now(),
|
||||||
bookingStartTime: '',
|
bookingStartTime: TimeOfDay.now(),
|
||||||
cost: -1,
|
cost: -1,
|
||||||
);
|
);
|
||||||
factory BookableSpaceConfig.fromJson(Map<String, dynamic> json) =>
|
factory BookableSpaceConfig.fromJson(Map<String, dynamic> json) =>
|
||||||
@ -26,14 +28,18 @@ class BookableSpaceConfig {
|
|||||||
configUuid: json['uuid'] as String,
|
configUuid: json['uuid'] as String,
|
||||||
bookableDays: json['daysAvailable'] as List<String>,
|
bookableDays: json['daysAvailable'] as List<String>,
|
||||||
availability: (json['active'] as bool?) ?? false,
|
availability: (json['active'] as bool?) ?? false,
|
||||||
bookingEndTime: json['startTime'] as String,
|
bookingEndTime: parseTimeOfDay(json['startTime'] as String),
|
||||||
bookingStartTime: json['endTime'] as String,
|
bookingStartTime: parseTimeOfDay(json['endTime'] as String),
|
||||||
cost: json['points'] as int,
|
cost: json['points'] as int,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
static TimeOfDay parseTimeOfDay(String timeString) {
|
||||||
|
final parts = timeString.split(':');
|
||||||
|
final hour = int.parse(parts[0]);
|
||||||
|
final minute = int.parse(parts[1]);
|
||||||
|
return TimeOfDay(hour: hour, minute: minute);
|
||||||
|
}
|
||||||
|
|
||||||
bool get isValid =>
|
bool get isValid =>
|
||||||
configUuid.isNotEmpty &&
|
configUuid.isNotEmpty && bookableDays.isNotEmpty && cost > 0;
|
||||||
bookableDays.isNotEmpty &&
|
|
||||||
bookingStartTime.isNotEmpty &&
|
|
||||||
bookingEndTime.isNotEmpty &&
|
|
||||||
cost > 0;
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
||||||
|
import 'package:syncrow_web/utils/string_utils.dart';
|
||||||
|
|
||||||
class SendBookableSpacesToApiParams {
|
class SendBookableSpacesToApiParams {
|
||||||
List<String> spaceUuids;
|
List<String> spaceUuids;
|
||||||
@ -22,8 +23,10 @@ class SendBookableSpacesToApiParams {
|
|||||||
.expand((space) => space.spaceConfig.bookableDays)
|
.expand((space) => space.spaceConfig.bookableDays)
|
||||||
.toSet()
|
.toSet()
|
||||||
.toList(),
|
.toList(),
|
||||||
startTime: bookableSpaces.first.spaceConfig.bookingStartTime,
|
startTime: formatTimeOfDayTo24HourString(
|
||||||
endTime: bookableSpaces.first.spaceConfig.bookingEndTime,
|
bookableSpaces.first.spaceConfig.bookingStartTime),
|
||||||
|
endTime: formatTimeOfDayTo24HourString(
|
||||||
|
bookableSpaces.first.spaceConfig.bookingEndTime),
|
||||||
points: bookableSpaces.first.spaceConfig.cost,
|
points: bookableSpaces.first.spaceConfig.cost,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'package:bloc/bloc.dart';
|
import 'package:bloc/bloc.dart';
|
||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/params/non_bookable_spaces_params.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/params/non_bookable_spaces_params.dart';
|
||||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/service/non_bookable_spaces_service.dart';
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/service/non_bookable_spaces_service.dart';
|
||||||
@ -20,6 +21,12 @@ class NonBookableSpacesBloc
|
|||||||
on<RemoveFromBookableSpaceEvent>(_onRemoveFromBookableSpaceEvent);
|
on<RemoveFromBookableSpaceEvent>(_onRemoveFromBookableSpaceEvent);
|
||||||
on<SendBookableSpacesToApi>(_onSendBookableSpacesToApi);
|
on<SendBookableSpacesToApi>(_onSendBookableSpacesToApi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TimeOfDay get endTime =>
|
||||||
|
selectedBookableSpaces.first.spaceConfig.bookingEndTime;
|
||||||
|
|
||||||
|
TimeOfDay get startTime =>
|
||||||
|
selectedBookableSpaces.first.spaceConfig.bookingStartTime;
|
||||||
Future<void> _onLoadUnBookableSpacesEvent(LoadUnBookableSpacesEvent event,
|
Future<void> _onLoadUnBookableSpacesEvent(LoadUnBookableSpacesEvent event,
|
||||||
Emitter<NonBookableSpacesState> emit) async {
|
Emitter<NonBookableSpacesState> emit) async {
|
||||||
emit(NonBookableSpacesLoading());
|
emit(NonBookableSpacesLoading());
|
||||||
@ -80,7 +87,8 @@ class NonBookableSpacesBloc
|
|||||||
try {
|
try {
|
||||||
await nonBookableSpacesService.sendBookableSpacesToApi(
|
await nonBookableSpacesService.sendBookableSpacesToApi(
|
||||||
SendBookableSpacesToApiParams.fromBookableSpacesModel(
|
SendBookableSpacesToApiParams.fromBookableSpacesModel(
|
||||||
selectedBookableSpaces),
|
selectedBookableSpaces,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
emit(
|
emit(
|
||||||
|
Reference in New Issue
Block a user