Beispiel #1
0
    def put(self, customer_id, item_id):
        data = ItemController.parser.parse_args()

        cart = model.find_by_customer(customer_id)

        if cart:
            item = model.edit_item(cart, item_id, data)

            if item:
                cart["sub_total"] = model.get_sub_total(cart)
                cart["number_of_items"] = model.count_all_items(cart)
                cart["tax_amount"] = model.get_tax_amount(cart)
                cart["total"] = model.get_total(cart)

                display = view.display_cart(cart)
                return get_response(display, 200)

        if cart is None:
            error = NotFoundError("Cart")
            display = ErrorView.display(error)
            return get_response(display, 404)

        error = UnprocessableEntityError()
        display = ErrorView.display(error)
        return get_response(display, 422)
Beispiel #2
0
    def post(self):
        data = SignupController.parser.parse_args()

        valid_email = model.is_email_valid(data["email"])

        if valid_email:
            customer = model.find_by_email(data["email"])

            if customer is not None:
                error = ResourceAlreadyExistError("User")
                display = ErrorView.display(error)
                return get_response(display, 409)

            new_customer = Customer(data["email"], data["password"],
                                    data["first_name"], data["middle_name"],
                                    data["last_name"]).__dict__

            state = model.add(new_customer)

            if state is not None:
                display = view.display_credentials(new_customer)
                return get_response(display, 201)

        error = UnprocessableEntityError()
        display = ErrorView.display(error)
        return get_response(display, 422)
Beispiel #3
0
    def post(self, customer_id):
        data = OrderController.parser.parse_args()

        new_order = Order(data["customer_name"], data["phone_number"],
                          data["shipping_address"], data["billing_address"],
                          data["delivery_date"], data["payment_method"],
                          data["payment_date"], data["shipping_fee"],
                          data["tax_rate"], data["items"],
                          customer_id).__dict__

        state = model.add(new_order)

        if state is not None:
            new_order["sub_total"] = model.get_sub_total(new_order)
            new_order["tax_amount"] = model.get_tax_amount(new_order)
            new_order["number_of_items"] = model.count_all_items(new_order)
            new_order["total"] = model.get_total(new_order)

            display = view.display_details(new_order)
            return get_response(display, 201)

        if state is None:
            error = UnprocessableEntityError()
            display = ErrorView.display(error)
            return get_response(display, 422)
    def get(self):
        products = Product.find_all()

        if products is None:
            error = NotFoundError("Results")
            display = ErrorView.display(error)
            return get_response(display, 404)

        product_name = request.args.get('name')

        if product_name is None:
            feed = Product.get_feed(products)
            display = ProductView.display_list(feed)
            return get_response(display, 200)

        product = Product.find_by_name(products, product_name)

        if product is None:
            error = NotFoundError("Product")
            display = ErrorView.display(error)
            return get_response(display, 404)

        discount_rate = product["discount_rate"]
        product["discount"] = Product.get_percentage(discount_rate)

        original_price = product["original_price"]
        price = Product.get_price(discount_rate, original_price)
        product["price"] = price

        display = ProductView.display_details(product)
        return get_response(display, 200)
Beispiel #5
0
    def get(self, customer_id):
        cart = model.find_by_customer(customer_id)

        if cart:
            display = view.display_cart(cart)
            return get_response(display, 200)

        if cart is None:
            error = NotFoundError("Cart")
            display = ErrorView.display(error)
            return get_response(display, 404)
Beispiel #6
0
    def get(self, customer_id, order_id):
        order = model.find_by(order_id)

        if order is not None:
            display = view.display_details(order)
            return get_response(display, 200)

        if order is None:
            error = NotFoundError("Order Number")
            display = ErrorView.display(error)
            return get_response(display, 404)
Beispiel #7
0
    def get(self, customer_id):
        orders = model.find_by_customer(customer_id)

        if orders is not None:
            display = view.display_list(orders)
            return get_response(display, 200)

        if orders is None:
            error = NotFoundError("Results")
            display = ErrorView.display(error)
            return get_response(display, 404)
Beispiel #8
0
    def get(self, _id):
        customer = model.find_by(_id)

        if customer is not None:
            customer["middle_initial"] = model.get_middle_initial(customer)
            customer["full_name"] = model.get_full_name(customer)

            display = view.display(customer)
            return get_response(display, 200)

        if customer is None:
            display = ErrorView.display(NotFoundError("Customer"))
            return get_response(display, 404)
Beispiel #9
0
    def get(self):
        products = model.find_all()

        if products:
            for product in products:
                original_price = product["original_price"]
                discount_rate = product["discount_rate"]
                product["price"] = model.get_price(discount_rate,
                                                   original_price)

            display = view.display_list(products)
            return get_response(display, 200)

        if products is None or not products:
            error = NotFoundError("Results")
            display = ErrorView.display(error)
            return get_response(display, 404)
