-
Notifications
You must be signed in to change notification settings - Fork 0
/
BlogService.asmx.cs
155 lines (149 loc) · 4.83 KB
/
BlogService.asmx.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace BlogService
{
/// <summary>
/// BlogService 的摘要说明
/// </summary>
[WebService(Namespace = "http://bearhuchao.top/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class BlogService : System.Web.Services.WebService
{
readonly WebServiceDbContext DB = new WebServiceDbContext();
[WebMethod]
public string AddUser(string username)
{
var targetUser = DB.Users.Where(x => x.Username == username).FirstOrDefault();
if (targetUser != null)
{
return targetUser.Id;
}
User newUser = new User { Username = username, Blogs = new List<Blog>() };
DB.Users.Add(newUser);
try
{
DB.SaveChanges();
}
catch (Exception e)
{
return e.ToString();
}
return newUser.Id;
}
[WebMethod]
public UserInfo GetUser(string username)
{
var targetUser = DB.Users.Where(x => x.Username == username).FirstOrDefault();
if (targetUser == null)
{
return new UserInfo();
}
return new UserInfo() { Id = targetUser.Id, Username = targetUser.Username, Blogs = targetUser.Blogs.Count };
}
[WebMethod]
public UserInfo[] GetUsers()
{
return DB.Users.Select(user => new UserInfo()
{
Id = user.Id,
Username = user.Username,
Blogs = user.Blogs.Count
}).ToArray();
}
[WebMethod]
public string AddBlog(string title, string author, string content)
{
var targetUser = DB.Users.Where(x => x.Username == author).FirstOrDefault();
if (targetUser == null)
{
var newUserId = AddUser(author);
targetUser = DB.Users.Find(newUserId);
}
Blog newBlog = new Blog
{
Title = title,
Author = targetUser,
Content = content,
Comments = new List<Comment>()
};
targetUser.Blogs.Add(newBlog);
DB.Blogs.Add(newBlog);
try
{
DB.SaveChanges();
}
catch (Exception e)
{
return e.ToString();
}
return newBlog.Id;
}
[WebMethod]
public BlogInfo[] GetBlogs(string id)
{
return DB.Blogs.Where(x => x.Author.Id == id)
.Select(blog => new BlogInfo()
{
Id = blog.Id,
Title = blog.Title,
CommentNumber = blog.Comments.Count
}).ToArray();
}
[WebMethod]
public BlogDetail GetBlogDetail(string id)
{
return DB.Blogs.Where(x => x.Id == id)
.Select(blog => new BlogDetail
{
Id = blog.Id,
Title = blog.Title,
Author = blog.Author.Username,
UpdateTime = blog.CreatedAt.ToString(),
Content = blog.Content
}).FirstOrDefault();
}
[WebMethod]
public CommentInfo[] GetBlogComments(string BlogId)
{
var blog = DB.Blogs.Find(BlogId);
return blog == null ? null : blog.Comments.Select(x => new CommentInfo() { Author = x.Author.Username, Content = x.Content }).ToArray();
}
[WebMethod]
public string AddBlogComment(string BlogId, string author, string content)
{
var targetUser = DB.Users.Where(x => x.Username == author).FirstOrDefault();
if (targetUser == null)
{
var newUserId = AddUser(author);
targetUser = DB.Users.Find(newUserId);
}
var targetBlog = DB.Blogs.Find(BlogId);
if (targetBlog == null)
{
return null;
}
Comment newComment = new Comment
{
Author = targetUser,
Blog = targetBlog,
Content = content
};
DB.Comments.Add(newComment);
try
{
DB.SaveChanges();
}
catch (Exception e)
{
return e.ToString();
}
return newComment.Id;
}
}
}