async def create_seller(seller: SchemaSeller): if not check_admin_permission(): return {"Erro": "Usuário não tem permissão para cadastrar vendedores"} db_seller = ModelSeller(name=seller.name, email=seller.email) db.session.add(db_seller) db.session.commit() return {"Erro": "Vendedor criado com sucesso"}
async def get_customers_by_route(route_name: str): if not check_admin_permission(): return { "Erro": "Usuário não tem permissão para visualizar clientes por rota" } db_customers = db.session.query(ModelCustomer).filter( ModelCustomer.associated_route == route_name).all() return db_customers
async def delete_seller(seller: SchemaSeller): if not check_admin_permission(): return {"Erro": "Usuário não tem permissão para deletar vendedores"} db_seller = db.session.query(ModelSeller).filter_by(name=seller.name, email=seller.email).delete() if not db_seller: return {"Erro": "Vendedor não encontrado para exclusão"} else: try: db.session.commit() except: return {"Erro": "Não foi possível excluir a entrada"} return {"Sucesso": "Vendedor excluído com sucesso."}
async def delete_route(route_name): if not check_admin_permission(): return {"Erro": "Usuário não tem permissão para deletar rotas"} db_route = db.session.query(ModelRoute).filter_by(name=route_name).delete() if not db_route: return {"Erro": "Rota não encontrada para exclusão"} else: try: db.session.commit() except: return {"Erro": "Não foi possível excluir a entrada"} return {"Sucesso": "Rota excluída com sucesso."}
async def create_route(name: str = Form(...), bounds: str = Form(...)): if not check_admin_permission(): return {"Erro": "Usuário não tem permissão para cadastrar rotas"} db_route = db.session.query(ModelRoute).filter_by(name=name).first() if db_route: return {"Erro": "Rota já está cadastrada."} else: is_geojson = check_geojson_integrity(bounds) if not is_geojson: return {"Erro": "O JSON inserido não é um GeoJSON"} else: new_route = ModelRoute(name=name, bounds=bounds) db.session.add(new_route) db.session.commit() update_routes_in_customers(new_route) return {"Sucesso": "Rota criada com sucesso"}
async def edit_route(name: str = Form(...), bounds: str = Form(...)): if not check_admin_permission(): return {"Erro": "Usuário não tem permissão para editar rotas"} db_route = db.session.query(ModelRoute).filter_by(name=name, bounds=bounds).first() if not db_route: return {"Erro": "Não foi possível editar pois a rota não existe"} else: db_route.name = name db_route.bounds = bounds db.session.add(db_route) try: db.session.commit() except: return {"Erro": "Erro de duplicidade para ID"} update_routes_in_customers(ModelRoute(name=name, bounds=bounds)) return db_route
async def assign_seller(assign: AssignSchema): if not check_admin_permission(): return {"Erro": "Usuário não tem permissão para atribuir vendedoras"} seller = db.session.query(ModelSeller).filter_by( email=assign.seller_email).first() if not seller: return {"Erro": "Vendedor não existe"} else: route = db.session.query(ModelRoute).filter_by( name=assign.route_name).first() if not route: return {"Erro": "Rota não existe"} else: raw_id = seller.id route.seller_id = str(raw_id) db.session.commit() return { "Sucesso": f"Rota {assign.route_name} atribuída ao vendedor {seller.name}" }
async def disassociate_seller(route_name: str): if not check_admin_permission(): return { "Erro": "Usuário não tem permissão para desvincular vendedores" } db_route = db.session.query(ModelRoute).filter_by(name=route_name).first() if not db_route: return { "Erro": "Não foi possível desassociar o vendedor da rota pois a mesma não existe" } else: db_route.seller_id = None try: db.session.commit() except: return {"Erro": "Erro de duplicidade para ID"} return { "Sucesso": f"Rota {db_route.name} teve seu vendedor desvinculado" }
async def get_sellers(): if not check_admin_permission(): return {"Erro": "Usuário não tem permissão para visualizar o cadastro de vendedores"} sellers = db.session.query(ModelSeller).all() return sellers
async def get_routes(): if not check_admin_permission(): return {"Erro": "Usuário não tem permissão para obter rotas"} routes = db.session.query(ModelRoute).all() return routes