public bool LoadInputFile(IProvisioningModel model, IMainPresenter presenter) { bool loaded = true; try { FileInfo fInfo = new FileInfo(model.InputFilePath); if (fInfo.Exists) { // try load. model.Members.Clear(); CsvConfiguration config = new CsvConfiguration() { HasHeaderRecord = false }; using (CsvReader reader = new CsvReader(new StreamReader(fInfo.FullName), config)) { while (reader.Read()) { try { MemberListViewItemModel lvItem = new MemberListViewItemModel() { Email = reader.GetField<string>(0), FirstName = reader.GetField<string>(1), LastName = reader.GetField<string>(2), IsChecked = true }; model.Members.Add(lvItem); } catch { throw new InvalidDataException(ErrorMessages.INVALID_CSV_DATA); } } if (model.Members.Any()) { loaded = true; } } } else { throw new InvalidDataException(ErrorMessages.MISSING_CSV_FILE); } } catch (Exception e) { // error message. SyncContext.Post(delegate { presenter.ShowErrorMessage(e.Message, ErrorMessages.DLG_DEFAULT_TITLE); presenter.UpdateProgressInfo(""); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } return loaded; }
private void SearchMembersGetUsage(IProvisioningModel model) { string UserAccessToken = ApplicationResource.DefaultAccessToken; if (!string.IsNullOrEmpty(UserAccessToken)) { MemberServices serviceUsage = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceUsage.GetUsageUrl = ApplicationResource.ActionGetUsage; List<string[]> members = new List<string[]>(); MemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListMembersUrl = ApplicationResource.ActionListMembers; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListMembers(new MemberData() { SearchLimit = ApplicationResource.SearchDefaultLimit }, UserAccessToken); 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.Members.Clear(); int resultCount = jsonData["members"].Count; for (int i = 0; i < resultCount; i++) { dynamic emailObj = jsonData["members"][i]["profile"]["email"]; dynamic firstNameObj = jsonData["members"][i]["profile"]["name"]["given_name"]; dynamic lastNameObj = jsonData["members"][i]["profile"]["name"]["surname"]; dynamic idObj = jsonData["members"][i]["profile"]["team_member_id"]; string teamId = idObj.Value as string; string email = emailObj.Value as string; string firstName = firstNameObj.Value as string; string lastName = lastNameObj.Value as string; IDataResponse responseUsage = serviceUsage.GetUsage(new MemberData() { MemberId = teamId }, UserAccessToken); UInt64 used = 0; if (responseUsage.StatusCode == HttpStatusCode.OK) { if (responseUsage.Data != null) { string dataUsage = responseUsage.Data.ToString(); dynamic jsonDataUsage = JsonConvert.DeserializeObject<dynamic>(dataUsage); used = jsonDataUsage["used"]; } } // update model MemberListViewItemModel lvItem = new MemberListViewItemModel() { Email = email, MemberId = teamId, FirstName = firstName, LastName = lastName, Usage = FileUtil.FormatFileSizeMB(used) }; model.Members.Add(lvItem); } //if the memberID count is above limit - default 1000 we need to grab the cursor and call continue bool hasMore = jsonData["has_more"]; string cursor = jsonData["cursor"]; while (hasMore) { service.ListMembersContinuationUrl = ApplicationResource.ActionListMembersContinuation; IDataResponse responseCont = service.ListMembersContinuation(new MemberData() { Cursor = cursor }, UserAccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject<dynamic>(dataCont); int resultContCount = jsonDataCont["members"].Count; for (int i = 0; i < resultContCount; i++) { dynamic emailObj = jsonDataCont["members"][i]["profile"]["email"]; dynamic firstNameObj = jsonDataCont["members"][i]["profile"]["name"]["given_name"]; dynamic lastNameObj = jsonDataCont["members"][i]["profile"]["name"]["surname"]; dynamic idObj = jsonData["members"][i]["profile"]["team_member_id"]; string teamId = idObj.Value as string; string email = emailObj.Value as string; string firstName = firstNameObj.Value as string; string lastName = lastNameObj.Value as string; IDataResponse responseUsage = serviceUsage.GetUsage(new MemberData() { MemberId = teamId }, UserAccessToken); decimal used = 0; if (responseUsage.StatusCode == HttpStatusCode.OK) { if (responseUsage.Data != null) { string dataUsage = responseUsage.Data.ToString(); dynamic jsonDataUsage = JsonConvert.DeserializeObject<dynamic>(dataUsage); used = jsonDataUsage["used"]; } } // update model MemberListViewItemModel lvItem = new MemberListViewItemModel() { Email = email, MemberId = teamId, FirstName = firstName, LastName = lastName, Usage = FileUtil.FormatFileSizeMB(used) }; model.Members.Add(lvItem); } hasMore = jsonDataCont["has_more"]; cursor = jsonDataCont["cursor"]; } } } } }
private string UpdateProfile(IProvisioningModel model, IMainPresenter presenter) { string errorMessage = string.Empty; IMemberServices service = service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.SetProfileUrl = ApplicationResource.ActionSetProfile; service.UserAgentVersion = ApplicationResource.UserAgent; try { foreach (MemberListViewItemModel item in model.Members.Where(m => m.IsChecked).ToList()) { IServiceResponse response = service.SetProfile(new MemberData() { Email = item.Email, NewEmail = item.NewEmail, NewExternalId = item.NewExternalId }, model.AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Updated profile for: {0}", item.Email)); }, null); } } else if ((response.Message).Contains("user_not_found")) { errorMessage = ErrorMessages.USER_NOT_FOUND; } else if ((response.Message).Contains("user_not_in_team")) { errorMessage = ErrorMessages.USER_NOT_IN_TEAM; } else { errorMessage = ErrorMessages.FAILED_TO_UPDATE_PROFILE; } } } catch(Exception) { //just catch the exception and return error message SyncContext.Post(delegate { presenter.ShowErrorMessage(ErrorMessages.FAILED_TO_UPDATE_PROFILE, ErrorMessages.DLG_DEFAULT_TITLE); presenter.UpdateProgressInfo(""); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } return errorMessage; }
private string UnsuspendMember(IProvisioningModel model, IMainPresenter presenter) { string errorMessage = string.Empty; IMemberServices service = service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.UnSuspendMemberUrl = ApplicationResource.ActionUnsuspendMember; service.UserAgentVersion = ApplicationResource.UserAgent; try { foreach (MemberListViewItemModel item in model.Members.Where(m => m.IsChecked).ToList()) { IServiceResponse response = service.UnSuspendMember(new MemberData() { Email = item.Email }, model.AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Unsuspended Member: {0}", item.Email)); }, null); } } else { errorMessage = ErrorMessages.FAILED_TO_UNSUSPEND_MEMBER; } } } catch (Exception) { // error message. SyncContext.Post(delegate { presenter.ShowErrorMessage(ErrorMessages.FAILED_TO_UNSUSPEND_MEMBER, ErrorMessages.DLG_DEFAULT_TITLE); presenter.UpdateProgressInfo(""); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } return errorMessage; }
public ProvisioningPresenter(IProvisioningModel model, IProvisioningView view) : base(model, view) { }
private string ProvisionRoles(IProvisioningModel model, IMainPresenter presenter) { string errorMessage = string.Empty; IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.AddMemberUrl = ApplicationResource.ActionAddMember; service.UserAgentVersion = ApplicationResource.UserAgent; try { foreach (MemberListViewItemModel item in model.Members.Where(m => m.IsChecked).ToList()) { IServiceResponse response = service.AddMember(new MemberData() { Email = item.Email, FirstName = item.FirstName, LastName = item.LastName, SendWelcomeEmail = model.SendWelcomeEmail, ProvisionStatus = item.ProvisionStatus, RoleName = model.SelectedRole }, model.AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (SyncContext != null) { SyncContext.Post(delegate { if (response.Message.Contains("success")) { item.ProvisionStatus = "Provisioned successfully."; presenter.UpdateProgressInfo(string.Format("Added Member: {0}: {1} {2}", item.Email, item.FirstName, item.LastName)); } if (response.Message.Contains("team_license_limit")) { item.ProvisionStatus = "Team is already full.The organization has no available licenses."; presenter.UpdateProgressInfo("Team is already full. The organization has no available licenses."); } if (response.Message.Contains("free_team_member_limit_reached")) { item.ProvisionStatus = "Team is already full. The free team member limit has been reached."; presenter.UpdateProgressInfo("Team is already full. The free team member limit has been reached."); } if (response.Message.Contains("user_already_on_team")) { item.ProvisionStatus = "User is already on this team. The provided email address is associated with a user who is already a member of (including in recoverable state) or invited to the team."; presenter.UpdateProgressInfo("User is already on this team. The provided email address is associated with a user who is already a member of (including in recoverable state) or invited to the team."); } if (response.Message.Contains("user_on_another_team")) { item.ProvisionStatus = "User is already on another team. The provided email address is associated with a user that is already a member or invited to another team."; presenter.UpdateProgressInfo("User is already on another team. The provided email address is associated with a user that is already a member or invited to another team."); } if (response.Message.Contains("user_already_paired")) { item.ProvisionStatus = "User is already paired."; presenter.UpdateProgressInfo("User is already paired."); } if (response.Message.Contains("user_migration_failed")) { item.ProvisionStatus = "User migration has failed."; presenter.UpdateProgressInfo("User migration has failed."); } if (response.Message.Contains("duplicate_external_member_id")) { item.ProvisionStatus = "A user with the given external member ID already exists on the team (including in recoverable state)."; presenter.UpdateProgressInfo("A user with the given external member ID already exists on the team (including in recoverable state)."); } if (response.Message.Contains("user_creation_failed")) { item.ProvisionStatus = "User creation has failed."; presenter.UpdateProgressInfo("User creation has failed."); } }, null); } } else { errorMessage = ErrorMessages.FAILED_TO_ADD_MEMBER; } } } catch (Exception) { // error message. SyncContext.Post(delegate { presenter.ShowErrorMessage(ErrorMessages.FAILED_TO_ADD_MEMBER, ErrorMessages.DLG_DEFAULT_TITLE); presenter.UpdateProgressInfo(""); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } return errorMessage; }