Пример #1
0
        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()));
        }