Example #1
0
        /// <summary>
        /// get All Annotations
        /// </summary>
        /// <returns></returns>
        public List <Annotation> GetAnnotations()
        {
            var dlBooks = publicationAccess.GetAllDlBooks(GlobalAccess.Instance.UserCredential);

            var annotations = annotationAccess.GetAnnotations(GlobalAccess.Instance.Email, GlobalAccess.Instance.ServiceCode);

            return(AnnotationFactory.CreateAnnotations(annotations, this.tagDomainService.Tags, dlBooks));
        }
 public void RequestAllDlBooksSync()
 {
     if (GlobalAccess.Instance.UserCredential != null)
     {
         var dlBooks = publicationAccess.GetAllDlBooks(GlobalAccess.Instance.UserCredential);
         IAnnotationSyncTask task = new AnnotationSyncTask(dlBooks);
         RequestAnnotationSync(task);
     }
 }
Example #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);
        }