コード例 #1
0
    def post(self):
        # Creates new tickets
        data = TicketCreator.parser.parse_args()
        customer = UserModel.find_by_email(data['customer'], is_customer=True)

        # Check if username exists
        if customer:
            # Create ticket
            ticket = TicketModel(customer.id, data['subject'])

            try:
                ticket.add_to_db()
            except IntegrityError:
                return {"message":
                        "An error occurred inserting the item."}, 500

            # Add comment
            timestamp = int(time.time())
            comment = CommentModel(
                ticket.number, timestamp, customer.email, data['content'])

            try:
                comment.add_to_db()
            except IntegrityError:
                return {"message":
                        "An error occurred inserting the item."}, 500

            return ticket.json(), 201

        return {"message": "Customer not found"}, 400
コード例 #2
0
ファイル: ticket.py プロジェクト: wagle04/emergency-sewa-APIs
    def post(self):
        data = TicketGenerate.generateparser.parse_args()

        ticket = TicketModel(**data)
        try:
            ticket_id = ticket.save_to_db()
        except:
            return {"message": "An error occured while generating ticket"}, 500

        return {
            "message": "Ticket generated successfully",
            "ticket_id": ticket_id
        }, 201
コード例 #3
0
ファイル: ticket.py プロジェクト: wagle04/emergency-sewa-APIs
    def post(self):
        data = TicketInfo.infoparser.parse_args()
        ticket = TicketModel.find_by_ticketid(data['ticket_id'])
        if ticket:
            return {"message": "Ticket Found", "ticket": ticket.json()}, 200

        return {"message": "Error while searching for ticket"}, 500
コード例 #4
0
    def json(self):
        tickets = TicketModel.find_by_order(self.id)

        return {
            'id': self.id,
            'order_date': self.order_date,
            'user_id': self.user_id,
            'tickets': [ticket.json() for ticket in tickets]
        }
コード例 #5
0
async def create_ticket(ticket: TicketModel):
    ticket = ticket.dict()
    ticket['created_at'] = datetime.now()
    ticket['started_at'] = None
    ticket['finished_at'] = None

    ticket_op = await database.ticketDB.insert_one(ticket)
    if ticket_op.inserted_id:
        ticket = await _get_ticket_or_404(ticket_op.inserted_id)
        return ticket
    return ticket
コード例 #6
0
    def get(self, id, is_customer):
        # Returns tickets that the employee/customer is assigned to
        user = UserModel.find_by_id(id, is_customer)

        if user:
            return {
                "tickets": [
                    ticket.json() for ticket in TicketModel.find_by_email(
                        user.email, is_customer)
                ]
            }
        return {"message": "User not found"}
コード例 #7
0
    def patch(self, number):
        # Adds comment to ticket
        data = CommentAdder.parser.parse_args()
        ticket = TicketModel.find_by_number(number)
        if ticket:
            timestamp = int(time.time())
            comment = CommentModel(number, timestamp, **data)

            try:
                comment.add_to_db()
            except IntegrityError:
                return {
                    "message": "An error occurred inserting the item."
                }, 500

            return comment.json(), 202

        return {"message": "Ticket not found."}, 400
コード例 #8
0
    def patch(self, number):
        # Assigns employee to specific ticket, if it exists
        ticket = TicketModel.find_by_number(number)
        if ticket:
        # Checks if ticket exists
            data = TicketAssigner.parser.parse_args()
            employee = UserModel.find_by_email(
                data['employee'], is_customer=False)
            if employee:
            # Checks if employee exists
                ticket.employee_id = employee.id
                try:
                    ticket.update_to_db()
                except IntegrityError:
                    return {"message":
                        "An error occurred inserting the item."}, 500

                return ticket.json()

            return {"message": "Employee not found"}, 400
        return {"message": "Ticket not found"}, 404
