| | 1 | | using System.Collections.Generic; |
| | 2 | |
|
| | 3 | | namespace DCLServices.PlacesAPIService |
| | 4 | | { |
| | 5 | | public interface IPlacesAnalytics |
| | 6 | | { |
| | 7 | | public enum ActionSource |
| | 8 | | { |
| | 9 | | FromExplore, |
| | 10 | | FromSearch, |
| | 11 | | FromMinimap, |
| | 12 | | FromNavmap, |
| | 13 | | FromFavorites, |
| | 14 | | } |
| | 15 | |
|
| | 16 | | public enum SortingType |
| | 17 | | { |
| | 18 | | MostActive, |
| | 19 | | Best |
| | 20 | | } |
| | 21 | |
|
| | 22 | | void AddFavorite(string placeUUID, ActionSource source, bool isWorld = false); |
| | 23 | | void RemoveFavorite(string placeUUID, ActionSource source, bool isWorld = false); |
| | 24 | | void Like(string placeUUID, IPlacesAnalytics.ActionSource source, bool isWorld = false); |
| | 25 | | void Dislike(string placeUUID, IPlacesAnalytics.ActionSource source, bool isWorld = false); |
| | 26 | | void RemoveVote(string placeUUID, IPlacesAnalytics.ActionSource source, bool isWorld = false); |
| | 27 | | void Filter(string filterType); |
| | 28 | | void Sort(IPlacesAnalytics.SortingType sortingType); |
| | 29 | | void SortWorlds(IPlacesAnalytics.SortingType sortingType); |
| | 30 | | } |
| | 31 | |
|
| | 32 | | public class PlacesAnalytics : IPlacesAnalytics |
| | 33 | | { |
| | 34 | | private const string ADD_FAVORITE_PLACE = "player_add_favorite_place"; |
| | 35 | | private const string REMOVE_FAVORITE_PLACE = "player_remove_favorite_place"; |
| | 36 | | private const string LIKE_PLACE = "player_like_place"; |
| | 37 | | private const string DISLIKE_PLACE = "player_dislike_place"; |
| | 38 | | private const string REMOVE_VOTE_PLACE = "player_remove_vote_place"; |
| | 39 | | private const string FILTER_PLACES = "player_filter_places"; |
| | 40 | | private const string SORT_PLACES = "player_sort_places"; |
| | 41 | | private const string SORT_WORLDS = "player_sort_worlds"; |
| | 42 | |
|
| | 43 | | public void AddFavorite(string placeUUID, IPlacesAnalytics.ActionSource source, bool isWorld = false) |
| | 44 | | { |
| 0 | 45 | | var data = new Dictionary<string, string> |
| | 46 | | { |
| | 47 | | ["place_id"] = placeUUID, |
| | 48 | | ["source"] = source.ToString(), |
| | 49 | | ["is_world"] = isWorld.ToString() |
| | 50 | | }; |
| 0 | 51 | | GenericAnalytics.SendAnalytic(ADD_FAVORITE_PLACE, data); |
| 0 | 52 | | } |
| | 53 | |
|
| | 54 | | public void RemoveFavorite(string placeUUID, IPlacesAnalytics.ActionSource source, bool isWorld = false) |
| | 55 | | { |
| 0 | 56 | | var data = new Dictionary<string, string> |
| | 57 | | { |
| | 58 | | ["place_id"] = placeUUID, |
| | 59 | | ["source"] = source.ToString(), |
| | 60 | | ["is_world"] = isWorld.ToString() |
| | 61 | | }; |
| 0 | 62 | | GenericAnalytics.SendAnalytic(REMOVE_FAVORITE_PLACE, data); |
| 0 | 63 | | } |
| | 64 | |
|
| | 65 | | public void Like(string placeUUID, IPlacesAnalytics.ActionSource source, bool isWorld = false) |
| | 66 | | { |
| 0 | 67 | | var data = new Dictionary<string, string> |
| | 68 | | { |
| | 69 | | ["place_id"] = placeUUID, |
| | 70 | | ["source"] = source.ToString(), |
| | 71 | | ["is_world"] = isWorld.ToString() |
| | 72 | | }; |
| 0 | 73 | | GenericAnalytics.SendAnalytic(LIKE_PLACE, data); |
| 0 | 74 | | } |
| | 75 | |
|
| | 76 | | public void Dislike(string placeUUID, IPlacesAnalytics.ActionSource source, bool isWorld = false) |
| | 77 | | { |
| 0 | 78 | | var data = new Dictionary<string, string> |
| | 79 | | { |
| | 80 | | ["place_id"] = placeUUID, |
| | 81 | | ["source"] = source.ToString(), |
| | 82 | | ["is_world"] = isWorld.ToString() |
| | 83 | | }; |
| 0 | 84 | | GenericAnalytics.SendAnalytic(DISLIKE_PLACE, data); |
| 0 | 85 | | } |
| | 86 | |
|
| | 87 | | public void RemoveVote(string placeUUID, IPlacesAnalytics.ActionSource source, bool isWorld = false) |
| | 88 | | { |
| 0 | 89 | | var data = new Dictionary<string, string> |
| | 90 | | { |
| | 91 | | ["place_id"] = placeUUID, |
| | 92 | | ["source"] = source.ToString(), |
| | 93 | | ["is_world"] = isWorld.ToString() |
| | 94 | | }; |
| 0 | 95 | | GenericAnalytics.SendAnalytic(REMOVE_VOTE_PLACE, data); |
| 0 | 96 | | } |
| | 97 | |
|
| | 98 | | public void Filter(string filterType) |
| | 99 | | { |
| 0 | 100 | | var data = new Dictionary<string, string> |
| | 101 | | { |
| | 102 | | ["type"] = filterType |
| | 103 | | }; |
| 0 | 104 | | GenericAnalytics.SendAnalytic(FILTER_PLACES, data); |
| 0 | 105 | | } |
| | 106 | |
|
| | 107 | | public void Sort(IPlacesAnalytics.SortingType sortingType) |
| | 108 | | { |
| 0 | 109 | | var data = new Dictionary<string, string> |
| | 110 | | { |
| | 111 | | ["type"] = sortingType.ToString() |
| | 112 | | }; |
| 0 | 113 | | GenericAnalytics.SendAnalytic(SORT_PLACES, data); |
| 0 | 114 | | } |
| | 115 | |
|
| | 116 | | public void SortWorlds(IPlacesAnalytics.SortingType sortingType) |
| | 117 | | { |
| 0 | 118 | | var data = new Dictionary<string, string> |
| | 119 | | { |
| | 120 | | ["type"] = sortingType.ToString() |
| | 121 | | }; |
| 0 | 122 | | GenericAnalytics.SendAnalytic(SORT_WORLDS, data); |
| 0 | 123 | | } |
| | 124 | | } |
| | 125 | | } |