Esempio n. 1
0
def userFind():

    # convert request data to dictionary
    data = toDict(request.data)

    success = False
    message = ""
    status = ""  # OK, DENIED, WARNING
    response = {}

    # check if user exists

    # check if health card number exists
    success = PatientService.patientExists(data['hcnumber'])

    # if health card number exists & authenticated, then get the patient
    if success:
        message = "Patient found."
        status = "OK"
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message
        })
    # else the user is not authenticated, request is denied
    else:
        message = "Patient not found."
        status = "DENIED"

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message
    })
    return response
Esempio n. 2
0
def displayimageRoute():
    # convert request data to dictionary
    data = toDict(request.data)

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now

    # If the request is PUT we assume your're trying to update the display_image
    if request.method == 'PUT':

        # Check if display image change wroks
        success = Users.updateDisplayImage(data['user_id'],
                                           data['display_image'])

        if success:
            message = "display_image updated."
            status = "OK"
        else:
            message = "display_image could not be updated, no user with that id."
            status = "FAILURE"
    else:
        message = "HTTP method invalid."
        status = "WARNING"
        success = False

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message
    })
    return response
Esempio n. 3
0
def checkAvailability():
	# convert request data to dictionary
	data = toDict(request.data)

	success = False
	message = ""
	status = ""  # OK, DENIED, WARNING
	response = {}
	roomAvailability = None

	# check if room number exists
	success = RoomService.roomExists(data['roomNumber'], data['clinic_id'])

	# if room exists, room availabilities
	if success:
		roomAvail = RoomScheduleService.getTimeSlotsByDateAndRoom(data['roomNumber'], data['clinic_id'], data['date'])
		message = "Room availabilities retrieved."
		status = "OK"
		response = json.dumps({'success': success, 'status': status, 'message': message, 'roomAvail': roomAvailability})
	# else the room doesn't exist and request is denied.
	else:
		message = "Room does not exist."
		status = "DENIED"

	response = json.dumps({'success': success, 'status': status, 'message': message,'roomAvail': roomAvail})
	return response
Esempio n. 4
0
def emailRoute():

    # convert request data to dictionary
    data = toDict(request.data)

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now

    # If the request is POST we assume your trying to get email
    if request.method == 'POST':

        # Check if user exists
        success = Users.userExists(data['email'])

        if success:
            message = "User exists."
            status = "WARNING"
        else:
            message = "User does not exist."
            status = "OK"
    else:
        message = "HTTP method invalid."
        status = "WARNING"
        success = False

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message
    })
    return response
Esempio n. 5
0
def userRoute(id):
    # convert request data to dictionary
    data = toDict(request.data)

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now
    user = {}  # set the users to an empty list

    if request.method == 'PUT':
        # Modify a user and find our whether it is successful or not
        success = Users.modifyUser(id,
                                   fname=data['fname'],
                                   lname=data['lname'],
                                   engineer=data['engineer'],
                                   display_image=data['display_image'])

        if success:
            status = "OK"
            message = "User information Updated."
        else:
            status = "FAILURE"
            message = "User does not exist."

    elif request.method == 'GET':
        # Get the user
        user = Users.getUserById(id)

        if user is not None:
            success = True
            status = "OK"
            message = "User returned."
        else:
            success = False
            status = "FAILURE"
            message = "No user by that id."

    elif request.method == 'DELETE':
        # Get the user
        success = Users.deleteUser(id)
        if success:
            status = "OK"
            message = "User deleted"
        else:
            status = "FAILURE"
            message = "User not found"
    else:
        success = False
        status = "WARNING"
        message = "HTTP method invalid."

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message,
        'user': user
    })

    return response
Esempio n. 6
0
def updateTags(id):
    data = toDict(request.data)
    if request.method == 'PUT':
        try:
            Questions.updateTags(id, data['tags'])
            app.logger.info(data['tags'])
            response = json.dumps({
                'success': True,
                'status': 'OK',
                'message': 'Tags updated.'
            })
        except KeyError:
            response = json.dumps({
                'success': False,
                'status': 'FAILURE',
                'message': 'Tags not updated.'
            })
    else:
        response = json.dumps({
            'success': False,
            'status': 'FAILURE',
            'message': 'Not proper keys.'
        })

    return response
