from appservices.common.util import *

registration_master = Blueprint("registration_master",__name__)

# Add Registration
@registration_master.route("/add_registration_step",methods=["POST","GET"])
@adminid_access_token_required
def add_registration_step():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        adminId = session.get("adminId")
        
        if request.method == "POST":
            stepName = request.form.get("stepName","")
            rank = request.form.get("rank","")
            label = request.form.get("label","")
            userTypeIdsList = request.form.getlist("userTypeIdsList[]")
            entityTypeIdsList = request.form.getlist("entityTypeIdsList[]")
            isMandatory = request.form.get("isMandatory")
            isSignup = request.form.get("isSignup")

            print(userTypeIdsList)
            print(entityTypeIdsList)
            print("(((((((((((((((((((((((entityTypeIdsList)))))))))))))))))))))))")
            if stepName and rank and label:
                try:
                    registration_step_table = RegistrationStep(
                        adminId = adminId,
                        stepName = stepName,
                        rank = rank,
                        label = label,
                        userTypeIdsList = userTypeIdsList,
                        entityTypeIdsList = entityTypeIdsList,
                        createdOn = datetime.datetime.now(),
                        status = 1,
                        )
                    save_table = registration_step_table.save()
                    registrationStepId = str(save_table.id)
                    if isMandatory == None:
                        save_table.update(isMandatory=False)
                    else:
                        save_table.update(isMandatory=True)
                    if isSignup == None:
                        save_table.update(isSignup=False)
                    else:
                        save_table.update(isSignup=True)

                    flash("Registration step added successfully!")
                    return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))

                except Exception as e:
                    flash("Unable to save registration step!!")
                    app.logger.error(traceback.format_exc())
                    return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))

                except Exception as e:
                    flash("Unable to save registration step!!")
                    app.logger.error(traceback.format_exc())
                    return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
            else:
                flash("Required fields are missing!!")
                return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to save registration step!!"
        return render_template("super_admin_templates/registration_master_list.html",error=error)

#View all registration master list
@registration_master.route("/registration_master_list",methods=["POST","GET"])
@adminid_access_token_required
def registration_master_list():
    if not session.get("adminId"):
        return redirect("admin_login")
    adminId = session.get("adminId")
    
    redirectTo = request.args.get("redirectTo","Steps")
    if redirectTo:
        redirectval = redirectTo
    else:
        redirectval = "Steps"

    registrationStepList = []
    registrationFieldsList = []
    userTypesList = []
    entityTypesList = []
    documentsList = []

    try:

        # search = False
        # registration_step_search_element = request.args.get('registration_step_search_element','')
        # if registration_step_search_element:
        #     search = True
        # page = request.args.get(get_page_parameter(), type=int, default=1)
        # page_start,page_end=fetch_limit_length_based_on_page_index(page,20)
        # pagination = Pagination(
        #     page=page,
        #     total=length,
        #     found=length,
        #     record_name='Registration Steps',
        #     per_page=20,
        #     alignment="right"
        #     )
        registration_step_queryset = RegistrationStep.objects(adminId=adminId,status__in=[0,1]).order_by("id")
        for each_registration_step in registration_step_queryset:
            registration_step_dict = fetching_registration_step_details(each_registration_step)
            registrationStepList.append(registration_step_dict)

        # registration_step_queryset = RegistrationStep.objects(adminId=adminId,status__in=[0,1]).order_by("id")
        # for each_registration_step in registration_step_queryset:
        #     registration_step_dict = fetching_registration_step_details(each_registration_step)
        #     registrationStepList.append(registration_step_dict)
        

        registration_field_queryset = RegistrationFields.objects(status__in=[0,1]).order_by("id").all()
        for each_registration_field in registration_field_queryset:
            registration_field_dict = fetching_registration_fields_details(each_registration_field)
            registrationFieldsList.append(registration_field_dict)

        ############### User Type Dropdown ################
        user_types_queryset = UserTypes.objects(status__in=[1]).order_by('-id').all()
        for each_user_type in user_types_queryset:
            user_type_dict = {
            "id":str(each_user_type.id),
            "userType":each_user_type.userType,
            }
            userTypesList.append(user_type_dict)

        ############### Entity Type Dropdown ################
        entity_types_queryset = UserEntity.objects(status__in=[1]).order_by('-id').all()
        for each_entity_type in entity_types_queryset:
            entity_type_dict = {
            "id":str(each_entity_type.id),
            "entityType":each_entity_type.entityType,
            }
            entityTypesList.append(entity_type_dict)

        ################# For Documents for dropdown ##################
        documents_queryset = Documents.objects(status__in=[0,1]).order_by("-id").all()
        for each_document in documents_queryset:
            document_dict = fetching_document_details(each_document)
            documentsList.append(document_dict)

        return render_template("super_admin_templates/registration_master_list.html",
            registrationStepList=registrationStepList,
            # registration_step_search_element=registration_step_search_element,
            # pagination=pagination,
            userTypesList=userTypesList,
            entityTypesList=entityTypesList,
            registrationFieldsList=registrationFieldsList,
            documentsList=documentsList,
            redirectval = redirectval
            )
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to fetch registration step details!!"
        return render_template("super_admin_templates/registration_master_list.html",
            registrationStepList=registrationStepList,
            # registration_step_search_element=registration_step_search_element,
            # pagination=pagination,
            userTypesList=userTypesList,
            entityTypesList=entityTypesList,
            registrationFieldsList=registrationFieldsList,
            documentsList=documentsList,
            redirectval = redirectval,
            error=error
            )
