@@ -2,7 +2,15 @@ defmodule CodeCorpsWeb.ProjectUserController do
22 @ moduledoc false
33 use CodeCorpsWeb , :controller
44
5- alias CodeCorps . { Emails , Helpers.Query , Mailer , ProjectUser , User }
5+ alias CodeCorps . {
6+ Analytics.SegmentTracker ,
7+ Analytics.SegmentDataExtractor ,
8+ Emails ,
9+ Helpers.Query ,
10+ Mailer ,
11+ ProjectUser ,
12+ User
13+ }
614
715 action_fallback CodeCorpsWeb.FallbackController
816 plug CodeCorpsWeb.Plug.DataToAttributes
@@ -31,6 +39,7 @@ defmodule CodeCorpsWeb.ProjectUserController do
3139 { :ok , % ProjectUser { } = project_user } <- % ProjectUser { } |> ProjectUser . create_changeset ( params ) |> Repo . insert ,
3240 _ <- maybe_send_create_email ( project_user )
3341 do
42+ track_created ( current_user , project_user )
3443 conn |> put_status ( :created ) |> render ( "show.json-api" , data: project_user )
3544 end
3645 end
@@ -43,6 +52,7 @@ defmodule CodeCorpsWeb.ProjectUserController do
4352 { :ok , % ProjectUser { } = updated_project_user } <- project_user |> ProjectUser . update_changeset ( params ) |> Repo . update ,
4453 _ <- maybe_send_update_email ( updated_project_user , project_user )
4554 do
55+ track_updated ( current_user , project_user )
4656 conn |> render ( "show.json-api" , data: updated_project_user )
4757 end
4858 end
@@ -88,4 +98,33 @@ defmodule CodeCorpsWeb.ProjectUserController do
8898 |> Emails.ProjectUserAcceptanceEmail . create ( )
8999 |> Mailer . deliver_now ( )
90100 end
101+
102+ @ spec track_created ( User . t , ProjectUser . t ) :: any
103+ def track_created (
104+ % User { id: user_id } ,
105+ % ProjectUser { } = project_user ) do
106+
107+ SegmentTracker . track ( user_id , "Requested Membership (User)" , project_user )
108+
109+ project_user
110+ |> SegmentDataExtractor . get_project_id ( )
111+ |> SegmentTracker . track ( "Membership Requested (Project)" , project_user )
112+ end
113+
114+ @ spec track_updated ( User . t , ProjectUser . t ) :: any
115+ def track_updated (
116+ % User { id: user_id } = user ,
117+ % ProjectUser { } = project_user ) do
118+
119+ data = % {
120+ acceptor: user ,
121+ project_user: project_user
122+ }
123+
124+ SegmentTracker . track ( user_id , "Membership Approved (User)" , data )
125+
126+ project_user
127+ |> SegmentDataExtractor . get_project_id ( )
128+ |> SegmentTracker . track ( "Approved Membership (Project)" , data )
129+ end
91130end
0 commit comments