feat: setting manager for a deal
This commit is contained in:
		@@ -18,6 +18,7 @@ from services.client import ClientService
 | 
			
		||||
from services.deal_group import DealGroupService
 | 
			
		||||
from services.service import ServiceService
 | 
			
		||||
from services.shipping_warehouse import ShippingWarehouseService
 | 
			
		||||
from services.user import UserService
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealService(BaseService):
 | 
			
		||||
@@ -357,6 +358,14 @@ class DealService(BaseService):
 | 
			
		||||
                shipping_warehouse = await shipping_warehouse_service.create_by_name(request.data.shipping_warehouse)
 | 
			
		||||
 | 
			
		||||
            deal.shipping_warehouse = shipping_warehouse
 | 
			
		||||
 | 
			
		||||
            # Updating manager
 | 
			
		||||
            if request.data.manager:
 | 
			
		||||
                user_service = UserService(self.session)
 | 
			
		||||
                user = await user_service.get_by_id(request.data.manager.id)
 | 
			
		||||
                deal.manager = user
 | 
			
		||||
            else:
 | 
			
		||||
                deal.manager = None
 | 
			
		||||
            await self.session.commit()
 | 
			
		||||
            return DealUpdateGeneralInfoResponse(ok=True, message='Данные о сделке успешно обновлены')
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
from sqlalchemy import select, update, delete, insert
 | 
			
		||||
from sqlalchemy import select, update, delete, insert, and_
 | 
			
		||||
 | 
			
		||||
from models import User, user_position, user_pay_rate
 | 
			
		||||
from services.base import BaseService
 | 
			
		||||
@@ -16,6 +16,16 @@ class UserService(BaseService):
 | 
			
		||||
        users_schemas = [UserSchema.model_validate(user) for user in users]
 | 
			
		||||
        return GetAllUsersResponse(users=users_schemas)
 | 
			
		||||
 | 
			
		||||
    async def get_managers(self) -> GetManagersResponse:
 | 
			
		||||
        stmt = (
 | 
			
		||||
            select(User)
 | 
			
		||||
            .order_by(User.id.desc())
 | 
			
		||||
            .where(and_(User.is_deleted == False, User.role_key == "employee"))
 | 
			
		||||
        )
 | 
			
		||||
        users = (await self.session.scalars(stmt)).all()
 | 
			
		||||
        users_schemas = [UserSchema.model_validate(user) for user in users]
 | 
			
		||||
        return GetManagersResponse(managers=users_schemas)
 | 
			
		||||
 | 
			
		||||
    async def get_by_id(self, user_id: int) -> Optional[User]:
 | 
			
		||||
        return await self.session.scalar(select(User).where(User.id == user_id))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user