コード例 #1
0
        private void CreateUser(AdsListingDbContext context, string email, string fullName, string password)
        {
            // Create User Manager
            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            // Ser User manager password validator
            userManager.PasswordValidator = new PasswordValidator
            {
                RequiredLength          = 6,
                RequireDigit            = false,
                RequireLowercase        = false,
                RequireNonLetterOrDigit = false,
                RequireUppercase        = false,
            };

            //Create user object
            var admin = new ApplicationUser
            {
                UserName = email,
                FullName = fullName,
                Email    = email
            };

            //Create user
            var result = userManager.Create(admin, password);

            //Validate result
            if (!result.Succeeded)
            {
                throw new Exception(string.Join(";", result.Errors));
            }
        }
コード例 #2
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var database = new AdsListingDbContext())
            {
                //Get the ad from the database
                var ad = database
                         .Ads
                         .Where(a => a.Id == id)
                         .Include(a => a.Photos)
                         .Include(a => a.Author)
                         .Include(c => c.Category)
                         .Include(l => l.Location)
                         .First();

                if (ad == null)
                {
                    return(HttpNotFound());
                }

                return(View(ad));
            }
        }
コード例 #3
0
        //GET: User/Edit
        public ActionResult Edit(string id)
        {
            //Validate ID
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var database = new AdsListingDbContext())
            {
                // Get the user from the DB
                var user = database
                           .Users
                           .Where(u => u.Id == id)
                           .First();

                // Check if the user is valid
                if (user == null)
                {
                    return(HttpNotFound());
                }

                //Create a view model
                var viewModel = new EditUserViewModel();
                viewModel.User  = user;
                viewModel.Roles = GetUserRoles(user, database);

                return(View(viewModel));
            }
        }
コード例 #4
0
        private IList <Role> GetUserRoles(ApplicationUser user, AdsListingDbContext db)
        {
            //Create user manager
            var userManager = Request
                              .GetOwinContext()
                              .GetUserManager <ApplicationUserManager>();

            //Get all application roles
            var roles = db.Roles
                        .Select(r => r.Name)
                        .OrderBy(r => r)
                        .ToList();

            // Check if the user has the Role
            var userRoles = new List <Role>();

            foreach (var roleName in roles)
            {
                var role = new Role {
                    Name = roleName
                };

                if (userManager.IsInRole(user.Id, roleName))
                {
                    role.IsSelected = true;
                }

                userRoles.Add(role);
            }

            return(userRoles);
        }
コード例 #5
0
        private void DeletePhotos(int[] photos, int id)
        {
            using (var database = new AdsListingDbContext())
            {
                var adPhotos = database
                               .Photos
                               .Where(p => p.AdId == id)
                               .ToList();

                foreach (var adPhoto in adPhotos)
                {
                    foreach (var photo in photos)
                    {
                        if (adPhoto.Id == photo)
                        {
                            //string fullPathToRemove = Request.MapPath(adPhoto.ThumbPath);

                            database.Photos.Remove(adPhoto);
                            //if (System.IO.File.Exists(adPhoto.ThumbPath))
                            //{
                            //    System.IO.File.Delete(adPhoto.ThumbPath);
                            //}
                            database.SaveChanges();
                        }
                    }
                }
            }
        }
コード例 #6
0
        public ActionResult DeleteConfirmed(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var database = new AdsListingDbContext())
            {
                //Get User from the DB
                var user = database
                           .Users
                           .Where(u => u.Id.Equals(id))
                           .First();

                //Get User Ads from the database
                var userAds = database
                              .Ads
                              .Where(a => a.Author.Id == user.Id);

                //Delete user Ads
                foreach (var ad in userAds)
                {
                    database.Ads.Remove(ad);
                }

                //Delete the user and update the DB
                database.Users.Remove(user);
                database.SaveChanges();


                return(RedirectToAction("List"));
            }
        }
コード例 #7
0
        public ActionResult DeleteConfirmed(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var database = new AdsListingDbContext())
            {
                //Get the Ad from the DB
                var ad = database
                         .Ads
                         .Where(a => a.Id == id)
                         .Include(a => a.Author)
                         .First();

                //Check if ad exists
                if (ad == null)
                {
                    return(HttpNotFound());
                }

                //Remove ad from the DB
                database.Ads.Remove(ad);
                database.SaveChanges();

                //Redirect to Index page
                return(RedirectToAction("Index"));
            }
        }
コード例 #8
0
        // Get: Ad/Delete
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var database = new AdsListingDbContext())
            {
                //Get Ad from the DB
                var ad = database
                         .Ads
                         .Where(a => a.Id == id)
                         .Include(a => a.Author)
                         .First();

                if (!IsUserAuthorizedToEdit(ad))
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
                }

                //Check if the Ad exists
                if (ad == null)
                {
                    return(HttpNotFound());
                }

                //Redirect to the Index Page
                return(View(ad));
            }
        }