def fetching_registration_step_details(registration_step):
    registration_step_dict = {}
    try:
        registration_step_dict={
        "id":str(registration_step.id),
        "adminId":str(registration_step.adminId),
        "stepName":registration_step.stepName,
        "rank":registration_step.rank,
        "label":registration_step.label,
        "userTypeIdsList":[str(userTypeId.id) for userTypeId in registration_step.userTypeIdsList],
        "entityTypeIdsList":[str(entityTypeId.id) for entityTypeId in registration_step.entityTypeIdsList],
        # "userTypesList" : [each_user_type.userType for each_user_type in registration_step.userTypeIdsList],
        # "entityTypesList" : [each_entity_type.entityType for each_entity_type in registration_step.entityTypeIdsList],
        "isMandatory":registration_step.isMandatory,
        "isSignup":registration_step.isSignup,
        }
        userTypesList=[each_user_type.userType for each_user_type in registration_step.userTypeIdsList]
        userTypes = ", ".join(userTypesList)
        registration_step_dict["userTypes"] = userTypes

        entityTypesList = [each_entity_type.entityType for each_entity_type in registration_step.entityTypeIdsList]
        entityTypes = ", ".join(entityTypesList)
        registration_step_dict["entityTypes"] = entityTypes

        if registration_step.status==1:
            registration_step_dict["actionText"] = "Active"
        else:
            registration_step_dict["actionText"] = "Deactive"
        if registration_step.createdOn:
            registration_step_dict["createdOn"] = registration_step.createdOn.strftime("%m-%d-%Y")
        else:
            registration_step_dict["createdOn"] = ""

    except Exception as e:
        app.logger.error(traceback.format_exc())
    return registration_step_dict


