Ejemplo n.º 1
0
        public ISyncReview Sync(IUserInfo user = null)
        {
            ISync sync = ReadSync() ?? new ApiPropertySync()
            {
                ApplicationName = _licenseSettings.ApplicationName,
                LastAccessed    = DateTime.Now
            };

            PropertySyncJob job    = new PropertySyncJob(_apiPropertyDataProvider, _storageProvider, _apiPropertyProvider, _log);
            ISyncReview     review = null;

            if (sync.IsRunning)
            {
                throw new Exception("Sync is already running");
            }

            try
            {
                review = job.Sync();
            }
            catch (Exception e)
            {
                _log.Exception(e);
                throw;
            }
            finally
            {
                TryEndSync(sync, review, user);
            }

            return(review);
        }
Ejemplo n.º 2
0
        public SyncEmail(IEmailContext emailContext, ISyncReview review, IUserInfo user = null)
            : base(emailContext)
        {
            _review = review ?? throw new ArgumentNullException(nameof(review));

            if (user != null)
            {
                AddLine($"Sync initiated by {user.Email}");
            }

            string summary = _review.GetSummary();

            if (!string.IsNullOrWhiteSpace(summary))
            {
                AddLine(summary);
            }
        }
Ejemplo n.º 3
0
        private void TryEndSync(ISync sync, ISyncReview review, IUserInfo user = null)
        {
            sync.IsRunning    = false;
            sync.LastAccessed = DateTime.Now;

            try
            {
                if (review != null)
                {
                    _emailService.Send(new SyncEmail(_emailContext, review, user));
                }
            }
            catch (Exception e)
            {
                _log.Exception(e);
            }
            finally
            {
                _apiPropertyDataProvider.SaveSync(sync);
            }
        }