// The id parameter name should match the DataKeyNames value set on the control
 public void MessagesListView_DeleteItem(int Id)
 {
     var db = new ChatDbContext();
     var selected = db.Messages.Find(Id);
     db.Messages.Remove(selected);
     db.SaveChanges();
 }
 // The return type can be changed to IEnumerable, however to support
 // paging and sorting, the following parameters must be added:
 //     int maximumRows
 //     int startRowIndex
 //     out int totalRowCount
 //     string sortByExpression
 public IQueryable<Message> lvMessages_GetData()
 {
     var db = new ChatDbContext();
     return db.Messages
         .AsQueryable()
         .OrderByDescending(m => m.CreationDate)
         .Take(10)
         .OrderBy(m => m.CreationDate);
 }
 protected void SaveMessage_Click(object sender, EventArgs e)
 {
     var db = new ChatDbContext();
     var item = new Message();
     item.CreationDate = DateTime.Now;
     item.UserId = this.User.Identity.GetUserId();
     item.Content = this.Content.Text;
     db.Messages.Add(item);
     db.SaveChanges();
     this.Content.Text = string.Empty;
     lvMessages.DataBind();
 }
 public void lvMessages_InsertItem()
 {
     var db = new ChatDbContext();
     var item = new Message();
     TryUpdateModel(item);
     if (ModelState.IsValid)
     {
         item.CreationDate = DateTime.Now;
         db.Messages.Add(item);
         db.SaveChanges();
     }
 }
        public void MessagesListView_InsertItem()
        {
            var item = new Message();
            TryUpdateModel(item);
            item.CreationDate = DateTime.Now;
            item.UserId = this.User.Identity.GetUserId();

            if (ModelState.IsValid)
            {
                var db = new ChatDbContext();
                db.Messages.Add(item);
                db.SaveChanges();
            }
        }
 // The id parameter name should match the DataKeyNames value set on the control
 public void MessagesListView_UpdateItem(int Id)
 {
     var db = new ChatDbContext();
     Message item = db.Messages.Find(Id);
     if (item == null)
     {
         // The item wasn't found
         ModelState.AddModelError("", String.Format("Item with id {0} was not found", Id));
         return;
     }
     TryUpdateModel(item);
     if (ModelState.IsValid)
     {
         db.SaveChanges();
     }
 }
        private void btnLogin_Click(object sender, EventArgs e)
        {
            using (ChatDbContext db = new ChatDbContext())
            {
                var result = db.UserTypes.FirstOrDefault(x => x.Id == (int)UserTypes.Client);
                if (result == null)
                {
                    db.UserTypes.Add(new UserType()
                    {
                        UserTypeName = "Server"
                    });
                    db.SaveChanges();

                    db.UserTypes.Add(new UserType()
                    {
                        UserTypeName = "Client"
                    });
                    db.SaveChanges();
                }

                var resultUser = db.Users.FirstOrDefault(x => x.UserName == txtUserName.Text.ToLower().Trim() || x.Password == txtPassword.Text);
                if (resultUser == null)
                {
                    var addUser = db.Users.Add(new User()
                    {
                        UserName   = txtUserName.Text.ToLower().Trim(),
                        Password   = txtPassword.Text,
                        UserTypeID = (int)UserTypes.Client,
                    });
                    db.SaveChanges();
                }
                else
                {
                    LoginViewModel.UserName = resultUser.UserName;
                    LoginViewModel.UserID   = resultUser.Id;
                    this.Hide();
                    frmClient frmClient = new frmClient();
                    frmClient.Show();
                }
            }
        }
        public void Connect(string userName, string email)
        {
            emailIDLoaded = email;
            var id = Context.ConnectionId;

            using (ChatDbContext dbContext = new ChatDbContext(connectionString))
            {
                var connectedChatUser = dbContext.ChatUserDetails.FirstOrDefault(x => x.EmailAddress == email);
                if (connectedChatUser != null)
                {
                    dbContext.ChatUserDetails.Remove(connectedChatUser);
                    dbContext.SaveChanges();

                    // Disconnect the already existing user with same email id
                    Clients.All.onUserDisconnectedExisting(connectedChatUser.ConnectionId, connectedChatUser.UserName);
                }

                var Users = dbContext.ChatUserDetails.ToList();
                if (Users.Where(x => x.EmailAddress == email).ToList().Count == 0)
                {
                    var userdetails = new ChatUserDetail
                    {
                        ConnectionId = id,
                        UserName     = userName,
                        EmailAddress = email
                    };
                    dbContext.ChatUserDetails.Add(userdetails);
                    dbContext.SaveChanges();

                    // send to caller
                    var connectedUsers = dbContext.ChatUserDetails.ToList();
                    var CurrentMessage = dbContext.ChatMessageDetails.ToList();
                    //Establish connect with message, user name and connected users list
                    Clients.Caller.onConnected(id, userName, connectedUsers, CurrentMessage);
                }

                // send to all except caller client
                Clients.AllExcept(id).onNewUserConnected(id, userName, email);
            }
        }