Esempio n. 7
0
def questionsIDRoute(id):
    data = toDict(
        request.data
    )  # toDict takes the request data and converts it to a dictionary

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now

    if request.method == 'PUT':
        try:
            vote_status = data['vote_status']
            Votes.setVote(user_id=data['loggedin_id'],
                          comment_id=id,
                          comment_status=data['comment_status'],
                          vote_status=vote_status)
            vote = Votes.getVote(user_id=data['loggedin_id'],
                                 comment_id=id,
                                 comment_status=data['comment_status'])
            response = json.dumps({
                'success': True,
                'status': 'OK',
                'message': 'Vote is set.'
            })
        except KeyError:
            response = json.dumps({
                'success': False,
                'status': 'FAILURE',
                'message': 'Not proper keys.'
            })

    return response
Esempio n. 8
0
def answerQuestion():
    data = toDict(
        request.data
    )  # toDict takes the request data and converts it to a dictionary

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now
    answer = {}

    if request.method == 'POST':

        # Create a user and find our whether it is successful or not
        answer = Answers.createAnswer(data['text'], data['user_id'],
                                      data['question_id'])

        if answer is not None:
            answer['user'] = Users.getUser(answer['user_id'])
            success = True
            status = "OK"
            message = "Answer added."
        else:
            success = False
            status = "FAILURE"
            message = "Error."

        # make the response a json object
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message,
            'question': question
        })
Esempio n. 9
0
def userAuthenticate():

    # convert request data to dictionary
    data = toDict(request.data)

    success = False
    message = ""
    status = ""  # OK, DENIED, WARNING
    response = {}
    user = {}

    # logging in

    # check if health card number exists
    success = PatientService.patientExists(data['hcnumber'])
    # Verify User
    success = PatientService.authenticate(data['hcnumber'], data['password'])

    # if health card number exists & authenticated, then get the patient
    if success:
        user = PatientService.getPatient(data['hcnumber'])
        # convert datetimes to strings
        user['birthday'] = user['birthday'].strftime("%Y-%m-%d")
        if user['lastAnnual'] is not None:
            user['lastAnnual'] = user['lastAnnual'].strftime("%Y-%m-%d")
        message = "Patient authenticated."
        status = "OK"
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message,
            'user': user
        })
    # else the user is not authenticated, request is denied
    else:
        message = "User not authenticated."
        status = "DENIED"

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message,
        'user': user
    })
    return response
Esempio n. 10
0
def userAuthenticate():

    # convert request data to dictionary
    data = toDict(request.data)

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now
    user = {}

    # If the reques is POST we assume your trying to login
    if request.method == 'POST':
        # Verify User
        success = Users.userVerified(data['email'], data['password'])

        # if verified then get the user
        if success:
            user = Users.getUser(data['email'])
            message = "User authenticated."
            status = "OK"
            response = json.dumps({
                'success': success,
                'status': status,
                'message': message,
                'user': user
            })
        # else the user is not authenticates, request is denied
        else:
            message = "User not authenticated."
            status = "DENIED"

    else:
        message = "HTTP method invalid."
        status = "WARNING"
        success = False

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message,
        'user': user
    })
    return response
Esempio n. 11
0
def userAuthenticate():

    # convert request data to dictionary
    data = toDict(request.data)

    success = False
    message = ""
    status = ""  # OK, DENIED, WARNING
    response = {}
    user = {}

    # check if access ID exists
    success = NurseService.nurseExists(data['access_ID'])
    # Verify User
    success = NurseService.authenticate(data['access_ID'], data['password'])

    # if access ID exists & authenticated, then get the patient
    if success:
        user = NurseService.getNurse(data['access_ID'])
        # convert datetimes to strings
        message = "Nurse authenticated."
        status = "OK"
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message,
            'user': user
        })
    # else the user is not authenticated, request is denied
    else:
        message = "User not authenticated."
        status = "DENIED"

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message,
        'user': user
    })
    return response
Esempio n. 12
0
def questionsIDRoute(id):
    data = toDict(
        request.data
    )  # toDict takes the request data and converts it to a dictionary

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now

    if request.method == 'PUT':
        if data['actions'] == 'ups':
            success = Questions.incrementUps(id)
        if data['actions'] == 'downs':
            success = Questions.incrementDowns(id)

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message
    })
    print(response)
    return response
