admin_szolgáltatók_

This commit is contained in:
Roo
2026-07-01 02:27:38 +00:00
parent 189cbfd7ca
commit 6e627d0ebe
491 changed files with 20965 additions and 9703 deletions

View File

@@ -10,36 +10,36 @@ from app.schemas.social import ServiceProviderCreate
logger = logging.getLogger(__name__)
class SocialService:
"""
"""
SocialService: Kezeli a közösségi interakciókat, szavazatokat és a moderációt.
Az importok a metódusokon belül vannak a körkörös függőség elkerülése érdekében.
"""
async def create_service_provider(self, db: AsyncSession, obj_in: ServiceProviderCreate, user_id: int):
from app.services.gamification_service import gamification_service
from app.services.provider_service import _award_provider_points
new_provider = ServiceProvider(**obj_in.model_dump(), added_by_user_id=user_id)
db.add(new_provider)
await db.flush()
await db.flush()
# Alappontszám az új beküldésért
await gamification_service.process_activity(db, user_id, 50, 10, f"New Provider: {new_provider.name}")
# Dinamikus pontjóváírás a point_rules táblából (ADD_NEW_PROVIDER)
await _award_provider_points(db, user_id, "ADD_NEW_PROVIDER")
await db.commit()
await db.refresh(new_provider)
return new_provider
async def vote_for_provider(self, db: AsyncSession, voter_id: int, provider_id: int, vote_value: int):
from app.services.gamification_service import gamification_service
from app.services.provider_service import _award_provider_points
# Duplikált szavazat ellenőrzése
exists = (await db.execute(select(Vote).where(and_(Vote.user_id == voter_id, Vote.provider_id == provider_id)))).scalar()
if exists:
if exists:
return {"message": "Már szavaztál erre a szolgáltatóra!"}
db.add(Vote(user_id=voter_id, provider_id=provider_id, vote_value=vote_value))
provider = (await db.execute(select(ServiceProvider).where(ServiceProvider.id == provider_id))).scalar_one_or_none()
if not provider:
if not provider:
return {"error": "Szolgáltató nem található."}
provider.validation_score += vote_value
@@ -53,6 +53,9 @@ class SocialService:
provider.status = ModerationStatus.rejected
await self._penalize_user(db, provider.added_by_user_id, provider.name)
# RATE_PROVIDER pontok kiosztása a sikeres szavazatért
await _award_provider_points(db, voter_id, "RATE_PROVIDER")
await db.commit()
return {"status": "success", "score": provider.validation_score, "new_status": provider.status}
@@ -67,7 +70,8 @@ class SocialService:
from app.services.gamification_service import gamification_service
if not user_id: return
await gamification_service.process_activity(db, user_id, 100, 20, f"Validated: {provider_name}")
# A pontérték a point_rules táblából jön (action_key='PROVIDER_VALIDATED')
await gamification_service.process_activity(db, user_id, xp_amount=0, social_amount=20, reason=f"Validated: {provider_name}", action_key="PROVIDER_VALIDATED")
# Aktuális verseny keresése és pontozása
now = datetime.now(timezone.utc)
@@ -91,8 +95,8 @@ class SocialService:
from app.services.gamification_service import gamification_service
if not user_id: return
# JAVÍTVA: is_penalty=True hozzáadva a gamification híváshoz
await gamification_service.process_activity(db, user_id, 50, 0, f"Rejected: {provider_name}", is_penalty=True)
# A pontérték a point_rules táblából jön (action_key='PROVIDER_REJECTED')
await gamification_service.process_activity(db, user_id, xp_amount=0, social_amount=0, reason=f"Rejected: {provider_name}", is_penalty=True, action_key="PROVIDER_REJECTED")
user = (await db.execute(select(User).where(User.id == user_id))).scalar_one_or_none()
if user and hasattr(user, 'reputation_score'):