Example #1
0
        public IActionResult Index()
        {
            int dealerId = int.Parse(User.Claims.FirstOrDefault(x => x.Type == "DealerId").Value);

            ManageIndexViewModel manageIndexViewModel = new ManageIndexViewModel()
            {
                DealerId           = dealerId,
                DealerEmployees    = _outdoorPowerRepository.GetDealerEmployees(dealerId),
                MonthToDateMetrics = _metricRepository.GetMonthToDateMetrics(dealerId),
                YearToDateMetrics  = _metricRepository.GetYearToDateMetrics(dealerId),
                UnitsSoldMetrics   = _metricRepository.GetUnitsSoldMetrics(dealerId),
                MonthlyRevenue     = _metricRepository.GetMonthlyRevenue(dealerId),
                YearlyRevenue      = _metricRepository.GetYearlyRevenue(dealerId)
            };

            manageIndexViewModel.SearchResults = _outdoorPowerRepository.SearchInventory(manageIndexViewModel);

            if (manageIndexViewModel.SearchResults != null)
            {
                IEnumerable <int> ids       = manageIndexViewModel.SearchResults.Select(c => c.Id).Distinct();
                List <Customer>   customers = _metricRepository.GetCustomers(ids);
                List <SalesInfoModalViewModel> salesInfo = _metricRepository.GetSalesInfo(ids);

                foreach (DealerInventory result in manageIndexViewModel.SearchResults)
                {
                    result.Customers = customers.Where(c => c.OPInventoryId == result.Id).ToList();
                    result.SalesInfo = salesInfo.Where(c => c.Id == result.Id).ToList();
                }
            }

            return(View(manageIndexViewModel));
        }
Example #2
0
        public async Task <ActionResult> SavePersonalData(ManageIndexViewModel viewmodel)
        {
            var user = _dbcontext.Users.FirstOrDefault(u => u.Id == viewmodel.UserId);

            if (user != null)
            {
                var imagePath = user.ProfilePictureName;
                if (viewmodel.ProfilePictureUpload != null)
                {
                    imagePath = Path.Combine(@"C:\users\public\leaveyourcouch\profilepictures\",
                                             (Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(viewmodel.ProfilePictureUpload.FileName)));
                    user.ProfilePictureName = imagePath;
                }

                user.Pseudo     = viewmodel.Pseudo;
                user.FirstName  = viewmodel.FirstName;
                user.Address    = viewmodel.Address;
                user.Gender     = viewmodel.Gender;
                user.Descrption = viewmodel.Descrption;

                await _dbcontext.SaveChangesAsync();

                if (viewmodel.ProfilePictureUpload != null)
                {
                    _imgHelper.SaveUploadedImage(viewmodel.ProfilePictureUpload, imagePath);
                }
            }

            return(RedirectToAction("Index", new { Message = ManageMessageId.PersonnalInfos }));
        }
Example #3
0
        public async Task <IActionResult> ChangePassword(ManageIndexViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(nameof(Index), model));
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            user.PasswordHash = _userManager.PasswordHasher.HashPassword(user, model.ChangePasswordViewModel.NewPassword);

            var changePasswordResult = await _userManager.UpdateAsync(user);

            if (!changePasswordResult.Succeeded)
            {
                AddErrors(changePasswordResult);
                return(View(nameof(Index), model));
            }

            await _signInManager.SignInAsync(user, isPersistent : false);

            _logger.LogInformation("User changed their password successfully.");
            StatusMessage = "Пароль был изменен.";

            return(RedirectToAction(nameof(Index)));
        }
        public async Task <IActionResult> Index(ManageIndexViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var phoneNumber = user.PhoneNumber;

            if (model.PhoneNumber != phoneNumber)
            {
                var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, model.PhoneNumber);

                if (!setPhoneResult.Succeeded)
                {
                    throw new ApplicationException($"Unexpected error occurred setting phone number for user with ID '{user.Id}'.");
                }
            }

            StatusMessage = "Your profile has been updated";
            return(RedirectToAction(nameof(Index)));
        }