コード例 #9
0
ファイル: ticket.py プロジェクト: wagle04/emergency-sewa-APIs
    def put(self):
        data = TicketUpdate.updateparser.parse_args()

        ticket = TicketModel.find_by_ticketid(data['ticket_id'])
        ticket.user_id = data['user_id']
        ticket.agent_id = data['agent_id']
        ticket.type = data['type']
        ticket.time_created = data['time_created']
        ticket.time_solved = data['time_solved']
        ticket.user_confirm = data['user_confirm']
        ticket.agent_confirm = data['agent_confirm']
        ticket.solved = data['solved']
        ticket.valid = data['valid']

        try:
            ticket.save_to_db()
        except:
            return {
                "message":
                "An error occured updating information of the ticket"
            }, 500

        return {"message": "Ticket information updated successfully"}, 201
コード例 #10
0
 def delete(self, number):
     # Deletes ticket if it exists
     ticket = TicketModel.find_by_number(number)
     if ticket:
         ticket.delete_from_db()
     return {'message': 'Ticket deleted'}
コード例 #11
0
 def get(self, number):
     # Returns ticket with that specific number
     ticket = TicketModel.find_by_number(number)
     if ticket:
         return ticket.json()
     return {'message': 'Ticket not found'}, 404
コード例 #12
0
ファイル: event.py プロジェクト: AndreMPCosta/ManageEvents
 def __init__(self, **kwargs):
     super().__init__(**kwargs)
     for ticket_type in ticket_types:
         self.tickets.append(TicketModel(ticket_type=ticket_type))
コード例 #13
0
    def put(self):
        meeting_uuid = request.json["meeting"]
        customer_uuid = request.json["customer"]

        bought = []
        amount = 0

        all_tickets = request.json["buy"]

        buy_limit = SettingModel.query.filter_by(key="buy_limit").first()

        if buy_limit and buy_limit.value.isdigit():
            if len(all_tickets) + len(
                    TicketModel.query.filter_by(
                        customer=customer_uuid).all()) > int(buy_limit.value):
                return {"result": False}

        for ticket in all_tickets:
            seat_uuid = ticket["seat"]
            price_uuid = ticket["price"]

            seat: SeatModel = SeatModel.query.filter_by(uuid=seat_uuid).first()

            if seat.type == 0:
                meeting: MeetingModel = MeetingModel.query.filter_by(
                    uuid=meeting_uuid).first()

                now = int(datetime.now().strftime("%s"))

                if meeting.start < now and now < meeting.stop:
                    price: PriceModel = PriceModel.query.filter_by(
                        uuid=price_uuid).first()
                    customer: CustomerModel = CustomerModel.query.filter_by(
                        uuid=customer_uuid).first()

                    if TicketModel.query.filter_by(
                            seat_id=seat.uuid,
                            meeting_id=meeting.uuid).first():
                        return {"result": False}

                    ticket: TicketModel = TicketModel.create(
                        customer, meeting, seat, price)

                    seat.reserved = True

                    db.session.commit()

                    amount = amount + price.value
                    bought.append(ticket)

        if config["MAIL_ENABLED"] and len(bought) > 0:
            msg_title = SettingModel.query.filter_by(
                key="buy_mail_title").first().value
            msg_content = SettingModel.query.filter_by(
                key="buy_mail_content").first().value

            if msg_title != '' and msg_content != '':
                cc = SettingModel.query.filter_by(key="mail_cc").first()

                msg = Message(msg_title, recipients=[customer.email])

                if cc and cc.value != '':
                    msg.cc = [cc.value]

                customer_url = str(
                    config['ENDPOINT']) + 'f/customer/' + customer.uuid

                msg_content = msg_content.replace(
                    '{{name}}', customer.firstname + ' ' + customer.lastname)
                msg_content = msg_content.replace(
                    '{{customer}}',
                    '<a href="' + customer_url + '">' + customer_url + '</a>')
                msg_content = msg_content.replace('{{amount}}',
                                                  str(int(amount)))
                msg_content = msg_content.replace('\n', '<br>')

                msg.html = msg_content

                mail.send(msg)

        return {"result": True}