Example #9
0
        private static void ImportMessageToDatabase(MessageDto message)
        {
            if (string.IsNullOrWhiteSpace(message.Content))
            {
                throw new ArgumentException("Content is required");
            }

            if (string.IsNullOrWhiteSpace(message.Recipient))
            {
                throw new ArgumentException("Recipient is required");
            }

            if (string.IsNullOrWhiteSpace(message.Sender))
            {
                throw new ArgumentException("Sender is required");
            }

            var context     = new ChatDbContext();
            var recipientId = context.Users
                              .Where(x => x.Username == message.Recipient)
                              .Select(x => x.Id)
                              .FirstOrDefault();

            var senderId = context.Users
                           .Where(x => x.Username == message.Sender)
                           .Select(x => x.Id)
                           .FirstOrDefault();
            var newMessage = new UserMessage
            {
                Content     = message.Content,
                DateTime    = message.DateTime,
                RecipientId = recipientId,
                SenderId    = senderId
            };

            context.UserMessages.Add(newMessage);
            context.SaveChanges();
        }
Example #10
0
        public async Task MessageLoader(string id1, string id2)
        {
            using (ChatDbContext db = new ChatDbContext())
            {
                var messages = (from message in db.Msgs
                                where (message.IdFrom == id1 && message.IdTo == id2) || (message.IdTo == id1 && message.IdFrom == id2)
                                select message).ToList();
                foreach (var item in messages)
                {
                    if (item.IdFrom == id1)
                    {
                        await Clients.Caller.SendAsync("SendLeft", item.EmailFrom.Remove(item.EmailFrom.IndexOf('\x40')) + ": ", item.Message, item.Time.ToString("hh.mm"));
                    }
                    else
                    {
                        await Clients.Caller.SendAsync("SendRight", item.EmailFrom.Remove(item.EmailFrom.IndexOf('\x40')) + ": ", item.Message, item.Time.ToString("hh.mm"));

                        item.Read = true;
                    }
                }
                await db.SaveChangesAsync();
            }
        }
        // GET: Chat
        public ActionResult Index()
        {
            using (var db = new ChatDbContext())
            {
                var groups = db.Groups.OrderBy(x => x.GroupName).ToList();
                var user   = db.Users.Include(u => u.Groups).SingleOrDefault(u => u.UserName == User.Identity.Name);
                if (user != null)
                {
                    var mygroups = user.Groups.OrderBy(x => x.GroupName).ToList();
                    ViewBag.MyGroupId = new SelectList(mygroups, "GroupName", "GroupName");
                }
                else
                {
                    ViewBag.MyGroupId = new SelectList(new[] { new Group()
                                                               {
                                                                   GroupName = "Public"
                                                               } }, "GroupName", "GroupName");;
                }

                ViewBag.GroupId = new SelectList(groups, "GroupName", "GroupName");
                return(View());
            }
        }
Example #12
0
 public Repository(ChatDbContext context)
 {
     Db    = context;
     DbSet = Db.Set <T>();
 }
 public ChatMessagesController(ChatDbContext context)
 {
     _context = context;
 }
 public IQueryable <Person> GetPersonByIdAsync(
     Guid id,
     [Service] ChatDbContext dbContext) =>
 dbContext.People.Where(t => t.Id == id);
 public IQueryable <Person> GetPersonByEmailAsync(
     string email,
     [Service] ChatDbContext dbContext) =>
 dbContext.People.Where(t => t.Email == email);
