Example #1
0
        public async Task <bool> ToggleFavorite(string id)
        {
            var userBrew = await GetUserBrew(id);

            if (userBrew != null)
            {
                m_db.UserBrews.Remove(userBrew);
                await m_db.SaveChangesAsync();

                return(true);
            }
            ;

            var brew = await m_db.ProductGtins.FindAsync(id);

            var user = await m_db.Users.FindAsync(m_userService.CurrentUser);

            if (brew == null || user == null)
            {
                return(false);
            }

            var appUserBrew = new UserBrew
            {
                UserId    = user.Id,
                ProductId = brew.ProductId
            };

            m_db.Add(appUserBrew);
            await m_db.SaveChangesAsync();

            return(true);
        }
        public async Task <UserValidationResponse> CreateOAuthUser(TokenResponse tokenResponse)
        {
            var handler = new JwtSecurityTokenHandler();
            var idToken = handler.ReadJwtToken(tokenResponse.IdToken);

            var user = await Find(idToken.Subject);

            if (user != null)
            {
                return(new UserValidationResponse(true, UserValidationResponseMessage.UserExists, tokenResponse.IdToken,
                                                  tokenResponse.RefreshToken));
            }

            await m_brewContext.Users.AddAsync(new User { Id = idToken.Subject });

            await m_brewContext.SaveChangesAsync();

            return(new UserValidationResponse(true, UserValidationResponseMessage.UserCreated, tokenResponse.IdToken,
                                              tokenResponse.RefreshToken));
        }
Example #3
0
        private async Task UpdateProducts(List <AlcoholicEntity> alcoholicEntities)
        {
            var newBrews = new List <AlcoholicEntity>();

            foreach (var alcoholicEntity in alcoholicEntities)
            {
                var find = await m_db.AlcoholicEntities.FindAsync(alcoholicEntity.Basic.ProductId);

                var brew = await m_db.ProductGtins.FindAsync(alcoholicEntity.Basic.ProductId);

                if (find == null)
                {
                    newBrews.Add(alcoholicEntity);
                }
                else
                {
                    alcoholicEntity.ProductId = alcoholicEntity.Basic.ProductId;
                    find = alcoholicEntity;
                    brew = CreateBrew(alcoholicEntity);
                }
            }

            await m_db.SaveChangesAsync();

            await AddAllToDb(newBrews);
        }
Example #4
0
        public async Task SaveEventAndCatalogContextChangesAsync(IntegrationEvent evt)
        {
            _logger.LogInformation("----- CatalogIntegrationEventService - Saving changes and integrationEvent: {IntegrationEventId}", evt.Id);

            //Use of an EF Core resiliency strategy when using multiple DbContexts within an explicit BeginTransaction():
            //See: https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-resiliency
            await ResilientTransaction.New(_brewContext).ExecuteAsync(async() =>
            {
                // Achieving atomicity between original catalog database operation and the IntegrationEventLog thanks to a local transaction
                await _brewContext.SaveChangesAsync();
                await _eventLogService.SaveEventAsync(evt, _brewContext.Database.CurrentTransaction);
            });
        }