public ActionResult Profile(string username)
        {
            string sessionId = this.Request.Cookies.Get("sessionId")?.Value;

            if (!AuthenticationManager.IsAuthenticated(sessionId))
            {
                return(this.RedirectToAction("Login", "Users"));
            }

            User user = AuthenticationManager.GetAuthenticatedUser(sessionId);

            if (string.IsNullOrEmpty(username))
            {
                ProfilePageVm loggedUserVm = this.service.GetProfilePage(user.Username, user.Username);
                if (loggedUserVm == null)
                {
                    return(new HttpNotFoundResult());
                }

                return(this.View("MyProfile", loggedUserVm));
            }

            ProfilePageVm vm = this.service.GetProfilePage(username, user.Username);

            return(this.View(vm));
        }
        public ProfilePageVm GetProfilePage(string wantedUsername, string currentUsername)
        {
            User user = this.Context.Users.First(user1 => user1.Username == wantedUsername);

            if (user == null)
            {
                return(null);
            }

            ProfilePageVm page = new ProfilePageVm();

            page.Username          = wantedUsername;
            page.Email             = user.Email;
            page.InStockCameras    = user.Cameras.Count(camera => camera.Quantity > 0);
            page.OutOfStockCameras = user.Cameras.Count(camera => camera.Quantity == 0);
            page.Phone             = user.Phone;
            page.Id = user.Id;
            if (currentUsername == wantedUsername)
            {
                page.Id = 0;
            }

            page.Cameras = Mapper.Map <IEnumerable <Camera>, IEnumerable <AllCamerasVm> >(user.Cameras);

            return(page);
        }