private void ExportGroups(IGroupsModel model, IMainPresenter presenter)
        {
            IMemberServices service = service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion);

            service.ExportGroupsUrl  = ApplicationResource.ActionGetGroupInfo;
            service.UserAgentVersion = ApplicationResource.UserAgent;
            List <string> groupIdList = new List <string>();

            foreach (GroupListViewItemModel item in model.Groups.Where(m => m.IsChecked).ToList())
            {
                groupIdList.Add(item.GroupId);
            }
            //if at least one is checked to export, lets do it
            if (groupIdList.Count > 0)
            {
                IDataResponse response = service.ExportGroups(new MemberData()
                {
                }, groupIdList, model.AccessToken);

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    if (response.Data != null)
                    {
                        string  data     = response.Data.ToString();
                        dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data);

                        // clear existing data first
                        model.GroupInfo.Clear();
                        int resultCount = jsonData.Count;

                        for (int i = 0; i < resultCount; i++)
                        {
                            dynamic groupInfo      = jsonData[i];
                            dynamic groupName      = groupInfo["group_name"];
                            dynamic groupId        = groupInfo["group_id"];
                            dynamic groupType      = groupInfo["group_management_type"][".tag"];
                            dynamic teamMemberId   = string.Empty;
                            dynamic email          = string.Empty;
                            dynamic emailVerified  = string.Empty;
                            dynamic status         = string.Empty;
                            dynamic membershipType = string.Empty;
                            dynamic joinedOn       = string.Empty;
                            dynamic accessType     = string.Empty;

                            //You can only get member profile info from user managed groups
                            if (groupType == "user_managed")
                            {
                                int memberCount = groupInfo["members"].Count;
                                for (int m = 0; m < memberCount; m++)
                                {
                                    teamMemberId   = groupInfo["members"][m]["profile"]["team_member_id"];
                                    email          = groupInfo["members"][m]["profile"]["email"];
                                    emailVerified  = Convert.ToString(groupInfo["members"][m]["profile"]["email_verified"]);
                                    status         = groupInfo["members"][m]["profile"]["status"][".tag"];
                                    membershipType = groupInfo["members"][m]["profile"]["membership_type"][".tag"];
                                    joinedOn       = Convert.ToString(groupInfo["members"][m]["profile"]["joined_on"]);
                                    accessType     = groupInfo["members"][m]["access_type"][".tag"];

                                    // update model
                                    GroupInfoItemModel lvItem1 = new GroupInfoItemModel()
                                    {
                                        GroupName      = groupName,
                                        GroupId        = groupId,
                                        GroupType      = groupType,
                                        TeamMemberId   = teamMemberId,
                                        Email          = email,
                                        EmailVerified  = emailVerified,
                                        Status         = status,
                                        MembershipType = membershipType,
                                        JoinedOn       = joinedOn,
                                        AccessType     = accessType
                                    };
                                    model.GroupInfo.Add(lvItem1);
                                }
                            }
                            if (groupType != "user_managed")
                            {
                                // update model
                                GroupInfoItemModel lvItem = new GroupInfoItemModel()
                                {
                                    GroupName = groupName,
                                    GroupId   = groupId,
                                    GroupType = groupType
                                };
                                model.GroupInfo.Add(lvItem);
                            }
                        }
                    }
                }
            }
        }