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); }
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); } }
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); } }