def fetching_registration_fields_details(registration_field_queryset):
    registration_field_dict = {}
    try:
        registration_field_dict={
        "id":str(registration_field_queryset.id),
        "registrationStepId":str(registration_field_queryset.registrationStepId.id),
        "stepName":registration_field_queryset.registrationStepId.stepName,
        "fieldName":registration_field_queryset.fieldName,
        "fieldType":registration_field_queryset.fieldType,
        "minLength":registration_field_queryset.minLength,
        "maxLength":registration_field_queryset.maxLength,
        "rank":registration_field_queryset.rank,
        "label":registration_field_queryset.label,
        "userTypeIdsList":[str(userTypeId.id) for userTypeId in registration_field_queryset.userTypeIdsList],
        "entityTypeIdsList":[str(entityTypeId.id) for entityTypeId in registration_field_queryset.entityTypeIdsList],
        "isMandatory":registration_field_queryset.isMandatory,
        "isSignup":registration_field_queryset.isSignup,
        }
        userTypesList=[each_user_type.userType for each_user_type in registration_field_queryset.userTypeIdsList]
        userTypes = ", ".join(userTypesList)
        registration_field_dict["userTypes"] = userTypes

        entityTypesList = [each_entity_type.entityType for each_entity_type in registration_field_queryset.entityTypeIdsList]
        entityTypes = ", ".join(entityTypesList)
        registration_field_dict["entityTypes"] = entityTypes

        if registration_field_queryset.status==1:
            registration_field_dict["actionText"] = "Active"
        else:
            registration_field_dict["actionText"] = "Deactive"

        if registration_field_queryset.webRegex:
            registration_field_dict["webRegex"] = registration_field_queryset.webRegex
        else:
            registration_field_dict["webRegex"] = ""
        try:

            if registration_field_queryset.fieldTypeValuesList:
                registration_field_dict["fieldTypeValuesList"] = ",".join(registration_field_queryset.fieldTypeValuesList)
            else:
                registration_field_dict["fieldTypeValuesList"] = ""
        except:
            registration_field_dict["fieldTypeValuesList"] = ""

        try:

            if registration_field_queryset.allowedTypes:
                registration_field_dict["allowedTypes"] = registration_field_queryset.allowedTypes
            else:
                registration_field_dict["allowedTypes"] = []
        except:
            registration_field_dict["allowedTypes"] = []

        try:
            if registration_field_queryset.documentGroupId:
                registration_field_dict["documentGroupId"] = str(registration_field_queryset.documentGroupId.id)
                registration_field_dict["documentName"] =registration_field_queryset.documentGroupId.name
            else:
                registration_field_dict["documentGroupId"] = ""
                registration_field_dict["documentName"] = ""
        except:
            registration_field_dict["documentGroupId"] = ""
            registration_field_dict["documentName"] = ""

        if registration_field_queryset.mobileRegex:
            registration_field_dict["mobileRegex"] = registration_field_queryset.mobileRegex
        else:
            registration_field_dict["mobileRegex"] = ""

        if registration_field_queryset.validationMessage:
            registration_field_dict["validationMessage"] = registration_field_queryset.validationMessage
        else:
            registration_field_dict["validationMessage"] = ""

        if registration_field_queryset.isMandatory == True:
            registration_field_dict["isMandatory"] = registration_field_queryset.isMandatory
        else:
            registration_field_dict["isMandatory"] = False

        if registration_field_queryset.isGroup == True:
            registration_field_dict["isGroup"] = registration_field_queryset.isGroup
        else:
            registration_field_dict["isGroup"] = False

        if registration_field_queryset.hasCaps == True:
            registration_field_dict["hasCaps"] = registration_field_queryset.hasCaps
        else:
            registration_field_dict["hasCaps"] = False

        if registration_field_queryset.isVerified == True:
            registration_field_dict["isVerified"] = registration_field_queryset.isVerified
        else:
            registration_field_dict["isVerified"] = False

        if registration_field_queryset.isDocumentGroup == True:
            registration_field_dict["isDocumentGroup"] = registration_field_queryset.isDocumentGroup
        else:
            registration_field_dict["isDocumentGroup"] = False

        if registration_field_queryset.isSignup == True:
            registration_field_dict["isSignup"] = registration_field_queryset.isSignup
        else:
            registration_field_dict["isSignup"] = False

        if registration_field_queryset.createdOn:
            registration_field_dict["createdOn"] = registration_field_queryset.createdOn.strftime("%m-%d-%Y")
        else:
            registration_field_dict["createdOn"] = ""
    except Exception as e:
        app.logger.error(traceback.format_exc())
    return registration_field_dict


#Update registration step status
@registration_master.route("/update_registration_step_status",methods=["POST","GET"])
@adminid_access_token_required
def update_registration_step_status():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")

        registrationStepId = request.args.get("registrationStepId","")
        if registrationStepId:
            try:
                # registration_step_table = RegistrationStep.gets(pk=registrationStepId)
                registration_step_table = RegistrationStep.objects(id=registrationStepId).first()
                if registration_step_table.status == 0:
                    registration_step_table.update(status=1)
                    flash("Registration step activated successfully!")
                elif wallet_queryset.status == 1:
                    wallet_queryset.update(status=0)
                    flash("Registration step deactivated successfully!")
                return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
            except Exception as e:
                flash("Unable to update registration step status!!")
                app.logger.error(traceback.format_exc())
                return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
        else:
            flash("Required field is missing!!")
            return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to update registration step status!!"
        return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps",error=error))

