Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
94eba49
import logs service and call it
ivanzaqqa Oct 18, 2017
d36fe3e
import logs service and add log for verify and update
ivanzaqqa Oct 18, 2017
60e4287
import logs service and add for confirm and update
ivanzaqqa Oct 18, 2017
7f19d18
add import logs service and add log for claimed reward
ivanzaqqa Oct 18, 2017
f144430
add import logs service and add log for referal in register
ivanzaqqa Oct 18, 2017
27aaa87
add model for logs
ivanzaqqa Oct 18, 2017
285f8ea
add services for logs
ivanzaqqa Oct 18, 2017
a71fdb4
add migrations for create logs table
ivanzaqqa Oct 18, 2017
1f347d4
fix code delete logs
ivanzaqqa Oct 19, 2017
c2010c6
fix position code
ivanzaqqa Oct 19, 2017
55745f0
fix position
ivanzaqqa Oct 19, 2017
76fdf6b
add parameter user for delete
ivanzaqqa Oct 19, 2017
cbe9fb6
add User parameter for update delete and verify
ivanzaqqa Oct 19, 2017
0c37c31
add user parameter for status and confirm
ivanzaqqa Oct 19, 2017
1810dde
add user parameter for register
ivanzaqqa Oct 19, 2017
99b283e
add kwargs['user'].as_dict() for orders, payments, and order-verifica…
ivanzaqqa Oct 19, 2017
78bd4ec
add kwargs['user'].as_dict() for register
ivanzaqqa Oct 19, 2017
cd12d66
fix delete import os, and etc
ivanzaqqa Oct 19, 2017
f6d7896
add ticket information
ivanzaqqa Oct 19, 2017
f2433f9
add parameter user and order id to log
ivanzaqqa Oct 19, 2017
7024c0a
fix code and add parameter user
ivanzaqqa Oct 19, 2017
c9e513f
changed position log and add ticket id information
ivanzaqqa Oct 19, 2017
417e5ad
add parameter and changed log description
ivanzaqqa Oct 19, 2017
72d2926
remove user parameter
ivanzaqqa Oct 19, 2017
224d2d7
remove token required and user variable
ivanzaqqa Oct 19, 2017
94f4ae6
remove user parameter for register and change position log and fix de…
ivanzaqqa Oct 19, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/controllers/order_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ def create(request, user):
return BaseController.send_error_api(None, result['message'])

@staticmethod
def delete(id):
order = orderservice.delete(id)
def delete(id, user):
order = orderservice.delete(id, user)
if order['error']:
return BaseController.send_response_api(None, 'order not found')
return BaseController.send_response_api(None, 'order with id: ' + id + ' has been succesfully deleted')
Expand Down
12 changes: 6 additions & 6 deletions app/controllers/order_verification_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def show(id, request):


@staticmethod
def update(id, request):
def update(id, request, user):
user_id = request.form['user_id'] if 'user_id' in request.form else None
order_id = request.form['order_id'] if 'order_id' in request.form else None
payment_proof = request.files['payment_proof'] if 'payment_proof' in request.files else None
Expand All @@ -49,23 +49,23 @@ def update(id, request):
}
else:
return BaseController.send_error_api(None, 'field is not complete')
result = orderverificationservice.update(id, payloads)
result = orderverificationservice.update(id, payloads, user)
if not result['error']:
return BaseController.send_response_api(result['data'], result['message'])
else:
return BaseController.send_error_api(result['data'], result['message'])

@staticmethod
def delete(id):
data = orderverificationservice.delete(id)
def delete(id, user):
data = orderverificationservice.delete(id, user)
if data['error']:
return BaseController.send_error_api(data['data'], data['message'])
return BaseController.send_response_api(data['data'], data['message'])


@staticmethod
def verify(id, request):
data = orderverificationservice.verify(id)
def verify(id, request, User):
data = orderverificationservice.verify(id, User)
if data['error']:
return BaseController.send_error_api(data['data'], data['message'])
return BaseController.send_response_api(data['data'], data['message'])
8 changes: 4 additions & 4 deletions app/controllers/payment_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,9 +290,9 @@ def authorize(request):
return BaseController.send_response_api(result['data'], result['message'])

@staticmethod
def status(id):
def status(id, user):

payment = paymentservice.update(id)
payment = paymentservice.update(id, user)

if not payment['status_code'] == '404':
return BaseController.send_response_api(payment, payment['data'], payment['message'])
Expand Down Expand Up @@ -321,15 +321,15 @@ def card_number_validation(card_number):
return ((sum % 10) == 0)

@staticmethod
def confirm(request, user_id):
def confirm(request, user_id, User):
transaction_id = request.json['transaction_id'] if 'transaction_id' in request.json else None
order_id = request.json['order_id'] if 'order_id' in request.json else None
if transaction_id and order_id:
payload = {
'transaction_id' : transaction_id,
'order_id' : order_id
}
result = paymentservice.confirm(payload, user_id)
result = paymentservice.confirm(payload, user_id, User)
if result['error']:
return BaseController.send_error_api(result['data'], result['message'])
return BaseController.send_response_api(result['data'], result['message'])
Expand Down
20 changes: 20 additions & 0 deletions app/models/logs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import datetime

from app.models import db
from app.models.base_model import BaseModel


class Logs(db.Model, BaseModel):
# table name
__tablename__ = 'logs'

# visible fields
visible = ['id', 'description', 'created_at']

# columns definitions
id = db.Column(db.Integer, primary_key=True)
description = db.Column(db.Text)
created_at = db.Column(db.DateTime)

def __init__(self):
self.created_at = datetime.datetime.now()
18 changes: 11 additions & 7 deletions app/routes/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,10 +185,11 @@ def orders(*args, **kwargs):
@api.route('/orders/<id>', methods=['DELETE', 'GET'])
@token_required
def orders_id(id, *args, **kwargs):
user = kwargs['user'].as_dict()
if(request.method == 'GET'):
return OrderController.show(id)
elif(request.method == 'DELETE'):
return OrderController.delete(id)
return OrderController.delete(id, user)


@api.route('/orders/<order_id>/details', methods=['GET', 'POST'])
Expand Down Expand Up @@ -566,15 +567,17 @@ def authorize_credit_card(*args, **kwargs):
@api.route('/payments/status/<id>', methods=['PATCH', 'PUT'])
@token_required
def status(id, *args, **kwargs):
user = kwargs['user'].as_dict()
if (request.method == 'PATCH' or request.method == 'PUT'):
return PaymentController.status(id)
return PaymentController.status(id, user)


@api.route('/payments/confirm', methods=['POST'])
@token_required
def confirm_payment(*args, **kwargs):
User = kwargs['user'].as_dict()
user_id = kwargs['user'].id
return PaymentController.confirm(request, user_id)
return PaymentController.confirm(request, user_id, User)


@api.route('/payments/<payment_id>', methods=['GET'])
Expand Down Expand Up @@ -1011,20 +1014,21 @@ def order_verification_general (*args, **kwargs):
@api.route('/order-verification/<id>', methods=['PUT', 'PATCH', 'GET', 'DELETE'])
@token_required
def order_verification_id(id, *args, **kwargs):
user = kwargs['user'].as_dict()
if (request.method == 'GET'):
return OrderVerificationController.show(id, request)
elif (request.method == 'PUT' or request.method == 'PATCH'):
return OrderVerificationController.update(id, request)
return OrderVerificationController.update(id, request, user)
else:
return OrderVerificationController.delete(id)
return OrderVerificationController.delete(id, user)


@api.route('/order-verification/<id>/verify', methods=['POST'])
@token_required
def verify_payment(id, *args, **kwargs):
user = kwargs['user'].as_dict()
User = kwargs['user'].as_dict()
if user['role_id'] == ROLE['admin']:
return OrderVerificationController.verify(id, request)
return OrderVerificationController.verify(id, request, User)
return 'Unauthorized'

#Hackaton API
Expand Down
23 changes: 23 additions & 0 deletions app/services/logs_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import datetime
from app.models import db
from sqlalchemy.exc import SQLAlchemyError
from app.services.base_service import BaseService

#import model class
from app.models.logs import Logs
from app.models.base_model import BaseModel
from app.builders.response_builder import ResponseBuilder