Example #16
0
 public MessageController(IMapper mapper, ChatDbContext context)
 {
     this.context = context;
     this.mapper  = mapper;
 }
Example #17
0
 public UserRepository(ChatDbContext context) : base(context)
 {
 }
Example #18
0
        public void SetCrocoApplication(IServiceCollection services)
        {
            var memCache = new MemoryCache(new MemoryCacheOptions());

            services.AddSingleton <IMemoryCache, MemoryCache>(s => memCache);

            var baseOptions = new EFCrocoApplicationOptions
            {
                CacheManager         = new ApplicationCacheManager(memCache),
                GetDbContext         = () => ChatDbContext.Create(Configuration),
                RequestContextLogger = new CrocoWebAppRequestContextLogger(),
                FileOptions          = new CrocoFileOptions
                {
                    SourceDirectory       = Env.WebRootPath,
                    ImgFileResizeSettings = new List <ImgFileResizeSetting>
                    {
                        new ImgFileResizeSetting
                        {
                            ImageSizeName = ImageSizeType.Icon.ToString(),
                            MaxHeight     = 50,
                            MaxWidth      = 50
                        },

                        new ImgFileResizeSetting
                        {
                            ImageSizeName = ImageSizeType.Small.ToString(),
                            MaxHeight     = 200,
                            MaxWidth      = 200
                        },

                        new ImgFileResizeSetting
                        {
                            ImageSizeName = ImageSizeType.Medium.ToString(),
                            MaxHeight     = 500,
                            MaxWidth      = 500
                        }
                    },
                },
                RootPath         = Env.ContentRootPath,
                AfterInitActions = ApplicationActions
            }.GetApplicationOptions();


            baseOptions.AddDelayedApplicationLogger()
            .AddHangfireEventSourcerAndJobManager();

            var options = new CrocoWebApplicationOptions()
            {
                ApplicationUrl = "https://findtask.ru",
                CrocoOptions   = baseOptions,
            };

            var application = new MyCrocoWebApplication(options)
            {
                IsDevelopment = Env.EnvironmentName == "Development"
            };

            CrocoApp.Application = application;

            services.AddSingleton(CrocoApp.Application);
        }
        public async Task <CreateUserPayload> CreateUser(
            CreateUserInput input,
            [Service] ChatDbContext dbContext,
            CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(input.Name))
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("The name cannot be empty.")
                          .SetCode("USERNAME_EMPTY")
                          .Build());
            }

            if (string.IsNullOrEmpty(input.Email))
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("The email cannot be empty.")
                          .SetCode("EMAIL_EMPTY")
                          .Build());
            }

            if (string.IsNullOrEmpty(input.Password))
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("The password cannot be empty.")
                          .SetCode("PASSWORD_EMPTY")
                          .Build());
            }

            string salt = Guid.NewGuid().ToString("N");

            using var sha = SHA512.Create();
            byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(input.Password + salt));

            Guid personId = Guid.NewGuid();

            var user = new User
            {
                Id           = Guid.NewGuid(),
                PersonId     = personId,
                Email        = input.Email,
                PasswordHash = Convert.ToBase64String(hash),
                Salt         = salt
            };

            var person = new Person
            {
                Id       = personId,
                UserId   = user.Id,
                Name     = input.Name,
                Email    = input.Email,
                LastSeen = DateTime.UtcNow,
                ImageUri = input.Image
            };

            dbContext.Users.Add(user);
            dbContext.People.Add(person);

            await dbContext.SaveChangesAsync();

            return(new CreateUserPayload(user, input.ClientMutationId));
        }
Example #20
0
 public MessageRepository(ChatDbContext context)
 {
     _context = context;
 }
        // The return type can be changed to IEnumerable, however to support
        // paging and sorting, the following parameters must be added:
        //     int maximumRows
        //     int startRowIndex
        //     out int totalRowCount
        //     string sortByExpression
        public IQueryable<Message> MessagesListView_GetData()
        {
            var db = new ChatDbContext();

            return db.Messages.OrderByDescending(b => b.CreationDate);
        }
