Advertisement
Guest User

test 3

a guest
Oct 27th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.42 KB | None | 0 0
  1. using Microsoft.WindowsAzure.MobileServices;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using XamChat.Models;
  8.  
  9. namespace XamChat.Azure
  10. {
  11. public class AzureWebService : IWebService
  12. {
  13. MobileServiceClient client = new MobileServiceClient(
  14. "http://xam-chat.azurewebsites.net/");
  15.  
  16. public async Task<User> AddFriend(string userId, string username)
  17. {
  18. var friendId = await client.GetTable<User>().Where(f => f.Username == username).ToListAsync();
  19. if(friendId.Count == 0)
  20. {
  21. throw new Exception("User not found");
  22. }
  23. //TODO Check also for duplicate friend
  24.  
  25. var friend = new Friend { MyId = userId, Username = username, UserId = friendId[0].Id };
  26. await client.GetTable<Friend>().InsertAsync(friend);
  27. return new User { Id = friend.UserId, Username = friend.Username };
  28. }
  29.  
  30. public async Task<Conversation[]> GetConversations(string userId)
  31. {
  32. var list = await client.GetTable<Conversation>().Where(f => f.MyId == userId).ToListAsync();
  33. return list.ToArray();
  34. }
  35.  
  36. public async Task<User[]> GetFriends(string userId)
  37. {
  38. var list = await client.GetTable<Friend>().Where(f => f.MyId == userId).ToListAsync();
  39. return list.Select(f => new User
  40. {
  41. Id = f.UserId,
  42. Username = f.Username
  43. }).ToArray();
  44. }
  45.  
  46. public async Task<Message> SendMessage(Message message)
  47. {
  48. await client.GetTable<Message>().InsertAsync(message);
  49. //TODO add update conversation last message
  50. var convoTable = client.GetTable<Conversation>();
  51. var convoList = await convoTable.Where(c => c.Id == message.ConversationId).ToListAsync();
  52. foreach(var c in convoList)
  53. {
  54. c.LastMessage = message.Text;
  55. await convoTable.UpdateAsync(c);
  56. }
  57.  
  58. return message;
  59. }
  60.  
  61. public async Task<Message[]> GetMessages(string conversationId)
  62. {
  63. var list = await client.GetTable<Message>().Where(m => m.ConversationId == conversationId).ToListAsync();
  64. return list.ToArray();
  65. }
  66.  
  67. public async Task<User> Login(string username, string password)
  68. {
  69. var userTable = client.GetTable<User>();
  70. var old = await userTable.Where(f => f.Username == username).ToListAsync();
  71. var user = new User {
  72. Username = username,
  73. Password = password,
  74. };
  75.  
  76. if(old.Count > 0){
  77. if(old[0].Password != password)
  78. throw new Exception("Incorrect username or password");
  79. else
  80. return old[0];
  81. }else{
  82. await userTable.InsertAsync(user);
  83. }
  84. return user;
  85. }
  86.  
  87. public Task<User> Register(User user)
  88. {
  89. throw new NotImplementedException();
  90. }
  91.  
  92. public async Task LoadConversation()
  93. {
  94. var settings = ServiceContainer.Resolve<ISettings>();
  95. var friends = await client.GetTable<Friend>().Where(f => f.MyId == settings.user.Id).ToListAsync();
  96. var cTable = client.GetTable<Conversation>();
  97.  
  98. foreach (var f in friends)
  99. {
  100. await cTable.InsertAsync(new Conversation
  101. {
  102. MyId = settings.user.Id,
  103. MyUsername = settings.user.Username,
  104. UserId = f.UserId,
  105. Username = f.Username,
  106. LastMessage = "Last",
  107. });
  108. }
  109.  
  110. }
  111.  
  112. public async Task<Conversation> StartConversation(string userId, string username)
  113. {
  114. var settings = ServiceContainer.Resolve<ISettings>();
  115. var c = new Conversation
  116. {
  117. MyId = settings.user.Id,
  118. MyUsername = settings.user.Username,
  119. UserId = userId,
  120. Username = username,
  121. LastMessage = "New Conversation",
  122. };
  123.  
  124. await client.GetTable<Conversation>().InsertAsync(c);
  125. return c;
  126. }
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement