from appservices.common.util import *
from appservices.common.other_services.aabhibus import *

aabhibus = Blueprint("aabhibus",__name__)

csrf.exempt(aabhibus)
@aabhibus.route("/aabhibus", methods=["GET"])
def get_abhibuses():
    return "abhibus"

@aabhibus.route("/abhibus_getstations", methods=["POST"])
def abhibus_getstations():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"

        responseData=getStations(common_url,base_url,xmlurl,username,password)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."



@aabhibus.route("/abhibus_GetStationsV1", methods=["POST"])
def abhibus_GetStationsV1():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"

        responseData=GetStationsV1(common_url,base_url,xmlurl,username,password)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


   
@aabhibus.route("/abhibus_operators", methods=["POST"])
def abhibus_operators():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        responseData=getOperators(common_url,base_url,xmlurl,username,password)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."



@aabhibus.route("/abhibus_cancelation_policy", methods=["POST"])
def abhibus_cancelation():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="111631"
        serviceId="1358204593"
        sourceStationId="3"
        destinationStationId="5"
        journeyDate="2025-07-08"
 
        responseData=getCancelationPolicy(common_url,base_url,xmlurl,username,password,operatorId,serviceId,sourceStationId,destinationStationId,journeyDate)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."
   

@aabhibus.route("/abhibus_availableservices", methods=["POST"])
def abhibus_availableservices():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="11"
        serviceId="1078114995"
        sourceStationId="3"
        destinationStationId="5"
        journeyDate="2025-07-08"
       
        responseData=getAllServicesAvailable(common_url,base_url,xmlurl,username,password,operatorId,serviceId,sourceStationId,destinationStationId,journeyDate)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


@aabhibus.route("/abhibus_seatlayouts", methods=["POST"])
def abhibus_seatlayouts():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="465"
        serviceId="1358204485"
        sourceStationId="3"
        destinationStationId="5"
        journeyDate="2025-07-08"
        layoutId="226"
        seatFare="1000"
        isSingleLady="0"
        concessionId="0"

        responseData=getSeatlayout(common_url,base_url,xmlurl,username,password,operatorId,serviceId,sourceStationId,destinationStationId,journeyDate,layoutId,seatFare,isSingleLady,concessionId)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


@aabhibus.route("/abhibus_blocktickets", methods=["POST"])
def abhibus_blocktickets():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="111631"
        serviceId="1358204593"
        sourceStationId="3"
        destinationStationId="5"
        journeyDate="2025-07-08"
        layoutId="116"
        isSingleLady="0"
        concessionId="0"
        seatFareList="900"
        ageList="30"
        contactNumber="9553911177"
        gendersList="M"
        boardingPointID="6"
        droppingPointID="7998"
        seatNumbersList="L4"
        seatLayoutUniqueId="43546c3573686c65584270427355587754564e5541673d3d3a3acbb1f21639aed712b25403790e1c1916"
        address="hyderabad"
        emailId="s@gmail.com"
        seatTypesList="SS"
        seatTypeIds="0"
        isAcSeat="0"
        additionalInfoLabel="0"
        serviceTaxList="45.00"
        namesList="sai"
        responseData=blockTickets(common_url,base_url,xmlurl,username,password,operatorId,serviceId,sourceStationId,destinationStationId,journeyDate,layoutId,isSingleLady,concessionId,seatFareList,ageList,contactNumber,gendersList,boardingPointID,droppingPointID,seatNumbersList,seatLayoutUniqueId,address,emailId,seatTypesList,seatTypeIds,isAcSeat,additionalInfoLabel,serviceTaxList,namesList)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


@aabhibus.route("/abhibus_confirm_seat_booking", methods=["POST"])
def abhibus_confirm_seat_booking():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="111631"
        journeyDate="2025-07-07"
        referenceNo="O_142099"
        responseData=confirmSeatBooking(common_url,base_url, xmlurl,username, password, operatorId,journeyDate, referenceNo)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


#### "message":"Your ticket already cancelled or cancellation time exceeded"
@aabhibus.route("/abhibus_preCancellation", methods=["POST"])
def abhibus_preCancellation():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        ticketNo="ABRS7362291"
        phoneNum="9553911177"
        responseData=preCancellation(common_url,base_url,xmlurl,username,password,ticketNo,phoneNum)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


@aabhibus.route("/abhibus_CancelTicket", methods=["POST"])
def abhibus_CancelTicket():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="111631"
        phoneNum="9553911177"
        ticketNo="ABRS7362285"
        cancelSeats="L1"
        partialCancellation="0"

        responseData=CancelTicket(common_url, base_url, xmlurl, username, password, operatorId, phoneNum, ticketNo, cancelSeats, partialCancellation)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."

@aabhibus.route("/abhibus_Get_ticket_Details", methods=["POST"])
def abhibus_GetticketDetails():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        ticketNo="ABRS7362285"

        responseData=GetticketDetails(common_url, base_url, xmlurl, username, password,ticketNo)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


@aabhibus.route("/abhibus_GetTicketByReference", methods=["POST"])
def abhibus_GetTicketByReference():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        reference="O_142091"
        operatorId="111631"

        responseData=GetTicketByReference(common_url, base_url,xmlurl, username, password, reference, operatorId)
        print(responseData)
        return responseData

    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."

@aabhibus.route("/abhibus_CheckavailBalance", methods=["POST"])
def abhibus_CheckavailBalance():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        responseData=CheckavailBalance(common_url,base_url,xmlurl,username,password)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


@aabhibus.route("/abhibus_GetFareDetails", methods=["POST"])
def abhibus_GetFareDetails():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="111631"
        sourceStationId="3"
        destinationStationId="5"
        journeyDate="2025-07-08"
        adultSeatNos="L9"
        childSeatNos="0"
        serviceId="1358204593"
        concessionId="0"
        responseData=GetFareDetails(common_url,base_url,xmlurl,username,password,operatorId,sourceStationId,destinationStationId,journeyDate,adultSeatNos,childSeatNos,serviceId,concessionId)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."

@aabhibus.route("/abhibus_GetFaresInfo", methods=["POST"])
def abhibus_GetFaresInfo():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        adultSeatNos="0"
        childSeatNos="0"
        referenceNo="ABRS7362287"
        responseData=GetFaresInfo(common_url,base_url,xmlurl,username,password,adultSeatNos,childSeatNos,referenceNo)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."

@aabhibus.route("/abhibus_GetAvailableServices", methods=["POST"])
def abhibus_GetAvailableServices():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        sourceStationId="3"
        destinationStationId="5"
        journeyDate="2025-07-08"
        responseData=GetAvailableServices(common_url,base_url,xmlurl,username,password,sourceStationId,destinationStationId,journeyDate)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."


@aabhibus.route("/abhibus_GetServiceSeatingLayout", methods=["POST"])
def abhibus_GetServiceSeatingLayout():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="111631"
        serviceId="1358204593"
        sourceStationId="3"
        destinationStationId="5"
        journeyDate="2025-07-07"
        layoutId="226"
        seatFare="1000"
        isSingleLady="0"
        concessionId="0"
        responseData=GetServiceSeatingLayout(common_url,base_url,xmlurl,username,password,operatorId,serviceId,sourceStationId,destinationStationId,journeyDate,layoutId,seatFare,isSingleLady,concessionId)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."
        

@aabhibus.route("/abhibus_GetTicketDetails", methods=["POST"])
def abhibus_GetTicketDetails():
    try: 
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        ticketNo="ABRS7362286"
        responseData=GetTicketDetails(common_url,base_url,xmlurl,username,password,ticketNo)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."
        
@aabhibus.route("/abhibus_GetTicketDetailsByReference", methods=["POST"])
def abhibus_GetTicketDetailsByReference():
    try: 
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        reference="O_142092"
        operatorId="111631"
        responseData=GetTicketDetailsByReference(common_url,base_url,xmlurl,username,password,reference,operatorId)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."
        
@aabhibus.route("/abhibus_BlockTicketsV2", methods=["POST"])
def abhibus_BlockTicketsV2():
    try:
        common_url = "https://staging.abhibus.com/abhiWebServer"
        base_url="https://staging.abhibus.com/"
        xmlurl="http://schemas.xmlsoap.org/soap/envelope/"
        username="demo@test"
        password="demo@abhibus"
        operatorId="111631"
        journeyDate="2025-07-07"
        serviceId="1358204593"
        layoutId="116"
        sourceStationId="3"
        destinationStationId="5"
        boardingPointID="6"
        droppingPointID="2368"
        address="HYD"
        contactNumber="9553911177"
        emailId="s@gmail.com"
        namesList="sai"
        gendersList="M"
        ageList="25"
        seatNumbersList="L21"
        seatFareList="900"
        seatTypeIds="0"
        seatTypesList="SS"
        isAcSeat="0"
        seatLayoutUniqueId="4a36444e31624f41362f2b4a6e6b67586950773845773d3d3a3a523c7ce3bf8442c37731b461ad5ee615"
        serviceTaxList="45.00"
        isSingleLady="0"
        concessionId="0"
        additionalInfoLabel="0"
        responseData=BlockTicketsV2(common_url,base_url,xmlurl,username,password,operatorId,
        journeyDate,serviceId,layoutId,sourceStationId,destinationStationId,boardingPointID,droppingPointID,
        address,contactNumber,emailId,namesList,gendersList,ageList,seatNumbersList,seatFareList,seatTypeIds,seatTypesList,
        isAcSeat,seatLayoutUniqueId,serviceTaxList,isSingleLady,concessionId,additionalInfoLabel)
        print(responseData)
        return responseData
    except Exception as e:
        app.logger.error("Error during request preparation: " + traceback.format_exc())
        return "Error: Unable to retrieve abhibuses."
        
         
