public async Task <IEnumerable <GroceryDto> > Sync(List <UpdateGroceryDto> groceries) { Parallel.ForEach(groceries, async(grocery) => { switch (grocery.Action) { case GroceryActions.Delete: var gro = await _groceryRepository.GetByUId(grocery.GroceryId); if (gro != null && gro.ModifiedOn.Value.Ticks == grocery.ModifiedOn.Value.Ticks) { await _groceryRepository.DeleteByUId(grocery.GroceryId); } break; case GroceryActions.Add: var dbGrocery = _mapper.Map <Grocery>(grocery); await _groceryRepository.Save(dbGrocery); break; case GroceryActions.Update: var groc = await _groceryRepository.GetByUId(grocery.GroceryId); if (groc != null) { groc.Checked = grocery.Checked; groc.Description = grocery.Description; await _groceryRepository.Save(groc); } break; case GroceryActions.Nothing: default: break; } }); return(_mapper.Map <IEnumerable <GroceryDto> >(await _groceryRepository.GetAll())); }