def pontos_turisticos_por_nome_logica(ponto, email_usuario, presenter) -> SearchPointResponse: repository = PontoTuristicoRepository() ponto = repository.get_ponto_turistico_by_name(ponto) if not ponto: return presenter(False) else: return presenter(True, ponto)
def upvote_ponto_logica(nome_ponto, email_usuario, presenter) -> UpvotePointResponse: repository = PontoTuristicoRepository() point_exists = repository.check_existence_of_the_point(nome_ponto) if point_exists: new_upvote = repository.register_upvote(nome_ponto) return presenter(True, *new_upvote.values()) else: return presenter(False)
def create_new_category_if_not_exist(nome_categoria, presenter) -> CategoryCreationResponse: nome_categoria = nome_categoria.lower().capitalize() repository = PontoTuristicoRepository() category_exist = repository.check_existence_of_category(nome_categoria) if category_exist: return presenter(False) else: new_category = repository.create_category(nome_categoria) return presenter(True, *new_category.values())
def comentar_ponto_turistico_logica(nome_ponto, descricao_comentario, email_usuario, presenter) -> CommentCreationResponse: repository = PontoTuristicoRepository() point_exists = repository.check_existence_of_the_point(nome_ponto) if point_exists: comment = repository.create_comment_about_point( email_usuario, nome_ponto, descricao_comentario) return presenter(True, *comment.values()) else: return presenter(False)
def pontos_turisticos_5km_logica(latitude_usuario, longitude_usuario, email_user, presenter) -> Points5kmResponse: repository = PontoTuristicoRepository() resultado = repository.search_points() dado = list() for ponto in resultado: distancia_km = haversine( float(longitude_usuario), float(latitude_usuario), float(ponto['longitude']), float(ponto['latitude']) ) # aplico a latitude e longitude dos dois pontos na formula de haversine para obter a distancia em km if (distancia_km <= 5): ponto['distancia em Km'] = round(distancia_km, 2) dado.append(ponto) if not dado: return presenter(False) else: return presenter(True, dado)
def ver_comentario_ponto_turistico_logica( nome_ponto, presenter) -> CommentVisualizationResponse: repository = PontoTuristicoRepository() point_exist = repository.check_existence_of_the_point(nome_ponto) if point_exist: comments = repository.search_comments(nome_ponto) if not comments: return presenter(False, point_exist) else: list_comments = list( ) #os comentários serão inseridos na lista para que retorne com um formato adequado. for comment in comments: list_comments.append(comment['descricao']) return presenter(True, point_exist, list_comments) else: return presenter(False, point_exist)
def registrar_ponto_turistico_logica(nome_ponto, latitude_ponto, longitude_ponto, categoria_ponto, email_usuario, presenter) -> PointCreationResponse: repository = PontoTuristicoRepository() point_exists = repository.check_existence_of_the_point(nome_ponto) if not point_exists: categoria_ponto = categoria_ponto.lower().capitalize() category_exist = repository.check_existence_of_category( categoria_ponto) if category_exist: extract_cod_category = int(category_exist['cod']) point_created = repository.create_tourist_point_and_upvote( nome_ponto, extract_cod_category, latitude_ponto, longitude_ponto, email_usuario) return presenter(True, category_exist, *point_created.values()) else: return presenter(False, category_exist) else: return presenter(False, True)
def remover_ponto_favoritado_logica(nome_ponto, email_usuario, presenter) -> RemoveFavoredResponse: repository = PontoTuristicoRepository() user_favored_this_point = repository.check_who_favored_point( email_usuario, nome_ponto) if user_favored_this_point: repository = UserRepostory() repository.remove_favorited_tourist_spot(email_usuario, nome_ponto) return presenter(True) else: return presenter(False)
def favoritar_ponto_turistico_logica(nome_ponto, email_usuario, presenter) -> FavoredSpotResponse: repository = PontoTuristicoRepository() point_exists = repository.check_existence_of_the_point(nome_ponto) if point_exists: repository = UserRepostory() points = repository.search_favorited_spots(email_usuario) for ponto in points: if ponto['nome'] == nome_ponto: return presenter(False, point_exists) result = repository.favorite_tourist_spot(email_usuario, nome_ponto) if result: return presenter(True, point_exists, *result.values()) else: return presenter(False, point_exists)
def ver_todos_pontos_logica(presenter) -> AllPointsResponse: repository = PontoTuristicoRepository() all_points = repository.search_points() return presenter(True, all_points)