from appservices.common.util import *


website_settings = Blueprint("website_settings",__name__)


def fetching_website_content_details(content_queryset):
    websiteDict = {}
    try:
        websiteDict={
        "id":str(content_queryset.id)
        }
        if content_queryset.status==1:
            websiteDict["actionText"] = "Active"
        else:
            websiteDict["actionText"] = "Deactive"
        if content_queryset.createdOn:
            websiteDict["createdOn"] = content_queryset.createdOn.strftime("%m-%d-%Y")
        else:
            websiteDict["createdOn"] = ""

        if content_queryset.adminPageTitle:
            websiteDict["adminPageTitle"] = content_queryset.adminPageTitle
        else:
            websiteDict["adminPageTitle"] = "-"

        if content_queryset.address:
            websiteDict["address"] = content_queryset.address
        else:
            websiteDict["address"] = "-"

        if content_queryset.supportNo:
            websiteDict["supportNo"] = content_queryset.supportNo
        else:
            websiteDict["supportNo"] = "-"

        if content_queryset.salesNumber:
            websiteDict["salesNumber"] = content_queryset.salesNumber
        else:
            websiteDict["salesNumber"] = "-"

        if content_queryset.mapLink:
            websiteDict["mapLink"] = content_queryset.mapLink
        else:
            websiteDict["mapLink"] = "-"

        if content_queryset.copyRight:
            websiteDict["copyRight"] = content_queryset.copyRight
        else:
            websiteDict["copyRight"] = "-"

        if content_queryset.salesEmail:
            websiteDict["salesEmail"] = content_queryset.salesEmail
        else:
            websiteDict["salesEmail"] = "-"

        if content_queryset.supportEmail:
            websiteDict["supportEmail"] = content_queryset.supportEmail
        else:
            websiteDict["supportEmail"] = "-"

        if content_queryset.privacyPolicy:
            websiteDict["privacyPolicy"] = content_queryset.privacyPolicy
        else:
            websiteDict["privacyPolicy"] = "-"

        if content_queryset.termsAndConditions:
            websiteDict["termsAndConditions"] = content_queryset.termsAndConditions
        else:
            websiteDict["termsAndConditions"] = "-"

        if content_queryset.refundPolicy:
            websiteDict["refundPolicy"] = content_queryset.refundPolicy
        else:
            websiteDict["refundPolicy"] = "-"
        
        if content_queryset.cancellationPolicy:
            websiteDict["cancellationPolicy"] = content_queryset.cancellationPolicy
        else:
            websiteDict["cancellationPolicy"] = "-"

        if content_queryset.showPrivacyPolicy:
            websiteDict["showPrivacyPolicy"] = content_queryset.showPrivacyPolicy
        else:
            websiteDict["showPrivacyPolicy"] = False

        if content_queryset.showTermsAndConditionsPolicy:
            websiteDict["showTermsAndConditionsPolicy"] = content_queryset.showTermsAndConditionsPolicy
        else:
            websiteDict["showTermsAndConditionsPolicy"] = False

        if content_queryset.showRefundPolicy:
            websiteDict["showRefundPolicy"] = content_queryset.showRefundPolicy
        else:
            websiteDict["showRefundPolicy"] = False

        if content_queryset.showCancellationPolicy:
            websiteDict["showCancellationPolicy"] = content_queryset.showCancellationPolicy
        else:
            websiteDict["showCancellationPolicy"] = False

        if content_queryset.primaryLogo:
            websiteDict["primaryLogo"] = domain+content_queryset.primaryLogo
        else:
            websiteDict["primaryLogo"] = ""
            
        if content_queryset.secondaryLogo:
            websiteDict["secondaryLogo"] = domain+content_queryset.secondaryLogo
        else:
            websiteDict["secondaryLogo"] = ""

        if content_queryset.favIcon:
            websiteDict["favIcon"] = domain+content_queryset.favIcon
        else:
            websiteDict["favIcon"] = ""
    except Exception as e:
        app.logger.error(traceback.format_exc())
    return websiteDict

