from flask import Flask, request, Response, render_template
from codify_csp import solve_pulp, solve_heuristics  # Import your solve_pulp and solve_heuristics functions
import json

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/optimize', methods=['POST'])
def optimize():
    data = request.json
    stock_lengths = [(item['length'], item['count']) for item in data['stock_lengths']]
    demand_lengths = [(item['length'], item['count']) for item in data['demand_lengths']]
    options = data['options']

    stock_lengths_file = 'stock_lengths.csv'
    demand_lengths_file = 'demand_lengths.csv'

    with open(stock_lengths_file, 'w') as f:
        for length, count in stock_lengths:
            f.write(f'{length},{count}\n')

    with open(demand_lengths_file, 'w') as f:
        for length, count in demand_lengths:
            f.write(f'{length},{count}\n')

    def generate():
        def print_results(line):
            yield f'data: {line}\n\n'

        if options.get('use_heuristics_only', False):
            solve_heuristics(stock_lengths_file, demand_lengths_file, print_func=print_results)
        else:
            solve_pulp(stock_lengths_file, demand_lengths_file, minimize_wastage=options['minimize_wastage'], use_initial_solution=options['use_initial_solution'], balance_cuts=options['balance_cuts'], print_func=print_results)

    return Response(generate(), mimetype='text/event-stream')

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8000)



application = app