Example #22
0
 public MessageRepository(ChatDbContext chatDbContext, IRepository <User> userRepository)
 {
     _context     = chatDbContext;
     _contextUser = userRepository;
 }
Example #23
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="context"></param>
 public ReadMessageService(ChatDbContext context)
 {
     _context = context;
 }
Example #24
0
 public AccountService(ChatDbContext dbContext, IUserRepository rep)
 {
     _dbContext = dbContext;
     _rep       = rep;
 }
Example #25
0
 public RoomRepository(ChatDbContext context)
 {
     _context = context;
 }
 public ChatController(ILogger <ChatController> logger
                       , ChatDbContext dbContext)
 {
     _dbContext = dbContext;
     _logger    = logger;
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="context"></param>
 public ConversationService(ChatDbContext context)
 {
     _context = context;
 }
        public SettingRepository()
        {
            var optionsBuilder = new DbContextOptionsBuilder <ChatDbContext>();

            context = new ChatDbContext(optionsBuilder.Options);
        }
Example #29
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="context"></param>
 public InvitedUserService(ChatDbContext context)
 {
     _context = context;
 }
 protected void Page_Load(object sender, EventArgs e)
 {
     this.db = new ChatDbContext();
 }
        public async Task <LoginPayload> LoginAsync(
            LoginInput input,
            [Service] ChatDbContext dbContext,
            [Service] PersonByEmailDataLoader personByEmail,
            [Service] ITopicEventSender eventSender,
            CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(input.Email))
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("The email mustn't be empty.")
                          .SetCode("EMAIL_EMPTY")
                          .Build());
            }

            if (string.IsNullOrEmpty(input.Password))
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("The password mustn't be empty.")
                          .SetCode("PASSWORD_EMPTY")
                          .Build());
            }

            User?user = await dbContext.Users.FirstOrDefaultAsync(t => t.Email == input.Email);

            if (user is null)
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("The specified username or password are invalid.")
                          .SetCode("INVALID_CREDENTIALS")
                          .Build());
            }

            using var sha = SHA512.Create();
            byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(input.Password + user.Salt));

            if (!Convert.ToBase64String(hash).Equals(user.PasswordHash, StringComparison.Ordinal))
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("The specified username or password are invalid.")
                          .SetCode("INVALID_CREDENTIALS")
                          .Build());
            }

            Person me = await personByEmail.LoadAsync(input.Email, cancellationToken);

            var identity = new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, user.Email),
                new Claim(ClaimTypes.Email, user.Email),
                new Claim(WellKnownClaimTypes.UserId, me.Id.ToString()),
            });

            var tokenHandler = new JwtSecurityTokenHandler();

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = identity,
                Expires            = DateTime.UtcNow.AddHours(12),
                SigningCredentials = new SigningCredentials(
                    new SymmetricSecurityKey(Startup.SharedSecret),
                    SecurityAlgorithms.HmacSha256Signature)
            };

            SecurityToken token       = tokenHandler.CreateToken(tokenDescriptor);
            string        tokenString = tokenHandler.WriteToken(token);

            await eventSender.SendAsync <string, Person>("online", me);

            return(new LoginPayload(me, tokenString, "bearer", input.ClientMutationId));
        }
Example #32
0
 public MessageRepository(ChatDbContext dbContext)
 {
     _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
 }
Example #33
0
 public ChatRoomEFRepository(ChatDbContext context)
     : base(context)
 {
     _context = context;
 }
Example #34
0
 public DocumentService(ChatDbContext chatDbContext)
 {
     _chatDbContext = chatDbContext;
 }
Example #35
0
 public ChatHub(ChatDbContext context)
 {
     _context = context;
 }
 public IQueryable <Person> GetMe(
     [GlobalState] string currentUserEmail,
     [Service] ChatDbContext dbContext) =>
 dbContext.People.Where(t => t.Email == currentUserEmail);
Example #37
0
 public UserRepository(ChatDbContext chatDbContext)
 {
     _context = chatDbContext;
 }
 public IQueryable <Person> GetPeople(
     [Service] ChatDbContext dbContext) =>
 dbContext.People;