lib/wolf_core/application/barton/mappings.rb



module WolfCore
  module Barton
    module Mappings
      PROVIDER_TYPE_MAPPING = {
        "MD" => ENV["MD_PRICING_ID"],
        "DO" => ENV["DO_PRICING_ID"],
        "PA" => ENV["PA_PRICING_ID"],
        "DMD" => ENV["DMD_PRICING_ID"],
        "NP" => ENV["NP_PRICING_ID"],
        "DDS" => ENV["DDS_PRICING_ID"],
        "GP" => ENV["GP_PRICING_ID"]
      }

      LOCUM_AVAILABILITY_MAP = {
        "PT" => "Part Time",
        "FT" => "Full Time",
        "PFI" => "Not Sure Yet",
        "Interim Locum" => "Between Permanent Positions",
        "Perm Only" => "Permanent"
      }

      ORDER_STATUS_MAP = {
        "Listing Qualification" => "pending",
        "Pending" => "pending",
        "On Hold" => "pending",
        "Filled" => "pending",
        "Open" => "live",
        "Closed" => "pending"
      }

      SUBMITTAL_STAGE_MAP = {
        "Pre-Submission" => "wait",
        "Submittal" => "wait",
        "Send Out" => "wait",
        "On Hold" => "wait",
        "Offer" => "wait",
        "Applied Online" => "wait",
        "Declined Online" => "declined",
        "Withdraw" => "declined",
        "Reject" => "rejected"
      }

      STATE_ABBREVIATIONS_MAP = {
        "Alabama" => "AL",
        "Alaska" => "AK",
        "American Samoa" => "AS",
        "Arizona" => "AZ",
        "Arkansas" => "AR",
        "California" => "CA",
        "Colorado" => "CO",
        "Connecticut" => "CT",
        "Delaware" => "DE",
        "District of Columbia" => "DC",
        "Florida" => "FL",
        "Georgia" => "GA",
        "Guam" => "GU",
        "Hawaii" => "HI",
        "Idaho" => "ID",
        "Illinois" => "IL",
        "Indiana" => "IN",
        "Iowa" => "IA",
        "Kansas" => "KS",
        "Kentucky" => "KY",
        "Louisiana" => "LA",
        "Maine" => "ME",
        "Marshall Islands" => "MH",
        "Maryland" => "MD",
        "Massachusetts" => "MA",
        "Michigan" => "MI",
        "Minnesota" => "MN",
        "Mississippi" => "MS",
        "Missouri" => "MO",
        "Montana" => "MT",
        "Nebraska" => "NE",
        "Nevada" => "NV",
        "New Hampshire" => "NH",
        "New Jersey" => "NJ",
        "New Mexico" => "NM",
        "New York" => "NY",
        "North Carolina" => "NC",
        "North Dakota" => "ND",
        "Northern Mariana Islands" => "MP",
        "Ohio" => "OH",
        "Oklahoma" => "OK",
        "Oregon" => "OR",
        "Palau" => "PW",
        "Pennsylvania" => "PA",
        "Puerto Rico" => "PR",
        "Rhode Island" => "RI",
        "South Carolina" => "SC",
        "South Dakota" => "SD",
        "Tennessee" => "TN",
        "Texas" => "TX",
        "U.S. Virgin Islands" => "VI",
        "Utah" => "UT",
        "Vermont" => "VT",
        "Virginia" => "VA",
        "Washington" => "WA",
        "West Virginia" => "WV",
        "Wisconsin" => "WI",
        "Wyoming" => "WY"
      }

      DISPLAY_PAY_RATE_UNIT_MAP = {
        "hour" => "Hourly",
        "day" => "Daily",
        "week" => "Weekly",
        "month" => "Monthly"
      }

      def map_provider_type_to_pricing_id(provider_type)
        pricing_id = PROVIDER_TYPE_MAPPING[provider_type]
        pricing_id || provider_type
      end

      def map_pricing_id_to_provider_type(pricing_id)
        return nil if pricing_id.blank?

        pricing_id = pricing_id.to_s
        provider_type = PROVIDER_TYPE_MAPPING.invert[pricing_id]
        provider_type || pricing_id
      end

      def map_locum_availability(value)
        LOCUM_AVAILABILITY_MAP[value] || value
      end

      def reverse_map_locum_availability(value)
        LOCUM_AVAILABILITY_MAP.invert[value] || value
      end

      def map_order_status(value)
        ORDER_STATUS_MAP[value] || value
      end

      def reverse_map_order_status(value)
        ORDER_STATUS_MAP.invert[value] || value
      end

      def map_submittal_stage_to_order_application_status(value)
        SUBMITTAL_STAGE_MAP[value] || value
      end

      def revert_map_submittal_stage_to_order_application_status(value)
        SUBMITTAL_STAGE_MAP.invert[value] || value
      end

      def map_state_to_abbreviation(value)
        STATE_ABBREVIATIONS_MAP[value] || value
      end

      def revert_map_state_to_abbreviation(value)
        STATE_ABBREVIATIONS_MAP.invert[value] || value
      end

      def map_display_pay_rate_unit(value)
        DISPLAY_PAY_RATE_UNIT_MAP[value&.downcase] || value
      end

      def revert_map_display_pay_rate_unit(value)
        DISPLAY_PAY_RATE_UNIT_MAP.invert[value] || value
      end
    end
  end
end