Exemplo n.º 1
0
def submitContract():
	if request.method=='POST':
		# move to after table insertion when debugging
		sql = text('''INSERT INTO contract
					  (worker_username, service_id, time, contract_status)
					  VALUES (:worker_username, :service_id, :time, 'pending');''')
		db.engine.execute(sql, \
			worker_username=request.form.get('worker_username'), \
			service_id=request.form.get('service_id'), \
			time=request.form.get('time'))
		sql = text('''UPDATE service_request SET contracted=TRUE WHERE service_id=:service_id''')
		db.engine.execute(sql, service_id=request.form.get('service_id'))

		sql = text('''SELECT contract_id, client_username
						FROM contract c, service_request sr
 						WHERE
							c.service_id=sr.service_id AND
							sr.service_id=:service_id AND
							worker_username=:worker_username;''')
		result = db.engine.execute(sql, \
			service_id=request.form.get('service_id'), \
			worker_username=request.form.get('worker_username'))
		result = result.fetchone()
		pushNotification(\
			name=request.form.get('worker_username'), \
			message='You\'ve received a contract from '+result[1], \
			link='/contracts/'+str(result[0]))

		flash('Contract created, awaiting worker acceptance')
		return redirect('/')
	else:
		return redirect('/')
Exemplo n.º 2
0
def interestRequest(service_id):
    if request.method == 'GET': return redirect('/')
    if session.get('user') and session['type'] == 'worker':
        sql = text(
            '''SELECT interested FROM worker_request WHERE service_id=:id AND worker_username=:user;'''
        )
        results = db.engine.execute(sql, id=service_id, user=session['user'])
        interested = results.fetchone()[0]
        interested = not interested
        #change interest
        sql = text(
            'UPDATE worker_request SET interested=:interested WHERE service_id=:id AND worker_username=:user;'
        )
        db.engine.execute(sql,
                          interested=interested,
                          id=service_id,
                          user=session['user'])
        #Notify the user
        if interested:
            sql = text(
                '''SELECT client_username FROM service_request WHERE service_id=:id'''
            )
            results = db.engine.execute(sql, id=service_id)
            name = results.fetchone()[0]
            pushNotification(
                name,
                session.get('user') + ' is interested in your job',
                '/requests/' + str(service_id))
        return redirect('/pending')
    else:
        return redirect('/')
Exemplo n.º 3
0
def selectWorkers(id):
	workers = request.form.getlist('workers')
	for user in workers:
		worker_username = user
		print worker_username
		sql = text('''INSERT INTO worker_request (service_id, worker_username) VALUES (:id, :user);''')
		db.engine.execute(sql, id=id, user=worker_username)
		pushNotification(user, 'You have been requested for a job', '/pending/'+str(id))
Exemplo n.º 4
0
def getMsg(message):
	room = session.get('room')
	msg = session.get('user') + ': ' + message['msg']
	addMessage(msg, room)
	emit('message', {'msg': msg}, room=room)
	#If other user is not online and message not recently sent (?), do stuff
	if isOtherOffline(room) and not isOtherNotified(room):
		pushNotification(getOther(room), session.get('user')+' messaged you', '/chat/'+room)
Exemplo n.º 5
0
def getMsg(message):
    room = session.get('room')
    msg = session.get('user') + ': ' + message['msg']
    addMessage(msg, room)
    emit('message', {'msg': msg}, room=room)
    #If other user is not online and message not recently sent (?), do stuff
    if isOtherOffline(room) and not isOtherNotified(room):
        pushNotification(getOther(room),
                         session.get('user') + ' messaged you',
                         '/chat/' + room)
Exemplo n.º 6
0
def selectWorkers(id):
    workers = request.form.getlist('workers')
    for user in workers:
        worker_username = user
        print worker_username
        sql = text(
            '''INSERT INTO worker_request (service_id, worker_username) VALUES (:id, :user);'''
        )
        db.engine.execute(sql, id=id, user=worker_username)
        pushNotification(user, 'You have been requested for a job',
                         '/pending/' + str(id))
