public async Task <BaseOutput <object> > UpdateUserAllergies(string uid, List <int> allergyIds) { var user = await _dbContext.Users .Where(u => u.UserUID == uid).SingleOrDefaultAsync(); if (user == null) { return new BaseOutput <object> { IsSuccessful = false, Message = $"User with uid = {uid} not found", Payload = "" } } ; //remove all first List <UserAllergyEntity> removeUserAllergyEntities = new List <UserAllergyEntity>(); var existList = await _dbContext.UserAllergies .Where(u => u.UserId == user.Id) .ToListAsync(); foreach (var notExist in existList) { if (!allergyIds.Contains(notExist.AllergyId)) { removeUserAllergyEntities.Add(notExist); } } _dbContext.UserAllergies.RemoveRange(removeUserAllergyEntities); await _dbContext.SaveChangesAsync(); //add new ones List <UserAllergyEntity> userAllergyEntities = new List <UserAllergyEntity>(); foreach (var id in allergyIds) { var exist = await _dbContext.UserAllergies .Where(u => u.AllergyId == id && u.UserId == user.Id).SingleOrDefaultAsync(); if (exist == null) { userAllergyEntities.Add(new UserAllergyEntity { UserId = user.Id, AllergyId = id }); } } _dbContext.UserAllergies.AddRange(userAllergyEntities); await _dbContext.SaveChangesAsync(); return(new BaseOutput <object> { IsSuccessful = true, Message = "Allegies updated.", Payload = allergyIds }); } }
public async Task <BaseOutput <string> > CreateAddictived(string addictive) { try { //1.serialize the product var addictiveObj = JsonConvert.DeserializeObject <OpenFoodFactAddictiveDto>(addictive); foreach (var tag in addictiveObj.tags) { var oldAddictive = _dbContext.Additives .Where(a => a.OriginalId == tag.id).SingleOrDefault(); if (oldAddictive != null) { oldAddictive.Url = tag.url; oldAddictive.Name = tag.name; oldAddictive.OriginalId = tag.id; oldAddictive.Products = tag.products; oldAddictive.SameAs = (tag.sameAs != null) ? string.Join(",", tag.sameAs) : null; _dbContext.Additives.Update(oldAddictive); } else { var newAddictive = new AdditiveEntity { Url = tag.url, Name = tag.name, OriginalId = tag.id, Products = tag.products, SameAs = (tag.sameAs != null) ? string.Join(",", tag.sameAs) : null }; _dbContext.Additives.Add(newAddictive); } } await _dbContext.SaveChangesAsync(); //4.Return the save data from db return(new BaseOutput <string> { IsSuccessful = true, Message = "addictives created", Payload = JsonConvert.SerializeObject(addictiveObj) }); } catch (Exception ex) { throw ex; } }
public async Task <BaseOutput <object> > CreateUserProfile(UserInput input) { if (await UserExists(input.Provider, input.UserUID)) { return(await GetUserByUid(input.UserUID)); } var inputStr = JsonConvert.SerializeObject(input); var userEntity = JsonConvert.DeserializeObject <UserEntity>(inputStr); _dbContext.Users.Add(userEntity); await _dbContext.SaveChangesAsync(); var userId = userEntity.Id; if (input.AllergyIds.Any()) { var listOfUserAllergyEntity = new List <UserAllergyEntity>(); foreach (var id in input.AllergyIds) { var userAllergy = new UserAllergyEntity { UserId = userId, AllergyId = id }; listOfUserAllergyEntity.Add(userAllergy); } _dbContext.UserAllergies.AddRange(listOfUserAllergyEntity); await _dbContext.SaveChangesAsync(); } var userStr = JsonConvert.SerializeObject(userEntity); var user = JsonConvert.DeserializeObject <UserDto>(userStr); return(new BaseOutput <object> { IsSuccessful = true, Message = "user created", Payload = user }); }
public async Task <BaseOutput <object> > CreateNews(string news) { var newsObj = JsonConvert.DeserializeObject <NewsOrgDto>(news); if (!newsObj.status.Equals("ok")) { return new BaseOutput <object> { IsSuccessful = false, Message = "news articles not found.", Payload = newsObj } } ; foreach (var article in newsObj.articles) { var newsArticleEntity = new NewsArticleEntity { Source = article.source.name, Author = article.author, Title = article.title, Description = article.description, Url = article.url, UrlToImage = article.urlToImage, PublishedAt = article.publishedAt, Content = article.content }; _dbContext.NewsArticles.Add(newsArticleEntity); } await _dbContext.SaveChangesAsync(); return(new BaseOutput <object> { IsSuccessful = true, Message = "product created", Payload = newsObj }); }
public async Task <BaseOutput <object> > CreateProduct(string product) { //1.serialize the product var productObj = JsonConvert.DeserializeObject <OpenFoodFactProductInfoDto>(product); if (productObj.status.Equals(0)) { return new BaseOutput <object> { IsSuccessful = false, Message = "product not found.", Payload = product } } ; //2.validate the if main fields are present //3.Save data to db //new product var newProductObj = new ProductEntity { OriginalId = productObj.product.id, Barcode = productObj.code, ProductName = productObj.product.product_name, Brands = productObj.product.brands, NutritionGrades = productObj.product.nutrition_grades, ImageUrl = productObj.product.image_url, Thumbnail = productObj.product.image_thumb_url, KeyWords = string.Join(",", productObj.product._keywords), NutrientLevels = JsonConvert.SerializeObject(productObj.product.nutrient_levels), Quantity = productObj.product.quantity, Creator = productObj.product.creator, Nutriments = JsonConvert.SerializeObject(productObj.product.nutriments), Categories = productObj.product.categories, IngredientText = productObj.product.ingredients_text, Additives = string.Join(",", productObj.product.additives_tags), Allergens = string.Join(",", productObj.product.allergens_tags), RawJson = product }; _dbContext.Products.Add(newProductObj); await _dbContext.SaveChangesAsync(); var productId = newProductObj.Id; //new ingredients var listOfIngredientEntity = new List <IngredientEntity>(); foreach (var ingredient in productObj.product.ingredients) { var newIngredientObj = new IngredientEntity { ProductId = productId, Vegetarian = ingredient.vegetarian, Vegan = ingredient.vegan, Text = ingredient.text, IngreId = ingredient.id, Percent = ingredient.percent, Rank = ingredient.rank, HasSubIngredients = ingredient.has_sub_ingredients }; listOfIngredientEntity.Add(newIngredientObj); } _dbContext.Ingredients.AddRange(listOfIngredientEntity); await _dbContext.SaveChangesAsync(); //new allergy //4.Return the save data from db return(new BaseOutput <object> { IsSuccessful = true, Message = "product created", Payload = newProductObj }); }