def fetching_social_media_details(media_queryset):
    mediaDict = {}
    try:
        mediaDict={
        "id":str(media_queryset.id),
        "fieldName":media_queryset.fieldName,
        "value":media_queryset.value
        }
        if media_queryset.status==1:
            mediaDict["actionText"] = "Active"
        else:
            mediaDict["actionText"] = "Deactive"
        if media_queryset.createdOn:
            mediaDict["createdOn"] = media_queryset.createdOn.strftime("%m-%d-%Y")
        else:
            mediaDict["createdOn"] = ""
        if media_queryset.image:
            mediaDict["image"] = domain+media_queryset.image
        else:
            mediaDict["image"] = ""
    except Exception as e:
        app.logger.error(traceback.format_exc())
    return mediaDict


@website_settings.route("/website_settings_list",methods=["POST","GET"])
def website_settings_list():
    if not session.get("adminId"):
        return redirect("admin_login")
    websiteList = []
    mediaList = []
    conentDict = []
    bannersList = []
    
    adminId = session.get("adminId")
    try:
        redirectto = request.args.get('redirectto','Content')
        if redirectto:
            redirectval=redirectto
        else:
            redirectval="Content"

        contents_queryset = WebsiteContents.objects(status__in=[0,1]).order_by("-id").all()

        for each_content in contents_queryset:
            websiteDict = fetching_website_content_details(each_content)
            websiteList.append(websiteDict)

        medias_queryset = SocialMediaLinks.objects(status__in=[0,1]).order_by("-id").all()
        for each_media in medias_queryset:
            mediaDict = fetching_social_media_details(each_media)
            mediaList.append(mediaDict)

        content_queryset = WebsiteContents.objects(status__in=[1]).first()

        conentDict = fetching_website_content_details(content_queryset)

        banners_queryset = Banners.objects(status__nin=[2]).order_by("-id").all()
        for each_banner in banners_queryset:
            bannerDict = fetching_banner_details(each_banner)
            bannersList.append(bannerDict)

        return render_template("super_admin_templates/website_settings_list.html",
            websiteList=websiteList,
            conentDict=conentDict,
            mediaList=mediaList,
            bannersList=bannersList,
            redirectval=redirectval
            )
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to fetch website settings details!!"
        return render_template("super_admin_templates/website_settings_list.html", 
            error=error,
            websiteList=websiteList,
            conentDict=conentDict,
            mediaList=mediaList,
            bannersList=bannersList,
            redirectval=redirectval
            )


def fetching_banner_details(banner_queryset):
    bannerDict = {}
    try:
        bannerDict = {
        "id":str(banner_queryset.id),
        "name":banner_queryset.name,
        "bannerType":banner_queryset.bannerType
        }
        if banner_queryset.image:
            bannerDict["image"]=domain+banner_queryset.image
        else:
            bannerDict["image"]=""
        if banner_queryset.status==1:
            bannerDict["actionText"] = "Active"
        else:
            bannerDict["actionText"] = "Deactive"
    except Exception as e:
        app.logger.error(traceback.format_exc())
    return bannerDict