Example #5
0
        public async Task <IActionResult> SendInvitation(ManageIndexViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(nameof(Index), model));
            }

            string pwd = GenerateRandomPassword(_identityOptions.Password);

            var user = new ApplicationUser
            {
                UserName = model.UserInvitationViewModel.Email,
                Email    = model.UserInvitationViewModel.Email
            };

            var result = await _userManager.CreateAsync(user, pwd);

            await _userManager.AddToRoleAsync(user, Constants.Roles.Manager);

            if (result.Succeeded)
            {
                string appUrl = $"{Request.Scheme}://{Request.Host}";
                await _emailSender.SendEmailInvitationAsync(appUrl, model.UserInvitationViewModel.Email, pwd);

                _logger.LogInformation($"Created new account with password for email {model.UserInvitationViewModel.Email}");
                StatusMessage = "Приглашение отослано";

                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                AddErrors(result);
                return(View(nameof(Index), model));
            }
        }
Example #6
0
        //
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
                : message == ManageMessageId.Error ? "An error has occurred."
                : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
                : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
                : "";

            ViewBag.UserName = User.Identity.GetUserName();

            //var userDevices = DeviceRepo.FindAllDeviceOfCurrentUser();

            var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

            var devices             = DeviceRepo.FindAllDeviceOfCurrentUser();
            ManageIndexViewModel vm = new ManageIndexViewModel
            {
                DCUser  = user,
                Devices = devices
            };

            return(View(vm));
        }
        public async Task <IActionResult> Index(ManageMessage?message = null)
        {
            ViewData["StatusMessage"] =
                message == ManageMessage.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessage.AddPhoneSuccess ? "Your phone number was added."
                : message == ManageMessage.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
                : message == ManageMessage.Error ? "An error has occurred."
                : "";

            var user = await GetCurrentUserAsync();

            if (user == null)
            {
                return(View("Error"));
            }

            var model = new ManageIndexViewModel
            {
                HasPassword = await _userManager.HasPasswordAsync(user),
                PhoneNumber = await _userManager.GetPhoneNumberAsync(user),
                TwoFactor   = await _userManager.GetTwoFactorEnabledAsync(user)
            };

            return(View(model));
        }
Example #8
0
        //
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                                : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
                                : message == ManageMessageId.Error ? "An error has occurred."
                                : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
                                : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
                                : "";

            var userId = User.Identity.GetUserId();
            var user   = UserManager.FindById(userId);

            ViewBag.CurrentUser = user;

            var model = new ManageIndexViewModel
            {
                HasPassword       = HasPassword(),
                PhoneNumber       = await UserManager.GetPhoneNumberAsync(userId),
                TwoFactor         = await UserManager.GetTwoFactorEnabledAsync(userId),
                Logins            = await UserManager.GetLoginsAsync(userId),
                BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
            };

            model.Orders = _db.Orders
                           .AsNoTracking()
                           .Include(x => x.Projects)
                           .Where(x => x.UserId == user.Id)
                           .ToList();

            return(View(model));
        }
Example #9
0
        public async Task <IActionResult> Index(ManageMessageId?message = null)
        {
            ViewData["StatusMessage"] =
                message == ManageMessageId.ChangePasswordSuccess ? "Twoje hasło zostało zmienione."
                : message == ManageMessageId.EmailChangeSuccess ? "Twój adres email został zmieniony."
                : message == ManageMessageId.EditProfileSuccess ? "Dane personalne zostały zaaktualizowane"
                : message == ManageMessageId.Error ? "Wystąpił błąd. Spróbuj ponownie później."
                : "";

            var user = await GetCurrentUserAsync();

            if (user == null)
            {
                return(View("Error"));
            }
            var model = new ManageIndexViewModel
            {
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                PhoneNumber = await _userManager.GetPhoneNumberAsync(user),
                Email       = user.Email,
            };

            return(View(model));
        }
Example #10
0
        //
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
                : message == ManageMessageId.Error ? "An error has occurred."
                : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
                : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
                : "";

            var userId      = User.Identity.GetUserId();
            var currentUser = AplicationUserService.FindById(userId);

            var model = new ManageIndexViewModel
            {
                HasPassword       = HasPassword(),
                PhoneNumber       = await AplicationUserService.GetPhoneNumberAsync(userId),
                TwoFactor         = await AplicationUserService.GetTwoFactorEnabledAsync(userId),
                Logins            = await AplicationUserService.GetLoginsAsync(userId),
                BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId),
                AvatarId          = currentUser.PictureId,
                AvatarUrl         = mediaStorageService.GetPictureUrl(currentUser.PictureId),
                UserName          = currentUser.UserName,
                Email             = currentUser.Email,
                Description       = currentUser.Description,
                Roles             = string.Join(", ", AplicationUserService.GetRoles(userId).ToArray())
            };

            return(RedirectToAction("UserEdit", new { Id = userId }));
        }