Beispiel #10
0
    def put(self, customer_id, order_id):
        data = request.get_json()
        orders = model.find_all()
        order = model.edit(orders, order_id, data)

        if order is not None:
            display = view.display_details(order)
            return get_response(display, 200)

        if not order:
            error = NotFoundError("Order Number")
            display = ErrorView.display(error)
            return get_response(display, 404)

        if order is None:
            error = UnprocessableEntityError()
            display = ErrorView.display(error)
            return get_response(display, 422)
    def post(self, customer_id):
        cart = Cart.find_by_customer(customer_id)

        if cart is not None:
            error = ResourceAlreadyExistError("Cart")
            display = ErrorView.display(error)
            return get_response(display, 409)

        new_cart = CartModel(customer_id, []).__dict__

        state = Cart.add(new_cart)

        if state:
            new_cart["sub_total"] = Cart.get_sub_total(new_cart)
            new_cart["number_of_items"] = Cart.count_all_items(new_cart)
            new_cart["tax_amount"] = 0
            new_cart["total"] = 0

            return get_response(new_cart, 201)
Beispiel #12
0
    def get(self, _id):
        products = Product.find_all()

        if products is None:
            error = NotFoundError("Results")
            display = ErrorView.display(error)
            return get_response(display, 404)

        product = Product.find_by(products, _id)

        if product is None:
            error = NotFoundError("Product")
            display = ErrorView.display(error)
            return get_response(display, 404)

        discount_rate = product["discount_rate"]
        product["discount"] = Product.get_percentage(discount_rate)
        original_price = product["original_price"]
        product["price"] = Product.get_price(discount_rate, original_price)

        display = ProductView.display_details(product)
        return get_response(display, 200)
Beispiel #13
0
    def post(self):
        data = LoginController.parser.parse_args()

        customer = model.find_by_email(data["email"])

        if customer is not None:
            input_password = data["password"]
            password = customer['password']

            valid_password = model.is_password_valid(input_password, password)

            if valid_password:
                display = view.display_credentials(customer)
                return get_response(display, 200)

        if customer is None or not valid_password:
            error = BadRequestError("Login failed", "Invalid email/password")
            display = ErrorView.display(error)
            return get_response(display, 400)

        error = UnprocessableEntityError()
        display = ErrorView.display(error)
        get_response(display, error)
Beispiel #14
0
    def post(self, customer_id):
        cart = model.find_by_customer(customer_id)

        if cart is None or not cart:
            new_cart = Cart(customer_id, []).__dict__

            state = model.add(new_cart)

            if state:
                new_cart["sub_total"] = model.get_sub_total(new_cart)
                new_cart["number_of_items"] = model.count_all_items(new_cart)
                new_cart["tax_amount"] = 0
                new_cart["total"] = 0

                return get_response(new_cart, 201)

        if cart is not None:
            error = ResourceAlreadyExistError("Cart")
            display = ErrorView.display(error)
            return get_response(display, 409)

        error = UnprocessableEntityError()
        display = ErrorView.display(error)
        return get_response(display, 422)
Beispiel #15
0
    def get(self, _id):
        products = model.find_all()

        if products:

            product = model.find_by(products, _id)

            if product:
                original_price = product["original_price"]
                rate = product["discount_rate"]
                product["price"] = model.get_price(rate, original_price)

                display = view.display_details(product)
                return get_response(display, 200)

            if product is None:
                error = NotFoundError("Product")
                display = ErrorView.display(error)
                return get_response(display, 404)

        if products is None or not products:
            error = NotFoundError("Results")
            display = ErrorView.display(error)
            return get_response(display, 404)
Beispiel #16
0
    def delete(self, customer_id, item_id):
        cart = model.find_by_customer(customer_id)

        if cart is not None:

            item = model.remove_item(cart, item_id)

            if item is not None:
                cart["sub_total"] = model.get_sub_total(cart)
                cart["number_of_items"] = model.count_all_items(cart)
                cart["tax_amount"] = model.get_tax_amount(cart)
                cart["total"] = model.get_total(cart)

                display = view.display_cart(cart)
                return get_response(display, 200)

        if cart is None:
            error = NotFoundError("Cart")
            display = ErrorView.display(error)
            return get_response(display, 404)

        error = UnprocessableEntityError()
        display = ErrorView.display(error),
        return get_response(display, 422)
Beispiel #17
0
def handle_page_not_found(e):
    view = ErrorView.display(NotFoundError("Page"))
    return get_response(view, 404)
Beispiel #18
0
def handle_access_denied_error(e):
    view = ErrorView.display(AccessDeniedError())
    return get_response(view, 401)
Beispiel #19
0
def handle_unauthorized_error(e):
    view = ErrorView.display(UnauthorizedError())
    return get_response(view, 403)
Beispiel #20
0
def handle_internal_server_error(e):
    view = ErrorView.display(InternalServerError())
    return get_response(view, 500)