Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.WindowsAzure.MobileServices;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using XamChat.Models;
- namespace XamChat.Azure
- {
- public class AzureWebService : IWebService
- {
- MobileServiceClient client = new MobileServiceClient(
- "http://xam-chat.azurewebsites.net/");
- public async Task<User> AddFriend(string userId, string username)
- {
- var friendId = await client.GetTable<User>().Where(f => f.Username == username).ToListAsync();
- if(friendId.Count == 0)
- {
- throw new Exception("User not found");
- }
- //TODO Check also for duplicate friend
- var friend = new Friend { MyId = userId, Username = username, UserId = friendId[0].Id };
- await client.GetTable<Friend>().InsertAsync(friend);
- return new User { Id = friend.UserId, Username = friend.Username };
- }
- public async Task<Conversation[]> GetConversations(string userId)
- {
- var list = await client.GetTable<Conversation>().Where(f => f.MyId == userId).ToListAsync();
- return list.ToArray();
- }
- public async Task<User[]> GetFriends(string userId)
- {
- var list = await client.GetTable<Friend>().Where(f => f.MyId == userId).ToListAsync();
- return list.Select(f => new User
- {
- Id = f.UserId,
- Username = f.Username
- }).ToArray();
- }
- public async Task<Message> SendMessage(Message message)
- {
- await client.GetTable<Message>().InsertAsync(message);
- //TODO add update conversation last message
- var convoTable = client.GetTable<Conversation>();
- var convoList = await convoTable.Where(c => c.Id == message.ConversationId).ToListAsync();
- foreach(var c in convoList)
- {
- c.LastMessage = message.Text;
- await convoTable.UpdateAsync(c);
- }
- return message;
- }
- public async Task<Message[]> GetMessages(string conversationId)
- {
- var list = await client.GetTable<Message>().Where(m => m.ConversationId == conversationId).ToListAsync();
- return list.ToArray();
- }
- public async Task<User> Login(string username, string password)
- {
- var userTable = client.GetTable<User>();
- var old = await userTable.Where(f => f.Username == username).ToListAsync();
- var user = new User {
- Username = username,
- Password = password,
- };
- if(old.Count > 0){
- if(old[0].Password != password)
- throw new Exception("Incorrect username or password");
- else
- return old[0];
- }else{
- await userTable.InsertAsync(user);
- }
- return user;
- }
- public Task<User> Register(User user)
- {
- throw new NotImplementedException();
- }
- public async Task LoadConversation()
- {
- var settings = ServiceContainer.Resolve<ISettings>();
- var friends = await client.GetTable<Friend>().Where(f => f.MyId == settings.user.Id).ToListAsync();
- var cTable = client.GetTable<Conversation>();
- foreach (var f in friends)
- {
- await cTable.InsertAsync(new Conversation
- {
- MyId = settings.user.Id,
- MyUsername = settings.user.Username,
- UserId = f.UserId,
- Username = f.Username,
- LastMessage = "Last",
- });
- }
- }
- public async Task<Conversation> StartConversation(string userId, string username)
- {
- var settings = ServiceContainer.Resolve<ISettings>();
- var c = new Conversation
- {
- MyId = settings.user.Id,
- MyUsername = settings.user.Username,
- UserId = userId,
- Username = username,
- LastMessage = "New Conversation",
- };
- await client.GetTable<Conversation>().InsertAsync(c);
- return c;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement