Ejemplo n.º 1
0
        public IsSuccessResult UpgrateToAdmin(int id)
        {
            var log = GetLogger();

            var user = NiHonGoContext.Users.SingleOrDefault(r => r.Id == id);

            if (user == null)
            {
                return(new IsSuccessResult(ErrorCode.UserNotFound.ToString()));
            }

            if (user.Type == (int)UserType.User)
            {
                user.Type = (int)UserType.Admin;
            }

            try
            {
                NiHonGoContext.SaveChanges();
                return(new IsSuccessResult());
            }
            catch (Exception ex)
            {
                log.Error(ex);

                return(new IsSuccessResult(ErrorCode.InternalError.ToString()));
            }
        }
Ejemplo n.º 2
0
        public void DBDataInit()
        {
            NiHonGoContext.Levels.Add(new Level {
                Display = "無經驗"
            });
            NiHonGoContext.Levels.Add(new Level {
                Display = "初學者"
            });
            NiHonGoContext.Levels.Add(new Level {
                Display = "日檢5級"
            });
            NiHonGoContext.Levels.Add(new Level {
                Display = "日檢4級"
            });
            NiHonGoContext.Levels.Add(new Level {
                Display = "日檢3級"
            });
            NiHonGoContext.Levels.Add(new Level {
                Display = "日檢2級"
            });
            NiHonGoContext.Levels.Add(new Level {
                Display = "日檢1級"
            });
            NiHonGoContext.Levels.Add(new Level {
                Display = "商用程度"
            });

            NiHonGoContext.SaveChanges();
        }
Ejemplo n.º 3
0
        public IsSuccessResult ChangePassword(int id, string oldPassword, string newPassword)
        {
            var log = GetLogger();

            #region check parameter

            if (string.IsNullOrWhiteSpace(oldPassword))
            {
                return(new IsSuccessResult(ErrorCode.OldPasswordIsNull.ToString()));
            }
            oldPassword = oldPassword.Trim();

            if (string.IsNullOrWhiteSpace(newPassword))
            {
                return(new IsSuccessResult(ErrorCode.NewPasswordIsNull.ToString()));
            }
            newPassword = newPassword.Trim();

            // get user
            var user = NiHonGoContext.Users
                       .SingleOrDefault(r => r.Id == id);

            // user not found
            if (user == null)
            {
                return(new IsSuccessResult(ErrorCode.UserNotFound.ToString()));
            }

            // check old password
            if (user.Password != Cryptography.EncryptBySHA1(oldPassword))
            {
                return(new IsSuccessResult(ErrorCode.OldPasswordWrong.ToString()));
            }

            // old pwd and new pwd is the same
            if (oldPassword == newPassword)
            {
                return(new IsSuccessResult());
            }
            #endregion // check parameter

            try
            {
                user.Password = Cryptography.EncryptBySHA1(newPassword);
                NiHonGoContext.SaveChanges();
            }
            catch (Exception ex)
            {
                log.Error(ex);

                return(new IsSuccessResult(ErrorCode.ChangePasswordFailed.ToString()));
            }

            return(new IsSuccessResult());
        }
Ejemplo n.º 4
0
        /// <summary>
        /// add admin if no user in db
        /// </summary>
        public void HasAnyUser()
        {
            var isAny = NiHonGoContext.Users.Any();

            if (isAny == false)
            {
                NiHonGoContext.Users.Add(new User
                {
                    Email          = Constant.DefaultAdminEmail,
                    Password       = Cryptography.EncryptBySHA1(Constant.DefaultPassword),
                    Name           = "管理員",
                    CreateDateTime = DateTime.UtcNow
                });

                NiHonGoContext.SaveChanges();

                new SystemLogic().DBDataInit();
            }
        }