#Delete registration step
@registration_master.route("/delete_registration_step",methods=["POST","GET"])
@adminid_access_token_required
def delete_registration_step():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        registrationStepId = request.args.get("registrationStepId","")
        registration_step_queryset = RegistrationStep.objects(id=registrationStepId,status__in=[0,1]).first()
        if registration_step_queryset:
            registration_step_queryset.update(status=2)
            flash("Registration step deleted successfully!")
            return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
        else:
            flash("Invaild id!!")
            return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to delete registration step!!")
        return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))

#Update registration step
@registration_master.route("/update_registration_step",methods=["POST","GET"])
@adminid_access_token_required
def update_registration_step():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        registrationStepId = request.args.get("registrationStepId","")
        if request.method == "POST":
            stepName = request.form.get("stepName","")
            rank = request.form.get("rank","")
            label = request.form.get("label","")
            userTypeIdsList = request.form.getlist("userTypeIdsList[]")
            entityTypeIdsList = request.form.getlist("entityTypeIdsList[]")
            isMandatory = request.form.get("isMandatory")
            isSignup = request.form.get("isSignup")
            if stepName and rank and label:
                try:
                    registration_step_table = RegistrationStep.objects(id=registrationStepId).first()
                    if registration_step_table:
                        registration_step_table.update(
                            stepName = stepName,
                            rank = rank,
                            label = label,
                            userTypeIdsList = [ObjectId(userTypeId) for userTypeId in userTypeIdsList],
                            entityTypeIdsList = [ObjectId(entityTypeId) for entityTypeId in entityTypeIdsList],
                            )
                        if isMandatory ==None:
                            registration_step_table.update(isMandatory=False)
                        else:
                            registration_step_table.update(isMandatory=True)
                        if isSignup ==None:
                            registration_step_table.update(isSignup=False)
                        else:
                            registration_step_table.update(isSignup=True)
                        flash("Registration step updated successfully!")
                        return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
                    else:
                        flash("Invaild id!!")
                        return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
                except Exception as e:
                    app.logger.error(traceback.format_exc())
                    flash("Unable to update registration step!!")
                    return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
            else:
                flash("Required fields are missing!!")
                return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to update registration step!!")
        return redirect(url_for("registration_master.registration_master_list",redirectTo="Steps"))



############# Registration Fields ##################