Example #11
0
        //
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
                : message == ManageMessageId.Error ? "An error has occurred."
                : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
                : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
                : "";

            var userId = User.Identity.GetUserId();
            var user   = await UserManager.FindByIdAsync(userId);

            var model = new ManageIndexViewModel
            {
                HasPassword                  = HasPassword(),
                PhoneNumber                  = user.PhoneNumber,
                TwoFactor                    = user.TwoFactorEnabled,
                Logins                       = await UserManager.GetLoginsAsync(userId),
                BrowserRemembered            = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId),
                IsGoogleAuthenticatorEnabled = user.IsGoogleAuthenticatorEnabled
            };

            return(View(model));
        }
Example #12
0
        private async Task LoadAsync(User user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            Email = userName;

            ManageIndexViewModel = _mapper.Map <ManageIndexViewModel>(user);
        }
Example #13
0
        //
        // GET: /Manage/Index
        public ActionResult Index()
        {
            var model = new ManageIndexViewModel();

            var missions = db.Missions.Where(m => m.Author.UserName.Equals(User.Identity.Name) && m.Status != MissionStatus.Removed).ToList();

            model.Missions = MissionHelper.GetListMissionViewModels(missions);

            if (User.IsInRole(ConstantsHelper.AdminRole))
            {
                model.MissionsToApprove = MissionHelper.GetListMissionViewModels(db.Missions.Where(m => m.Status == Models.FoundryMissionModels.Enums.MissionStatus.InReview).OrderBy(m => m.DateLastUpdated).ToList());
                model.Authors           = AccountHelper.GetAuthorViewModels(db.Users.OrderBy(u => u.UserName).ToList(), db);
            }

            return(View(model));
        }
Example #14
0
        public ActionResult Index(ManageIndexViewModel model, string navitem)
        {
            if (navitem == "nav-row-back")
            {
                return(RedirectToMenu());
            }

            model = getIVM(navitem);

            setNavParam(navitem);

            SetCID();

            model.CID = CID;

            return(View(model));
        }
Example #15
0
        public async Task <IActionResult> Index()
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var model = new ManageIndexViewModel
            {
                ChangePasswordViewModel = new ChangePasswordViewModel(),
                UserInvitationViewModel = new UserInvitationViewModel(),
                StatusMessage           = StatusMessage
            };

            return(View(model));
        }
Example #16
0
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.Error ? "An error has occurred."
                : "";

            var userId = User.Identity.GetUserId();
            var model  = new ManageIndexViewModel
            {
                HasPassword       = HasPassword(),
                Logins            = await UserManager.GetLoginsAsync(userId),
                BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
            };

            return(View(model));
        }
        public async Task <IActionResult> Index()
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var model = new ManageIndexViewModel
            {
                Username               = user.UserName,
                PhoneNumber            = user.PhoneNumber,
                IsPhoneNumberConfirmed = user.EmailConfirmed,
                StatusMessage          = StatusMessage
            };

            return(View(model));
        }
 //
 // GET: /Account/Index
 public async Task<ActionResult> Index(ManageMessageId? message)
 {
     ViewBag.StatusMessage =
         message == ManageMessageId.ChangePasswordSuccess ? IdentityResourceHelper.Load(IdentitySettings.IdentityResource, "ManageController_Index_ChangePasswordSuccess")
         : message == ManageMessageId.SetPasswordSuccess ? IdentityResourceHelper.Load(IdentitySettings.IdentityResource, "ManageController_Index_SetPasswordSuccess")
         : message == ManageMessageId.SetTwoFactorSuccess ? IdentityResourceHelper.Load(IdentitySettings.IdentityResource, "ManageController_Index_SetTwoFactorSuccess")
         : message == ManageMessageId.Error ? IdentityResourceHelper.Load(IdentitySettings.IdentityResource, "Common_Error")
         : message == ManageMessageId.AddPhoneSuccess ? IdentityResourceHelper.Load(IdentitySettings.IdentityResource, "ManageController_Index_AddPhoneSuccess")
         : message == ManageMessageId.RemovePhoneSuccess ? IdentityResourceHelper.Load(IdentitySettings.IdentityResource, "ManageController_Index_RemovePhoneSuccess")
         : "";
     
     ManageIndexViewModel model = new ManageIndexViewModel
     {
         HasPassword = HasPassword(),
         PhoneNumber = await _userManager.GetPhoneNumberAsync(User.Identity.GetUserId2<ObjectId>()),
         TwoFactor = await _userManager.GetTwoFactorEnabledAsync(User.Identity.GetUserId2<ObjectId>()),
         Logins = await _userManager.GetLoginsAsync(User.Identity.GetUserId2<ObjectId>()),
         BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(User.Identity.GetUserId())
     };
     return View(model);
 }
