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