class LogsService(BaseService):

def create_log(self, description):
response = ResponseBuilder()
self.log = Logs()
self.log.description = description
db.session.add(self.log)
try:
db.session.commit()
return response.set_message('Log has been create').set_data(None).build()
except SQLAlchemyError as e:
return response.set_message('Cant create log').set_data(e.orig.args).build()
20 changes: 13 additions & 7 deletions app/services/order_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import paypalrestsdk
import datetime
from sqlalchemy.exc import SQLAlchemyError
from app.services.logs_service import LogsService
# import model class
from app.models.order import Order
from app.builders.response_builder import ResponseBuilder
Expand Down Expand Up @@ -33,7 +34,7 @@ def __init__(self):
# ticket = db.session.query(Ticket).filter_by(id=order['ticket_id']).first().as_dict()
# item['name'] = ticket['ticket_type']
# item['quantity'] = str(order['count'])
# item['currency'] = payload['currency']
# item['currency'] = "USD"
# item['price'] = ticket['price']

# ord_det.append(item)
Expand All @@ -45,8 +46,8 @@ def __init__(self):
# },
# "transactions": [{
# "amount": {
# "currency":payload['currency'],
# "total": payload['gross_amount']
# "currency":"USD",
# "total": 400000
# },
# "payee": {
# "email": PAYPAL['payee']
Expand All @@ -63,6 +64,7 @@ def __init__(self):
# result = payment.create()
# if result:
# self.get_paypal_detail(payment.id)
# print(payment.id)
# else:
# print(payment.error)
# return payment
Expand Down Expand Up @@ -148,10 +150,12 @@ def create(self, payloads, user):
payment.transaction_time = datetime.datetime.now()
payment.transaction_status = 'pending'
db.session.add(payment)
db.session.commit()
db.session.commit()

LogsService().create_log("Ticket id: " + ticket + " order from " + user['username'] + " has been created")

# if payloads['payment_type'] == 'paypal':
# self.paypalorder(payloads)
# if payloads['payment_type'] == 'paypal':
# self.paypalorder(payloads)
# save all items
return {
'error': False,
Expand All @@ -165,7 +169,7 @@ def create(self, payloads, user):
'data': data
}

def delete(self, id):
def delete(self, id, user):
self.model_order = db.session.query(Order).filter_by(id=id)
if self.model_order.first() is not None:
self.model_order_details = db.session.query(OrderDetails).filter_by(order_id=self.model_order.first().id)
Expand All @@ -174,6 +178,8 @@ def delete(self, id):
self.model_order_payment.delete()
db.session.commit()

LogsService().create_log("Ticket id: " + self.model_order_details['ticket_id'] + " order from " + user['username'] + " has been deleted")

# delete row
self.model_order.delete()
db.session.commit()
Expand Down
16 changes: 13 additions & 3 deletions app/services/order_verification_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from app.models.hacker_team import HackerTeam
from app.models.user_hacker import UserHacker
from app.services.base_service import BaseService
from app.services.logs_service import LogsService
from app.builders.response_builder import ResponseBuilder
from app.services.user_ticket_service import UserTicketService
from app.services.redeem_code_service import RedeemCodeService
Expand Down Expand Up @@ -83,7 +84,7 @@ def show(self, id):
return response.set_error(True).set_message('data not found').set_data(None).build()


def update(self, id, payload):
def update(self, id, payload, user):
response = ResponseBuilder()
orderverification = db.session.query(OrderVerification).filter_by(id=id)
data = orderverification.first().as_dict() if orderverification.first() else None
Expand All @@ -101,13 +102,16 @@ def update(self, id, payload):
'updated_at': datetime.datetime.now()
})
db.session.commit()

LogsService().create_log(user['username'] + "'s payment from order id: " + payload['order_id'] + "has been updated")

data = orderverification.first()
return response.set_data(data.as_dict()).build()
except SQLAlchemyError as e:
data = e.orig.args
return response.set_error(True).set_data(data).build()

