public async Task <IEnumerable <int> > GetCategoriesIds(string textForCategorizing) { var categoriesIdsToReturn = new List <int>(); try { var keyPhrases = await _keyPhrasesAnalyzer.AnalyzeText("pl", textForCategorizing); var availableCategories = _categoryRepository.GetAllCategories(); var categoriesWhichAlreadyExistInDatabase = availableCategories .Where(ac => keyPhrases.Select(k => k.ToLower()).Contains(ac.Name.ToLower())) .ToList(); var categoriesToAdd = keyPhrases .Except(categoriesWhichAlreadyExistInDatabase.Select(c => c.Name), StringComparer.OrdinalIgnoreCase) .Select(k => new Category() { Name = k }) .ToList(); var newlyAddedCategories = _categoryRepository.AddCategories(categoriesToAdd); categoriesIdsToReturn.AddRange(categoriesWhichAlreadyExistInDatabase.Select(c => c.CategoryId)); categoriesIdsToReturn.AddRange(newlyAddedCategories); return(categoriesIdsToReturn); } catch (System.Exception ex) { _logger.LogError($"Error occured during adding categories: {ex.ToString()}"); return(null); } }
public async Task <User> Add(User user) { user.Password = HashPassword(user.Password); var newUser = await _userRepo.AddUser(user); var categories = new Category[] { new Category { UserID = newUser.ID, Name = "Dinner", Order = 0 }, new Category { UserID = newUser.ID, Name = "Lunch", Order = 1 }, new Category { UserID = newUser.ID, Name = "Breakfast", Order = 2 }, new Category { UserID = newUser.ID, Name = "Fast Meals", Order = 3 }, new Category { UserID = newUser.ID, Name = "Salads", Order = 4 }, }; await _categoryRepo.AddCategories(categories); return(newUser); }