11package pipedrive
22
33import (
4+ "context"
45"fmt"
56"net/http"
67)
78
9+ // ActivitiesService handles activities related
10+ // methods of the Pipedrive API.
11+ //
12+ // Pipedrive API dcos: https://developers.pipedrive.com/docs/api/v1/#!/Activities
813type ActivitiesService service
914
15+ // Participants represents a Pipedrive participant.
1016type Participants struct {
1117PersonID int `json:"person_id"`
1218PrimaryFlag bool `json:"primary_flag"`
1319}
1420
21+ // Activity represents a Pipedrive activity.
1522type Activity struct {
1623ID int `json:"id"`
1724CompanyID int `json:"company_id"`
@@ -46,29 +53,36 @@ type Activity struct {
4653AssignedToUserID int `json:"assigned_to_user_id"`
4754}
4855
49- type SingleActivity struct {
56+ func (a Activity ) String () string {
57+ return Stringify (a )
58+ }
59+
60+ // ActivityResponse represents single activity response.
61+ type ActivityResponse struct {
5062Success bool `json:"success"`
5163Data Activity `json:"data"`
5264}
5365
54- type Activities struct {
66+ // ActivitiesReponse represents multiple activities response.
67+ type ActivitiesReponse struct {
5568Success bool `json:"success"`
5669Data []Activity `json:"data"`
5770AdditionalData AdditionalData `json:"additional_data,omitempty"`
5871}
5972
60- // Returns all activities assigned to a particular user
73+ // List returns all activities assigned to a particular user
74+ //
6175// https://developers.pipedrive.com/docs/api/v1/#!/Activities/get_activities
62- func (s * ActivitiesService ) List (id int ) (* Activities , * Response , error ) {
76+ func (s * ActivitiesService ) List (ctx context. Context ) (* ActivitiesReponse , * Response , error ) {
6377req , err := s .client .NewRequest (http .MethodGet , "/activities" , nil , nil )
6478
6579if err != nil {
6680return nil , nil , err
6781}
6882
69- var record * Activities
83+ var record * ActivitiesReponse
7084
71- resp , err := s .client .Do (req , & record )
85+ resp , err := s .client .Do (ctx , req , & record )
7286
7387if err != nil {
7488return nil , resp , err
@@ -77,19 +91,20 @@ func (s *ActivitiesService) List(id int) (*Activities, *Response, error) {
7791return record , resp , nil
7892}
7993
80- // Returns details of a specific activity.
94+ // GetByID returns details of a specific activity.
95+ //
8196// https://developers.pipedrive.com/docs/api/v1/#!/Activities/get_activities
82- func (s * ActivitiesService ) GetById ( id int ) (* Activities , * Response , error ) {
97+ func (s * ActivitiesService ) GetByID ( ctx context. Context , id int ) (* ActivitiesReponse , * Response , error ) {
8398uri := fmt .Sprintf ("/activities/%v" , id )
8499req , err := s .client .NewRequest (http .MethodGet , uri , nil , nil )
85100
86101if err != nil {
87102return nil , nil , err
88103}
89104
90- var record * Activities
105+ var record * ActivitiesReponse
91106
92- resp , err := s .client .Do (req , & record )
107+ resp , err := s .client .Do (ctx , req , & record )
93108
94109if err != nil {
95110return nil , resp , err
@@ -98,32 +113,19 @@ func (s *ActivitiesService) GetById(id int) (*Activities, *Response, error) {
98113return record , resp , nil
99114}
100115
101- type ActivitiesCreateOptions struct {
102- Subject string `url:"subject"`
103- Done uint8 `url:"done"`
104- Type string `url:"type"`
105- DueDate string `url:"due_date"`
106- DueTime string `url:"due_time"`
107- Duration string `url:"duration"`
108- UserId uint `url:"user_id"`
109- DealId uint `url:"user_id"`
110- PersonId uint `url:"person_id"`
111- Participants interface {} `url:"participants"`
112- OrgId uint `url:"org_id"`
113- }
114-
115116// Create an activity.
117+ //
116118// Pipedrive API docs: https://developers.pipedrive.com/docs/api/v1/#!/Activities/post_activities
117- func (s * ActivitiesService ) Create (opt * ActivitiesCreateOptions ) (* SingleActivity , * Response , error ) {
119+ func (s * ActivitiesService ) Create (ctx context. Context , opt * ActivitiesCreateOptions ) (* ActivityResponse , * Response , error ) {
118120req , err := s .client .NewRequest (http .MethodPost , "/activities" , nil , opt )
119121
120122if err != nil {
121123return nil , nil , err
122124}
123125
124- var record * SingleActivity
126+ var record * ActivityResponse
125127
126- resp , err := s .client .Do (req , & record )
128+ resp , err := s .client .Do (ctx , req , & record )
127129
128130if err != nil {
129131return nil , resp , err
@@ -132,19 +134,36 @@ func (s *ActivitiesService) Create(opt *ActivitiesCreateOptions) (*SingleActivit
132134return record , resp , nil
133135}
134136
135- // Edit an activity
137+ // ActivitiesCreateOptions specifices the optional parameters to the
138+ // ActivitiesService.Update method.
139+ type ActivitiesCreateOptions struct {
140+ Subject string `url:"subject,omitempty"`
141+ Done uint8 `url:"done,omitempty"`
142+ Type string `url:"type,omitempty"`
143+ DueDate string `url:"due_date,omitempty"`
144+ DueTime string `url:"due_time,omitempty"`
145+ Duration string `url:"duration,omitempty"`
146+ UserID uint `url:"user_id,omitempty"`
147+ DealID uint `url:"user_id,omitempty"`
148+ PersonID uint `url:"person_id,omitempty"`
149+ Participants interface {} `url:"participants,omitempty"`
150+ OrgID uint `url:"org_id,omitempty"`
151+ }
152+
153+ // Update an activity
154+ //
136155// Pipedrive API docs: https://developers.pipedrive.com/docs/api/v1/#!/Activities/put_activities_id
137- func (s * ActivitiesService ) Update (id int , opt * ActivitiesCreateOptions ) (* SingleActivity , * Response , error ) {
156+ func (s * ActivitiesService ) Update (ctx context. Context , id int , opt * ActivitiesCreateOptions ) (* ActivityResponse , * Response , error ) {
138157uri := fmt .Sprintf ("/activities/%v" , id )
139158req , err := s .client .NewRequest (http .MethodPut , uri , opt , nil )
140159
141160if err != nil {
142161return nil , nil , err
143162}
144163
145- var record * SingleActivity
164+ var record * ActivityResponse
146165
147- resp , err := s .client .Do (req , & record )
166+ resp , err := s .client .Do (ctx , req , & record )
148167
149168if err != nil {
150169return nil , resp , err
@@ -153,9 +172,10 @@ func (s *ActivitiesService) Update(id int, opt *ActivitiesCreateOptions) (*Singl
153172return record , resp , nil
154173}
155174
156- // Delete multiple activities in bulk.
175+ // DeleteMultiple activities in bulk.
176+ //
157177// Pipedrive API docs: https://developers.pipedrive.com/docs/api/v1/#!/Activities/delete_activities
158- func (s * ActivitiesService ) DeleteMultiple (ids []int ) (* Response , error ) {
178+ func (s * ActivitiesService ) DeleteMultiple (ctx context. Context , ids []int ) (* Response , error ) {
159179req , err := s .client .NewRequest (http .MethodDelete , "/activities" , & DeleteMultipleOptions {
160180Ids : arrayToString (ids , "," ),
161181}, nil )
@@ -164,18 +184,18 @@ func (s *ActivitiesService) DeleteMultiple(ids []int) (*Response, error) {
164184return nil , err
165185}
166186
167- return s .client .Do (req , nil )
187+ return s .client .Do (ctx , req , nil )
168188}
169189
170- // Deletes an activity.
190+ // Delete an activity.
171191// Pipedrive API docs: https://developers.pipedrive.com/docs/api/v1/#!/Activities/delete_activities_id
172- func (s * ActivitiesService ) Delete (id int ) (* Response , error ) {
192+ func (s * ActivitiesService ) Delete (ctx context. Context , id int ) (* Response , error ) {
173193uri := fmt .Sprintf ("/activities/%v" , id )
174194req , err := s .client .NewRequest (http .MethodDelete , uri , nil , nil )
175195
176196if err != nil {
177197return nil , err
178198}
179199
180- return s .client .Do (req , nil )
200+ return s .client .Do (ctx , req , nil )
181201}
0 commit comments