Exemple #1
0
def run_algorithm(res_public_id, algo_foods, MAX_DISCOUNT):
    all_hours = db.collection(u'restaurants').document(
        res_public_id).collection("hours").stream()

    batch = db.batch()

    for hour in all_hours:
        all_hour_discounts = {}
        all_food_contributions = {}
        # print(u'{} => {}'.format(hour.id, hour.to_dict()))
        hour_data = hour.to_dict()
        needed_contribution = hour_data["payroll"] + hour_data["overhead_cost"]

        initial_discount = hour_data["initial_discount"]
        print("FOR HOUR: " + hour.id)

        percent_discount = 0.0
        while percent_discount < MAX_DISCOUNT:
            active = True if (initial_discount == 0 and percent_discount == 0
                              ) or (initial_discount > 0 and percent_discount
                                    == initial_discount) else False

            hour_discount = {
                "is_active": active,
                "current_contributed": 0,
            }
            format_discount = "{:.2f}".format(percent_discount).replace(
                '.', '_')
            all_hour_discounts[format_discount] = hour_discount

            percent_discount += DISCOUNT_INCREMENT
            percent_discount = round(percent_discount, 2)

        for food in algo_foods:
            print("\n--------------------------------\n")
            food_contributions = {}
            # do not show breakeven
            percent_discount = 0.0 + DISCOUNT_INCREMENT

            print("FOR FOOD: " + food["id"])
            print(MAX_DISCOUNT)
            while percent_discount < MAX_DISCOUNT:
                discount = food["sales_price"] * percent_discount
                expense_contribution = food[
                    "initial_expense_contribution"] - discount

                print("To unlock a discount of: ", percent_discount)
                print("Item will contribute: ", expense_contribution)

                format_discount = "{:.2f}".format(percent_discount -
                                                  DISCOUNT_INCREMENT).replace(
                                                      '.', '_')
                food_contributions[format_discount] = expense_contribution
                percent_discount += DISCOUNT_INCREMENT
                percent_discount = round(percent_discount, 2)

            all_food_contributions[str(food["id"])] = food_contributions

        print(all_food_contributions)
        # print(all_hour_discounts)
        hour_ref = db.collection(u'restaurants').document(
            res_public_id).collection("hours").document(hour.id)

        batch.update(hour_ref, {u'needed_contribution': needed_contribution})
        batch.update(hour_ref, {u'contributions': all_food_contributions})
        batch.update(hour_ref, {u'discounts': all_hour_discounts})
        batch.update(hour_ref, {u'max_discount': 0.95})

    # print("\n--------------------------------\n")
    print("Writing to database...")
    batch.commit()
import json
from firebase_admin import firestore
from config import db

# Insert into 'sellers'
with open('./assets/sellers_fake_data.json') as json_file:
    fake_sellers = json.load(json_file)
    batch = db.batch()

    for seller in fake_sellers:
        docRef = db.document(f'sellers/{seller["id"]}')

        location = {
            'address': seller['location']['address'],
            'address_zh': seller['location']['address_zh'],
            'geopoint': firestore.GeoPoint(
                seller['location']['geopoint']['lat'],
                seller['location']['geopoint']['long']
            )
        }

        batch.set(docRef, {
            'id': seller['id'],
            'name': seller['name'],
            'name_zh': seller.get('name_zh', None),
            'description': seller.get('description', None),
            'description_zh': seller.get('description_zh', None),
            'website': seller.get('website', None),
            'phone_num': seller['phone_num'],
            'location': location,
            'image_url': seller.get('image_url', None),
Exemple #3
0
def reset_hours(public_id):

    res_ref = db.collection(u'restaurants').document(public_id)

    init_hours_ref = res_ref.collection(u'hours')

    init_0_hours_ref = init_hours_ref.document("0")
    init_1_hours_ref = init_hours_ref.document("1")
    init_2_hours_ref = init_hours_ref.document("2")
    init_3_hours_ref = init_hours_ref.document("3")
    init_4_hours_ref = init_hours_ref.document("4")
    init_5_hours_ref = init_hours_ref.document("5")
    init_6_hours_ref = init_hours_ref.document("6")
    init_7_hours_ref = init_hours_ref.document("7")
    init_8_hours_ref = init_hours_ref.document("8")
    init_9_hours_ref = init_hours_ref.document("9")
    init_10_hours_ref = init_hours_ref.document("10")
    init_11_hours_ref = init_hours_ref.document("11")
    init_12_hours_ref = init_hours_ref.document("12")
    init_13_hours_ref = init_hours_ref.document("13")
    init_14_hours_ref = init_hours_ref.document("14")
    init_15_hours_ref = init_hours_ref.document("15")
    init_16_hours_ref = init_hours_ref.document("16")
    init_17_hours_ref = init_hours_ref.document("17")
    init_18_hours_ref = init_hours_ref.document("18")
    init_19_hours_ref = init_hours_ref.document("19")
    init_20_hours_ref = init_hours_ref.document("20")
    init_21_hours_ref = init_hours_ref.document("21")
    init_22_hours_ref = init_hours_ref.document("22")
    init_23_hours_ref = init_hours_ref.document("23")

    batch = db.batch()

    batch.set(
        init_0_hours_ref, {
            "start_id": 0,
            "payroll": 0,
            "overhead_cost": 0,
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "contributions": {},
            "foods_active": []
        })
    batch.set(
        init_1_hours_ref, {
            "start_id": 1,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_2_hours_ref, {
            "start_id": 2,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_3_hours_ref, {
            "start_id": 3,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_4_hours_ref, {
            "start_id": 4,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_5_hours_ref, {
            "start_id": 5,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_6_hours_ref, {
            "start_id": 6,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_7_hours_ref, {
            "start_id": 7,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_8_hours_ref, {
            "start_id": 8,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_9_hours_ref, {
            "start_id": 9,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_10_hours_ref, {
            "start_id": 10,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_11_hours_ref, {
            "start_id": 11,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_12_hours_ref, {
            "start_id": 12,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_13_hours_ref, {
            "start_id": 13,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_14_hours_ref, {
            "start_id": 14,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_15_hours_ref, {
            "start_id": 15,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_16_hours_ref, {
            "start_id": 16,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_17_hours_ref, {
            "start_id": 17,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_18_hours_ref, {
            "start_id": 18,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_19_hours_ref, {
            "start_id": 19,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_20_hours_ref, {
            "start_id": 20,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_21_hours_ref, {
            "start_id": 21,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_22_hours_ref, {
            "start_id": 22,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })
    batch.set(
        init_23_hours_ref, {
            "start_id": 23,
            "payroll": 0,
            "overhead_cost": 0,
            "contributions": {},
            "is_active": False,
            "initial_discount": 0,
            "discounts": {},
            "max_discount": 0,
            "foods_active": []
        })

    batch.commit()