Пример #1
0
        //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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }