Ejemplo n.º 1
0
        public static Post CreatePostModelToPost(CreatePostModel postModel)
        {
            var post = new Post()
            {
                Title    = postModel.Title,
                Text     = postModel.Text,
                PostDate = DateTime.Now
            };

            return(post);
        }
Ejemplo n.º 2
0
        public static Post CreatePostModelToPost(CreatePostModel postModel)
        {
            var post = new Post()
                {
                    Title = postModel.Title,
                    Text = postModel.Text,
                    PostDate = DateTime.Now
                };

            return post;
        }
        public HttpResponseMessage CreateNewPost(CreatePostModel postModel, [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey)
        {
            var createPostResponse = this.TryToExecuteOperation(() =>
            {
                if (!usersRepository.All().Any(x => x.SessionKey == sessionKey))
                {
                    throw new InvalidOperationException("Not authorized user!");
                }
                if (postModel == null)
                {
                    throw new InvalidOperationException("The input model can not be null!");
                }

                if (string.IsNullOrEmpty(postModel.Title) || string.IsNullOrEmpty(postModel.Text))
                {
                    throw new InvalidOperationException("The title and text in post can not be null or empty string!");
                }

                var user = this.usersRepository.All().ToList()
                    .FirstOrDefault(x => x.SessionKey == sessionKey);

                var post = DataMapper.CreatePostModelToPost(postModel);
                post.PostedBy = user;

                var dbTags = this.tagsRepository.All().ToList();
                foreach (var tag in postModel.Tags)
                {
                    var dbTag = dbTags.FirstOrDefault(x => x.Name == tag);
                    if (dbTag != null)
                    {
                        post.Tags.Add(dbTag);
                    }
                    else
                    {
                        post.Tags.Add(new Tag()
                            {
                                Name = tag
                            });
                    }
                }

                var dbPost = this.postsRepository.Add(post);

                var postResponseModel = DataMapper.PostToCreatePostResponseModel(dbPost);

                var response = this.Request.CreateResponse(HttpStatusCode.Created, postResponseModel);
                return response;
            });

            return createPostResponse;
        }
Ejemplo n.º 4
0
        public HttpResponseMessage PostPost(CreatePostModel model,
             [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey)
        {
            var responseMsg = ExceptionHandler(
            () =>
            {
                User user;
                var context = new BlogSystemContext();
                using (context)
                {
                    user = context.Users.FirstOrDefault(u => u.SessionKey == sessionKey);
                    if (user == null)
                    {
                        throw new InvalidOperationException("Invalid username or password");
                    }
                }

                Dictionary<string, Tag> tags = new Dictionary<string, Tag>();

                foreach (var tag in model.Tags)
                {
                    var tagToLower = tag.ToLower();
                    if (!tags.ContainsKey(tagToLower))
                    {
                        Tag newTag = new Tag { Name = tagToLower };
                        tags.Add(tagToLower, newTag);
                    }
                }

                var titleTags = model.Title.Split(' ');

                foreach (var tag in titleTags)
                {
                    var tagToLower = tag.ToLower();
                    if (!tags.ContainsKey(tagToLower))
                    {
                        Tag newTag = new Tag { Name = tagToLower };
                        tags.Add(tagToLower, newTag);
                    }
                }

                List<Tag> filtTags = new List<Tag>();

                foreach (var tag in tags.Values)
                {
                    filtTags.Add(tag);
                }

                var newPost = new Post
                {
                    Title = model.Title,
                    Text = model.Text,
                    Tags = filtTags,
                    PostDate = DateTime.Now,
                    User = user,
                };

                var dbPost = this.postRepository.Add(newPost);

                var postMode = new CreatedPostModel
                {
                    Id = dbPost.Id,
                    Title = dbPost.Title
                };

                var response = this.Request.CreateResponse(HttpStatusCode.Created, postMode);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = postMode.Id }));

                return response;
            });

            return responseMsg;
        }