@website_settings.route("/add_website_content",methods=["POST","GET"])
def add_website_content():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        
        adminId = session.get("adminId")
        
        if request.method == "POST":
            fieldName = request.form.get("fieldName","")
            value = request.form.get("value","")

            if fieldName and value:
                try:
                    content_queryset = WebsiteContents.objects(status__in=[1]).first()
                    if content_queryset:
                        if fieldName == "adminPageTitle":
                            content_queryset.update(adminPageTitle=value)
                        elif fieldName == "merchantPageTitle":
                            content_queryset.update(merchantPageTitle=value)
                        elif fieldName == "address":
                            content_queryset.update(address=value)
                        elif fieldName == "supportNo":
                            content_queryset.update(supportNo=value)
                        elif fieldName == "salesNumber":
                            content_queryset.update(salesNumber=value)
                        elif fieldName == "mapLink":
                            content_queryset.update(mapLink=value)
                        elif fieldName == "copyRight":
                            content_queryset.update(copyRight=value)
                        elif fieldName == "salesEmail":
                            content_queryset.update(salesEmail=value)
                        elif fieldName == "supportEmail":
                            content_queryset.update(supportEmail=value)
                    else:
                        website_content_table = WebsiteContents(
                            adminId=adminId,
                            createdOn=datetime.datetime.now(),
                            status=1,
                        )
                        save_table = website_content_table.save()
                        conentId = str(save_table.id)

                        if fieldName == "adminPageTitle":
                            save_table.update(adminPageTitle=value)
                        elif fieldName == "merchantPageTitle":
                            save_table.update(merchantPageTitle=value)
                        elif fieldName == "address":
                            save_table.update(address=value)
                        elif fieldName == "supportNo":
                            save_table.update(supportNo=value)
                        elif fieldName == "salesNumber":
                            save_table.update(salesNumber=value)
                        elif fieldName == "mapLink":
                            save_table.update(mapLink=value)
                        elif fieldName == "copyRight":
                            save_table.update(copyRight=value)
                        elif fieldName == "salesEmail":
                            save_table.update(salesEmail=value)
                        elif fieldName == "supportEmail":
                            save_table.update(supportEmail=value)

                    flash("Website content saved successfully!")
                    return redirect(url_for("website_settings.website_settings_list",redirectto="Content"))
                
                except Exception as e:
                    flash("Unable to save website content data!!")
                    app.logger.error(traceback.format_exc())
                    return redirect(url_for("website_settings.website_settings_list",redirectto="Content"))
            
            else:
                flash("Required fields are missing!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Content"))

    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to save website content data!!"
        return render_template("super_admin_templates/website_settings_list.html", error=error)


