You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

598 rivejä
16 KiB

  1. from fastapi import APIRouter, Depends, HTTPException
  2. from typing import List
  3. from schemas.reslevis import (
  4. BuildingItem,
  5. PlanItem,
  6. ZoneItem,
  7. GatewayItem,
  8. TrackerItem,
  9. OperatorItem,
  10. SubjectItem,
  11. AlarmItem,
  12. TrackItem,
  13. )
  14. from logica_reslevis.gateway import GatewayJsonRepository
  15. from logica_reslevis.building import BuildingJsonRepository
  16. from logica_reslevis.plan import PlanJsonRepository
  17. from logica_reslevis.zone import ZoneJsonRepository
  18. from logica_reslevis.tracker import TrackerJsonRepository
  19. from logica_reslevis.operator import OperatorJsonRepository
  20. from logica_reslevis.subject import SubjectJsonRepository
  21. from logica_reslevis.alarm import AlarmJsonRepository
  22. from logica_reslevis.track import TrackJsonRepository
  23. from security import get_current_user
  24. router = APIRouter()
  25. gateway_repo = GatewayJsonRepository()
  26. building_repo = BuildingJsonRepository()
  27. plan_repo = PlanJsonRepository()
  28. zone_repo = ZoneJsonRepository()
  29. tracker_repo = TrackerJsonRepository()
  30. operator_repo = OperatorJsonRepository()
  31. subject_repo = SubjectJsonRepository()
  32. alarm_repo = AlarmJsonRepository()
  33. track_repo = TrackJsonRepository()
  34. @router.get(
  35. "/getGateways",
  36. response_model=List[GatewayItem],
  37. tags=["Reslevis"],
  38. dependencies=[Depends(get_current_user)],
  39. summary="getGateway",
  40. )
  41. def getGateways():
  42. return gateway_repo.list()
  43. @router.post(
  44. "/postGateway",
  45. tags=["Reslevis"],
  46. dependencies=[Depends(get_current_user)],
  47. summary="postGateway",
  48. )
  49. def postGateway(item: GatewayItem):
  50. try:
  51. gateway_repo.add(item)
  52. return {"message": "OK"}
  53. except ValueError as e:
  54. raise HTTPException(status_code=409, detail=str(e))
  55. except Exception as e:
  56. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  57. @router.put(
  58. "/updateGateway",
  59. tags=["Reslevis"],
  60. dependencies=[Depends(get_current_user)],
  61. summary="putGateway",
  62. )
  63. def updateGateway(item: GatewayItem):
  64. try:
  65. gateway_repo.update(item)
  66. return {"message": "OK"}
  67. except ValueError as e:
  68. msg = str(e)
  69. if "non trovato" in msg:
  70. raise HTTPException(status_code=404, detail=msg)
  71. raise HTTPException(status_code=409, detail=msg)
  72. except Exception as e:
  73. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  74. @router.delete(
  75. "/removeGateway/{gateway_id}",
  76. tags=["Reslevis"],
  77. dependencies=[Depends(get_current_user)],
  78. summary="removeGateway",
  79. )
  80. def removeGateway(gateway_id: str):
  81. try:
  82. gateway_repo.remove(gateway_id)
  83. return {"message": "OK"}
  84. except ValueError as e:
  85. raise HTTPException(status_code=404, detail=str(e))
  86. except Exception as e:
  87. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  88. @router.get(
  89. "/getBuildings",
  90. response_model=List[BuildingItem],
  91. tags=["Reslevis"],
  92. dependencies=[Depends(get_current_user)],
  93. summary="getBuilding",
  94. )
  95. def getBuildings():
  96. return building_repo.list()
  97. @router.post(
  98. "/postBuilding",
  99. tags=["Reslevis"],
  100. dependencies=[Depends(get_current_user)],
  101. summary="postBuilding",
  102. )
  103. def postBuilding(item: BuildingItem):
  104. try:
  105. building_repo.add(item)
  106. return {"message": "OK"}
  107. except ValueError as e:
  108. raise HTTPException(status_code=409, detail=str(e))
  109. except Exception as e:
  110. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  111. @router.put(
  112. "/updateBuilding",
  113. tags=["Reslevis"],
  114. dependencies=[Depends(get_current_user)],
  115. summary="putBuilding",
  116. )
  117. def updateBuilding(item: BuildingItem):
  118. try:
  119. building_repo.update(item)
  120. return {"message": "OK"}
  121. except ValueError as e:
  122. msg = str(e)
  123. if "non trovato" in msg:
  124. raise HTTPException(status_code=404, detail=msg)
  125. raise HTTPException(status_code=409, detail=msg)
  126. except Exception as e:
  127. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  128. @router.delete(
  129. "/removeBuilding/{building_id}",
  130. tags=["Reslevis"],
  131. dependencies=[Depends(get_current_user)],
  132. summary="removeBuilding",
  133. )
  134. def removeBuilding(building_id: str):
  135. try:
  136. building_repo.remove(building_id)
  137. return {"message": "OK"}
  138. except ValueError as e:
  139. raise HTTPException(status_code=404, detail=str(e))
  140. except Exception as e:
  141. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  142. @router.get(
  143. "/getPlans",
  144. response_model=List[PlanItem],
  145. tags=["Reslevis"],
  146. dependencies=[Depends(get_current_user)],
  147. summary="getPlan",
  148. )
  149. def getPlans():
  150. return plan_repo.list()
  151. @router.post(
  152. "/postPlan",
  153. tags=["Reslevis"],
  154. dependencies=[Depends(get_current_user)],
  155. summary="postPlan",
  156. )
  157. def postPlan(item: PlanItem):
  158. try:
  159. plan_repo.add(item)
  160. return {"message": "OK"}
  161. except ValueError as e:
  162. raise HTTPException(status_code=409, detail=str(e))
  163. except Exception as e:
  164. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  165. @router.put(
  166. "/updatePlan",
  167. tags=["Reslevis"],
  168. dependencies=[Depends(get_current_user)],
  169. summary="putPlan",
  170. )
  171. def updatePlan(item: PlanItem):
  172. try:
  173. plan_repo.update(item)
  174. return {"message": "OK"}
  175. except ValueError as e:
  176. msg = str(e)
  177. if "non trovato" in msg:
  178. raise HTTPException(status_code=404, detail=msg)
  179. raise HTTPException(status_code=409, detail=msg)
  180. except Exception as e:
  181. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  182. @router.delete(
  183. "/removePlan/{plan_id}",
  184. tags=["Reslevis"],
  185. dependencies=[Depends(get_current_user)],
  186. summary="removePlan",
  187. )
  188. def removePlan(plan_id: str):
  189. try:
  190. plan_repo.remove(plan_id)
  191. return {"message": "OK"}
  192. except ValueError as e:
  193. raise HTTPException(status_code=404, detail=str(e))
  194. except Exception as e:
  195. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  196. @router.get(
  197. "/getZones",
  198. response_model=List[ZoneItem],
  199. tags=["Reslevis"],
  200. dependencies=[Depends(get_current_user)],
  201. summary="getZone",
  202. )
  203. def getZones():
  204. return zone_repo.list()
  205. @router.post(
  206. "/postZone",
  207. tags=["Reslevis"],
  208. dependencies=[Depends(get_current_user)],
  209. summary="postZone",
  210. )
  211. def postZone(item: ZoneItem):
  212. try:
  213. zone_repo.add(item)
  214. return {"message": "OK"}
  215. except ValueError as e:
  216. raise HTTPException(status_code=409, detail=str(e))
  217. except Exception as e:
  218. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  219. @router.put(
  220. "/updateZone",
  221. tags=["Reslevis"],
  222. dependencies=[Depends(get_current_user)],
  223. summary="putZone",
  224. )
  225. def updateZone(item: ZoneItem):
  226. try:
  227. zone_repo.update(item)
  228. return {"message": "OK"}
  229. except ValueError as e:
  230. msg = str(e)
  231. if "non trovato" in msg:
  232. raise HTTPException(status_code=404, detail=msg)
  233. raise HTTPException(status_code=409, detail=msg)
  234. except Exception as e:
  235. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  236. @router.delete(
  237. "/removeZone/{zone_id}",
  238. tags=["Reslevis"],
  239. dependencies=[Depends(get_current_user)],
  240. summary="removeZone",
  241. )
  242. def removeZone(zone_id: str):
  243. try:
  244. zone_repo.remove(zone_id)
  245. return {"message": "OK"}
  246. except ValueError as e:
  247. raise HTTPException(status_code=404, detail=str(e))
  248. except Exception as e:
  249. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  250. @router.get(
  251. "/getTrackers",
  252. response_model=List[TrackerItem],
  253. tags=["Reslevis"],
  254. dependencies=[Depends(get_current_user)],
  255. summary="getTracker",
  256. )
  257. def getTrackers():
  258. return tracker_repo.list()
  259. @router.post(
  260. "/postTracker",
  261. tags=["Reslevis"],
  262. dependencies=[Depends(get_current_user)],
  263. summary="postTracker",
  264. )
  265. def postTracker(item: TrackerItem):
  266. try:
  267. tracker_repo.add(item)
  268. return {"message": "OK"}
  269. except ValueError as e:
  270. raise HTTPException(status_code=409, detail=str(e))
  271. except Exception as e:
  272. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  273. @router.put(
  274. "/updateTracker",
  275. tags=["Reslevis"],
  276. dependencies=[Depends(get_current_user)],
  277. summary="putTracker",
  278. )
  279. def updateTracker(item: TrackerItem):
  280. try:
  281. tracker_repo.update(item)
  282. return {"message": "OK"}
  283. except ValueError as e:
  284. msg = str(e)
  285. if "non trovato" in msg:
  286. raise HTTPException(status_code=404, detail=msg)
  287. raise HTTPException(status_code=409, detail=msg)
  288. except Exception as e:
  289. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  290. @router.delete(
  291. "/removeTracker/{tracker_id}",
  292. tags=["Reslevis"],
  293. dependencies=[Depends(get_current_user)],
  294. summary="removeTracker",
  295. )
  296. def removeTracker(tracker_id: str):
  297. try:
  298. tracker_repo.remove(tracker_id)
  299. except ValueError as e:
  300. raise HTTPException(status_code=404, detail=str(e))
  301. except Exception as e:
  302. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  303. return {"message": "OK"}
  304. @router.get(
  305. "/getOperators",
  306. response_model=List[OperatorItem],
  307. tags=["Reslevis"],
  308. dependencies=[Depends(get_current_user)],
  309. summary="getOperator",
  310. )
  311. def getOperators():
  312. return operator_repo.list()
  313. @router.post(
  314. "/postOperator",
  315. tags=["Reslevis"],
  316. dependencies=[Depends(get_current_user)],
  317. summary="postOperator",
  318. )
  319. def postOperator(item: OperatorItem):
  320. try:
  321. operator_repo.add(item)
  322. return {"message": "OK"}
  323. except ValueError as e:
  324. raise HTTPException(status_code=409, detail=str(e))
  325. except Exception as e:
  326. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  327. @router.put(
  328. "/updateOperator",
  329. tags=["Reslevis"],
  330. dependencies=[Depends(get_current_user)],
  331. summary="putOperator",
  332. )
  333. def updateOperator(item: OperatorItem):
  334. try:
  335. operator_repo.update(item)
  336. return {"message": "OK"}
  337. except ValueError as e:
  338. msg = str(e)
  339. if "non trovato" in msg:
  340. raise HTTPException(status_code=404, detail=msg)
  341. raise HTTPException(status_code=409, detail=msg)
  342. except Exception as e:
  343. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  344. @router.delete(
  345. "/removeOperator/{operator_id}",
  346. tags=["Reslevis"],
  347. dependencies=[Depends(get_current_user)],
  348. summary="removeOperator",
  349. )
  350. def removeOperator(operator_id: str):
  351. try:
  352. operator_repo.remove(operator_id)
  353. return {"message": "OK"}
  354. except ValueError as e:
  355. raise HTTPException(status_code=404, detail=str(e))
  356. except Exception as e:
  357. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  358. @router.get(
  359. "/getSubjects",
  360. response_model=List[SubjectItem],
  361. tags=["Reslevis"],
  362. dependencies=[Depends(get_current_user)],
  363. summary="getSubject",
  364. )
  365. def getSubjects():
  366. return subject_repo.list()
  367. @router.post(
  368. "/postSubject",
  369. tags=["Reslevis"],
  370. dependencies=[Depends(get_current_user)],
  371. summary="postSubject",
  372. )
  373. def postSubject(item: SubjectItem):
  374. try:
  375. subject_repo.add(item)
  376. return {"message": "OK"}
  377. except ValueError as e:
  378. raise HTTPException(status_code=409, detail=str(e))
  379. except Exception as e:
  380. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  381. @router.put(
  382. "/updateSubject",
  383. tags=["Reslevis"],
  384. dependencies=[Depends(get_current_user)],
  385. summary="putSubject",
  386. )
  387. def updateSubject(item: SubjectItem):
  388. try:
  389. subject_repo.update(item)
  390. return {"message": "OK"}
  391. except ValueError as e:
  392. msg = str(e)
  393. if "non trovato" in msg:
  394. raise HTTPException(status_code=404, detail=msg)
  395. raise HTTPException(status_code=409, detail=msg)
  396. except Exception as e:
  397. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  398. @router.delete(
  399. "/removeSubject/{subject_id}",
  400. tags=["Reslevis"],
  401. dependencies=[Depends(get_current_user)],
  402. summary="removeSubject",
  403. )
  404. def removeSubject(subject_id: str):
  405. try:
  406. subject_repo.remove(subject_id)
  407. return {"message": "OK"}
  408. except ValueError as e:
  409. raise HTTPException(status_code=404, detail=str(e))
  410. except Exception as e:
  411. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  412. @router.get(
  413. "/getAlarms",
  414. response_model=List[AlarmItem],
  415. tags=["Reslevis"],
  416. dependencies=[Depends(get_current_user)],
  417. summary="getAlarm",
  418. )
  419. def getAlarms():
  420. return alarm_repo.list()
  421. @router.post(
  422. "/postAlarm",
  423. tags=["Reslevis"],
  424. dependencies=[Depends(get_current_user)],
  425. summary="postAlarm",
  426. )
  427. def postAlarm(item: AlarmItem):
  428. try:
  429. alarm_repo.add(item)
  430. return {"message": "OK"}
  431. except ValueError as e:
  432. raise HTTPException(status_code=409, detail=str(e))
  433. except Exception as e:
  434. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  435. @router.put(
  436. "/updateAlarm",
  437. tags=["Reslevis"],
  438. dependencies=[Depends(get_current_user)],
  439. summary="putAlarm",
  440. )
  441. def updateAlarm(item: AlarmItem):
  442. try:
  443. alarm_repo.update(item)
  444. return {"message": "OK"}
  445. except ValueError as e:
  446. msg = str(e)
  447. if "non trovato" in msg:
  448. raise HTTPException(status_code=404, detail=msg)
  449. raise HTTPException(status_code=409, detail=msg)
  450. except Exception as e:
  451. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  452. @router.delete(
  453. "/removeAlarm/{alarm_id}",
  454. tags=["Reslevis"],
  455. dependencies=[Depends(get_current_user)],
  456. summary="removeAlarm",
  457. )
  458. def removeAlarm(alarm_id: str):
  459. try:
  460. alarm_repo.remove(alarm_id)
  461. return {"message": "OK"}
  462. except ValueError as e:
  463. raise HTTPException(status_code=404, detail=str(e))
  464. except Exception as e:
  465. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  466. @router.get(
  467. "/getTracks",
  468. response_model=List[TrackItem],
  469. tags=["Reslevis"],
  470. dependencies=[Depends(get_current_user)],
  471. summary="getTrack",
  472. )
  473. def getTracks():
  474. return track_repo.list()
  475. @router.post(
  476. "/postTrack",
  477. tags=["Reslevis"],
  478. dependencies=[Depends(get_current_user)],
  479. summary="postTrack",
  480. )
  481. def postTrack(item: TrackItem):
  482. try:
  483. track_repo.add(item)
  484. return {"message": "OK"}
  485. except ValueError as e:
  486. raise HTTPException(status_code=409, detail=str(e))
  487. except Exception as e:
  488. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  489. @router.put(
  490. "/updateTrack",
  491. tags=["Reslevis"],
  492. dependencies=[Depends(get_current_user)],
  493. summary="putTrack",
  494. )
  495. def updateTrack(item: TrackItem):
  496. try:
  497. track_repo.update(item)
  498. return {"message": "OK"}
  499. except ValueError as e:
  500. msg = str(e)
  501. if "non trovato" in msg:
  502. raise HTTPException(status_code=404, detail=msg)
  503. raise HTTPException(status_code=409, detail=msg)
  504. except Exception as e:
  505. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  506. @router.delete(
  507. "/removeTrack/{track_id}",
  508. tags=["Reslevis"],
  509. dependencies=[Depends(get_current_user)],
  510. summary="removeTrack",
  511. )
  512. def removeTrack(track_id: str):
  513. try:
  514. track_repo.remove(track_id)
  515. return {"message": "OK"}
  516. except ValueError as e:
  517. raise HTTPException(status_code=404, detail=str(e))
  518. except Exception as e:
  519. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")