Exemplo n.º 7
0
def interestRequest(service_id):
	if request.method == 'GET': return redirect('/')
	if session.get('user') and session['type'] == 'worker':
		sql = text('''SELECT interested FROM worker_request WHERE service_id=:id AND worker_username=:user;''')
		results = db.engine.execute(sql, id=service_id, user=session['user'])
		interested = results.fetchone()[0]
		interested = not interested; #change interest
		sql = text('UPDATE worker_request SET interested=:interested WHERE service_id=:id AND worker_username=:user;')
		db.engine.execute(sql, interested=interested, id=service_id, user=session['user'])
		#Notify the user
		if interested:
			sql = text('''SELECT client_username FROM service_request WHERE service_id=:id''')
			results = db.engine.execute(sql, id=service_id)
			name = results.fetchone()[0]
			pushNotification(name, session.get('user')+' is interested in your job', '/requests/'+str(service_id))
		return redirect('/pending')
	else: return redirect('/')
Exemplo n.º 8
0
def clientCancelContract(id):
	if session.get('user') and session['type'] == 'client':
		sql = text('''SELECT client_username, worker_username, contract_status, contract.service_id FROM service_request sr, contract WHERE contract_id=:id AND contract.service_id=sr.service_id;''')
		result = db.engine.execute(sql, id=id).fetchone()
		client = result[0]
		worker = result[1]
		status = result[2]
		service_id = result[3]
		if client != session.get('user') or status != 'pending': return redirect('/')
		sql = text('''DELETE FROM contract WHERE contract_id=:id;''')
		db.engine.execute(sql, id=id)
		sql = text('''UPDATE service_request SET contracted=FALSE WHERE service_id=:id''')
		db.engine.execute(sql, id=service_id)
		flash('Pending contract deleted')
		pushNotification(worker, client+' cancelled a pending contract', '/contracts')
		return redirect('/')
	else:
		return redirect('/')
Exemplo n.º 9
0
def workerAcceptContract(id):
	if session.get('user') and session['type'] == 'worker':
		sql = text('''UPDATE contract SET contract_status='accepted' WHERE contract_id=:id;''')
		db.engine.execute(sql, id=id)

		sql = text('''SELECT client_username, worker_username
						FROM service_request sr, contract c
						WHERE sr.service_id=c.service_id AND
							contract_id=:id''')
		result = db.engine.execute(sql, id=id)
		result = result.fetchone()
		pushNotification( \
			name=result[0], \
			message=result[1]+' has accepted your contract', \
			link='/contracts/'+str(id))

		return redirect('/contracts')
	else:
		return redirect('/')
Exemplo n.º 10
0
def completeContract(id):
	if session.get('user') and session['type'] == 'client':
		#Check if this user is the owner of the request
		sql = text('''SELECT client_username, worker_username FROM contract, service_request
					  WHERE contract.service_id=service_request.service_id
					  AND contract_id=:id;''')
		result = db.engine.execute(sql, id=id)
		result = result.fetchone()
		contract_client = result[0]
		contract_worker = result[1]
		if contract_client == session.get('user'):
			#complete the contract
			sql = text('''UPDATE contract 
						  SET contract_status='finished',
						  time_finish=NOW()
						  WHERE contract_id=:id;''')
			db.engine.execute(sql, id=id)
			pushNotification(contract_worker, 'Contract with '+contract_client+' complete', '/contracts/'+str(id))
			return redirect('/contracts/'+id+'/rating')
		else:
			return redirect('/')
	else:
		return redirect('/')
Exemplo n.º 11
0
def workerDenyContract(id):
	if session.get('user') and session['type'] == 'worker':
		sql = text('''SELECT service_id FROM contract WHERE contract_id=:id;''')
		result = db.engine.execute(sql, id=id)
		service_id = result.fetchone()[0]
		sql = text('''UPDATE service_request SET contracted=FALSE WHERE service_id=:service_id;''')
		db.engine.execute(sql, service_id=service_id)
		sql = text('''DELETE FROM contract WHERE contract_id=:id;''')
		db.engine.execute(sql, id=id)

		sql = text('''SELECT client_username, worker_username
						FROM service_request sr, contract c
						WHERE sr.service_id=c.service_id AND
							contract_id=:id''')
		result = db.engine.execute(sql, id=id)
		result = result.fetchone()
		pushNotification( \
			name=result[0], \
			message=result[1]+' has denied your contract', \
			link='/contracts/'+str(id))

		return redirect('/contracts')
	else:
		return redirect('/')