@website_settings.route("/update_website_privacy_policy",methods=["POST","GET"])
def update_website_privacy_policy():
    if not session.get("adminId"):
        return redirect("admin_login")
    try:
        if request.method == "POST":
            privacyPolicy = request.form.get("privacyPolicy","")
            showPrivacyPolicy = request.form.get("showPrivacyPolicy",True)
            # termsAndConditions = request.form.get("termsAndConditions","")
            # showTermsAndConditionsPolicy = request.form.get("showTermsAndConditionsPolicy",True)
            # refundPolicy = request.form.get("refundPolicy","")
            # showRefundPolicy = request.form.get("showRefundPolicy",True)
            # cancellationPolicy = request.form.get("cancellationPolicy","")
            # showCancellationPolicy = request.form.get("showCancellationPolicy",True)
            # primaryLogo = request.files.get("primaryLogo","")
            # secondaryLogo = request.files.get("secondaryLogo","")
            # favIcon = request.files.get("favIcon","")

            content_queryset = WebsiteContents.objects(status__in=[1]).first()
            if content_queryset:
                if privacyPolicy:
                    content_queryset.update(privacyPolicy=privacyPolicy)
                if showPrivacyPolicy:
                    content_queryset.update(showPrivacyPolicy=True)
                else:
                    content_queryset.update(showPrivacyPolicy=False)

                # if termsAndConditions:
                #   content_queryset.update(termsAndConditions=termsAndConditions)
                # if showTermsAndConditionsPolicy:
                #   content_queryset.update(showTermsAndConditionsPolicy=True)
                # else:
                #   content_queryset.update(showTermsAndConditionsPolicy=False)

                # if refundPolicy:
                #   content_queryset.update(refundPolicy=refundPolicy)
                # if showRefundPolicy:
                #   content_queryset.update(showRefundPolicy=True)
                # else:
                #   content_queryset.update(showRefundPolicy=False)

                # if cancellationPolicy:
                #   content_queryset.update(cancellationPolicy=cancellationPolicy)
                # if showCancellationPolicy:
                #   content_queryset.update(showCancellationPolicy=True)
                # else:
                #   content_queryset.update(showCancellationPolicy=False)

                # if primaryLogo:
                #   if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/website_contents/")):
                #       os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"))
                #   save_file = primaryLogo.save(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"+str(get_epoch_milli_time())+".png"))
                #   content_queryset.update(primaryLogo="media/website_contents/"+str(get_epoch_milli_time())+".png")

                # if secondaryLogo:
                #   if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/website_contents/")):
                #       os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"))
                #   save_file = secondaryLogo.save(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"+str(get_epoch_milli_time())+".png"))
                #   content_queryset.update(secondaryLogo="media/website_contents/"+str(get_epoch_milli_time())+".png")

                # if favIcon:
                #   if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/website_contents/")):
                #       os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"))
                #   save_file = favIcon.save(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"+str(get_epoch_milli_time())+".png"))
                #   content_queryset.update(favIcon="media/website_contents/"+str(get_epoch_milli_time())+".png")
                flash("Website content updated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Privacy"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Privacy"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to update website content!!"
        return redirect(url_for("website_settings.website_settings_list",redirectto="Privacy"))


@website_settings.route("/update_website_terms_conditions",methods=["POST","GET"])
def update_website_terms_conditions():
    if not session.get("adminId"):
        return redirect("admin_login")
    try:
        if request.method == "POST":
            termsAndConditions = request.form.get("termsAndConditions","")
            showTermsAndConditionsPolicy = request.form.get("showTermsAndConditionsPolicy",True)

            content_queryset = WebsiteContents.objects(status__in=[1]).first()
            if content_queryset:
                if termsAndConditions:
                    content_queryset.update(termsAndConditions=termsAndConditions)
                if showTermsAndConditionsPolicy:
                    content_queryset.update(showTermsAndConditionsPolicy=True)
                else:
                    content_queryset.update(showTermsAndConditionsPolicy=False)
                flash("Website content updated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Terms"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Terms"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to update website content!!"
        return redirect(url_for("website_settings.website_settings_list",redirectto="Terms"))


@website_settings.route("/update_website_refund_policy",methods=["POST","GET"])
def update_website_refund_policy():
    if not session.get("adminId"):
        return redirect("admin_login")
    try:
        if request.method == "POST":
            refundPolicy = request.form.get("refundPolicy","")
            showRefundPolicy = request.form.get("showRefundPolicy",True)

            content_queryset = WebsiteContents.objects(status__in=[1]).first()
            if content_queryset:
                if refundPolicy:
                    content_queryset.update(refundPolicy=refundPolicy)
                if showRefundPolicy:
                    content_queryset.update(showRefundPolicy=True)
                else:
                    content_queryset.update(showRefundPolicy=False)
                flash("Website content updated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Refund"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Refund"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to update website content!!"
        return redirect(url_for("website_settings.website_settings_list",redirectto="Refund"))

@website_settings.route("/update_website_cancellation_policy",methods=["POST","GET"])
def update_website_cancellation_policy():
    if not session.get("adminId"):
        return redirect("admin_login")
    try:
        if request.method == "POST":
            cancellationPolicy = request.form.get("cancellationPolicy","")
            showCancellationPolicy = request.form.get("showCancellationPolicy",True)

            content_queryset = WebsiteContents.objects(status__in=[1]).first()
            if content_queryset:
                if cancellationPolicy:
                    content_queryset.update(cancellationPolicy=cancellationPolicy)
                if showCancellationPolicy:
                    content_queryset.update(showCancellationPolicy=True)
                else:
                    content_queryset.update(showCancellationPolicy=False)
                flash("Website content updated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Cancel"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Cancel"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to update website content!!"
        return redirect(url_for("website_settings.website_settings_list",redirectto="Cancel"))


@website_settings.route("/update_website_images",methods=["POST","GET"])
def update_website_images():
    if not session.get("adminId"):
        return redirect("admin_login")
    try:
        if request.method == "POST":
            primaryLogo = request.files.get("primaryLogo","")
            secondaryLogo = request.files.get("secondaryLogo","")
            favIcon = request.files.get("favIcon","")

            content_queryset = WebsiteContents.objects(status__in=[1]).first()
            if content_queryset:
                if primaryLogo:
                    if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/website_contents/")):
                        os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"))
                    save_file = primaryLogo.save(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"+str(get_epoch_milli_time())+".png"))
                    content_queryset.update(primaryLogo="media/website_contents/"+str(get_epoch_milli_time())+".png")

                if secondaryLogo:
                    if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/website_contents/")):
                        os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"))
                    save_file = secondaryLogo.save(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"+str(get_epoch_milli_time())+".png"))
                    content_queryset.update(secondaryLogo="media/website_contents/"+str(get_epoch_milli_time())+".png")

                if favIcon:
                    if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/website_contents/")):
                        os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"))
                    save_file = favIcon.save(os.path.join(app.config['SITE_ROOT'], "media/website_contents/"+str(get_epoch_milli_time())+".png"))
                    content_queryset.update(favIcon="media/website_contents/"+str(get_epoch_milli_time())+".png")
                flash("Website content updated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to update website content!!"
        return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))


@website_settings.route("/add_social_media_link",methods=["POST","GET"])
def add_social_media_link():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        
        adminId = session.get("adminId")
        
        if request.method == "POST":
            fieldName = request.form.get("fieldName", "")
            value = request.form.get("value","")
            image = request.files.get("image","")

            if fieldName and value:
                try:
                    social_media_table = SocialMediaLinks(
                        adminId=adminId,
                        fieldName=fieldName,
                        value=value,
                        createdOn=datetime.datetime.now(),
                        status=1,
                    )
                    save_table = social_media_table.save()
                    socialMediaId = str(save_table.id)

                    if image:
                        if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/socialMediaImages/")):
                            os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/socialMediaImages/"))
                        save_file = image.save(os.path.join(app.config['SITE_ROOT'], "media/socialMediaImages/"+socialMediaId+".png"))
                        save_table.update(image="media/socialMediaImages/"+socialMediaId+".png")

                    flash("Social media link saved successfully!")
                    return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))
                
                except Exception as e:
                    flash("Unable to save social media link data!!")
                    app.logger.error(traceback.format_exc())
                    return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))
            
            else:
                flash("Required fields are missing!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))

    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to save social media link data!!"
        return render_template("super_admin_templates/website_settings_list.html", error=error)
        

@website_settings.route("/update_social_media",methods=["POST","GET"])
def update_social_media():
    if not session.get("adminId"):
        return redirect("admin_login")
    try:
        socialMediaId = request.args.get("socialMediaId","")
        if request.method == "POST":
            fieldName = request.form.get("fieldName","")
            value = request.form.get("value","")
            image = request.files.get("image","")

            media_queryset = SocialMediaLinks.objects(id=socialMediaId).first()
            if media_queryset:
                if fieldName:
                    media_queryset.update(fieldName=fieldName)
                if value:
                    media_queryset.update(value=value)
                if image:
                    if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/socialMediaImages/")):
                        os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/socialMediaImages/"))
                    save_file = image.save(os.path.join(app.config['SITE_ROOT'], "media/socialMediaImages/"+socialMediaId+".png"))
                    media_queryset.update(image="media/socialMediaImages/"+socialMediaId+".png")

                flash("Social media updated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to update social media!!"
        return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))


@website_settings.route("/update_media_status",methods=["POST","GET"])
def update_media_status():
    if not session.get("adminId"):
        return redirect("admin_login")
    socialMediaId = request.args.get("socialMediaId","")

    if socialMediaId:
        try:
            media_queryset = SocialMediaLinks.objects(id=socialMediaId,status__nin=[2]).first()
            if media_queryset:
                if media_queryset.status == 0:
                    media_queryset.update(status=1)
                    flash("Social media activated successfully!")
                elif media_queryset.status == 1:
                    media_queryset.update(status=0)
                    flash("Social media deactivated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))
        except Exception as e:
            app.logger.error(traceback.format_exc())
            return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))
    else:
        return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))


