Пример #1
0
        async public Task <List <Chat> > GetChannelChats(string channelId, DateTime since)
        {
            if (string.IsNullOrEmpty(channelId))
            {
                return(null);
            }

            channelId = channelId.ToLower();

            using (uChatDataContext db = new uChatDataContext())
            {
                //string g = "9bb5d62f-2563-4d88-ba43-46fa09b04a1e";
                //var user = await db.Users.FirstOrDefaultAsync(x => x.UserId == g);
                var channel = await db.Channels.FindAsync(channelId);

                var chats = (from c in db.Chats
                             where c.Channel == channel && c.CreatedOn >= since.ToUniversalTime()
                             orderby c.CreatedOn
                             select c)
                            .Include("User")
                            .Include("Channel");

                return(await chats.ToListAsync());
            }
        }
Пример #2
0
 async public Task <List <Channel> > GetChannels()
 {
     using (uChatDataContext db = new uChatDataContext())
     {
         return(await db.Channels.ToListAsync());
     }
 }
Пример #3
0
 async public Task <Channel> GetChannel(string channelId)
 {
     using (uChatDataContext db = new uChatDataContext())
     {
         channelId = channelId.ToLower();
         return(await db.Channels.FindAsync(channelId));
     }
 }
Пример #4
0
        async public Task <Chat> GetChat(string id)
        {
            using (uChatDataContext db = new uChatDataContext())
            {
                var chat = await db.Chats.FindAsync(id);

                return(chat);
            }
        }
Пример #5
0
        async public Task <Channel> AddChannel(string name)
        {
            using (uChatDataContext db = new uChatDataContext())
            {
                Channel ch = new Channel(name);
                db.Channels.Add(ch);
                await db.SaveChangesAsync();

                return(ch);
            }
        }
Пример #6
0
        async public Task <Chat> AddChat(Chat chat)
        {
            using (uChatDataContext db = new uChatDataContext())
            {
                chat.ChatId    = Guid.NewGuid().ToString();
                chat.CreatedOn = chat.CreatedOn.ToUniversalTime();
                db.Chats.Add(chat);
                await db.SaveChangesAsync();

                return(chat);
            }
        }
Пример #7
0
        async public Task <List <Mail> > GetMail(string userId, DateTime since)
        {
            using (uChatDataContext db = new uChatDataContext())
            {
                userId = userId.ToLower();

                var mb = await db.Mailboxes.FindAsync(userId);

                var mails = db.Mails.Where(x => x.ToUserId == userId && x.CreatedOn >= since);
                return(await mails.ToListAsync());
            }
        }
Пример #8
0
        async public Task <Mail> AddMail(Mail mail)
        {
            using (uChatDataContext db = new uChatDataContext())
            {
                var mb = await db.Mailboxes.FindAsync(mail.FromUserId);

                mail.MailId    = Guid.NewGuid().ToString().ToLower();
                mail.CreatedOn = DateTime.UtcNow;
                mail.Mailbox   = mb;
                mail.MailboxId = mb.MailboxId;
                db.Mails.Add(mail);
                return(mail);
            }
        }
Пример #9
0
        async public Task <User> Authenticate(string userId, string password, string playFabId)
        {
            User user = null;

            using (var db = new uChatDataContext())
            {
                if (!string.IsNullOrEmpty(playFabId))
                {
                    user = await db.Users.FirstOrDefaultAsync(x => x.PlayFabId == playFabId);
                }
                else
                {
                    user = await db.Users.FirstOrDefaultAsync(x => x.UserId == userId);
                }

                return(user);
            }
        }
Пример #10
0
        async public Task <User> CreateOrUpdateUser(string userId, string password, string name, string playFabId)
        {
            if (password.Length > 20)
            {
                password = password.Left(20);
            }

            Domain.User user = null;
            using (var db = new uChatDataContext())
            {
                if (!string.IsNullOrEmpty(userId))
                {
                    user = await db.Users.FirstOrDefaultAsync(x => x.UserId == userId);
                }
                if (user == null)
                {
                    user           = new Domain.User();
                    user.CreatedOn = DateTime.UtcNow;
                    user.UserId    = userId;
                    user.Name      = name;
                    user.UserId    = Guid.NewGuid().ToString();
                    PasswordHash hash      = new PasswordHash(password);
                    byte[]       hashBytes = hash.ToArray();
                    user.Password  = hashBytes;
                    user.PlayFabId = playFabId;

                    db.Users.Add(user);
                    await db.SaveChangesAsync();
                }
                else
                {
                    byte[]       hashBytes = user.Password;               //read from store.
                    PasswordHash hash      = new PasswordHash(hashBytes);
                    if (!hash.Verify(password))
                    {
                        return(null);
                    }
                }

                return(user);
            }
        }