11from aiogram .fsm .context import FSMContext
2- from aiogram .types import Message
2+ from aiogram .types import Message , message
33
44from bot .buttons import *
55from messages import MESSAGES
66from service .idea import IdeaService
77from service .task import TaskService
88from service .user import UserService
99from states import DialogStates
10- from bot .utills import check_valid_time
10+ from service .routine import RoutineService
11+ from bot .utills import check_valid_time , validate_text
1112
1213async def process_idea_save (message : Message , state : FSMContext ) -> None :
1314 user_id = message .from_user .id
@@ -367,4 +368,102 @@ async def process_set_sleep_time(message: Message, state: FSMContext):
367368 MESSAGES [language ]['SLEEP_TIME_SET' ].format (new_sleep_time ),
368369 reply_markup = routine_time_keyboard ()
369370 )
370- await state .clear ()
371+ await state .clear ()
372+
373+ async def process_set_routine_time (message : Message , state : FSMContext ):
374+ user_id = message .from_user .id
375+ user_find = await UserService .get_user_by_id (user_id )
376+ language = await UserService .get_user_language (user_id ) or "ENGLISH"
377+
378+ if not user_find :
379+ await message .answer (MESSAGES ["ENGLISH" ]['AUTHORIZATION_PROBLEM' ])
380+ return
381+
382+ routine_title : str = message .text .strip ()
383+ if not validate_text (routine_title ):
384+ await message .answer (MESSAGES [language ]['INVALID_MORNING_ROUTINE' ], reply_markup = morning_routine_keyboard ())
385+ return
386+
387+ try :
388+ await RoutineService .create_routine (user_id , routine_type = "morning" , routine_name = routine_title )
389+
390+ print (f"User with id: { user_id } set routine title: { routine_title } " )
391+ await message .answer (MESSAGES [language ]['ROUTINE_SAVED' ].format (routine_title ), reply_markup = morning_routine_keyboard ())
392+ await state .clear ()
393+ except :
394+ await message .answer (MESSAGES [language ]['ROUTINE_EXISTS' ], reply_markup = morning_routine_keyboard ())
395+
396+ async def process_delete_morning_routine (message : Message , state : FSMContext ):
397+ user_id = message .from_user .id
398+ user_find = await UserService .get_user_by_id (user_id )
399+ language = await UserService .get_user_language (user_id ) or "ENGLISH"
400+
401+ if not user_find :
402+ await message .answer (MESSAGES ["ENGLISH" ]['AUTHORIZATION_PROBLEM' ])
403+ return
404+
405+ routine_num : int = int (message .text .strip ())
406+ if (routine_num < 1 ):
407+ await message .answer (MESSAGES [language ]['COMPLETE_TASK_INVALID' ], reply_markup = morning_routine_keyboard ())
408+ return
409+ else :
410+ data = await state .get_data ()
411+ routines = data .get ("morning_routine" )
412+
413+ routine_to_delete = routines [routine_num - 1 ]
414+ real_id = routine_to_delete ["id" ]
415+
416+ await RoutineService .delete_routine (real_id )
417+ print (f"User with id: { user_id } deleted routine with id: { real_id } " )
418+
419+ await message .answer (MESSAGES [language ]['ROUTINE_DELETED' ].format (routine_num , routine_to_delete ['routine_name' ]), reply_markup = morning_routine_keyboard ())
420+ await state .clear ()
421+
422+ async def process_update_morning_routine (message : Message , state : FSMContext ):
423+ user_id = message .from_user .id
424+ user_find = await UserService .get_user_by_id (user_id )
425+ language = await UserService .get_user_language (user_id ) or "ENGLISH"
426+
427+ if not user_find :
428+ await message .answer (MESSAGES ["ENGLISH" ]['AUTHORIZATION_PROBLEM' ])
429+ return
430+
431+ routine_num : int = int (message .text .strip ())
432+ if (routine_num < 1 ):
433+ await message .answer (MESSAGES [language ]['COMPLETE_TASK_INVALID' ], reply_markup = morning_routine_keyboard ())
434+ return
435+ else :
436+ data = await state .get_data ()
437+ routines = data .get ("morning_routine" )
438+
439+ routine_to_update = routines [routine_num - 1 ]
440+ real_id = routine_to_update ["id" ]
441+
442+ await message .answer (MESSAGES [language ]['NEW_ROUTINE_NAME' ])
443+ await state .update_data (routine_id = real_id )
444+ await state .set_state (DialogStates .update_morning_routine )
445+
446+ async def process_save_updated_morning_routine (message : Message , state : FSMContext ):
447+ user_id = message .from_user .id
448+ user_find = await UserService .get_user_by_id (user_id )
449+ language = await UserService .get_user_language (user_id ) or "ENGLISH"
450+
451+ if not user_find :
452+ await message .answer (MESSAGES ["ENGLISH" ]['AUTHORIZATION_PROBLEM' ])
453+ return
454+
455+ routine_title : str = message .text .strip ()
456+ if not validate_text (routine_title ):
457+ await message .answer (MESSAGES [language ]['INVALID_MORNING_ROUTINE' ], reply_markup = morning_routine_keyboard ())
458+ return
459+
460+ data = await state .get_data ()
461+ routine_id = data .get ("routine_id" )
462+
463+ try :
464+ await RoutineService .update_routine (routine_id , routine_title )
465+ print (f"User with id: { user_id } updated routine title: { routine_title } " )
466+ await message .answer (MESSAGES [language ]['ROUTINE_NAME_SET' ].format (routine_title ), reply_markup = morning_routine_keyboard ())
467+ await state .clear ()
468+ except :
469+ await message .answer (MESSAGES [language ]['ROUTINE_EXISTS' ], reply_markup = morning_routine_keyboard ())
0 commit comments