//the list will have values if online, otherwise null public async Task <List <Publication> > GetServerPublicationsList() { OnlinePublicationResult onlinePublicationResult = await PublicationUtil.Instance.GetPublicationOnline(); if (onlinePublicationResult.RequestStatus == RequestStatusEnum.Success) { onlinePublicationList = onlinePublicationResult.Publications; } else { onlinePublicationList = null; } return(onlinePublicationList); }
/// <summary> /// Gets the latest publication list. /// </summary> /// <returns>The latest publication list. return null when failed to get online publication</returns> private async Task <List <Publication> > GetLatestPublicationList() { OnlinePublicationResult getOnlinePublicationResult = await PublicationUtil.Instance.GetPublicationOnline(); return(getOnlinePublicationResult.RequestStatus == RequestStatusEnum.Success ? getOnlinePublicationResult.Publications : null); }
/// <summary> /// get remote publications in online mode /// </summary> /// <returns>Task<OnlinePublicationResult></returns> public async Task <OnlinePublicationResult> GetPublicationOnline() { OnlinePublicationResult onlinePublicationResult = new OnlinePublicationResult { RequestStatus = RequestStatusEnum.Failure }; //onlinePublicationResult.Publications = GetPublicationOffline(); //onlinePublicationResult.RequestStatus = RequestStatusEnum.Success; //return onlinePublicationResult; try { if (Interlocked.Increment(ref GetPublicationOnlineFlag) == 1) { var pingSuccess = await connectionMonitor.PingService(null); if (!pingSuccess) { return(onlinePublicationResult); } // await publicationDomainService.RemoveDlBooksFromServer(GlobalAccess.Instance.UserCredential); var onlineDlBooks = await publicationDomainService.GetOnlineDlBooks(GlobalAccess.Instance.Email); var localDlBooks = publicationAccess.GetAllDlBooks(GlobalAccess.Instance.UserCredential); var exceptDlBooks = GetLocalDlBooksExceptOnlineDlBooks(onlineDlBooks, localDlBooks); var additionalDlBooks = publicationDomainService.GetAdditionalDlBooks(exceptDlBooks); onlinePublicationResult.Publications = additionalDlBooks.ToPublications(); var toBeDeletedDlBooks = exceptDlBooks.Except(additionalDlBooks, new DlBookEqualityComparer()); await publicationDomainService.DeleteDlBooksByEreader(toBeDeletedDlBooks); if (toBeDeletedDlBooks != null && toBeDeletedDlBooks.Count() > 0) { if (RecenthistoryChanged != null) { RecenthistoryChanged(); } } bool noReturnFromServer = (onlineDlBooks == null || onlineDlBooks.Count == 0); if (noReturnFromServer) {//user did not Assign dlbook onlinePublicationResult.RequestStatus = RequestStatusEnum.Success; return(onlinePublicationResult); } var updatedPublications = publicationDomainService.UpdateLocalDlBooks(onlineDlBooks, localDlBooks); onlinePublicationResult.Publications.AddRange(updatedPublications); onlinePublicationResult.Publications = onlinePublicationResult.Publications .OrderBy(p => p.OrderBy) .ThenByDescending(p => p.RowId) .ToList(); onlinePublicationResult.RequestStatus = RequestStatusEnum.Success; await DomainEvents.Publish(new GetPublicationOnlineEvent()); } } catch (Exception ex) { Logger.Log("GetPublicationOnline" + ex.ToString()); } finally { Interlocked.Decrement(ref GetPublicationOnlineFlag); } return(onlinePublicationResult); }