Example #19
0
        //
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage = _vbMessagefactory.ManageMessage(message);

            var userId = User.Identity.GetUserId();
            var mail   = await UserManager.GetEmailAsync(userId);

            var currentUser = UserManager.Users.FirstOrDefault(u => u.Email == mail);

            if (currentUser == null)
            {
                return(HttpNotFound("Profile not found"));
            }
            var model = new ManageIndexViewModel
            {
                HasPassword       = HasPassword(),
                PhoneNumber       = await UserManager.GetPhoneNumberAsync(userId),
                TwoFactor         = await UserManager.GetTwoFactorEnabledAsync(userId),
                Logins            = await UserManager.GetLoginsAsync(userId),
                BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId),
                UserId            = userId,
                Gender            = currentUser.Gender,
                Email             = currentUser.Email,
                Descrption        = currentUser.Descrption
            };

            if (!string.IsNullOrEmpty(currentUser.ProfilePictureName))
            {
                model.ProfilePicture = _imgHelper.ToRatioImageDisplay(currentUser.ProfilePictureName);
            }

            model.Address          = currentUser.Address;
            model.Pseudo           = currentUser.Pseudo;
            model.FirstName        = currentUser.FirstName;
            model.EmailIsconfirmed = currentUser.EmailConfirmed;

            return(View(model));
        }
Example #20
0
        public async Task <IActionResult> SendVerificationEmail(ManageIndexViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

            var callbackUrl = Url.EmailConfirmationLink($"{user.UserId}", code, Request.Scheme);
            var email       = user.Email;

            //await _emailSender.SendEmailConfirmationAsync(email, callbackUrl);

            StatusMessage = "Verification email sent. Please check your email.";
            return(RedirectToAction(nameof(Index)));
        }
        //
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
                : message == ManageMessageId.Error ? "An error has occurred."
                : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
                : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
                : "";
            string          userId             = User.Identity.GetUserId();
            UserProfileInfo currentUserProfile = db.UserProfileInfo.Where(x => x.User.Id == userId).Include(x => x.Patients).FirstOrDefault();
            CareGiverUserProfileViewModel careGiverUserProfileViewModel = new CareGiverUserProfileViewModel();

            Mapper.Map <UserProfileInfo, CareGiverUserProfileViewModel>(currentUserProfile, careGiverUserProfileViewModel);

            var model = new ManageIndexViewModel
            {
                HasPassword          = HasPassword(),
                CareGiverUserProfile = careGiverUserProfileViewModel
            };

            return(View(model));
        }
