Exemplo n.º 1
0
 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
     });
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }