Sha256: 3efa10d86625074e8a6a705a34eb3be5d2e45e4b940f11f164b60854d42dbe92
Contents?: true
Size: 2 KB
Versions: 6
Compression:
Stored size: 2 KB
Contents
module Centaman #:nodoc: class Service::CreateCustomer < Centaman::Service include Centaman::JsonWrapper attr_accessor :first_name, :last_name, :email, :phone, :address, :attendees def after_init(args) @first_name = args.fetch(:first_name, nil) @last_name = args.fetch(:last_name, nil) @email = args.fetch(:email, nil) @phone = args.fetch(:phone, nil) @address = args.fetch(:address, nil) || {} @attendees = args.fetch(:attendees, nil) || [] end def endpoint '/ticket_services/TimedTicket' end def object_class Centaman::Object::Customer end def build_address { 'Street1' => address[:street_address] || '', 'Street2' => address[:street_address_2] || '', 'City' => address[:city] || '', 'State' => address[:state] || '', 'Postalcode' => address[:zip] || '', 'Country' => address[:country] || '', 'HomePhone' => phone || '', 'WorkPhone' => '', 'MobilePhone' => '' } end def build_booking_attendees attendees.map do |attendee| udfs = attendee.try(:attendee_udfs) attendee_email = udfs && udfs.detect { |u| u.try(:is_email) && u.try(:value).present? }.try(:value) { 'FirstName': attendee.first_name, 'LastName': attendee.last_name, 'Email': attendee.email.present? ? attendee.email : (attendee_email || random_email(attendee)) } end end def random_email(attendee) # force creation of new member by setting new email [attendee.first_name.try(:squish), attendee.last_name.try(:squish), SecureRandom.hex(2)] .reject { |obj| obj.blank? } .join('.') + '@example.com' .squish end def options_hash { 'FirstName' => first_name || '', 'LastName' => last_name || '', 'Email' => email, 'Address' => build_address, 'BookingAttendee': build_booking_attendees }.compact.to_json end end end
Version data entries
6 entries across 6 versions & 1 rubygems