Ejemplo n.º 5
0
        public IsSuccessResult UpdatePhoto(int blogId, string photo)
        {
            var log = GetLogger();

            log.Debug("BlogId: {0}, Photo: {1}"
                      , blogId, photo);

            var blog = NiHonGoContext.Blogs
                       .SingleOrDefault(r => r.Id == blogId);

            if (blog == null)
            {
                return(new IsSuccessResult(ErrorCode.BlogNotFound.ToString()));
            }

            if (string.IsNullOrWhiteSpace(photo))
            {
                return(new IsSuccessResult(ErrorCode.PhotoIsNull.ToString()));
            }

            if (Regex.IsMatch(photo, Constant.PatternImage, RegexOptions.IgnoreCase) == false)
            {
                return(new IsSuccessResult(ErrorCode.PhotoFormatIsWrong.ToString()));
            }

            try
            {
                blog.Photo = photo;

                NiHonGoContext.SaveChanges();

                return(new IsSuccessResult());
            }
            catch (Exception ex)
            {
                log.Error(ex);

                return(new IsSuccessResult(ErrorCode.InternalError.ToString()));
            }
        }
Ejemplo n.º 6
0
        public IsSuccessResult <int> Edit(EditBlog data, int userId, int?blogId)
        {
            var log = GetLogger();

            log.Debug("Title: {0}, Detail: {1}, Tag: {2}, UserId: {3}, BlogId: {4}, Catalog: {5}"
                      , data.Title, data.Detail, data.Tag, userId, blogId, data.Catalog);

            var user = NiHonGoContext.Users
                       .SingleOrDefault(r => r.Id == userId);

            if (user == null)
            {
                return(new IsSuccessResult <int>(ErrorCode.UserNotFound.ToString()));
            }

            if ((UserType)user.Type != UserType.Admin)
            {
                return(new IsSuccessResult <int>(ErrorCode.NoAuthentication.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.Title))
            {
                return(new IsSuccessResult <int>(ErrorCode.BlogTitleIsNull.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.Detail))
            {
                return(new IsSuccessResult <int>(ErrorCode.BlogDetailIsNull.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.Catalog))
            {
                return(new IsSuccessResult <int>(ErrorCode.CatalogIsNull.ToString()));
            }

            var blog = NiHonGoContext.Blogs
                       .SingleOrDefault(r => r.Id == blogId);

            var catalog = NiHonGoContext.Catalogs
                          .SingleOrDefault(r => r.Display == data.Catalog);

            try
            {
                if (catalog == null)
                {
                    catalog = new Grammer
                    {
                        Display = data.Catalog
                    };
                    NiHonGoContext.Catalogs.Add(catalog);
                    NiHonGoContext.SaveChanges();
                }

                if (blog == null)
                {
                    var currentDate = DateTime.UtcNow;

                    blog = new Blog
                    {
                        Title      = data.Title,
                        Detail     = data.Detail,
                        UserId     = userId,
                        Tag        = data.Tag,
                        Catalog    = catalog,
                        CreateDate = currentDate,
                    };

                    NiHonGoContext.Blogs.Add(blog);
                    NiHonGoContext.SaveChanges();

                    if (!string.IsNullOrWhiteSpace(data.Photo))
                    {
                        var oldPhotoName = data.Photo.Split('\\').Last();
                        var newPhotoName = blog.Id + Path.GetExtension(oldPhotoName);
                        File.Move(data.Photo, data.Photo.Replace(oldPhotoName, newPhotoName));

                        blog.Photo = newPhotoName;
                        NiHonGoContext.SaveChanges();
                    }
                }
                else
                {
                    blog.Title   = data.Title;
                    blog.Detail  = data.Detail;
                    blog.Tag     = data.Tag;
                    blog.UserId  = userId;
                    blog.Catalog = catalog;
                    NiHonGoContext.SaveChanges();
                }

                return(new IsSuccessResult <int>
                {
                    ReturnObject = blog.Id
                });
            }
            catch (Exception ex)
            {
                log.Error(ex);

                return(new IsSuccessResult <int>(ErrorCode.InternalError.ToString()));
            }
        }
Ejemplo n.º 7
0
        public IsSuccessResult Edit(int userId, WordInfo data)
        {
            var log = GetLogger();

            var isAdmin = NiHonGoContext.Users
                          .Where(r => r.Type == (int)UserType.Admin)
                          .Any(r => r.Id == userId);

            if (isAdmin == false)
            {
                return(new IsSuccessResult(ErrorCode.NoAuthentication.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.Japanese))
            {
                return(new IsSuccessResult(ErrorCode.JapaneseContentIsNull.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.Chinese))
            {
                return(new IsSuccessResult(ErrorCode.ChineseContentIsNull.ToString()));
            }

            try
            {
                if (data.Id == 0)
                {
                    var isAny = NiHonGoContext.Words
                                .Any(r => r.Japanese == data.Japanese);
                    if (isAny)
                    {
                        return(new IsSuccessResult(ErrorCode.AlreadyHadThisWord.ToString()));
                    }

                    var levels = new List <Level>();
                    foreach (var item in data.Levels)
                    {
                        var level = NiHonGoContext.Levels.SingleOrDefault(r => r.Id == item.Id);
                        if (level != null)
                        {
                            levels.Add(level);
                        }
                    }
                    var word = new Word
                    {
                        Japanese = data.Japanese,
                        Chinese  = data.Chinese,
                        Levels   = levels
                    };

                    NiHonGoContext.Words.Add(word);
                    NiHonGoContext.SaveChanges();
                }
                else
                {
                    var isAny = NiHonGoContext.Words
                                .Any(r => r.Japanese == data.Japanese && r.Id != data.Id);
                    if (isAny)
                    {
                        return(new IsSuccessResult(ErrorCode.AlreadyHadThisWord.ToString()));
                    }

                    var word = NiHonGoContext.Words
                               .SingleOrDefault(r => r.Id == data.Id);
                    if (word == null)
                    {
                        return(new IsSuccessResult(ErrorCode.WordNotFound.ToString()));
                    }

                    word.Japanese = data.Japanese;
                    word.Chinese  = data.Chinese;
                    var levels = new List <Level>();
                    foreach (var item in data.Levels)
                    {
                        var level = NiHonGoContext.Levels.SingleOrDefault(r => r.Id == item.Id);
                        if (level != null)
                        {
                            levels.Add(level);
                        }
                    }
                    word.Levels = levels;

                    NiHonGoContext.SaveChanges();
                }

                return(new IsSuccessResult());
            }
            catch (Exception ex)
            {
                log.Error(ex);

                return(new IsSuccessResult(ErrorCode.InternalError.ToString()));
            }
        }
Ejemplo n.º 8
0
        public IsSuccessResult Edit(int userId, VideoInfo data)
        {
            var log = GetLogger();

            var isAdmin = NiHonGoContext.Users
                          .Where(r => r.Type == (int)UserType.Admin)
                          .Any(r => r.Id == userId);

            if (isAdmin == false)
            {
                return(new IsSuccessResult(ErrorCode.NoAuthentication.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.YoutubeUrl))
            {
                return(new IsSuccessResult(ErrorCode.YoutubeUrlIsNull.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.JapaneseTitle))
            {
                return(new IsSuccessResult(ErrorCode.JapaneseTitleIsNull.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.JapaneseContent))
            {
                return(new IsSuccessResult(ErrorCode.JapaneseContentIsNull.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.ChineseTitle))
            {
                return(new IsSuccessResult(ErrorCode.ChineseTitleIsNull.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.ChineseContent))
            {
                return(new IsSuccessResult(ErrorCode.ChineseContentIsNull.ToString()));
            }

            try
            {
                if (data.Id == 0)
                {
                    var isAny = NiHonGoContext.Videos
                                .Any(r => r.YoutubeUrl == data.YoutubeUrl);
                    if (isAny)
                    {
                        return(new IsSuccessResult(ErrorCode.AlreadyHadThisVideo.ToString()));
                    }

                    var levels = new List <Level>();
                    foreach (var item in data.Levels)
                    {
                        var level = NiHonGoContext.Levels.SingleOrDefault(r => r.Id == item.Id);
                        if (level != null)
                        {
                            levels.Add(level);
                        }
                    }

                    var words = new List <Word>();
                    foreach (var item in data.Words)
                    {
                        var word = NiHonGoContext.Words.SingleOrDefault(r => r.Id == item.Id);
                        if (word != null)
                        {
                            words.Add(word);
                        }
                    }

                    var grammars = new List <Grammar>();
                    foreach (var item in data.Words)
                    {
                        var grammar = NiHonGoContext.Grammars.SingleOrDefault(r => r.Id == item.Id);
                        if (grammar != null)
                        {
                            grammars.Add(grammar);
                        }
                    }

                    var currentDate = DateTime.UtcNow;
                    var video       = new Video
                    {
                        YoutubeUrl      = data.YoutubeUrl,
                        JapaneseTitle   = data.JapaneseTitle,
                        JapaneseContent = data.JapaneseContent,
                        ChineseTitle    = data.ChineseTitle,
                        ChineseContent  = data.ChineseContent,
                        Levels          = levels,
                        Words           = words,
                        Grammars        = grammars,
                        CreateDateTime  = currentDate,
                        UpdateDateTime  = currentDate
                    };

                    NiHonGoContext.Videos.Add(video);
                    NiHonGoContext.SaveChanges();
                }
                else
                {
                    var isAny = NiHonGoContext.Videos
                                .Any(r => r.YoutubeUrl == data.YoutubeUrl && r.Id != data.Id);
                    if (isAny)
                    {
                        return(new IsSuccessResult(ErrorCode.AlreadyHadThisVideo.ToString()));
                    }

                    var video = NiHonGoContext.Videos
                                .SingleOrDefault(r => r.Id == data.Id);
                    if (video == null)
                    {
                        return(new IsSuccessResult(ErrorCode.VideoNotFound.ToString()));
                    }

                    var levels = new List <Level>();
                    foreach (var item in data.Levels)
                    {
                        var level = NiHonGoContext.Levels.SingleOrDefault(r => r.Id == item.Id);
                        if (level != null)
                        {
                            levels.Add(level);
                        }
                    }

                    var words = new List <Word>();
                    foreach (var item in data.Words)
                    {
                        var word = NiHonGoContext.Words.SingleOrDefault(r => r.Id == item.Id);
                        if (word != null)
                        {
                            words.Add(word);
                        }
                    }

                    var grammars = new List <Grammar>();
                    foreach (var item in data.Words)
                    {
                        var grammar = NiHonGoContext.Grammars.SingleOrDefault(r => r.Id == item.Id);
                        if (grammar != null)
                        {
                            grammars.Add(grammar);
                        }
                    }

                    video.YoutubeUrl      = data.YoutubeUrl;
                    video.JapaneseTitle   = data.JapaneseTitle;
                    video.JapaneseContent = data.JapaneseContent;
                    video.ChineseTitle    = data.ChineseTitle;
                    video.ChineseContent  = data.ChineseContent;
                    video.Levels          = levels;
                    video.Words           = words;
                    video.Grammars        = grammars;
                    video.UpdateDateTime  = DateTime.UtcNow;

                    NiHonGoContext.SaveChanges();
                }

                return(new IsSuccessResult());
            }
            catch (Exception ex)
            {
                log.Error(ex);

                return(new IsSuccessResult(ErrorCode.InternalError.ToString()));
            }
        }
Ejemplo n.º 9
0
        public IsSuccessResult <UserInfo> AddUser(CreateUser data, UserType type)
        {
            var log = GetLogger();

            if (string.IsNullOrWhiteSpace(data.Email))
            {
                return(new IsSuccessResult <UserInfo>(ErrorCode.EmailIsNull.ToString()));
            }
            data.Email = data.Email.Trim();
            if (Regex.IsMatch(data.Email, Constant.PatternEmail) == false)
            {
                return(new IsSuccessResult <UserInfo>(ErrorCode.EmailFormatIsWrong.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.Name))
            {
                return(new IsSuccessResult <UserInfo>(ErrorCode.NameIsNull.ToString()));
            }
            data.Name = data.Name.Trim();

            if (string.IsNullOrWhiteSpace(data.Password))
            {
                return(new IsSuccessResult <UserInfo>(ErrorCode.PasswordIsNull.ToString()));
            }
            data.Password = data.Password.Trim();

            var isAny = NiHonGoContext.Users
                        .Any(r => r.Email == data.Email);

            if (isAny)
            {
                return(new IsSuccessResult <UserInfo>(ErrorCode.AlreadyHadThisEmail.ToString()));
            }

            if ((int)type > 1)
            {
                type = UserType.User;
            }

            try
            {
                var levels = new List <Level>();
                foreach (var item in data.Levels)
                {
                    var level = NiHonGoContext.Levels.SingleOrDefault(r => r.Id == item.Id);
                    if (level != null)
                    {
                        levels.Add(level);
                    }
                }

                var user = NiHonGoContext.Users.Add(new User
                {
                    Name           = data.Name,
                    Password       = Cryptography.EncryptBySHA1(data.Password),
                    Email          = data.Email,
                    Type           = (int)type,
                    Levels         = levels,
                    CreateDateTime = DateTime.UtcNow
                });
                NiHonGoContext.SaveChanges();

                return(new IsSuccessResult <UserInfo>
                {
                    ReturnObject = new UserInfo
                    {
                        Id = user.Id,
                        Email = user.Email
                    }
                });
            }
            catch (Exception ex)
            {
                log.Error(ex);

                return(new IsSuccessResult <UserInfo>(ErrorCode.InternalError.ToString()));
            }
        }
Ejemplo n.º 10
0
        public IsSuccessResult Edit(int userId, GrammarInfo data)
        {
            var log = GetLogger();

            var isAdmin = NiHonGoContext.Users
                          .Where(r => r.Type == (int)UserType.Admin)
                          .Any(r => r.Id == userId);

            if (isAdmin == false)
            {
                return(new IsSuccessResult(ErrorCode.NoAuthentication.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.Title))
            {
                return(new IsSuccessResult(ErrorCode.TitleIsNull.ToString()));
            }

            if (string.IsNullOrWhiteSpace(data.Description))
            {
                return(new IsSuccessResult(ErrorCode.DescriptionIsNull.ToString()));
            }

            try
            {
                if (data.Id == 0)
                {
                    var isAny = NiHonGoContext.Grammars
                                .Any(r => r.Title == data.Title);
                    if (isAny)
                    {
                        return(new IsSuccessResult(ErrorCode.AlreadyHadThisGrammar.ToString()));
                    }

                    var levels = new List <Level>();
                    foreach (var item in data.Levels)
                    {
                        var level = NiHonGoContext.Levels.SingleOrDefault(r => r.Id == item.Id);
                        if (level != null)
                        {
                            levels.Add(level);
                        }
                    }
                    var grammar = new Grammar
                    {
                        Title       = data.Title,
                        Description = data.Description,
                        Levels      = levels
                    };

                    NiHonGoContext.Grammars.Add(grammar);
                    NiHonGoContext.SaveChanges();
                }
                else
                {
                    var isAny = NiHonGoContext.Grammars
                                .Any(r => r.Title == data.Title && r.Id != data.Id);
                    if (isAny)
                    {
                        return(new IsSuccessResult(ErrorCode.AlreadyHadThisGrammar.ToString()));
                    }

                    var grammar = NiHonGoContext.Grammars
                                  .SingleOrDefault(r => r.Id == data.Id);
                    if (grammar == null)
                    {
                        return(new IsSuccessResult(ErrorCode.GrammarNotFound.ToString()));
                    }

                    grammar.Title       = data.Title;
                    grammar.Description = data.Description;
                    var levels = new List <Level>();
                    foreach (var item in data.Levels)
                    {
                        var level = NiHonGoContext.Levels.SingleOrDefault(r => r.Id == item.Id);
                        if (level != null)
                        {
                            levels.Add(level);
                        }
                    }
                    grammar.Levels = levels;

                    NiHonGoContext.SaveChanges();
                }

                return(new IsSuccessResult());
            }
            catch (Exception ex)
            {
                log.Error(ex);

                return(new IsSuccessResult(ErrorCode.InternalError.ToString()));
            }
        }