@website_settings.route("/delete_social_media",methods=["GET"])
def delete_social_media():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        if request.method == "GET":
            socialMediaId = request.args.get("socialMediaId","")
            media_queryset = SocialMediaLinks.objects(id=socialMediaId,status__in=[0,1]).first()
            media_queryset.update(status=2)
            flash("Social media deleted successfully!")
            return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to delete social media!!")
        return redirect(url_for("website_settings.website_settings_list",redirectto="Social"))



@website_settings.route("/add_banner",methods=["POST","GET"])
def add_banner():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        adminId = session.get("adminId")
        if request.method == "POST":
            name = request.form.get("name","")
            bannerType = request.form.get("bannerType","")
            image = request.files.get("image")

            if name and bannerType:
                try:
                    banner_table = Banners(
                        adminId=adminId,
                        name = name,
                        bannerType = bannerType,
                        createdOn = datetime.datetime.now(),
                        status = 1,
                        )
                    save_table = banner_table.save()
                    bannerId = str(save_table.id)

                    if image:
                        if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/banners/")):
                            os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/banners/"))
                        save_file = image.save(os.path.join(app.config['SITE_ROOT'], "media/banners/"+bannerId+".png"))
                        save_table.update(image="media/banners/"+bannerId+".png")

                    flash("Banner saved successfully!")
                    return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
                except Exception as e:
                    flash("Unable to save banner!!")
                    app.logger.error(traceback.format_exc())
                    return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
            else:
                flash("Required fields are missing!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to save banner!!"
        return render_template("super_admin_templates/country_master_list.html",error=error)


@website_settings.route("/update_banner_status",methods=["POST","GET"])
def update_banner_status():
    if not session.get("adminId"):
        return redirect("admin_login")
    bannerId = request.args.get("bannerId","")

    if bannerId:
        try:
            banner_queryset = Banners.objects(id=bannerId,status__nin=[2]).first()
            if banner_queryset:
                if banner_queryset.status == 0:
                    banner_queryset.update(status=1)
                    flash("Banner activated successfully!")
                elif banner_queryset.status == 1:
                    banner_queryset.update(status=0)
                    flash("Banner deactivated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
        except Exception as e:
            app.logger.error(traceback.format_exc())
            return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
    else:
        return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))


