manage_events.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. from aiogram import types, Dispatcher
  2. from bot import database
  3. from bot.functions import parse_events, beauty_event_request
  4. from bot.keyboards import register_kb,manage_kb
  5. from bot import sql
  6. async def list_events(message: types.Message):
  7. db = database.Database()
  8. if not db.sql_fetchone(sql=f"select tg_id from user_table where tg_id ={message.from_user.id}") or \
  9. not db.sql_fetchone(sql=f"select approved from user_table where tg_id={message.from_user.id}"):
  10. await message.delete()
  11. await message.answer("Команды станут доступны после регистрации", reply_markup=register_kb)
  12. events = db.sql_fetchall(sql.sql_manage_events())
  13. if len(events) == 0:
  14. await message.answer("Заявки отсутствуют")
  15. else:
  16. await message.answer((beauty_event_request(parse_events(events)[0])), reply_markup=manage_kb(f"e_accept:{events[0]['id']}", f"e_deny:{events[0]['id']}", f"e_next:0",
  17. f"e_prev:0", f"1/{len(events)}"))
  18. async def next_event_page(call: types.CallbackQuery):
  19. db = database.Database()
  20. events = db.sql_fetchall(sql.sql_manage_events())
  21. index = int(call.data.split(":")[1]) + 1
  22. if not events:
  23. await call.message.answer('Заявки отсутствуют')
  24. if index == len(events):
  25. pass
  26. else:
  27. event_id = events[index]['id']
  28. await call.message.edit_text(beauty_event_request(parse_events(events)[index]),
  29. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
  30. f"e_prev:{index}", f"{index + 1}/{len(events)}"))
  31. async def prev_event_page(call: types.CallbackQuery):
  32. db = database.Database()
  33. events = db.sql_fetchall(sql.sql_manage_events())
  34. index = int(call.data.split(":")[1]) - 1
  35. if not events:
  36. await call.message.answer('Заявки отсутствуют')
  37. if index < 0:
  38. pass
  39. else:
  40. event_id = events[index]['id']
  41. await call.message.edit_text(beauty_event_request(parse_events(events)[index]),
  42. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
  43. f"e_prev:{index}", f"{index + 1 }/{len(events)}"))
  44. async def accept_event(call: types.CallbackQuery):
  45. db = database.Database()
  46. events = db.sql_fetchall(sql.sql_manage_events())
  47. index = int(call.message.reply_markup.inline_keyboard[1][1].text.split("/")[0])-1
  48. if len(events) == 1:
  49. event_id = events[index]['id']
  50. db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
  51. await call.message.delete()
  52. await call.message.answer('Заявки отсутствуют')
  53. elif index == 0:
  54. event_id = events[index]['id']
  55. db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
  56. await call.message.edit_text(beauty_event_request(parse_events(events)[index+1]),
  57. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index + 1}",
  58. f"e_prev:{index + 1}", f"{index + 1}/{len(events) - 1}"))
  59. elif index == len(events)-1:
  60. event_id = events[index]['id']
  61. db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
  62. await call.message.edit_text(beauty_event_request(parse_events(events)[index-1]),
  63. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index - 1}",
  64. f"e_prev:{index - 1}", f"{index}/{len(events) - 1}"))
  65. else:
  66. event_id = events[index]['id']
  67. db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
  68. await call.message.edit_text(beauty_event_request(parse_events(events)[index+1]),
  69. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
  70. f"e_prev:{index}", f"{index}/{len(events) - 1}"))
  71. async def deny_event(call: types.CallbackQuery):
  72. db = database.Database()
  73. events = db.sql_fetchall(sql.sql_manage_events())
  74. index = int(call.message.reply_markup.inline_keyboard[1][1].text.split("/")[0])-1
  75. if len(events) == 1:
  76. event_id = events[index]['id']
  77. db.sql_query_send(f"DELETE FROM booking.events_table WHERE id={event_id}")
  78. await call.message.delete()
  79. await call.message.answer('Заявки отсутствуют')
  80. elif index == 0:
  81. event_id = events[index]['id']
  82. db.sql_query_send(f"DELETE FROM booking.events_table WHERE id={event_id}")
  83. await call.message.edit_text(beauty_event_request(parse_events(events)[index+1]),
  84. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index + 1}",
  85. f"e_prev:{index + 1}", f"{index + 1}/{len(events) - 1}"))
  86. elif index == len(events)-1:
  87. event_id = events[index]['id']
  88. db.sql_query_send(f"DELETE FROM booking.events_table WHERE id={event_id}")
  89. await call.message.edit_text(beauty_event_request(parse_events(events)[index-1]),
  90. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index - 1}",
  91. f"e_prev:{index - 1}", f"{index}/{len(events) - 1}"))
  92. else:
  93. event_id = events[index]['id']
  94. db.sql_query_send(f"DELETE FROM booking.events_table WHERE id={event_id}")
  95. await call.message.edit_text(beauty_event_request(parse_events(events)[index+1]),
  96. reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
  97. f"e_prev:{index}", f"{index}/{len(events) - 1}"))
  98. def register_handlers(dp: Dispatcher):
  99. dp.register_message_handler(list_events, text='🎫 Управление мероприятиями')
  100. dp.register_callback_query_handler(next_event_page, text_startswith='e_next')
  101. dp.register_callback_query_handler(prev_event_page, text_startswith='e_prev')
  102. dp.register_callback_query_handler(accept_event, text_startswith='e_accept')
  103. dp.register_callback_query_handler(deny_event,text_startswith='e_deny')