コード例 #9
0
        // GET: Category/List
        public ActionResult List()
        {
            using (var database = new AdsListingDbContext())
            {
                var categories = database.Categories.ToList();

                return(View(categories));
            }
        }
コード例 #10
0
        public ActionResult AdminList()
        {
            using (var database = new AdsListingDbContext())
            {
                var ads = database.Ads.ToList();

                return(View(ads));
            }
        }
コード例 #11
0
        // GET: Location/List
        public ActionResult List()
        {
            using (var database = new AdsListingDbContext())
            {
                var locations = database
                                .Locations
                                .ToList();

                return(View(locations));
            }
        }
コード例 #12
0
        private void CreateRole(AdsListingDbContext context, string roleName)
        {
            var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context));

            var result = roleManager.Create(new IdentityRole(roleName));

            if (!result.Succeeded)
            {
                throw new Exception(string.Join(";", result.Errors));
            }
        }
コード例 #13
0
        private void SetRoleToUser(AdsListingDbContext context, string email, string role)
        {
            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            var user   = context.Users.Where(u => u.Email == email).First();
            var result = userManager.AddToRole(user.Id, role);

            if (!result.Succeeded)
            {
                throw new Exception(string.Join(";", result.Errors));
            }
        }
コード例 #14
0
        // GET: User List
        public ActionResult List()
        {
            using (var database = new AdsListingDbContext())
            {
                var users = database.Users.ToList();

                var adminUsers = GetAdminUserNames(users, database);
                ViewBag.Admins = adminUsers;

                return(View(users));
            }
        }
コード例 #15
0
        //GET: Ad/Edit
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var database = new AdsListingDbContext())
            {
                var ad = database
                         .Ads
                         .Where(a => a.Id == id)
                         .First();

                if (!IsUserAuthorizedToEdit(ad))
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
                }

                if (ad == null)
                {
                    return(HttpNotFound());
                }

                var photos = database
                             .Photos
                             .Where(p => p.AdId == id)
                             .ToList();

                var model = new AdViewModel
                {
                    Id          = ad.Id,
                    Title       = ad.Title,
                    Description = ad.Description,
                    Price       = ad.Price,
                    CategoryId  = ad.CategoryId,
                    Categories  = database
                                  .Categories
                                  .OrderBy(c => c.Name)
                                  .ToList(),
                    LocationId = ad.LocationId,
                    Locations  = database
                                 .Locations
                                 .OrderBy(l => l.Name)
                                 .ToList(),
                    Status        = ad.Status,
                    ContactNumber = ad.ContactNumber,
                    Photos        = photos
                };

                return(View(model));
            }
        }
コード例 #16
0
        public ActionResult ListCategories()
        {
            using (var database = new AdsListingDbContext())
            {
                var categories = database
                                 .Categories
                                 .Include(c => c.Ads)
                                 .OrderBy(c => c.Name)
                                 .ToList();

                return(View(categories));
            }
        }
コード例 #17
0
        // GET: Ad/List
        public ActionResult List()
        {
            using (var database = new AdsListingDbContext())
            {
                // Get Ads from the database
                var ads = database
                          .Ads
                          .Include(a => a.Author)
                          .Include(a => a.Photos)
                          .ToList();

                return(View(ads));
            }
        }
コード例 #18
0
        protected override void Seed(AdsListingDbContext context)
        {
            if (!context.Roles.Any())
            {
                this.CreateRole(context, "Admin");
                this.CreateRole(context, "User");
            }

            if (!context.Users.Any())
            {
                this.CreateUser(context, "*****@*****.**", "Admin", "123456");
                this.SetRoleToUser(context, "*****@*****.**", "Admin");
            }
        }
コード例 #19
0
        public ActionResult Create(Location location)
        {
            if (ModelState.IsValid)
            {
                using (var database = new AdsListingDbContext())
                {
                    database.Locations.Add(location);
                    database.SaveChanges();

                    return(RedirectToAction("Index"));
                }
            }

            return(View(location));
        }
コード例 #20
0
        public ActionResult Edit(Location location)
        {
            if (ModelState.IsValid)
            {
                using (var database = new AdsListingDbContext())
                {
                    database.Entry(location).State = EntityState.Modified;
                    database.SaveChanges();

                    return(RedirectToAction("Index"));
                }
            }

            return(View(location));
        }
コード例 #21
0
        public ActionResult Create(Category category)
        {
            if (ModelState.IsValid)
            {
                using (var database = new AdsListingDbContext())
                {
                    database.Categories.Add(category);
                    database.SaveChanges();

                    return(RedirectToAction("Index"));
                }
            }

            return(View(category));
        }
