2018-06-07 16:01:41 +01:00
|
|
|
from datetime import timedelta
|
|
|
|
|
|
2018-07-02 17:19:23 +01:00
|
|
|
from flask import current_app
|
2018-06-07 16:01:41 +01:00
|
|
|
from sqlalchemy import desc
|
|
|
|
|
|
2018-06-04 17:29:58 +01:00
|
|
|
from app import db
|
2021-04-14 07:11:01 +01:00
|
|
|
from app.dao.dao_utils import autocommit
|
2018-06-04 17:29:58 +01:00
|
|
|
from app.models import Complaint
|
2018-06-07 16:01:41 +01:00
|
|
|
from app.utils import get_london_midnight_in_utc
|
2018-06-04 17:29:58 +01:00
|
|
|
|
|
|
|
|
|
2021-04-14 07:11:01 +01:00
|
|
|
@autocommit
|
2018-06-04 17:29:58 +01:00
|
|
|
def save_complaint(complaint):
|
|
|
|
|
db.session.add(complaint)
|
|
|
|
|
|
|
|
|
|
|
2018-07-02 17:19:23 +01:00
|
|
|
def fetch_paginated_complaints(page=1):
|
|
|
|
|
return Complaint.query.order_by(
|
|
|
|
|
desc(Complaint.created_at)
|
|
|
|
|
).paginate(
|
|
|
|
|
page=page,
|
|
|
|
|
per_page=current_app.config['PAGE_SIZE']
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2018-06-04 17:29:58 +01:00
|
|
|
def fetch_complaints_by_service(service_id):
|
2018-06-07 16:01:41 +01:00
|
|
|
return Complaint.query.filter_by(service_id=service_id).order_by(desc(Complaint.created_at)).all()
|
2018-06-07 10:30:50 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def fetch_count_of_complaints(start_date, end_date):
|
2018-06-07 16:01:41 +01:00
|
|
|
start_date = get_london_midnight_in_utc(start_date)
|
|
|
|
|
end_date = get_london_midnight_in_utc(end_date + timedelta(days=1))
|
|
|
|
|
|
|
|
|
|
return Complaint.query.filter(Complaint.created_at >= start_date, Complaint.created_at < end_date).count()
|