def six(promo_code_id):
    return_dict = {'day_of_week':'Sunday'}
    return_dict.setdefault('timing', [])
    sundayvalidtimings = PromoCodeValidTiming.query.filter_by(promo_code_id=promo_code_id, day_of_week="Sunday").all()
    result_sundayvalidtimings = promo_code_valid_timings_schema.dump(sundayvalidtimings)
    if result_sundayvalidtimings == []:
        return ""
    for validtiming in result_sundayvalidtimings:
        if validtiming["start_time"] == "00:00:00" and validtiming["end_time"] == "23:59:59":
            del validtiming["start_time"]
            del validtiming["end_time"]
            del validtiming["day_of_week"]
            del validtiming["id"]
            del validtiming["promo_code_id"]
        else:
            return_dict['timing'].append(validtiming)
    return return_dict
def update_promo_code(Id):
    tokenstr = request.headers["Authorization"]

    file = open("instance/key.key", "rb")
    key = file.read()
    file.close()
    tokenstr = tokenstr.split(" ")
    token = tokenstr[1]
    role = jwt.decode(token, key, algorithms=['HS256'])["role"]
    if role == "SuperAdmin":
        try:
            promocode = PromoCode.query.get(Id)
            code = request.json["code"]
            valid_from = request.json["validFrom"]
            valid_to = request.json["validTo"]
            usage_limit = request.json["usageLimit"]
            usage_per_user = request.json["usageperUser"]
            discount_type = request.json["discountType"]
            discount = request.json["discount"]
            updated_at = datetime.now()

            promocode.code = code
            promocode.valid_from = valid_from
            promocode.valid_to = valid_to
            promocode.usage_limit = usage_limit
            promocode.usage_per_user = usage_per_user
            promocode.discount_type = discount_type
            promocode.discount = discount
            promocode.updated_at = updated_at

            db.session.commit()

            validproduct = PromoCodeValidProduct.query.all()
            result = promo_code_valid_products_schema.dump(validproduct)
            for i in result:
                if i["promo_code_id"] == promocode.id:
                    valid_product_id = i["id"]
                    promocode_validproduct = PromoCodeValidProduct.query.get(valid_product_id)
                    db.session.delete(promocode_validproduct)
                    db.session.commit()

            valid_locations = PromoCodeValidLocation.query.all()
            result = promo_code_valid_locations_schema.dump(valid_locations)
            for i in result:
                if i["promo_code_id"] == promocode.id:
                    valid_location_id = i["id"]
                    promocode_validlocation = PromoCodeValidLocation.query.get(valid_location_id)
                    db.session.delete(promocode_validlocation)
                    db.session.commit()

            validtimings = PromoCodeValidTiming.query.all()
            result = promo_code_valid_timings_schema.dump(validtimings)
            for i in result:
                if i["promo_code_id"] == promocode.id:
                    valid_timing_id = i['id']
                    promocode_validtiming = PromoCodeValidTiming.query.get(valid_timing_id)
                    db.session.delete(promocode_validtiming)
                    db.session.commit()

            promo_code_id = promocode.id
            valid_products = request.json["validProducts"]
            for i in valid_products:
                valid_product = i
                product = Product.query.all()
                result = products_schema.dump(product)
                for p in result:
                    if p["name"] == valid_product:
                        product_id = p["id"]

                new_valid_product = PromoCodeValidProduct(valid_product, promo_code_id, product_id)
                db.session.add(new_valid_product)
                db.session.commit()

            valid_locations = request.json["validLocations"]
            for i in valid_locations:
                valid_location = i
                venue = Venue.query.all()
                result = venues_schema.dump(venue)
                for p in result:
                    if p["name"] == valid_location:
                        venue_id = p["id"]

                new_valid_location = PromoCodeValidLocation(valid_location, promo_code_id, venue_id)
                db.session.add(new_valid_location)
                db.session.commit()

            timing_included = request.json["timingIncluded"]
            if timing_included is True:
                valid_timing = request.json["validTiming"]
                for i in valid_timing:
                    day_of_week = i["day_of_week"]
                    timing = i["timing"]
                    if len(timing) > 0:
                        for i in timing:
                            start_time = i["start_time"]
                            end_time = i["end_time"]
                            new_valid_timing = PromoCodeValidTiming(start_time, end_time, day_of_week, promo_code_id)
                            db.session.add(new_valid_timing)
                    else:

                        start_time = "00:00:00"
                        end_time = "23:59:59"
                        new_valid_timing = PromoCodeValidTiming(start_time, end_time, day_of_week, promo_code_id)
                        db.session.add(new_valid_timing)

                db.session.commit()

        except exc.IntegrityError:
            return json.dumps({'message': "Code '" + code + "' already exists"}), 400, {'ContentType': 'application/json'}
        return (json.dumps({'message': 'success'}), 200, {'ContentType': 'application/json'})
    else:
        return "You are not authorised to perform this action", 400