Esempio n. 1
0
        public IActionResult AccountDelete()
        { // ACTION - ACCOUNT DELETION PROCEDURE
            if (Request.Cookies["COOKIE_LOGGED_USERNAME"] != null)
            {
                string usernameToDelete = Request.Cookies["COOKIE_LOGGED_USERNAME"];
                Users  deletedUser      = databaseContext.Users.Where(user => user.Login == usernameToDelete).Single();
                List <Storekeepers> deletedStorekeepers = databaseContext.Storekeepers.Where(storekeeper => storekeeper.FkUser == deletedUser.IdUser).ToList();

                if (databaseContext.Customers.Where(customer => customer.FkUser == deletedUser.IdUser).Count() > 0)
                {
                    Customers deletedCustomer = databaseContext.Customers.Where(customer => customer.FkUser == deletedUser.IdUser).Single();
                    Persons   deletedPerson   = databaseContext.Persons.Where(person => person.IdPerson == deletedCustomer.FkPerson).Single();
                    Addresses deletedAddress  = databaseContext.Addresses.Where(address => address.IdAddress == deletedPerson.FkAddress).Single();

                    databaseContext.Customers.Remove(deletedCustomer);
                    databaseContext.Persons.Remove(deletedPerson);
                    databaseContext.Addresses.Remove(deletedAddress);
                }

                if (deletedStorekeepers.Count() > 0)
                {
                    databaseContext.Storekeepers.RemoveRange(deletedStorekeepers);
                }

                databaseContext.Users.Remove(deletedUser);
                databaseContext.SaveChanges();

                Response.Cookies.Delete("COOKIE_LOGGED_USERNAME");
                return(RedirectToAction("Index", "User"));
            }
            else
            {
                TempData["ErrorHeader"]  = "Session expired";
                TempData["ErrorMessage"] = "User session has expired, please try signing in again";

                return(RedirectToAction("Error", "User"));
            }
        }