# #Add registration field API
@registration_master.route("/add_registration_field",methods=["POST","GET"])
@adminid_access_token_required
def add_registration_field():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        adminId = session.get("adminId")
        if request.method == "POST":
            # fieldName = request.form.get("fieldName","")
            fieldType = request.form.get("fieldType","")
            registrationStepId = request.form.get("registrationStepId")
            rank = request.form.get("rank",0)
            webRegex = request.form.get("webRegex","")
            mobileRegex = request.form.get("mobileRegex","")
            minLength = request.form.get("minLength",1)
            maxLength = request.form.get("maxLength",1)
            validationMessage = request.form.get("validationMessage","")
            userTypeIdsList = request.form.getlist("userTypeIdsList[]")
            entityTypeIdsList = request.form.getlist("entityTypeIdsList[]")
            label = request.form.get("label","")
            isMandatory = request.form.get("isMandatory")
            isSignup = request.form.get("isSignup")
            isGroup = request.form.get("isGroup")
            isVerified = request.form.get("isVerified")
            hasCaps = request.form.get("hasCaps")
            isDocumentGroup = request.form.get("isDocumentGroup")
            documentGroupId = request.form.get("documentGroupId",None)
            groupType = request.form.get("groupType","")
            fieldTypeValues = request.form.get("fieldTypeValues","")
            allowedTypes = request.form.getlist("allowedTypes[]")


            fieldTypeValues = fieldTypeValues.split(",")
            # fieldTypeValuesList = [value.replace(" ", "") for value in fieldTypeValues]
            fieldTypeValuesList = [value.strip() for value in fieldTypeValues]
            print(fieldTypeValuesList)
            
            if fieldType and label:
                try:
                    registration_field_table = RegistrationFields(
                        # fieldName = fieldName,
                        fieldType = fieldType,
                        registrationStepId = registrationStepId,
                        rank = rank,
                        webRegex = webRegex,
                        mobileRegex = mobileRegex,
                        minLength = minLength,
                        maxLength = maxLength,
                        validationMessage = validationMessage,
                        userTypeIdsList = userTypeIdsList,
                        entityTypeIdsList = entityTypeIdsList,
                        label = label,
                        )
                    save_table = registration_field_table.save()
                    registrationStepId = str(save_table.id)


                    if fieldType == "Radio" or fieldType == "DropDown" or fieldType == "CheckBox":
                        save_table.update(
                            fieldTypeValuesList=fieldTypeValuesList
                            )
                    elif fieldType == "File":
                        save_table.update(
                            allowedTypes = allowedTypes
                            )
                    else:
                        pass

                    if isMandatory == None:
                        save_table.update(isMandatory=False)
                    else:
                        save_table.update(isMandatory=True)
                    if isSignup == None:
                        save_table.update(isSignup=False)
                    else:
                        save_table.update(isSignup=True)

                    if isGroup == None:
                        save_table.update(isGroup=False)
                    else:
                        save_table.update(
                            isGroup=True,
                            groupType=groupType,
                            )
                    if isVerified == None:
                        save_table.update(isVerified=False)
                    else:
                        save_table.update(isVerified=True)

                    if hasCaps == None:
                        save_table.update(hasCaps=False)
                    else:
                        save_table.update(hasCaps=True)

                    if isDocumentGroup == None:
                        save_table.update(isDocumentGroup=False)
                    else:
                        save_table.update(
                            isDocumentGroup=True,
                            documentGroupId=ObjectId(documentGroupId),
                            )
                    flash("Registration field added successfully!")
                    return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
                except Exception as e:
                    app.logger.error(traceback.format_exc())
                    flash("Unable to add registration field!!")
                    return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
            else:
                flash("Required fields are missing!!")
                return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to add registration field!!")
        return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))


#Update registration field
@registration_master.route("/update_registration_field",methods=["POST","GET"])
@adminid_access_token_required
def update_registration_field():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        registrationFieldId = request.args.get("registrationFieldId","")
        if request.method == "POST":
            fieldName = request.form.get("fieldName","")
            fieldType = request.form.get("fieldType","")
            registrationStepId = request.form.get("registrationStepId")
            rank = request.form.get("rank","")
            webRegex = request.form.get("webRegex","")
            mobileRegex = request.form.get("mobileRegex","")
            minLength = request.form.get("minLength",1)
            maxLength = request.form.get("maxLength",1)
            validationMessage = request.form.get("validationMessage","")
            userTypeIdsList = request.form.getlist("userTypeIdsList[]")
            entityTypeIdsList = request.form.getlist("entityTypeIdsList[]")
            label = request.form.get("label","")
            isMandatory = request.form.get("isMandatory")
            isSignup = request.form.get("isSignup")
            isGroup = request.form.get("isGroup")
            isVerified = request.form.get("isVerified")
            hasCaps = request.form.get("hasCaps")
            isDocumentGroup = request.form.get("isDocumentGroup")
            documentGroupId = request.form.get("documentGroupId",None)
            groupType = request.form.get("groupType","")
            fieldTypeValues = request.form.get("fieldTypeValues","")
            allowedTypes = request.form.getlist("allowedTypes[]")


            fieldTypeValues = fieldTypeValues.split(",")
            # fieldTypeValuesList = [value.replace(" ", "") for value in fieldTypeValues]
            fieldTypeValuesList = [value.strip() for value in fieldTypeValues]
            print(fieldTypeValuesList)

            if fieldType:
                try:
                    registration_field_table = RegistrationFields.objects(id=registrationFieldId).first()
                    if registration_field_table:
                        registration_field_table.update(
                            fieldName = fieldName,
                            fieldType = fieldType,
                            registrationStepId = ObjectId(registrationStepId),
                            rank = rank,
                            webRegex = webRegex,
                            mobileRegex = mobileRegex,
                            minLength = minLength,
                            maxLength = maxLength,
                            validationMessage = validationMessage,
                            userTypeIdsList = [ObjectId(each_user_type_id)for each_user_type_id in userTypeIdsList],
                            entityTypeIdsList = [ObjectId(each_entity_type_id)for each_entity_type_id in entityTypeIdsList],
                            label = label,
                            )

                        if fieldType == "Radio" or fieldType == "DropDown" or fieldType == "CheckBox":
                            registration_field_table.update(
                                fieldTypeValuesList=fieldTypeValuesList
                                )
                        elif fieldType == "File":
                            registration_field_table.update(
                                allowedTypes = allowedTypes
                                )
                        else:
                            pass

                        if isMandatory == None:
                            registration_field_table.update(isMandatory=False)
                        else:
                            registration_field_table.update(isMandatory=True)
                        if isSignup == None:
                            registration_field_table.update(isSignup=False)
                        else:
                            registration_field_table.update(isSignup=True)
                        if isGroup == None:
                            registration_field_table.update(isGroup=False)
                        else:
                            registration_field_table.update(
                                isGroup=True,
                                groupType=groupType,
                                )
                        if isVerified == None:
                            registration_field_table.update(isVerified=False)
                        else:
                            registration_field_table.update(isVerified=True)
                        if hasCaps == None:
                            registration_field_table.update(hasCaps=False)
                        else:
                            registration_field_table.update(hasCaps=True)
                        if not isDocumentGroup:
                            registration_field_table.update(
                                isDocumentGroup=False,
                                documentGroupId=None,
                                )
                        else:
                            registration_field_table.update(
                                isDocumentGroup=True,
                                documentGroupId=ObjectId(documentGroupId),
                                )

                        flash("Registration field updated successfully!")
                        return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
                    else:
                        flash("Invaild id!!")
                        return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
                except Exception as e:
                    app.logger.error(traceback.format_exc())
                    flash("Unable to update registration field!!")
                    return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
            else:
                flash("Required fields are missing!!")
                return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to update registration field!!")
        return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))