@website_settings.route("/update_banner",methods=["POST","GET"])
def update_banner():
    if not session.get("adminId"):
        return redirect("admin_login")
    try:
        bannerId = request.args.get("bannerId","")
        if request.method == "POST":
            name = request.form.get("name","")
            bannerType = request.form.get("bannerType","")
            image = request.files.get("image")

            banner_queryset = Banners.objects(id=bannerId).first()
            if banner_queryset:
                banner_queryset.update(
                    name=name,
                    bannerType=bannerType
                    )
                if image:
                    if not os.path.exists(os.path.join(app.config['SITE_ROOT'], "media/banners/")):
                        os.makedirs(os.path.join(app.config['SITE_ROOT'], "media/banners/"))
                    save_file = image.save(os.path.join(app.config['SITE_ROOT'], "media/banners/"+bannerId+".png"))
                    banner_queryset.update(image="media/banners/"+bannerId+".png")
                flash("Banner updated successfully!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
            else:
                flash("Invaild id!!")
                return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to update banner!!"
        return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))


@website_settings.route("/delete_banner",methods=["GET"])
def delete_banner():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        if request.method == "GET":
            bannerId = request.args.get("bannerId","")
            banner_queryset = Banners.objects(id=bannerId,status__in=[0,1]).first()
            banner_queryset.update(status=2)
            flash("Banner deleted successfully!")
            return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to delete banner!!")
        return redirect(url_for("website_settings.website_settings_list",redirectto="Webimage"))