Sha256: edf636b9e6a9bc8443e86542289e8ae3d1eca03234c75012ee01f77ca04c8b32

Contents?: true

Size: 1.12 KB

Versions: 7

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

require_relative './base'

module Dude
  module Toggl
    class StartTimeEntry < Dude::Toggl::Base
      def call(task_title:, project:)
        @task_title = task_title
        @project = project

        start_time_entry
        print_message
      end

      private

      attr_reader :task_title, :project

      def start_time_entry
        toggl_api.post('/api/v8/time_entries/start', time_entry_params(task_title))
      end

      def time_entry_params(title)
        {
          time_entry: {
            description: title,
            pid: project_id,
            created_with: 'dude'
          }
        }.to_json
      end

      def project_id
        projects_array.each do |arr|
          return arr.last if arr.first.eql?(project.downcase)
        end
        nil
      end

      def projects_array
        parsed_response.map { |a| [a['name'].downcase.gsub(/\s/, '-'), a['id']] }
      end

      def parsed_response
        JSON.parse(projects_response.body)
      end

      def print_message
        puts "Toggl task '#{task_title}' is started".colorize(:green)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dude-cli-2.1.0 lib/dude/time_trackers/toggl/start_time_entry.rb
dude-cli-2.1.0.alpha5 lib/dude/time_trackers/toggl/start_time_entry.rb
dude-cli-2.1.0.alpha4 lib/dude/time_trackers/toggl/start_time_entry.rb
dude-cli-2.1.0.alpha3 lib/dude/time_trackers/toggl/start_time_entry.rb
dude-cli-2.1.0.alpha2 lib/dude/time_trackers/toggl/start_time_entry.rb
dude-cli-2.1.0.alpha1 lib/dude/time_trackers/toggl/start_time_entry.rb
dude-cli-2.0.7 lib/dude/time_trackers/toggl/start_time_entry.rb