public async Task SetRemoteRepository(IRemoteDataRepository repo) { remoteRepository = repo; cboMyOrg.DataSource = null; cboMyOrg.Items.Clear(); var myOrgs = await remoteRepository.GetMyOrganizations(); cboMyOrg.DataSource = myOrgs; cboMyOrg.DisplayMember = "Name"; cboMyOrg.ValueMember = "RemoteId"; }
public async Task Initialize(IRemoteDataRepository repo, bool checkConnection) { remoteDataRepository = repo; timerControl.Enabled = true; if (checkConnection) { await this.checkConnection(); } SetDownloadFolderLabel(); await LoadRecentFilesAsync(); }
public void SetRemoteDataRepository(IRemoteDataRepository repo) { remoteDataRepository = repo; }
/// <summary> /// This helper method handles the import of partners. /// </summary> /// <param name="results">List of partners retrieved from remote data source</param> /// <param name="displayMessage">Error message if any</param> /// <param name="remoteDataRepository">repository instance to access the remote datasource</param> /// <param name="addNew"></param> /// <returns></returns> public static async Task <ImportPartnerResult> ImportPartners(List <Partner> results, IRemoteDataRepository remoteDataRepository, bool addNew) { results = null; ImportPartnerResult result = new ImportPartnerResult(); try { using (IUnitOfWorkDataProvider dp = AppStorage.GetUnitOfWorkDataProvider()) { var orgIds = dp.Organizations.GetAll().Select(o => o.RemoteID).ToArray(); //passing null for eTags results in only total file count being fetched //instead of downloading files when filing the partner object tree results = await remoteDataRepository.FetchAllPartners(null, (addNew)?null : orgIds); } } catch (Exception fetchExc) { result.Message = "An error occurred fetching partner data."; Logger.Log("MESSAGE", result.Message); Logger.Log(fetchExc); result.Status = ImportStatus.REMOTE_FETCH_ERROR; return(result); } if (results == null || results.Count() == 0) { result.Message = "No partners found."; result.Status = ImportStatus.REMOTE_FETCH_ERROR; return(result); } using (IUnitOfWorkDataProvider dp = AppStorage.GetUnitOfWorkDataProvider()) { try { foreach (var p in dp.Organizations.GetAll()) { if (string.IsNullOrEmpty(p.RemoteID) && !string.IsNullOrEmpty(p.PartnerLink)) { p.RemoteID = await remoteDataRepository.GetRemoteIDFromPartnerLink(p.PartnerLink); dp.Organizations.Update(p); } } dp.SaveChanges(); } catch (Exception exc) { result.Message = "An error occurred checking status of pending partner invitations."; Logger.Log("MESSAGE", result.Message); Logger.Log(exc); result.Status = ImportStatus.REMOTE_FETCH_ERROR; return(result); } try { foreach (var p in results) { Organization existingOrg = null; var matches = dp.Organizations.FindMatching(x => x.RemoteID == p.Id); if (matches.Count() > 0) { existingOrg = matches.ToArray()[0]; } if (existingOrg == null) //try to find a matching partnership link { existingOrg = dp.Organizations.FindSingle(x => x.PartnerLink == p.PartnershipLink); } if (existingOrg == null) //only import new partners { if (addNew) { Organization newOrg = new Organization(); newOrg.Name = p.Name; newOrg.Created = DateTime.Now; newOrg.DataSourceId = 1; newOrg.RemoteID = p.Id; newOrg.MyLinkedOrgId = p.MyLinkedOrgId; newOrg.SharedFiles = p.SharedFileCount; newOrg.PermissionGranted = p.PermissionGranted; newOrg.FilesETag = ""; newOrg.FilesETagDate = DateTime.Now; dp.Organizations.Add(newOrg); } } else { existingOrg.RemoteID = p.Id; existingOrg.MyLinkedOrgId = p.MyLinkedOrgId; existingOrg.SharedFiles = p.SharedFileCount; existingOrg.PermissionGranted = p.PermissionGranted; dp.Organizations.Update(existingOrg); } } dp.SaveChanges(); } catch (Exception exc) { result.Message = "An error occurred saving partners. " + exc.Message; Logger.Log("MESSAGE", result.Message); Logger.Log(exc); result.Status = ImportStatus.SAVE_ERROR; return(result); } } result.Status = ImportStatus.SUCCESS; result.Message = ""; return(result); }