Beispiel #1
0
        public async Task <DataResult <bool> > RemoveCategoryAsync(int id)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var entity = await context.Categories.FindAsync(id);

                    if (entity == null)
                    {
                        return(new DataResult <bool>(null, "CATEGORY_NOT_EXISTS"));
                    }

                    context.Remove(entity);

                    await context.SaveChangesAsync();

                    return(new DataResult <bool>(true));
                }
                catch (Exception ex)
                {
                    return(new DataResult <bool>(ex, ex.Message));
                }
            }
        }
Beispiel #2
0
        public async Task <DataResult <UserModel> > GetUserByIdAsync(int id)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var user = await context.Users
                               .Include(u => u.Profile)
                               .ThenInclude(p => p.Categories)
                               .FirstOrDefaultAsync(u => u.Id == id);

                    if (user == null)
                    {
                        return(new DataResult <UserModel>(null, "USER_NOT_EXISTS"));
                    }
                    ;

                    return(new DataResult <UserModel> (user));
                }
                catch (Exception ex)
                {
                    return(new DataResult <UserModel> (ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #3
0
        public async Task <DataResult <CategoryModel> > AddCategoryAsync(CategoryAddDto category)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var newCategory = new CategoryModel()
                    {
                        Name        = category.Name,
                        Description = category.Description,
                        Words       = new List <WordModel>(),
                        ProfileId   = category.ProfileId
                    };

                    var categoryWithSameName = await context.Categories.FirstOrDefaultAsync(c => c.Name == category.Name && c.ProfileId == category.ProfileId);

                    if (categoryWithSameName == null)
                    {
                        var added = await context.Categories.AddAsync(newCategory);

                        await context.SaveChangesAsync();

                        return(new DataResult <CategoryModel>(added.Entity));
                    }
                    else
                    {
                        return(new DataResult <CategoryModel>(null, "CATEGORY_WITH_SAME_NAME_AlREADY_EXISTS"));
                    }
                }
                catch (Exception ex)
                {
                    return(new DataResult <CategoryModel>(ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #4
0
        public async Task <DataResult <CategoryModel> > GetCategoryByIdAsync(int id)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var category = await context.Categories
                                   .Include(c => c.Words)
                                   .ThenInclude(w => w.Lexeme)
                                   .Include(c => c.Words)
                                   .ThenInclude(w => w.Transcription)
                                   .Include(c => c.Words)
                                   .ThenInclude(w => w.Translation)
                                   .FirstOrDefaultAsync(c => c.Id == id);

                    if (category == null)
                    {
                        return(new DataResult <CategoryModel>(null, "CATEGORY_NOT_EXISTS"));
                    }
                    ;

                    return(new DataResult <CategoryModel>(category));
                }
                catch (Exception ex)
                {
                    return(new DataResult <CategoryModel>(ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #5
0
        public async Task <DataResult <WordModel> > GetWordByIdAsync(int id)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var word = await context.Words
                               .Include(w => w.Lexeme)
                               .Include(w => w.Transcription)
                               .Include(w => w.Translation)
                               .FirstOrDefaultAsync(c => c.Id == id);

                    if (word == null)
                    {
                        return(new DataResult <WordModel>(null, "WORD_NOT_EXISTS"));
                    }
                    ;

                    return(new DataResult <WordModel>(word));
                }
                catch (Exception ex)
                {
                    return(new DataResult <WordModel>(ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #6
0
        public async Task <DataResult <WordModel> > AddWordAsync(WordAddDto word)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var newWord = new WordModel()
                    {
                        Lexeme = new LexemeModel()
                        {
                            Lexeme = word.Lexeme
                        },
                        Transcription = new TranscriptionModel()
                        {
                            Transcription = word.Transcription
                        },
                        Translation = new TranslationModel()
                        {
                            Translation = word.Translation
                        },
                        CategoryId = word.CategoryId
                    };

                    CategoryDao categoryDao = new CategoryDao();

                    var sameWords = categoryDao.GetCategoryByIdAsync(word.CategoryId).Result.Data.Words.Where(w => w.Lexeme.Lexeme == word.Lexeme);

                    if (sameWords.Count() == 0)
                    {
                        var added = await context.Words.AddAsync(newWord);

                        await context.SaveChangesAsync();

                        return(new DataResult <WordModel>(added.Entity));
                    }
                    else
                    {
                        return(new DataResult <WordModel>(null, "WORD_WITH_SAME_LEXEM_AlREADY_EXISTS"));
                    }
                }
                catch (Exception ex)
                {
                    return(new DataResult <WordModel>(ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #7
0
        public async Task <DataResult <IEnumerable <UserModel> > > GetAllUsersAsync()
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var users = await context.Users
                                .Include(u => u.Profile)
                                .ToListAsync();

                    return(new DataResult <IEnumerable <UserModel> > (users));
                }
                catch (Exception ex)
                {
                    return(new DataResult <IEnumerable <UserModel> > (ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #8
0
        public async Task <DataResult <UserModel> > AddUserAsync(UserAuthDto user)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var newUser = new UserModel()
                    {
                        Email          = user.Email,
                        Password       = user.Password,
                        ActivationCode = ActivationHelper.GetActivationCode(),
                        Profile        = new ProfileModel
                        {
                            Stats      = new StatsModel(),
                            Categories = new List <CategoryModel>()
                            {
                                new CategoryModel()
                                {
                                    Name = "Unsorted Words"
                                }
                            }
                        }
                    };

                    var added = await context.Users.AddAsync(newUser);

                    await context.SaveChangesAsync();

                    return(new DataResult <UserModel> (added.Entity));
                }
                catch (Exception ex)
                {
                    if (ex.InnerException.Message.Contains("23505"))
                    {
                        return(new DataResult <UserModel>(ex, "USER_AlREADY_EXISTS"));
                    }
                    else
                    {
                        return(new DataResult <UserModel>(ex, ex.InnerException.Message));
                    }
                }
            }
        }
Beispiel #9
0
        public async Task <DataResult <UserModel> > UpdateUserAsync(UserModel user)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    context.Entry(user).State = EntityState.Modified;
                    await context.SaveChangesAsync();

                    var updatedUser = context.Users.FirstOrDefault(u => u.Id == user.Id);

                    return(new DataResult <UserModel> (updatedUser));
                }
                catch (Exception ex)
                {
                    return(new DataResult <UserModel>(ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #10
0
        public async Task <DataResult <CategoryModel> > UpdateCategoryAsync(CategoryModel category)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    context.Entry(category).State = EntityState.Modified;
                    await context.SaveChangesAsync();

                    var updatedCategory = context.Categories.FirstOrDefault(c => c.Id == category.Id);

                    return(new DataResult <CategoryModel>(updatedCategory));
                }
                catch (Exception ex)
                {
                    return(new DataResult <CategoryModel>(ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #11
0
        public async Task <DataResult <IEnumerable <WordModel> > > GetCategoryWordsAsync(int categoryId)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var words = await context.Words
                                .Include(w => w.Lexeme)
                                .Include(w => w.Transcription)
                                .Include(w => w.Translation)
                                .Where(w => w.CategoryId == categoryId)
                                .ToListAsync();

                    return(new DataResult <IEnumerable <WordModel> >(words));
                }
                catch (Exception ex)
                {
                    return(new DataResult <IEnumerable <WordModel> >(ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #12
0
        public async Task <DataResult <WordModel> > UpdateWordAsync(WordModel word)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    context.Entry(word).State               = EntityState.Modified;
                    context.Entry(word.Lexeme).State        = EntityState.Modified;
                    context.Entry(word.Transcription).State = EntityState.Modified;
                    context.Entry(word.Translation).State   = EntityState.Modified;
                    await context.SaveChangesAsync();

                    var updatedWord = context.Words.FirstOrDefault(w => w.Id == word.Id);

                    return(new DataResult <WordModel>(updatedWord));
                }
                catch (Exception ex)
                {
                    return(new DataResult <WordModel>(ex, ex.InnerException.Message));
                }
            }
        }
Beispiel #13
0
        public async Task <DataResult <IEnumerable <CategoryModel> > > GetUserCategoriesAsync(int profileId)
        {
            using (var context = new LangiumDbContext())
            {
                try
                {
                    var categories = await context.Categories
                                     .Include(c => c.Words)
                                     .ThenInclude(w => w.Lexeme)
                                     .Include(c => c.Words)
                                     .ThenInclude(w => w.Transcription)
                                     .Include(c => c.Words)
                                     .ThenInclude(w => w.Translation)
                                     .Where(c => c.ProfileId == profileId)
                                     .ToListAsync();

                    return(new DataResult <IEnumerable <CategoryModel> >(categories));
                }
                catch (Exception ex)
                {
                    return(new DataResult <IEnumerable <CategoryModel> >(ex, ex.InnerException.Message));
                }
            }
        }