from appservices.common.util import *
from appservices.common.form_schemas import *

commission_tds_setup = Blueprint("commission_tds_setup",__name__)


@commission_tds_setup.route("/commission_tds_setup_charges",methods=["POST","GET"])
@adminid_access_token_required
@csrf_protect
def commission_tds_setup_charges():
    data_status = {"responseStatus": 0, "result": ""}

    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        
        csrf_token = request.form.get("csrf_token")
        adminId = session.get("adminId")
        latitude = request.form.get("latitude", "")
        longitude = request.form.get("longitude", "")
        loginBrowser = request.headers.get("Sec-Ch-Ua")
        if loginBrowser:
            loginBrowseData = loginBrowser.split(";")
            browser = loginBrowseData[0]
        else:
            loginBrowseData = request.headers.get('User-Agent').split(";")
            browser = loginBrowseData[0]

        existing_record = ""
        client_ip=0
        # Extracting client IP address
        if request.headers.getlist("X-Forwarded-For"): 
            client_ip = request.headers.getlist("X-Forwarded-For")[0]
        else:
            client_ip = request.remote_addr

        actionDate=datetime.datetime.now()
        message = ""
  

        permissionsList = check_permissions(session.get("adminId"),"commissionTdsSetupPermission")
        if "view" in permissionsList:
            commissionSetupSetupDict={}
            if request.method == "GET":
                    commission_tds_setup_queryset = CommissionTdsSetup.objects(status=1).first()
                    print("++++++++++++++++++++++++++++++++++++++",commission_tds_setup_queryset)
                    if commission_tds_setup_queryset:
                        commissionSetupSetupDict = {
                        "tdsLimitAmount":commission_tds_setup_queryset.tdsLimitAmount,
                        "tdsChargePer":commission_tds_setup_queryset.tdsChargePer
                        }
                        print("222222222222222222222222222222222222")
                    else:
                        commissionSetupSetupDict = {
                        "tdsLimitAmount":0.0,
                        "tdsChargePer":0.0
                        }
                        print("1111111111111111111111111111111111111113")
                        
                    return render_template("super_admin_templates/commission_tds_setup_charges.html",
                        commissionSetupSetupDict=commissionSetupSetupDict,
                        )
            if request.method == "POST":
                
                tdsLimitAmount = request.form.get("tdsLimitAmount")
                tdsChargePer = request.form.get("tdsChargePer")

                jsonData = request.form.to_dict(flat=True)


                commission_tds_setup_queryset = CommissionTdsSetup.objects(status=1).first()
                print("1111111111111111111111111111111111111111",commission_tds_setup_queryset)
                # if commission_tds_setup_queryset:
                form = CommissionTdsSetupForm(request.form)
                if form.validate_on_submit():
                    if commission_tds_setup_queryset:
                    
                        commission_tds_setup_queryset.update(
                            tdsLimitAmount=tdsLimitAmount,
                            tdsChargePer=tdsChargePer,
                            updatedOn=datetime.datetime.now()
                            )
                        
                        existing_record = commission_tds_setup_queryset.to_json()
                        message=commission_tds_setup_queryset.adminId.userName+" Commission Tds Setup updated successfully!"
                        requestData=[commission_tds_setup_queryset]
                        updatedrequestData=[jsonData]
                        save_admin_log_table = save_admin_logs_data(adminId,None,None,"commission_tds_setup_charges","update",actionDate,client_ip,browser,message,requestData,updatedrequestData,latitude,longitude) 
                
                        flash("Commission Tds Setup Updated successfully!")
                        data_status["responseStatus"] = 1
                    
                    else:
                        save_tds_commission_charges = CommissionTdsSetup(
                            adminId=ObjectId(adminId),
                            tdsLimitAmount=tdsLimitAmount,
                            tdsChargePer=tdsChargePer,
                            createdOn=datetime.datetime.now(),
                            status=1
                            ).save()
                        print("New commission_tds_setup saved:", save_tds_commission_charges)
                        
                        data_status["responseStatus"] = 1
                        flash("Commission Tds Setup Created successfully!", "success")
                    return data_status
                else: 
                    data_status['result']=form.errors
                    print("",form.errors)
                    return data_status 
            else:
                flash("Invalid request, please try again","error")
                data_status["responseStatus"] = 4        
        else:
            data_status["responseStatus"] = 4
            flash("The staff member does not have permission to view Commission Tds Setup", "danger")
            return data_status
        
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to save commission tds setup charges!!"
        flash(error,"error")
        data_status["responseStatus"] = 4
        return data_status