コード例 #22
0
        private HashSet <string> GetAdminUserNames(List <ApplicationUser> users, AdsListingDbContext context)
        {
            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            var admins = new HashSet <string>();

            foreach (var user in users)
            {
                if (userManager.IsInRole(user.Id, "Admin"))
                {
                    admins.Add(user.UserName);
                }
            }

            return(admins);
        }
コード例 #23
0
        private void SetUserRoles(EditUserViewModel model, ApplicationUser user, AdsListingDbContext db)
        {
            var userManager = Request
                              .GetOwinContext()
                              .GetUserManager <ApplicationUserManager>();

            foreach (var role in model.Roles)
            {
                if (role.IsSelected)
                {
                    userManager.AddToRole(user.Id, role.Name);
                }
                else if (!role.IsSelected)
                {
                    userManager.RemoveFromRole(user.Id, role.Name);
                }
            }
        }
コード例 #24
0
        public ActionResult Create()
        {
            using (var database = new AdsListingDbContext())
            {
                var model = new AdViewModel
                {
                    Categories = database
                                 .Categories
                                 .OrderBy(c => c.Name)
                                 .ToList(),
                    Locations = database
                                .Locations
                                .OrderBy(l => l.Name)
                                .ToList()
                };

                return(View(model));
            }
        }
コード例 #25
0
        //GET: Location/Delete
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var database = new AdsListingDbContext())
            {
                var location = database
                               .Locations
                               .FirstOrDefault(c => c.Id == id);

                if (location == null)
                {
                    return(HttpNotFound());
                }

                return(View(location));
            }
        }
コード例 #26
0
        //GET Category/Edit
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var database = new AdsListingDbContext())
            {
                var category = database
                               .Categories
                               .FirstOrDefault(c => c.Id == id);

                if (category == null)
                {
                    return(HttpNotFound());
                }

                return(View(category));
            }
        }
コード例 #27
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 database = new AdsListingDbContext();
            var userId   = User.Identity.GetUserId();
            var model    = new IndexViewModel
            {
                UserAds = database
                          .Ads
                          .Where(a => a.AuthorId.Equals(userId))
                          .OrderByDescending(a => a.DateCreated)
                          .ToList(),
                Email = database
                        .Users
                        .Where(u => u.Id.Equals(userId))
                        .First()
                        .Email,
                FullName = database
                           .Users
                           .Where(u => u.Id.Equals(userId))
                           .First()
                           .FullName,
                HasPassword       = HasPassword(),
                PhoneNumber       = await UserManager.GetPhoneNumberAsync(userId),
                TwoFactor         = await UserManager.GetTwoFactorEnabledAsync(userId),
                Logins            = await UserManager.GetLoginsAsync(userId),
                BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
            };

            return(View(model));
        }
コード例 #28
0
        public ActionResult DeleteConfirmed(int?id)
        {
            using (var database = new AdsListingDbContext())
            {
                var location = database
                               .Locations
                               .FirstOrDefault(c => c.Id == id);

                var locationAds = location
                                  .Ads
                                  .ToList();

                foreach (var ad in locationAds)
                {
                    database.Ads.Remove(ad);
                }

                database.Locations.Remove(location);
                database.SaveChanges();

                return(RedirectToAction("Index"));
            }
        }
コード例 #29
0
        public ActionResult DeleteConfirmed(int?id)
        {
            using (var database = new AdsListingDbContext())
            {
                var category = database
                               .Categories
                               .FirstOrDefault(c => c.Id == id);

                var categoryAds = category
                                  .Ads
                                  .ToList();

                foreach (var ad in categoryAds)
                {
                    database.Ads.Remove(ad);
                }

                database.Categories.Remove(category);
                database.SaveChanges();

                return(RedirectToAction("Index"));
            }
        }
コード例 #30
0
        public ActionResult Edit(string id, EditUserViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                using (var database = new AdsListingDbContext())
                {
                    // Get user from database
                    var user = database.Users.FirstOrDefault(u => u.Id == id);

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

                    // If password field is not empty, change password
                    if (!string.IsNullOrEmpty(viewModel.Password))
                    {
                        var hasher       = new PasswordHasher();
                        var passwordHash = hasher.HashPassword(viewModel.Password);
                        user.PasswordHash = passwordHash;
                    }

                    //Set user properties
                    user.Email    = viewModel.User.Email;
                    user.FullName = viewModel.User.FullName;
                    user.UserName = viewModel.User.Email;
                    this.SetUserRoles(viewModel, user, database);

                    database.Entry(user).State = EntityState.Modified;
                    database.SaveChanges();

                    return(RedirectToAction("List"));
                }
            }
            return(View(viewModel));
        }