public static Post CreatePostModelToPost(CreatePostModel postModel) { var post = new Post() { Title = postModel.Title, Text = postModel.Text, PostDate = DateTime.Now }; return(post); }
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; }
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; }