public async Task <User> ChangePhoto(IFormFile Photo) { Account Account = await db .Accounts .SingleOrDefaultAsync(x => x.AccountId == CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"]))); if (Account != null) { if (Photo != null) { var path = Path.Combine( Directory.GetCurrentDirectory(), "storage", Account.AccountId.ToString()); using (FileStream fs = new FileStream(path, FileMode.Create)) { await Photo.CopyToAsync(fs); Account.HasPhoto = true; await db.SaveChangesAsync(); } return(new User(Account)); } return(null); } return(null); }
public async Task <List <Message> > GetDialog(int id, int Page = 0) { int Id = CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"])); List <Message> Messages = await db .Messages .Where(x => (x.GetterId == id && x.SenderId == Id) || (x.GetterId == Id && x.SenderId == id)) .ToListAsync(); Messages.ForEach(Message => { if (string.IsNullOrEmpty(Message.ReadTime) && Message.GetterId == Id) { Message.ReadTime = DateTime.Now.ToString(); } }); Messages.Reverse(); Messages = Messages .Skip(MessagesCount * Page) .Take(MessagesCount) .ToList(); await db.SaveChangesAsync(); return(Messages); }
public async Task <int> GetUnreadedMessagesCountFromUser(int id) { int Id = CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"])); return(await db .Messages .Where(x => x.SenderId == id && x.GetterId == Id && string.IsNullOrEmpty(x.ReadTime)) .CountAsync()); }
private static async Task WebSocketConfiguration(HttpContext context, Func <Task> next, List <CustomWebSocketClient> WebSocketClients) { if (context.Request.Path == "/ws") { if (context.WebSockets.IsWebSocketRequest) { WebSocket WebSocket = await context.WebSockets.AcceptWebSocketAsync(); WebSocketClients.Add(new CustomWebSocketClient() { WebSocket = WebSocket, AccountId = CookiesManager.GetIdByGuid(new Guid(context.Request.Cookies["AccountId"])) }); var buffer = new byte[1024 * 4]; WebSocketReceiveResult result = await WebSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); while (WebSocket.State == WebSocketState.Open) { Dictionary <String, object> JsonMessage = JsonConvert.DeserializeObject <Dictionary <String, Object> >(Encoding.UTF8.GetString(buffer)); Message Message = new Message() { Text = JsonMessage["text"].ToString(), SendTime = DateTime.Now.ToString(), SenderId = CookiesManager.GetIdByGuid(new Guid(context.Request.Cookies["AccountId"])), GetterId = Int32.Parse(JsonMessage["getterId"].ToString()) }; WebSocketClients .Where(x => x.AccountId == Message.GetterId) .ToList() .ForEach(x => { x .WebSocket .SendAsync(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(Message)), result.MessageType, result.EndOfMessage, CancellationToken.None); }); //await WebSocketClients[JsonMessage["getterId"].ToString()].SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None); result = await WebSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); } WebSocketClients.Remove(WebSocketClients.Single(x => x.WebSocket == WebSocket)); await WebSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); } else { context.Response.StatusCode = 400; } } else { await next(); } }
public async Task <Account> GetAccount(int?id) { if (id == null || id == 0) { id = CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"])); } Account Account = await db.Accounts.SingleOrDefaultAsync(x => x.AccountId == id.Value); Account.Password = string.Empty; return(Account); }
public IActionResult GetPhoto(string Id) { if (string.IsNullOrEmpty(Id)) { Id = CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"])).ToString(); } var path = Path.Combine( Directory.GetCurrentDirectory(), "storage", Id); return(PhysicalFile(path, "image/png", "photo.png")); }
public async Task <Post> SendPost([FromBody] Post Post) { Post NewPost = new Post(); NewPost.Content = Post.Content; NewPost.CreatedTime = DateTime.Now.ToString(); NewPost.OwnerId = CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"])); await db.Posts.AddAsync(NewPost); await db.SaveChangesAsync(); return(NewPost); }
public async Task <string> DeletePost(int Id) { Post Post = await db .Posts .SingleOrDefaultAsync(x => x.PostId == Id); if (Post.OwnerId == CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"]))) { db.Posts.Remove(Post); await db.SaveChangesAsync(); return("Ok"); } return("Fail"); }
public async Task <Message> SendMessage([FromBody] MessageView MessageView) { int Id = CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"])); Message Message = new Message(); Message.Text = MessageView.Text; Message.SendTime = DateTime.Now.ToString(); Message.SenderId = Id; Message.GetterId = MessageView.GetterId; await db.Messages.AddAsync(Message); db.SaveChanges(); return(Message); }
public async Task <List <Post> > GetPosts(int?id, int Page = 0) { if (id == 0 || id == null) { id = CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"])); } List <Post> Posts = await db .Posts .Where(x => x.OwnerId == id) .ToListAsync(); Posts.Reverse(); Posts = Posts.Skip(PostsCount * Page).Take(PostsCount).ToList(); return(Posts); }
public async Task <Account> UpdateAccount([FromBody] Account account) { account.Password = GenerateSHA512String(account.Password); Account Account = await db .Accounts .SingleOrDefaultAsync(x => x.AccountId == CookiesManager.GetIdByGuid(new Guid(Request.Cookies["AccountId"]))); if (Account != null) { Account.Password = account.Password; Account.Name = account.Name; Account.Surname = account.Surname; Account.Email = account.Email; Account.CountryId = account.CountryId; await db.SaveChangesAsync(); return(Account); } return(null); }