private IList<IEntity> Post(ISynchronizationRequest syncRequest) { foreach (var group in syncRequest.Entities.GroupBy(e => e.Type)) { var repository = _repositoryFactory.Resolve(group.Key); repository.SaveAll(group); } return new List<IEntity>(); }
private IList<IEntity> Get(ISynchronizationRequest syncRequest) { var result = new List<IEntity>(); foreach (var type in syncRequest.Types) { var localType = type; var repository = _repositoryFactory.Resolve(localType); result.AddRange(!syncRequest.Restricted ? repository.Get() : repository.Get( syncRequest .Entities .Where(e => e.Type.IsAssignableFrom(localType)) .Select(e => (string)e.Entity.Id) ) ); } return result; }
private SynchronizationResponse Synchronize(ISynchronizationRequest syncRequest) { var response = new SynchronizationResponse { Types = syncRequest.Types }; try { response.Entities = _synchronizationService.Synchronize(syncRequest); response.Status = EarnItStatusCode.Ok; return response; } catch (Exception e) { response.Status = EarnItStatusCode.InternalServerError; response.Message = e.Message; throw; } }
private IList<IEntity> Both(ISynchronizationRequest syncRequest) { Post(syncRequest); return Get(syncRequest); }
public IList<IEntity> Synchronize(ISynchronizationRequest syncRequest) { return _resolver[syncRequest.RequestType](syncRequest); }