Esempio n. 13
0
def newPassword(id):
    # convert request data to dictionary
    data = toDict(request.data)

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now
    user = {}  # set the users to an empty list

    if request.method == 'PUT':
        #Change user's password
        app.logger.info(data)
        success = Users.updatePassword(email=data['email'],
                                       oldPassword=data['oldPassword'],
                                       newPassword=data['newPassword'])

        if success:
            status = "OK"
            message = "Password changed."
        else:
            status = "FAILURE"
            message = "User does not exist."

    else:
        success = False
        status = "WARNING"
        message = "HTTP method invalid."

    response = json.dumps({
        'success': success,
        'status': status,
        'message': message,
        'user': user
    })

    return response
Esempio n. 14
0
def usersRoute():
    data = toDict(
        request.data
    )  # toDict takes the request data and converts it to a dictionary

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now
    users = []  # set the users to an empty list
    user = {}  # assume there is none User

    if request.method == 'POST':

        # Create a user and find our whether it is successful or not
        success = Users.createUser(fname=data['fname'],
                                   lname=data['lname'],
                                   email=data['email'],
                                   password=data['password'],
                                   engineer=data['engineer'],
                                   display_image=data['display_image'])
        if success:
            status = "OK"
            user_id = Users.getUserId(email=data['email'])
            mail = Mail(app)
            msg = Message("Email confirmation", recipients=[data['email']])
            msg.html = "<body>To confirm your email please click on this link: http://localhost:3000/users/" + str(
                user_id) + "</body>"
            mail.send(msg)
        else:
            status = "FAILURE"
            message = "Duplicate Email."

        # make the response a json object
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message,
            'user': user
        })

    elif request.method == 'GET':
        # Get all users
        users = Users.getUsers()
        if users != []:
            success = True
            status = "OK"
            message = "Users returned."
        else:
            success = False
            status = "FAILURE"
            message = "Duplicate Email"

        response = json.dumps({
            'success': success,
            'status': status,
            'message': message,
            'users': users
        })

    elif request.method == 'DELETE':
        success = False
        status = "DENIED"
        message = "Cannot delete all users."
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message
        })
    else:
        success = False
        status = "WARNING"
        message = "HTTP method invalid."
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message
        })

    return response
Esempio n. 15
0
def questionsRoute():
    data = toDict(
        request.data
    )  # toDict takes the request data and converts it to a dictionary

    success = False  # assume the response is unsucessful
    message = ""  # assume an empty message
    status = ""  # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID'
    response = {}  # assume the response is empty dict() for now
    question = {}
    questions = []

    if validateQuestionRequest(data):
        message = "Invalid data request object (title, text, engineer, user_id)."
        status = "FAILURE"
        # make the response a json object
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message,
            'question': question
        })
    elif request.method == 'POST':
        # get tags from post request, if not set then there are no tags
        try:
            tags = data['tags']
        except:
            tags = ''

        # Create a user and find our whether it is successful or not
        question = Questions.createQuestion(data['title'],
                                            data['text'],
                                            data['engineer'],
                                            data['user_id'],
                                            tags=tags)

        print("---------------------")
        app.logger.info(question)
        print("---------------------")

        if question is not None:
            success = True
            status = "OK"
            message = "Question added."
            question = questionResponse(question)
        else:
            success = False
            status = "FAILURE"
            message = "Error."

        # make the response a json object
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message,
            'question': question
        })
    elif request.method == 'GET':
        # url get request
        questionArgs = request.args.to_dict()

        # get logged in user id, if it's set then continue, else set it to -1
        try:
            id = int(questionArgs['loggedin_id'])
        except:
            id = -1
        app.logger.info("USER ID (-1 means logged out): " + str(id))

        if 'question_id' in questionArgs:
            q = Questions.getQuestion(questionArgs['question_id'], id)
            app.logger.info(q)
            question = questionResponse(q, id)
            app.logger.info(question)
            success = True
            status = 'OK'
            message = 'Question with anwsers.'
        elif 'user_id' in questionArgs and 'engineer' not in questionArgs:
            questions = Questions.getQuestionsByUser(questionArgs['user_id'],
                                                     id)
            success = True
            status = 'OK'
            message = 'List of several questions by user_id'
        elif 'user_id' in questionArgs and 'engineer' in questionArgs:
            questions = Questions.getQuestionsByBoth(questionArgs['engineer'],
                                                     questionArgs['user_id'],
                                                     id)
            success = True
            status = 'OK'
            message = 'List of several questions by user_id'
        elif 'engineer' in questionArgs:
            questions = Questions.getQuestionsByEngineer(
                questionArgs['engineer'], id)
            success = True
            status = 'OK'
            message = 'List of several questions by engineer'
        else:
            questions = Questions.getQuestions(id)
            success = True
            status = 'OK'
            message = 'List of several questions'

        if 'sort' in questionArgs and 'reverse' in questionArgs:
            questions = sorted(questions,
                               key=lambda k: k[questionArgs['sort']],
                               reverse=int(questionArgs['reverse']))
        elif 'sort' in questionArgs:
            questions = sorted(questions,
                               key=lambda k: k[questionArgs['sort']])

        if question:
            response = json.dumps({
                'success': success,
                'status': status,
                'message': message,
                'question': question
            })
        else:
            response = json.dumps({
                'success': success,
                'status': status,
                'message': message,
                'questions': questions
            })

    else:
        success = False
        status = "WARNING"
        message = "HTTP method invalid."
        response = json.dumps({
            'success': success,
            'status': status,
            'message': message
        })

    return response
