feat: complete deal
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, BigInteger
|
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
from models import BaseModel
|
from models import BaseModel
|
||||||
@@ -23,6 +23,7 @@ class Client(BaseModel):
|
|||||||
|
|
||||||
barcode_template_id = Column(Integer, ForeignKey('barcode_templates.id'), nullable=True)
|
barcode_template_id = Column(Integer, ForeignKey('barcode_templates.id'), nullable=True)
|
||||||
barcode_template = relationship('BarcodeTemplate', lazy='selectin')
|
barcode_template = relationship('BarcodeTemplate', lazy='selectin')
|
||||||
|
# users = relationship('ClientUser', back_populates='client', cascade='all, delete')
|
||||||
|
|
||||||
|
|
||||||
class ClientDetails(BaseModel):
|
class ClientDetails(BaseModel):
|
||||||
@@ -42,3 +43,20 @@ class ClientDetails(BaseModel):
|
|||||||
|
|
||||||
modified_by_user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
|
modified_by_user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
|
||||||
modified_by_user = relationship('User')
|
modified_by_user = relationship('User')
|
||||||
|
|
||||||
|
|
||||||
|
# class ClientContact(BaseModel):
|
||||||
|
# __tablename__ = 'client_contact'
|
||||||
|
# id: Mapped[int] = mapped_column(primary_key=True)
|
||||||
|
#
|
||||||
|
# client_id: Mapped[int] = mapped_column(ForeignKey('clients.id'))
|
||||||
|
# client: Mapped["Client"] = relationship('Client', back_populates='users')
|
||||||
|
#
|
||||||
|
# first_name: Mapped[str] = mapped_column()
|
||||||
|
# last_name: Mapped[str] = mapped_column()
|
||||||
|
#
|
||||||
|
# telegram: Mapped[str] = mapped_column()
|
||||||
|
# phone_number: Mapped[str] = mapped_column()
|
||||||
|
# email: Mapped[str] = mapped_column()
|
||||||
|
# inn: Mapped[str] = mapped_column()
|
||||||
|
#
|
||||||
|
|||||||
@@ -42,6 +42,19 @@ async def delete(
|
|||||||
return await DealService(session).delete(request)
|
return await DealService(session).delete(request)
|
||||||
|
|
||||||
|
|
||||||
|
@deal_router.post(
|
||||||
|
'/complete',
|
||||||
|
response_model=DealCompleteResponse,
|
||||||
|
operation_id='completeDeal',
|
||||||
|
dependencies=[Depends(authorized_user)]
|
||||||
|
)
|
||||||
|
async def complete(
|
||||||
|
request: DealCompleteRequest,
|
||||||
|
session: SessionDependency,
|
||||||
|
user: CurrentUserDependency
|
||||||
|
):
|
||||||
|
return await DealService(session).complete(user,request)
|
||||||
|
|
||||||
@deal_router.post(
|
@deal_router.post(
|
||||||
'/quickCreate',
|
'/quickCreate',
|
||||||
response_model=DealQuickCreateResponse,
|
response_model=DealQuickCreateResponse,
|
||||||
|
|||||||
@@ -212,6 +212,8 @@ class DealAddKitRequest(BaseSchema):
|
|||||||
class DealCreateGuestUrlRequest(BaseSchema):
|
class DealCreateGuestUrlRequest(BaseSchema):
|
||||||
deal_id: int
|
deal_id: int
|
||||||
|
|
||||||
|
class DealCompleteRequest(BaseSchema):
|
||||||
|
deal_id: int
|
||||||
|
|
||||||
# endregion Requests
|
# endregion Requests
|
||||||
|
|
||||||
@@ -308,4 +310,8 @@ class DealAddKitResponse(OkMessageSchema):
|
|||||||
|
|
||||||
class DealCreateGuestUrlResponse(OkMessageSchema):
|
class DealCreateGuestUrlResponse(OkMessageSchema):
|
||||||
url: str
|
url: str
|
||||||
|
|
||||||
|
class DealCompleteResponse(OkMessageSchema):
|
||||||
|
pass
|
||||||
|
|
||||||
# endregion Responses
|
# endregion Responses
|
||||||
|
|||||||
@@ -972,4 +972,20 @@ class DealService(BaseService):
|
|||||||
return DealProductAddKitResponse(ok=True, message='Набор услуг успешно добавлен к товару')
|
return DealProductAddKitResponse(ok=True, message='Набор услуг успешно добавлен к товару')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return DealProductAddKitResponse(ok=False, message=str(e))
|
return DealProductAddKitResponse(ok=False, message=str(e))
|
||||||
|
|
||||||
# endregion
|
# endregion
|
||||||
|
async def complete(self, user: User, request: DealCompleteRequest) -> DealCompleteResponse:
|
||||||
|
try:
|
||||||
|
# check for admin
|
||||||
|
if not user.is_admin:
|
||||||
|
return DealCompleteResponse(ok=False, message='Завершить сделку может только администратор')
|
||||||
|
|
||||||
|
deal = await self._get_deal_by_id(request.deal_id)
|
||||||
|
if not deal:
|
||||||
|
return DealCompleteResponse(ok=False, message="Сделка не найдена")
|
||||||
|
deal.is_completed = True
|
||||||
|
await self.session.commit()
|
||||||
|
return DealCompleteResponse(ok=True, message="Сделка успешно завершена")
|
||||||
|
except Exception as e:
|
||||||
|
await self.session.rollback()
|
||||||
|
return DealCompleteResponse(ok=False, message=str(e))
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
def chunk_list(lst, n) -> list:
|
def chunk_list(lst, n) -> list:
|
||||||
for i in range(0, len(lst), n):
|
for i in range(0, len(lst), n):
|
||||||
yield lst[i:i + n]
|
yield lst[i:i + n]
|
||||||
|
|
||||||
|
|
||||||
|
def compile_query_to_plain_sql(query) -> str:
|
||||||
|
return query.compile(compile_kwargs={
|
||||||
|
'literal_binds': True
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user