class Calendars
- Calendars
 - Application
 - ActionController::Base
 - Reference
 - Object
 
Defined in:
controllers/calendars.crConstant Summary
- 
        AFTER = 
{} of Nil => Nil - 
        AROUND = 
{} of Nil => Nil - 
        BEFORE = 
{determine_tenant_from_domain => {nil, nil}, configure_request_logging => {nil, nil}, check_jwt_scope => {nil, nil}} of Nil => Nil - 
        FORCE = 
{} of Nil => Nil - 
        LOCAL_AFTER = 
{} of Nil => Nil - 
        
function => options
 - 
        LOCAL_AROUND = 
{} of Nil => Nil - 
        
function => options
 - 
        LOCAL_BEFORE = 
{} of Nil => Nil - 
        
function => options
 - 
        LOCAL_FORCE = 
{} of Nil => Nil - 
        
function => options
 - 
        LOCAL_RESCUE = 
{} of Nil => Nil - 
        
function => options
 - 
        LOCAL_ROUTES = 
{availability => {"get", "/availability", nil, do candidates = matching_calendar_ids calendars = candidates.keys all_calendars = Set.new(((params["calendars"]? || "").split(',')).map() do |__arg0| __arg0.strip.downcase end.reject(&.empty?)) all_calendars.concat(calendars) calendars = all_calendars.to_a if calendars.empty? render(json: [] of String) end period_start = Time.unix(query_params["period_start"].to_i64) period_end = Time.unix(query_params["period_end"].to_i64) busy = client.get_availability(user.email, calendars, period_start, period_end) busy.each do |status| status.availability.each do |avail| if ( ((avail.status == PlaceCalendar::AvailabilityStatus::Busy) && (period_start <= avail.ends_at)) && (period_end >= avail.starts_at)) calendars.delete(status.calendar.downcase) end end end results = calendars.map do |email| if system = candidates[email]? {id: email, system: system} else {id: email} end end render(json: results) end, false}, free_busy => {"get", "/free_busy", nil, do candidates = matching_calendar_ids calendars = candidates.keys all_calendars = Set.new(((params["calendars"]? || "").split(',')).map() do |__arg2| __arg2.strip.downcase end.reject(&.empty?)) all_calendars.concat(calendars) calendars = all_calendars.to_a if calendars.empty? render(json: [] of String) end period_start = Time.unix(query_params["period_start"].to_i64) period_end = Time.unix(query_params["period_end"].to_i64) busy = client.get_availability(user.email, calendars, period_start, period_end) results = busy.map do |details| if system = candidates[details.calendar]? {id: details.calendar, system: system, availability: details.availability} else {id: details.calendar, availability: details.availability} end end render(json: results) end, false}} of Nil => Nil - 
        
function => options
 - 
        LOCAL_SKIP = 
{} of Nil => Nil - 
        
function => options
 - 
        NAMESPACE = 
["/api/staff/v1/calendars"] - 
        
default namespace based on class
 - 
        RESCUE = 
{Error::Unauthorized => {error_unauthorized, do |error| Log.debug do error.message end head(:unauthorized) end}, Error::Forbidden => {error_forbidden, do |error| Log.debug do error.inspect_with_backtrace end head(:forbidden) end}, Clear::SQL::RecordNotFoundError => {clear_sql_record_not_found_error, do |error| Log.debug do error.message end head(:not_found) end}, Clear::SQL::Error => {clear_sql_error, do |error| render_error(HTTP::Status::INTERNAL_SERVER_ERROR, error) end}, KeyError => {key_error, do |error| if error.message.try(&.includes?("param")) else raise(error) end respond_with(:bad_request) do text(error.message) json({error: error.message}) end end}, JSON::MappingError => {json_mapping_error, do |error| respond_with(:bad_request) do text(error.inspect_with_backtrace) json({error: error.message, backtrace: error.backtrace?}) end end}, ::PlaceOS::Client::API::Error => {_place_os_client_api_error, do |error| render_error(HTTP::Status::NOT_FOUND, error) end}, ::Enumerable::EmptyError => {_enumerable_empty_error, do |error| render_error(HTTP::Status::NOT_FOUND, error) end}, PlaceCalendar::Exception => {place_calendar_exception, do |error| render_error(HTTP::Status::INTERNAL_SERVER_ERROR, error, "#{error.http_body} \n #{error.inspect_with_backtrace}") end}} of Nil => Nil - 
        ROUTES = 
{availability => {"get", "/availability", nil, do candidates = matching_calendar_ids calendars = candidates.keys all_calendars = Set.new(((params["calendars"]? || "").split(',')).map() do |__arg0| __arg0.strip.downcase end.reject(&.empty?)) all_calendars.concat(calendars) calendars = all_calendars.to_a if calendars.empty? render(json: [] of String) end period_start = Time.unix(query_params["period_start"].to_i64) period_end = Time.unix(query_params["period_end"].to_i64) busy = client.get_availability(user.email, calendars, period_start, period_end) busy.each do |status| status.availability.each do |avail| if ( ((avail.status == PlaceCalendar::AvailabilityStatus::Busy) && (period_start <= avail.ends_at)) && (period_end >= avail.starts_at)) calendars.delete(status.calendar.downcase) end end end results = calendars.map do |email| if system = candidates[email]? {id: email, system: system} else {id: email} end end render(json: results) end, false}, free_busy => {"get", "/free_busy", nil, do candidates = matching_calendar_ids calendars = candidates.keys all_calendars = Set.new(((params["calendars"]? || "").split(',')).map() do |__arg2| __arg2.strip.downcase end.reject(&.empty?)) all_calendars.concat(calendars) calendars = all_calendars.to_a if calendars.empty? render(json: [] of String) end period_start = Time.unix(query_params["period_start"].to_i64) period_end = Time.unix(query_params["period_end"].to_i64) busy = client.get_availability(user.email, calendars, period_start, period_end) results = busy.map do |details| if system = candidates[details.calendar]? {id: details.calendar, system: system, availability: details.availability} else {id: details.calendar, availability: details.availability} end end render(json: results) end, false}, index => {"get", "/", nil, nil, false}} of Nil => Nil - 
        SKIP = 
{} of Nil => Nil 
Class Method Summary
- 
        .__init_routes__(router)
        
          
Routes call the functions generated above
 - 
        .__route_list__
        
          
Create draw_routes function
 - 
        .availability(hash_parts : Hash(String | Symbol, Nil | Bool | Int32 | Int64 | Float32 | Float64 | String | Symbol) | Nil = nil, **tuple_parts)
        
          
Helper methods for performing redirect_to calls
 - 
        .base_route
        
          
Helper for obtaining base route
 - .context(method : String, route : String, route_params : Hash(String, String) | Nil = nil, headers : Hash(String, String) | Nil = nil, body : String | Bytes | IO | Nil = nil, &)
 - 
        .free_busy(hash_parts : Hash(String | Symbol, Nil | Bool | Int32 | Int64 | Float32 | Float64 | String | Symbol) | Nil = nil, **tuple_parts)
        
          
Create draw_routes function
 - 
        .get__api_staff_v1_calendars_(context, head_request)
        
          
Create draw_routes function
 - 
        .get__api_staff_v1_calendars_availability(context, head_request)
        
          
Generate functions for each route
 - 
        .get__api_staff_v1_calendars_free_busy(context, head_request)
        
          
Create draw_routes function
 - 
        .index(hash_parts : Hash(String | Symbol, Nil | Bool | Int32 | Int64 | Float32 | Float64 | String | Symbol) | Nil = nil, **tuple_parts)
        
          
Create draw_routes function
 
Instance Method Summary
- #_enumerable_empty_error(error)
 - #_place_os_client_api_error(error)
 - 
        #availability
        
          
Create functions for named routes Skip the CRUD verbs, as they are already defined Annotations defined via the
annotationsargument are applied here - 
        #base_route(*args, **options)
        
          
Helper for obtaining base route
 - 
        #base_route(*args, **options, &)
        
          
Helper for obtaining base route
 - #clear_sql_error(error)
 - #clear_sql_record_not_found_error(error)
 - #error_forbidden(error)
 - 
        #error_unauthorized(error)
        
          
Create functions as required for errors Skip the generating methods for existing handlers
 - #free_busy
 - #index
 - #json_mapping_error(error)
 - #key_error(error)
 - #place_calendar_exception(error)
 
Macro Summary
- __inherit_after_filters__
 - __inherit_around_filters__
 - __inherit_before_filters__
 - __inherit_force_filters__
 - __inherit_rescue_filters__
 - __inherit_routes_filters__
 - __inherit_skip_filters__
 
Class methods inherited from class Application
  
  
    
      context(method : String, route : String, route_params : Hash(String, String) | Nil = nil, headers : Hash(String, String) | Nil = nil, body : String | Bytes | IO | Nil = nil, &)
    context
    
  
  
    
  Instance methods inherited from module Utils::MultiTenant
  
  
    
      client : PlaceCalendar::Client
    client, 
    
  
    
      tenant
    tenant
    
  
    
    
  
    
  Instance methods inherited from module Utils::CurrentUser
  
  
    
      authorize!
    authorize!, 
    
  
    
      check_admin
    check_admin, 
    
  
    
      check_support
    check_support, 
    
  
    
      is_admin?
    is_admin?, 
    
  
    
      is_support?
    is_support?, 
    
  
    
      user
    user, 
    
  
    
      user_token : UserJWT
    user_token
    
  
    
    
  
    
  Instance methods inherited from module Utils::PlaceOSHelpers
  
  
    
      check_access(groups : Array(String), check : Array(String))
    check_access, 
    
  
    
      get_placeos_client : PlaceOS::Client
    get_placeos_client, 
    
  
    
      get_user_calendars
    get_user_calendars, 
    
  
    
      matching_calendar_ids(allow_default = false)
    matching_calendar_ids
    
  
    
    
  
    
    
    
  
    
    
    
  
    
    
    
  
    
    
    
  
    
    
    
  
Class Method Detail
Create draw_routes function
Create instance of controller class init with context, params and logger protocol checks (https etc) controller instance created begin exception helpers inline the around filters inline the before filters inline the action inline the after filters rescue exception handlers
Helper methods for performing redirect_to calls
Create draw_routes function
Create instance of controller class init with context, params and logger protocol checks (https etc) controller instance created begin exception helpers inline the around filters inline the before filters inline the action inline the after filters rescue exception handlers
Create draw_routes function
Create instance of controller class init with context, params and logger protocol checks (https etc) controller instance created begin exception helpers inline the around filters inline the before filters inline the action inline the after filters rescue exception handlers
Generate functions for each route
Create draw_routes function
Create instance of controller class init with context, params and logger protocol checks (https etc) controller instance created begin exception helpers inline the around filters inline the before filters inline the action inline the after filters rescue exception handlers
Create draw_routes function
Create instance of controller class init with context, params and logger protocol checks (https etc) controller instance created begin exception helpers inline the around filters inline the before filters inline the action inline the after filters rescue exception handlers
Instance Method Detail
Create functions for named routes
Skip the CRUD verbs, as they are already defined
Annotations defined via the annotations argument are applied here
Create functions as required for errors Skip the generating methods for existing handlers