示例#1
0
        //Метод добавляем пользователя в базу
        public static void RegisterUser(RegisterModel user)
        {
            //если данные валидны(логин и email не заняты)
            if ((RegisterValid(user) & RegisterValidError.AllErrors) == RegisterValidError.Nope)
            {
                using (DBContext db = new DBContext())
                {
                    //создаём запись о новом пользователе 
                    User newUser = new User();
                    newUser.Login = user.Login;
                    newUser.Email = user.Email;
                    newUser.Password = user.Password;

                    //и добавляем её в базу
                    db.Users.Add(newUser);
                    db.SaveChanges();
                    return;
                }
            }
            //а иначе ловите исключение
            else
            {
                throw new RegiserFailException(RegisterValid(user).ToString());
            }
            
        }
示例#2
0
        //удаление поста и связанных с ним данных
        public static void removePost(int postId, string username)
        {
            
            using (var db = new DBContext())
            {
                //ищим пост предназначенный для удаления
                //за одно проверяем, принадлежит ли он данному юзеру
                Post post = db.Posts.FirstOrDefault(p => p.Id_post == postId && p.User.Login == username);
                //если пост есть и у юзера есть права на его удаление
                if (post != null)
                {
                    //ищем и удаляем изображение из поста
                    Image image = post.Image;
                    if (image != null) db.Images.Remove(image);

                    //ищем и удаляем теги, которые больше не используются
                    //это такие теги, с которыми связан только 1 пост
                    var unuseTags = post.Tags.Where(p => p.Posts.Count == 1);
                    db.Tags.RemoveRange(unuseTags);

                    //удаляем сам пост и сохраняем изменения
                    db.Posts.Remove(post);
                    db.SaveChanges();
                }
                else
                {
                    throw new PostNotExistOrNotAccessException();
                }
            }
        }
示例#3
0
        //Метод добавляет теги в базу 
        private static ICollection<Tag> addTags(string tagsString)
        {
            using (var db = new DBContext())
            {

                //разбиваем строку тегов на список строк по ','
                //откидываем лишние пробелы по краям тегов
                IEnumerable<string> listTagString = tagsString.Split(',').Select(s => s.Trim());

                //создаём список тегов из listTagString
                //каждая строка это имя тега
                ICollection<Tag> tags = listTagString.Select(tag => new Tag()
                {
                    name = tag
                }).ToList();

                //добавляем теги в базу
                //если тег там уже есть, то не пытаемся добавить его снова
                foreach (Tag tag in tags)
                {
                    if (!db.Tags.Any(t => t.name == tag.name))
                    {
                        db.Tags.Add(tag);
                    }
                }

                //сохраняем изменения
                db.SaveChanges();
                return tags;
            }
        }
示例#4
0
        //Метод ассоциирует пост с тегами
        private static void relatedTagsAndPost(int postId, ICollection<Tag> tagList)
        {

            using (var db = new DBContext())
            {
                //берём из базы пост с указанным id
                Post post = db.Posts.FirstOrDefault(p => p.Id_post == postId);

                //ищем в базе наши теги и оссоциируем с ними данный пост
                foreach (var element in tagList)
                {
                    Tag tag = db.Tags.FirstOrDefault(t => t.name == element.name);
                    post.Tags.Add(tag);
                }

                //сохраняем изменения
                db.SaveChanges();
            }
        }
示例#5
0
        //добавляем новый пост в базу
        //postModel - текстовые данные введённый пользователем
        //image - изображение в том виде, в каком мы получили его от браузера
        //username - имя пользователя, которому принадлежит пост
        public static void addPost(CreatePostModel postModel, HttpPostedFileBase image, string username)
        {
            using (DBContext db = new DBContext())
            {
                Post post = new Post();

                //добавление к записи заголовка и текста
                post.Header = postModel.Header;
                post.Text = postModel.Text;

                //добавляем изображение
                if (image != null)
                {
                    post.Image = new Image
                    {
                        ImageMimeType = image.ContentType,
                        ImageData = new byte[image.ContentLength]
                    };
                    //записываем битарей изображения
                    image.InputStream.Read(post.Image.ImageData, 0, image.ContentLength);
                }

                //добавляем пользователя, автора поста
                post.User = db.Users.FirstOrDefault(u => u.Login == username);
                Debug.Assert(post.User != null, "пользователь не существует");
                
                //сохранение в базе
                db.Posts.Add(post);
                db.SaveChanges();

                //добавляем теги в базу
                var tags = addTags(postModel.Tags);
                
                //ассоциируем с ними пост
                relatedTagsAndPost(post.Id_post, tags);
            }
        }