Example #22
0
 public IActionResult Index(ManageIndexViewModel manageIndexViewModel)
 {
     return(View(manageIndexViewModel));
 }
        public ActionResult Index(ManageIndexViewModel viewModel, string sortOrderPA, int?pagePA, string sortOrderRA, int?pageRA, string sortOrderRC, int?pageRC, HttpPostedFileBase upload)
        {
            var userId = User.Identity.GetUserId();

            //Account
            var user = db.ApplicationUsers.Where(u =>
                                                 u.Id.ToString().Equals(userId)).First();

            if (ModelState.IsValid)
            {
                user.Email       = viewModel.ApplicationUser.Email;
                user.PhoneNumber = viewModel.ApplicationUser.PhoneNumber;
                user.FirstName   = viewModel.ApplicationUser.FirstName;
                user.LastName    = viewModel.ApplicationUser.LastName;
                if (user.Avatar != null && upload != null)
                {
                    db.Avatars.Remove(user.Avatar);
                }

                if (upload != null && upload.ContentLength > 0)
                {
                    var avatar = new Avatar
                    {
                        FileName    = System.IO.Path.GetFileName(upload.FileName),
                        ContentType = upload.ContentType
                    };
                    byte[] avatarContent;
                    int    avatarContentLength = upload.ContentLength;
                    using (var reader = new System.IO.BinaryReader(upload.InputStream))
                    {
                        avatarContent = reader.ReadBytes(upload.ContentLength);
                    }

                    Image i;
                    using (MemoryStream ms = new MemoryStream())
                    {
                        ms.Write(avatarContent, 0, avatarContentLength);
                        i = Image.FromStream(ms);
                    }

                    var imageWidth  = i.Width;
                    var imageHeight = i.Height;
                    if (i.Width > 160 || i.Height > 160)
                    {
                        double scale;
                        if (i.Width >= i.Height)
                        {
                            scale = i.Width / 160;
                        }
                        else
                        {
                            scale = i.Height / 160;
                        }

                        imageWidth  = System.Convert.ToInt32(Math.Floor(i.Width / scale));
                        imageHeight = System.Convert.ToInt32(Math.Floor(i.Height / scale));
                    }
                    avatar.FileContent = imageToByteArray(i.GetThumbnailImage
                                                              (imageWidth, imageHeight, () => false, IntPtr.Zero));
                    user.Avatar = avatar;
                }
                db.SaveChanges();
                TempData["alert"] =
                    "<script>alert('Dane użytkownika zostały zmienione.');</script>";
            }
            viewModel.ApplicationUser = user;

            //Personal Advertisements
            var perAds = db.Advertisements.Where(a => a.AuthorId.ToString().Equals(userId) && a.IsFinished == false);

            //Sorting
            ViewBag.CurrentSortPA        = sortOrderPA;
            ViewBag.TitleSortParmPA      = String.IsNullOrEmpty(sortOrderPA) ? "title_desc" : "";
            ViewBag.LocationSortParmPA   = sortOrderPA == "location_asc" ? "location_desc" : "location_asc";
            ViewBag.AddDateSortParmPA    = sortOrderPA == "addDate_asc" ? "addDate_desc" : "addDate_asc";
            ViewBag.DifficultySortParmPA = sortOrderPA == "difficulty_asc" ? "difficulty_desc" : "difficulty_asc";

            switch (sortOrderPA)
            {
            case "title_desc":
                perAds = perAds.OrderByDescending(a => a.Title);
                break;

            case "location_asc":
                perAds = perAds.OrderBy(a => a.Location.Name);
                break;

            case "location_desc":
                perAds = perAds.OrderByDescending(a => a.Location.Name);
                break;

            case "addDate_asc":
                perAds = perAds.OrderBy(a => a.AddDate);
                break;

            case "addDate_desc":
                perAds = perAds.OrderByDescending(a => a.AddDate);
                break;

            case "difficulty_asc":
                perAds = perAds.OrderBy(a => a.Difficulty.Name);
                break;

            case "difficulty_desc":
                perAds = perAds.OrderByDescending(a => a.Difficulty.Name);
                break;

            default:
                perAds = perAds.OrderBy(a => a.Title);
                break;
            }

            int pageSizePA   = 3;
            int pageNumberPA = (pagePA ?? 1);

            viewModel.PersonalAdvertisements = perAds.ToPagedList(pageNumberPA, pageSizePA);

            //Rewarded Advertisements
            var rewAds = db.Advertisements.Where(a => a.Helpers.Select(u => u.Id.ToString()).Contains(userId));

            //Sorting
            ViewBag.CurrentSortRA        = sortOrderRA;
            ViewBag.TitleSortParmRA      = String.IsNullOrEmpty(sortOrderRA) ? "title_desc" : "";
            ViewBag.LocationSortParmRA   = sortOrderRA == "location_asc" ? "location_desc" : "location_asc";
            ViewBag.AddDateSortParmRA    = sortOrderRA == "addDate_asc" ? "addDate_desc" : "addDate_asc";
            ViewBag.DifficultySortParmRA = sortOrderRA == "difficulty_asc" ? "difficulty_desc" : "difficulty_asc";

            switch (sortOrderRA)
            {
            case "title_desc":
                rewAds = rewAds.OrderByDescending(a => a.Title);
                break;

            case "location_asc":
                rewAds = rewAds.OrderBy(a => a.Location.Name);
                break;

            case "location_desc":
                rewAds = rewAds.OrderByDescending(a => a.Location.Name);
                break;

            case "addDate_asc":
                rewAds = rewAds.OrderBy(a => a.AddDate);
                break;

            case "addDate_desc":
                rewAds = rewAds.OrderByDescending(a => a.AddDate);
                break;

            case "difficulty_asc":
                rewAds = rewAds.OrderBy(a => a.Difficulty.Name);
                break;

            case "difficulty_desc":
                rewAds = rewAds.OrderByDescending(a => a.Difficulty.Name);
                break;

            default:
                rewAds = rewAds.OrderBy(a => a.Title);
                break;
            }

            int pageSizeRA   = 3;
            int pageNumberRA = (pageRA ?? 1);

            viewModel.RewardedAdvertisements = rewAds.ToPagedList(pageNumberRA, pageSizeRA);

            //Rewards
            var rew = db.RewardCodes.Where(rc => rc.RewardOwnerId.ToString().Equals(userId));

            //Sorting
            ViewBag.CurrentSort            = sortOrderRC;
            ViewBag.RewardNameSortParmRC   = String.IsNullOrEmpty(sortOrderRC) ? "rewardName_desc" : "";
            ViewBag.ReceivedDateSortParmRC = sortOrderRC == "receivedDate_asc" ? "receivedDate_desc" : "receivedDate_asc";

            switch (sortOrderRC)
            {
            case "rewardName_desc":
                rew = rew.OrderByDescending(r => r.Reward.Name);
                break;

            case "receivedDate_asc":
                rew = rew.OrderBy(r => r.ReceivedDate);
                break;

            case "receivedDate_desc":
                rew = rew.OrderByDescending(r => r.ReceivedDate);
                break;

            default:
                rew = rew.OrderBy(r => r.Reward.Name);
                break;
            }

            int pageSizeRC   = 3;
            int pageNumberRC = (pageRC ?? 1);

            viewModel.RewardCodes = rew.ToPagedList(pageNumberRC, pageSizeRC);

            return(View(viewModel));
        }
        public ActionResult Index(string sortOrderPA, int?pagePA, string sortOrderRA, int?pageRA,
                                  string sortOrderRC, int?pageRC, bool?isRewardSelected, int?selectedReward, int?selectedAdvertisementToDelete)
        {
            var viewModel = new ManageIndexViewModel();

            var userId = User.Identity.GetUserId();

            if (isRewardSelected != null && isRewardSelected == true)
            {
                var    reward     = db.RewardCodes.Find(selectedReward);
                string rewardCode = reward.Code;
                TempData["code"] = "<script>alert('Kod: " + rewardCode + ".');</script>";
            }

            if (selectedAdvertisementToDelete != null)
            {
                Advertisement advertisement = db.Advertisements.Find(selectedAdvertisementToDelete);
                db.Advertisements.Remove(advertisement);
                db.SaveChanges();

                TempData["alert"] = "<script>alert('Ogłoszenie zostało usunięte.');</script>";
            }

            //Account
            var user = db.ApplicationUsers.Where(u => u.Id.ToString().Equals(userId)).First();

            viewModel.ApplicationUser = user;

            //Personal Advertisements
            var perAds = db.Advertisements.Where(a => a.AuthorId.ToString().Equals(userId) && a.IsFinished == false);

            //Sorting
            ViewBag.CurrentSortPA        = sortOrderPA;
            ViewBag.TitleSortParmPA      = String.IsNullOrEmpty(sortOrderPA) ? "title_desc" : "";
            ViewBag.LocationSortParmPA   = sortOrderPA == "location_asc" ? "location_desc" : "location_asc";
            ViewBag.AddDateSortParmPA    = sortOrderPA == "addDate_asc" ? "addDate_desc" : "addDate_asc";
            ViewBag.DifficultySortParmPA = sortOrderPA == "difficulty_asc" ? "difficulty_desc" : "difficulty_asc";

            switch (sortOrderPA)
            {
            case "title_desc":
                perAds = perAds.OrderByDescending(a => a.Title);
                break;

            case "location_asc":
                perAds = perAds.OrderBy(a => a.Location.Name);
                break;

            case "location_desc":
                perAds = perAds.OrderByDescending(a => a.Location.Name);
                break;

            case "addDate_asc":
                perAds = perAds.OrderBy(a => a.AddDate);
                break;

            case "addDate_desc":
                perAds = perAds.OrderByDescending(a => a.AddDate);
                break;

            case "difficulty_asc":
                perAds = perAds.OrderBy(a => a.Difficulty.Name);
                break;

            case "difficulty_desc":
                perAds = perAds.OrderByDescending(a => a.Difficulty.Name);
                break;

            default:
                perAds = perAds.OrderBy(a => a.Title);
                break;
            }

            int pageSizePA   = 3;
            int pageNumberPA = (pagePA ?? 1);

            viewModel.PersonalAdvertisements = perAds.ToPagedList(pageNumberPA, pageSizePA);

            //Rewarded Advertisements
            var rewAds = db.Advertisements.Where(a => a.Helpers.Select(u => u.Id.ToString()).Contains(userId));

            //Sorting
            ViewBag.CurrentSortRA        = sortOrderRA;
            ViewBag.TitleSortParmRA      = String.IsNullOrEmpty(sortOrderRA) ? "title_desc" : "";
            ViewBag.LocationSortParmRA   = sortOrderRA == "location_asc" ? "location_desc" : "location_asc";
            ViewBag.AddDateSortParmRA    = sortOrderRA == "addDate_asc" ? "addDate_desc" : "addDate_asc";
            ViewBag.DifficultySortParmRA = sortOrderRA == "difficulty_asc" ? "difficulty_desc" : "difficulty_asc";

            switch (sortOrderRA)
            {
            case "title_desc":
                rewAds = rewAds.OrderByDescending(a => a.Title);
                break;

            case "location_asc":
                rewAds = rewAds.OrderBy(a => a.Location.Name);
                break;

            case "location_desc":
                rewAds = rewAds.OrderByDescending(a => a.Location.Name);
                break;

            case "addDate_asc":
                rewAds = rewAds.OrderBy(a => a.AddDate);
                break;

            case "addDate_desc":
                rewAds = rewAds.OrderByDescending(a => a.AddDate);
                break;

            case "difficulty_asc":
                rewAds = rewAds.OrderBy(a => a.Difficulty.Name);
                break;

            case "difficulty_desc":
                rewAds = rewAds.OrderByDescending(a => a.Difficulty.Name);
                break;

            default:
                rewAds = rewAds.OrderBy(a => a.Title);
                break;
            }

            int pageSizeRA   = 3;
            int pageNumberRA = (pageRA ?? 1);

            viewModel.RewardedAdvertisements = rewAds.ToPagedList(pageNumberRA, pageSizeRA);

            //Rewards
            var rew = db.RewardCodes.Where(rc => rc.RewardOwnerId.ToString().Equals(userId));

            //Sorting
            ViewBag.CurrentSort            = sortOrderRC;
            ViewBag.RewardNameSortParmRC   = String.IsNullOrEmpty(sortOrderRC) ? "rewardName_desc" : "";
            ViewBag.ReceivedDateSortParmRC = sortOrderRC == "receivedDate_asc" ? "receivedDate_desc" : "receivedDate_asc";

            switch (sortOrderRC)
            {
            case "rewardName_desc":
                rew = rew.OrderByDescending(r => r.Reward.Name);
                break;

            case "receivedDate_asc":
                rew = rew.OrderBy(r => r.ReceivedDate);
                break;

            case "receivedDate_desc":
                rew = rew.OrderByDescending(r => r.ReceivedDate);
                break;

            default:
                rew = rew.OrderBy(r => r.Reward.Name);
                break;
            }

            int pageSizeRC   = 3;
            int pageNumberRC = (pageRC ?? 1);

            viewModel.RewardCodes = rew.ToPagedList(pageNumberRC, pageSizeRC);

            return(View(viewModel));
        }