// Index
        // GET: Messeges
        // Index page acts as the user inbox
        public async Task <IActionResult> Index()
        {
            IdentityUser user = await _userManager.GetUserAsync(User);

            string username      = user.UserName;
            int    messegesCount = await _messegesHandler.CountReceivedUserMessegesAsync(username);

            int readCount = await _usersHandler.GetUserReadMesseges(user);

            int deletedCount = await _usersHandler.GetUserDeletedMesseges(user);

            ReadMessegesViewModel vm = new ReadMessegesViewModel
            {
                Senders              = await CreateInboxUserNamesSelectionList(username),
                SelectedSenders      = new List <string>(),
                MessegesCount        = messegesCount,
                ReadMessegesCount    = readCount,
                DeletedMessegesCount = deletedCount,
            };

            return(View(vm));
        }
        public async Task <IActionResult> Index(ReadMessegesViewModel vm)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    IdentityUser user = await _userManager.GetUserAsync(User);

                    string username      = user.UserName;
                    int    messegesCount = await _messegesHandler.CountReceivedUserMessegesAsync(username);

                    string         selectedSender = vm.SelectedSenders.First();
                    List <Message> messeges       = await _messegesHandler.GetInboxMessegesFromUser(await GetUserName(), vm.SelectedSenders);

                    List <SelectListItem> senders = await CreateInboxUserNamesSelectionList(username);

                    int readCount = await _usersHandler.GetUserReadMesseges(user);

                    int deletedCount = await _usersHandler.GetUserDeletedMesseges(user);

                    vm = new ReadMessegesViewModel
                    {
                        Senders              = senders,
                        SelectedSenders      = new List <string>(),
                        SelectedSender       = selectedSender,
                        Messeges             = CreateMessegesViewModel(messeges),
                        MessegesCount        = messegesCount,
                        ReadMessegesCount    = readCount,
                        DeletedMessegesCount = deletedCount,
                    };
                    return(View(vm));
                } catch (Exception e)
                {
                    // Dummy catch-exception
                }
            }
            return(await Index());
        }