public void ProcessChanges() { var currentUserId = CurrentConnection.CurrentUser?.Id ?? AcmanConstants.User.AcmanSUId; var now = AcmanHelper.GetCurrentDateTime(); var addedEntries = ChangeTracker.Entries() .Where(x => (x.State == EntityState.Added || x.State == EntityState.Modified)); foreach (var entry in addedEntries) { var entity = entry.Entity as IEntity; bool isIntegration = false; if (entry.Entity.GetType().GetInterface("ISynchronizedEntity") != null) { isIntegration = (entry.Entity as ISynchronizedEntity).IsIntegration; (entry.Entity as ISynchronizedEntity).IsSynchronized = isIntegration; } entry.State = AcmanHelper.ConvertToEntityState(entity.EntityState); if (entry.State == EntityState.Added) { entity.CreatedById = currentUserId; entity.CreatedOn = now; } if (entry.State != EntityState.Unchanged) { entity.ModifiedById = currentUserId; entity.ModifiedOn = now; } } }
public void SyncUserActivityes(User user, DateTime startDate) { ICollection <Activity> remoteActivityes = _activityBpmOdataRepository.GetAllChangedBetweenDatesForUser(startDate, _endDate, user); _info += "RemoteActivityes: " + remoteActivityes.Count.ToString() + "; "; ICollection <Activity> acmanChangedActivityes = _activityRepository.GetUnsyncedForUser(user); foreach (var remoteActivity in remoteActivityes) { var acmanActivity = acmanChangedActivityes .Where(a => a.EndSystemRecordId == remoteActivity.EndSystemRecordId) .FirstOrDefault() ?? _activityRepository.GetByRemoteRecordId(remoteActivity.EndSystemRecordId); if (acmanActivity != null) { if (acmanActivity.ModifiedOn < remoteActivity.ModifiedOn) { acmanChangedActivityes.Remove(acmanActivity); AcmanHelper.MergeSyncedObjects(acmanActivity, remoteActivity); _activityRepository.Edit(acmanActivity); } } else { _activityRepository.Add(remoteActivity); } } _info += "AcmanActivityes: " + acmanChangedActivityes.Count.ToString() + "; "; SyncAcmanActivity(acmanChangedActivityes); }
public void Sync() { try { ICollection <User> bpmWorkUsers = _userRepository.GetUsersByEndSystem(_bpmonlineEndSystemId); _info += "[Users for sync: " + bpmWorkUsers.Count.ToString() + "] "; foreach (User user in bpmWorkUsers) { SyncUser(user); } } catch (Exception e) { _info = "Error: " + e.Message + " " + _info; } finally { _synchronizationRepository.Add( new Synchronization { EndSystemId = _bpmonlineEndSystemId, StartPeriod = _startDate, EndPeriod = _endDate, Info = _info, Duration = (int)(AcmanHelper.GetCurrentDateTime() - _endDate).TotalSeconds } ); } }
public void Sync_Test() { using (var context = new AcManContext(OptionsRandom)) { //MsSql2016Options var userId = TestDemoData.CreateTestData(context); var bpm = DemoTS_ODBase; //MsSqlMKODBase var userRepository = new UserRepository(context); var activityRepository = new ActivityRepository(context); var synchronizationRepository = new SynchronizationRepository(context); var bpmOdataConverter = new BpmOdataConverter(); var activityBpmOdataRepository = new ActivityBpmOdataRepository(bpm, bpmOdataConverter); var bpmonlineSyncStrategy = new BpmonlineSyncStrategy( userRepository, activityRepository, synchronizationRepository, activityBpmOdataRepository ); var startCount = activityRepository.GetAll().Count; var remoteActivity = new Activity { UserId = userId, Caption = "[Acman] Test remote activity " + AcmanHelper.GetCurrentDateTime().ToString() }; remoteActivity.EndSystemRecordId = activityBpmOdataRepository.Add(remoteActivity); bpmonlineSyncStrategy.Sync(); var endCount = activityRepository.GetAll().Count; Assert.IsTrue(endCount > startCount); activityBpmOdataRepository.Remove(remoteActivity); } }
public DateTime GetLastSyncDate() { return (_context.Synchronizations.Any() ? _context.Synchronizations.Max(p => p.EndPeriod) : AcmanHelper.GetCurrentDateTime().AddDays(-7)); }
public Activity GetCurrent() { return(_context.Activities.Where( s => s.Start <= AcmanHelper.GetCurrentDateTime() && s.Status == ActivityStatus.InProgress ).OrderByDescending(s => s.ModifiedOn) .FirstOrDefault()); }
public Activity Pause() { CurrentActivity.Status = ActivityStatus.InPause; CurrentActivity.End = AcmanHelper.GetCurrentDateTime(); Repository.Edit(CurrentActivity); SyncStrategy.SyncAcmanActivity(CurrentActivity); return(CurrentActivity); }
public static Guid CreateActivityToUser(AcManContext context, Guid userId) { var activityRepository = new ActivityRepository(context); var activity = new Activity { UserId = userId, Caption = "[Acman] Test activity " + AcmanHelper.GetCurrentDateTime().ToString(), EndSystemRecordId = new Guid("8cb830fb-50d8-44ad-819f-133b713fce42"), EntityState = AcmanEntityState.Added }; return(activityRepository.Add(activity)); }
public Activity Stop() { if (CurrentActivity == null) { return(null); } CurrentActivity.Status = ActivityStatus.Done; CurrentActivity.End = AcmanHelper.GetCurrentDateTime(); Repository.Edit(CurrentActivity); SyncStrategy.SyncAcmanActivity(CurrentActivity); return(CurrentActivity); }
public void SyncUser(User user) { try { _info += "[User: "******"; "; SyncUserActivityes(user, user.LastSyncDate ?? AcmanHelper.GetCurrentDateTime().AddDays(-7)); user.LastSyncDate = _endDate; _userRepository.Edit(user); } catch (Exception e) { _info = "Error during sync user: "******" " + _info; } finally { _info += "]; "; } }
public Activity StopById(Guid id) { var activity = Repository.Get(id); activity.Status = ActivityStatus.Done; activity.End = AcmanHelper.GetCurrentDateTime(); if (activity.Start == null) { activity.Start = activity.End; } Repository.Edit(activity); SyncStrategy.SyncAcmanActivity(activity); return(activity); }
public Activity ContinueById(Guid id) { ICollection <Activity> activities = Repository.GetByStatus(ActivityStatus.InProgress); Activity activity = Repository.Get(id); activity.Status = ActivityStatus.InProgress; if (activity.Start == null || activity.Start > AcmanHelper.GetCurrentDateTime()) { activity.Start = AcmanHelper.GetCurrentDateTime(); } activities.ToList().ForEach(a => a.Status = ActivityStatus.InPause); activities.Add(activity); Repository.Edit(activities); SyncStrategy.SyncAcmanActivity(activities); return(activity); }
public BpmonlineSyncStrategy( UserRepository userRepository, ActivityRepository activityRepository, SynchronizationRepository synchronizationRepository, ActivityBpmOdataRepository activityBpmOdataRepository) { _userRepository = userRepository; _activityRepository = activityRepository; _activityRepository.IsIntegration = true; _synchronizationRepository = synchronizationRepository; _activityBpmOdataRepository = activityBpmOdataRepository; _bpmonlineEndSystemId = AcmanConstants.EndSystem.BpmonlineWorkTsi; _startDate = _synchronizationRepository.GetLastSyncDate(); _endDate = AcmanHelper.GetCurrentDateTime(); _info = string.Empty; }