#Update registration field status
@registration_master.route("/update_registration_field_status",methods=["POST","GET"])
@adminid_access_token_required
def update_registration_field_status():
    if not session.get("adminId"):
        return redirect("admin_login")
    registrationFieldId = request.args.get("registrationFieldId","")
    try:
        registration_field_table = RegistrationFields.objects(id=registrationFieldId).first()
        if registration_field_table:
            if registration_field_table.status == 0:
                registration_field_table.update(status=1)
                flash("Registration field activated successfully!")
            elif registration_field_table.status == 1:
                registration_field_table.update(status=0)
                flash("Registration field deactivated successfully!")
            return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
        else:
            flash("Invaild id!!")
            return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to update registration field status!!")
        return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))

#Delete registration field
@registration_master.route("/delete_registration_field",methods=["POST","GET"])
@adminid_access_token_required
def delete_registration_field():
    if not session.get("adminId"):
        return redirect("admin_login")
    registrationFieldId = request.args.get("registrationFieldId","")
    try:
        registration_field_table = RegistrationFields.objects(id=registrationFieldId,status__in=[0,1]).first()
        if registration_field_table:
            registration_field_table.update(status=2)
            flash("Registration field deleted successfully!")
            return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
        else:
            flash("Invaild id!!")
            return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to delete registration field!!")
        return redirect(url_for("registration_master.registration_master_list",redirectTo="Fields"))




def fetching_document_details(document_queryset):
    document_dict = {}
    try:
        document_dict={
        "id":str(document_queryset.id),
        "name":document_queryset.name,
        "priority":document_queryset.priority,
        "hasExpiry":document_queryset.hasExpiry,
        "isKYC":document_queryset.isKYC,
        "isMandatory":document_queryset.isMandatory
        }
        if document_queryset.status==1:
            document_dict["actionText"] = "Active"
        else:
            document_dict["actionText"] = "Deactive"
        if document_queryset.createdOn:
            document_dict["createdOn"] = document_queryset.createdOn.strftime("%m-%d-%Y")
        else:
            document_dict["createdOn"] = ""
    except Exception as e:
        app.logger.error(traceback.format_exc())
    return document_dict