def delete(self, id):
def delete(self, id, user):
response = ResponseBuilder()
orderverification = db.session.query(OrderVerification).filter_by(id=id).first()
if orderverification.payment_proof is not None:
Expand All @@ -116,6 +120,9 @@ def delete(self, id):
if orderverification.first() is not None:
orderverification.delete()
db.session.commit()

LogsService().create_log(user['username'] + "'s payment from order id: " + orderverification['order_id'] + "has been Deleted")

return response.set_message('Order Verification entry was deleted').build()
else:
data = 'Entry not found'
Expand Down Expand Up @@ -165,7 +172,7 @@ def create_hackaton (self, user):
db.session.commit()
return hacker_team.id

def verify(self, id):
def verify(self, id, User):
response = ResponseBuilder()
orderverification_query = db.session.query(OrderVerification).filter_by(id=id)
orderverification = orderverification_query.first()
Expand Down Expand Up @@ -220,6 +227,9 @@ def verify(self, id):
})
db.session.commit()
send_notification = FCMService().send_single_notification('Payment Status', 'Your payment has been verified', user.id, ROLE['admin'])

LogsService().create_log(User['username'] + "'s payment from order id: " + items + "has been Verified")

return response.set_data(None).set_message('ticket purchased').build()
else:
return response.set_data(None).set_message('This payment has already verified').build()
12 changes: 10 additions & 2 deletions app/services/payment_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from app.models.user_ticket import UserTicket
from app.services.user_ticket_service import UserTicketService
from app.services.redeem_code_service import RedeemCodeService
from app.services.logs_service import LogsService
from app.builders.response_builder import ResponseBuilder
from app.services.fcm_service import FCMService
from app.configs.constants import MIDTRANS_API_BASE_URL as url, SERVER_KEY
Expand Down Expand Up @@ -459,7 +460,7 @@ def send_to_midtrans_api(self, payloads):
message = payload['status_message'] if 'status_message' in payload else 'No message from payload'
return response.set_data(payload).set_message(message).build()

def update(self, id):
def update(self, id, user):
response = ResponseBuilder()
# get the transaction id from payment table
payment = db.session.query(Payment).filter_by(id=id).first()
Expand All @@ -486,6 +487,7 @@ def update(self, id):
})

db.session.commit()
LogsService().create_log(user['username'] + "'s payment has been Updated")
if (payment.first().as_dict()['transaction_status'] == 'expire'):
# on payment success
self.save_paid_ticket(order)
Expand Down Expand Up @@ -555,7 +557,7 @@ def get_paypal_detail(self, id):
payment = False
return payment

def confirm(self, payload, user_id):
def confirm(self, payload, user_id, User):
response = ResponseBuilder()
transaction_exist = db.session.query(Payment).filter_by(transaction_id=payload['transaction_id']).first()
if transaction_exist:
Expand Down Expand Up @@ -585,6 +587,9 @@ def confirm(self, payload, user_id):
try:
db.session.add(payment)
db.session.commit()

LogsService().create_log(User['username'] + "'s Payment has been " + payment.transaction_status)

except SQLAlchemyError as e:
data = e.orig.args
return response.set_data(None).set_message(data).set_error(True).build()
Expand Down Expand Up @@ -640,6 +645,9 @@ def confirm(self, payload, user_id):
})
db.session.commit()
send_notification = FCMService().send_single_notification('Payment Status', 'Your payment has been confirmed', user.id, ROLE['admin'])

LogsService().create_log(User['username'] + "'s Payment has been confirmed and allowed")

return response.set_data(None).set_message('Purchase Completed').build()
else:
return response.set_error(True).set_message('Paypal amount did not match').build()
Expand Down
4 changes: 4 additions & 0 deletions app/services/referal_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from app.models.user import User
from app.builders.response_builder import ResponseBuilder
from app.services.user_ticket_service import UserTicketService
from app.services.logs_service import LogsService


class ReferalService():
Expand Down Expand Up @@ -56,6 +57,9 @@ def reward_referal(self, user):
})
db.session.commit()
UserTicketService().create(payload)

LogsService().create_log(user['username'] + " has been redeemed a reward ticket id: " + payload['ticket_id'])

return response.set_data(None).set_message('You have successfully redeemed your reward').build()


Expand Down
Loading