Esempio n. 16
0
def newAppointmentByDoctor():
    message = ""
    success = False
    status_code = 400
    data = toDict(request.data)
    doctor_permit_number = data['permit_number']
    patient_health_card_number = data['hcnumber']
    clinic_id = data['clinic_id']
    date = data['date']
    time = data['time']
    appointment_type = data['appointment_type']
    patientExists = True
    room_is_available = True
    bookable = True
    if appointment_type == 'Annual':
        length = 60
    else:
        length = 20

    # preliminary checks
    if not DoctorService.doctorExists(doctor_permit_number):
        message = "Doctor " + doctor_permit_number + " doesn't exist."
        success = False
        status_code = 404
        response = json.dumps({"success": success, "message": message})
        return response, status_code
    if not PatientService.patientExists(patient_health_card_number):
        message = "Patient " + doctor_permit_number + " doesn't exist."
        patientExists = False
        success = False
        status_code = 404
        response = json.dumps({
            "success": success,
            "message": message,
            "patientExists": patientExists,
            "room_is_available": room_is_available
        })
        return response, status_code

    # finding out if the doctor is available
    if appointment_type == 'Annual':
        doctor_is_available = DoctorScheduleService.isDoctorAvailableForAnnual(
            permit_number=doctor_permit_number, date=date, time=time)
    else:
        doctor_is_available = DoctorScheduleService.isDoctorAvailable(
            permit_number=doctor_permit_number, date=date, time=time)
    # finding out if a room is avail
    if appointment_type == 'Annual':
        room_is_available = RoomScheduleService.findRoomForAnnual(
            clinic_id, date, time)
    else:
        room_is_available = RoomScheduleService.findRoomAtTime(
            clinic_id, date, time)

    # to avoid potential double bookings
    patient_is_already_booked = AppointmentService.is_patient_already_booked(
        patient_hcnumber=patient_health_card_number,
        time=time,
        length=length,
        clinic_id=clinic_id,
        date=date)

    # check if annual, if so, check if bookable
    if appointment_type == 'Annual':
        bookable = PatientService.canBookAnnual(patient_health_card_number)

    # booking attempt
    if doctor_is_available and room_is_available and not patient_is_already_booked and bookable:
        AppointmentService.bookAppointmentWithASpecificDoctor(
            patient_hcnumber=patient_health_card_number,
            doctor_permit_number=doctor_permit_number,
            length=length,
            time=time,
            date=date,
            clinic_id=clinic_id)
        message = "Appointment has been booked successfully"
        success = True
        status_code = 200
        response = json.dumps({
            "success":
            success,
            "message":
            message,
            "patientExists":
            patientExists,
            "room_is_available":
            room_is_available,
            "patientIsAlreadyBooked":
            patient_is_already_booked
        })
        return response, status_code
    else:
        message = "Cannot book."
        success = False
        status_code = 200
        response = json.dumps({
            "success": success,
            "message": message,
            "patientExists": patientExists,
            "room_is_available": room_is_available,
            "doctor_is_available": doctor_is_available,
            "patientIsAlreadyBooked": patient_is_already_booked,
            "bookable": bookable
        })
        return response, status_code