public static ClipboardGetData CreateWithImageContent(Guid id, Guid?laneId, FileAccessTokenEntity fileToken, string fileName) { return(new ClipboardGetData(id) { FileContentUrl = FileTokenData.CreateUrl(fileToken), LaneId = laneId, ContentTypeId = Constants.ContentTypes.Image, FileName = fileName }); }
public async Task <ProfileGetData> Get(Guid?id) { string name = null; if (id == null) { name = this.userService.Username; } using SqlConnection connection = this.userService.Connection; using DatabaseContext context = new DatabaseContext(connection); var profile = await(from s in context.ShakeUser where (s.Username == name || name == null) && (s.Id == id || id == null) select new ProfileGetData { Groups = s.UserGroups.Select(g => new GroupGetData(g.Group) { OwnerName = g.Group.Owner.Nickname, Icon = FileTokenData.CreateUrl(g.Group.Icon) }).ToList(), Avatar = FileTokenData.CreateUrl(s.Avatar) }.CopyPropertiesFrom(s)).FirstAsync(); return(profile); }
public async Task <IList <GroupGetData> > GetGroups() { using SqlConnection connection = this.userService.Connection; using DatabaseContext context = new DatabaseContext(connection); List <GroupGetData> result = await(from g in context.ShakeGroup select new GroupGetData(g) { OwnerName = g.Owner.Nickname, Icon = FileTokenData.CreateUrl(g.Icon) }).ToListAsync(); return(result); }
public PostDetailGetData GetPost(Guid Id) { using SqlConnection connection = this.userService.Connection; using DatabaseContext context = new DatabaseContext(connection); DateTime now = DateTime.Now; PostDetailGetData result = (from p in context.Post join a in context.ShakeUser on p.AuthorId equals a.Id where p.Id == Id select new PostDetailGetData() { Id = p.Id, Author = a.Id, AuthorName = a.Nickname, Content = p.Content, Creationdate = p.Creationdate, TimeAgo = new SimpleTimeSpan(now - p.Creationdate), Avatar = FileTokenData.CreateUrl(a.Avatar), Image = FileTokenData.CreateUrl(p.Image), Groups = p.PostGroups.Select(o => new AssociatedGroupData(o.Group)).ToList() }).First(); List <PostReplyGetData> replys = (from r in context.Reply join a in context.ShakeUser on r.Author equals a.Id where r.Post == Id select new PostReplyGetData() { Id = r.Id, Author = a.Id, AuthorName = a.Nickname, Content = r.Content, Creationdate = r.Creationdate, TimeAgo = new SimpleTimeSpan(now - r.Creationdate), Avatar = FileTokenData.CreateUrl(a.Avatar), Image = FileTokenData.CreateUrl(r.Image) }).OrderBy(o => o.Creationdate).ToList(); result.Replys = replys; return(result); }
public async Task <GroupDetailGetData> GetGroup(Guid?id, string name) { using SqlConnection connection = this.userService.Connection; using DatabaseContext context = new DatabaseContext(connection); if (id == null && name == null) { throw new ArgumentException($"Either '{nameof(id)}' or name '{nameof(name)}' be specified.", nameof(id)); } var now = System.DateTime.Now; GroupDetailGetData result = await(from g in context.ShakeGroup where (g.Id == id || id == null) && (g.Name == name || name == null) select new GroupDetailGetData(g) { OwnerName = g.Owner.Nickname, Icon = FileTokenData.CreateUrl(g.Icon), Users = g.GroupUsers.Select(u => new AssociatedUserData { Id = u.User.Id, Name = u.User.Nickname }).ToList(), Posts = g.GroupPosts.Select(p => new PostGetData(p.Post) { AuthorName = p.Post.Author.Nickname, Avatar = FileTokenData.CreateUrl(p.Post.Author.Avatar), Groups = p.Post.PostGroups.Select(pg => new AssociatedGroupData(pg.Group)).ToList(), Image = FileTokenData.CreateUrl(p.Post.Image), TimeAgo = new SimpleTimeSpan(p.Post.Creationdate - now) }).ToList() }).FirstAsync(); return(result); }
private async Task <List <PostGetData> > LoadClosePostEnitiesAsync(SqlConnection connection, decimal?latitude, decimal?longitude) { DateTime now = DateTime.Now; string nowParameterName = "@NOW"; string commandString = $@"SELECT CONTENT ,USERID ,NICKNAME ,CREATIONDATE ,POSTID ,REPLYCOUNT ,AVATARTOKEN ,AVATARFILENAME ,IMAGETOKEN ,IMAGEFILENAME ,DIST + AGO AS RELEVANCE FROM ( SELECT POST.CONTENT ,SHAKEUSER.ID AS USERID ,SHAKEUSER.NICKNAME ,POST.CREATIONDATE ,POST.ID AS POSTID ,COALESCE(POST.REPLYCOUNT,0) AS REPLYCOUNT ,DBO.DISTANCE(POST.LATITUDE, POST.LONGITUDE, {latitude}, {longitude}) AS DIST ,DATEDIFF(MINUTE, POST.CREATIONDATE, {nowParameterName}) AS AGO ,AVATAR.TOKEN AS AVATARTOKEN ,AVATAR.FILENAME AS AVATARFILENAME ,IMAGE.TOKEN AS IMAGETOKEN ,IMAGE.FILENAME AS IMAGEFILENAME FROM POST JOIN SHAKEUSER ON SHAKEUSER.ID = POST.AUTHORID LEFT OUTER JOIN FILEACCESSTOKEN AVATAR ON AVATAR.ID = SHAKEUSER.AVATARID LEFT OUTER JOIN FILEACCESSTOKEN IMAGE ON IMAGE.ID = POST.IMAGEID ) DATA ORDER BY RELEVANCE"; using SqlCommand command = new SqlCommand(commandString, connection); command.Parameters.Add(nowParameterName, SqlDbType.DateTime); command.Parameters[nowParameterName].Value = now; using SqlDataReader reader = command.ExecuteReader(); List <PostGetData> result = new List <PostGetData>(); while (await reader.ReadAsync()) { result.Add(new PostGetData() { Content = (string)reader[0], AuthorId = (Guid)reader[1], AuthorName = (string)reader[2], Creationdate = (DateTime)reader[3], Id = (Guid)reader[4], ReplyCount = (int)reader[5], TimeAgo = new SimpleTimeSpan(now - (DateTime)reader[3]), Avatar = FileTokenData.CreateUrl(reader[6], reader[7]), Image = FileTokenData.CreateUrl(reader[8], reader[9]), Groups = new List <AssociatedGroupData>() }); } return(result); }