
Explore handling changing requirements in a real-world ASP.NET Core MVC project, reassessing architecture for an existing site from part one. Navigate errors and snippets as the course guides you.
Explore advanced features in part two, including admin and customer roles, order management, inquiries, and Braintree processing, plus architecture redesign with repository pattern for scalable apps.
Redesign architecture for midscale ASP.NET Core MVC project, adopt a repository pattern, build view models, and enable credit card payments with tools like sweet alert and fusion data tables.
Review the part 1 build: category filtering for paving stones, product details, add to cart, admin content management for categories and products, and user login with email inquiries.
Explore evolving requirements convert an inquiry site into admin-driven order management, save inquiries to a database, enable an admin cart with square feet, and place orders on behalf of customers.
Explore adapting an asp.net core mvc app to changing requirements by adding inquiry management, a square feet based cart, order processing, and scalable architecture with repositories for midscale growth.
Access all project resources for this course on Topknot Mashco, including step-by-step lecture execution, downloadable course content, part one code, and organized part two resources.
Provide a part 1 project overview of an ASP.NET Core MVC app, detailing controllers, views, models, migrations, and utilities like email sender and session utility.
Explore the architecture of the web site and transform it for large-scale applications through hands-on changes and error resolution, using start and end code snippets.
Organize a midscale architecture by extracting shared utilities into a new class library, moving files, updating namespaces, and resolving references across projects.
Resolve errors by installing the Microsoft ASP.NET Core Identity UI package, update using statements for the Rocky underscored utility, and separate the utility into its own library.
Separates data access into its own class library, moves migrations, updates namespaces, and installs Entity Framework packages to enable a modular ASP.NET Core MVC data layer.
Learn to separate the data layer in a .NET 5 asp.net core mvc app by resolving package version conflicts, updating dependencies, and aligning data access and migration namespaces.
Align the target migration with the correct data access and DbContext by setting the startup project to reference Entity Framework, and ensure migrations run from the data access project.
this lecture explains installing and configuring packages for an ASP.NET Core MVC project, including Bootstrap 5 upgrade, toast notifications, and Syncfusion data grid or data tables with assets.
Apply bootstrap 5 changes to the site styling by adapting snippets, images, and layout. Update the navigation and text styling to reflect bootstrap 5 on the home page.
Continue bootstrap updates across category, application type, and product pages by adjusting label colors, backgrounds, and spacing, switch dropdowns to select, and apply bootstrap 5 alpha styling.
Begin by using the end code in the snippets to run the project and continue from section three. The previous section refined bootstrap styling and cleaned the architecture.
Introduce a generic repository pattern to replace direct application db context, creating I Depositary with find and get all, plus optional filter, order, include properties, and tracking for dependency injection.
Explore implementing a generic repository interface for CRUD operations using an application db context. Learn adding, removing, finding by id, and saving changes via a db set.
Explore building a get all method with optional filter, include properties, and an order by, while applying no tracking for efficiency and leveraging deferred execution in the repository pattern.
Implement a category repository in an ASP.NET Core MVC project, adding an update method and wiring it with dependency injection and the application DB context.
Replace the category controller's direct db access with a category repository, register it in startup with scoped lifetime, and route create, read, update, and delete operations through the repository.
Implement the repository pattern for application type in ASP.NET Core MVC by mirroring the category setup: create, update, delete actions, data access via repositories, and startup configuration.
implement a product repository aligned with the category and application type repositories, updating logic and a new get all dropdown list method to populate category and application type options.
Update the product repository to fetch categories and application types with no tracking, include related properties, and build and resolve syntax errors to save updates and complete the repository changes.
Learn to troubleshoot the include properties common error in ASP.NET Core MVC by matching exact model name casing, resolve navigation property errors, and verify product creation and deletion flows.
Implement inquiry header and detail models to persist customer enquiries, map to the application user, track enquiry date and contact details, and store the products of interest.
Create the inquiry details model as a public class with a primary key id using data annotations, and add foreign keys to the inquiry header and product, planning repository pattern.
Add inquiry header and detail models to the repository pattern, update the application db context, and run migrations to push to the database.
Implement the repository pattern for enquiry data by adding enquiry header and detail repositories, updating interfaces, and registering services to enable data access through controllers.
Apply the repository pattern by replacing the application DB context with product and category repositories, and update controllers to use include properties and first or default queries.
Modify the repository pattern by creating an application user repository interface, inject four repositories into the card controller, and persist inquiry header and detail to the database.
Submit an inquiry by creating an inquiry header and multiple details from the cart, extracting the user id, name, email, and phone from claims, and batching database saves for efficiency.
Create an inquiry admin view with data tables, add an inquiry controller and enquiry view model (header and details), wire header and detail repositories, and implement an index action.
Create the inquiry index view and link; build an empty non-partial view using data tables; add an api in the inquiry controller to fetch headers for display.
Build an API to retrieve all inquiries and display them in a data table via AJAX, including ID, name, phone, email, and a details button linking to inquiry details.
Demonstrates wiring a data table to an API in an ASP.NET Core MVC app, debugging data tables by inspecting the API response, and enforcing exact camel-cased property names.
Develop the inquiry details get action in the inquiry controller and populate a view model with header, details, and products to display names and prices on the details page.
Develop the inquiry details view in ASP.NET Core MVC to display name, phone, email, and date, list associated products, and provide admin actions to convert to cart or delete.
Convert to cart loads inquiry details, builds a shopping cart with product IDs, and redirects to the cart index via details post action with an http post and forgery token.
Learn to implement delete functionality for inquiries in ASP.NET Core MVC, including deleting details via remove range, saving changes, and routing form actions to distinct post methods with admin authorization.
Implement toaster notifications in an ASP.NET Core MVC app using a notifications partial view and TempData. Wire success and error messages to toaster alerts in a shared layout.
Load a global _notifications partial on all pages via the master layout to display toaster alerts driven by TempData, such as 'category created successfully' or 'error while creating a category'.
Show alerts for create, edit, and delete actions across types, including add-to-card, login as user, and inquiries. Update controllers using temp data to signal success and set up order flow.
Change in requirements expands admin responsibilities to place orders, manage carts with square feet, convert inquiries to carts, and use a payment gateway while customer flows stay unchanged.
Add a not-persisted temp square feet field to the product, visible to admin in details, saved in the session cart with a 1-10000 range and default 1.
learn how to extend an ASP.NET Core MVC shopping cart to include square feet in the session, by updating the details model and session handling, with admin visibility.
Enhance the shopping cart for admin users by populating product square feet from the session and displaying the updated list in the view.
Update the shopping cart user interface by rendering admin-specific columns, adding temp square feet inputs, and calculating total price from price per square feet, with admin role checks.
Add an admin-only update button in the asp.net core mvc cart ui to recalculate total price when square feet change, using form actions and asp.net action helpers.
Implement the update cart action method in asp.net core mvc using http post and antiforgery token, build a shopping cart from products, store in session, and redirect to index.
Debug an update cart issue in an ASP.NET Core MVC app by converting a foreach loop to a for loop, adding hidden id fields, and updating totals.
Recalculate the session when users update the square feet and continue, reload cart details, and display them on the summary page while preparing for type-based credit card processing.
Explore scenarios for user details in the shopping cart and inquiry management, showing how admin should empty fields while customers' name, phone, and email populate from inquiries.
Explain how the summary action in the card controller handles role-based user details for admins and customers, using enquiry IDs and claims identity to populate email, full name, and phone.
Assign square feet from each shopping cart item to its product and display per-item and total price on the summary page, with admin users seeing the temp square feet.
Extend the summary in asp.net core mvc by adding admin-only address fields (street, city, state, postal code) to the application user as not mapped data annotations, and validate on submit.
Apply data annotations to require full name, phone number, and email, and implement admin-specific user interface to switch between submit enquiry and submit order.
Create and integrate AutoReader and order details models, implement repository pattern, and wire foreign keys and properties such as created by, order date, total, and status for order management.
Add order header and order detail to the db context and database via migration, then implement the repository pattern by copying inquiry header and detail and registering services.
Learn to create an order in ASP.NET Core MVC by handling admin and non-admin flows, calculating totals, and saving order header and details.
Demonstrates creating an order in ASP.NET Core MVC, debugging a zero total by ensuring price and times square feet post to the view, then refactoring with a sum operation.
Learn how order and inquiry confirmation work in ASP.NET Core MVC by retrieving an order header by ID and displaying the created order details in the view.
Register a Braintree sandbox account, obtain environment, public key, and private key, set the environment to sandbox, and configure them in the project for dependency injection.
Set up Braintree integration by adding a BrainTree settings class with four matching properties, define a gateway interface, and install the Braintree package to create or fetch gateways.
Implement a Braintree gate by creating a class that implements the iBrain three gate interface. Configure the gateway with environment, public key, and private key via dependency injection.
Learn to integrate braintree for transactions using a JavaScript drop-in, implement the get started code, and manage form submission with a nonce sent to the server.
Explore the Braintree payment flow in a client–server architecture, including token creation. Enter card details with the Greentree plugin and process a transaction using a nonce to ensure PCI compliance.
Generate a Braintree client token via dependency injection, pass it to the view with the view bag, and embed the nonce in the admin checkout form.
Explore integrating the Braintree drop-in UI in an ASP.NET Core MVC app, generating client tokens, rendering the drop-in, and handling a nonce to process transactions.
Set up the Braintree server to generate a gateway token, create and submit a transaction with amount and payment method nonce, authorize and settle, and update order status.
Demonstrate end-to-end Braintree checkout: add items, enter a 400 payment, validate test cards, submit the order, and verify an approved transaction and settlement.
Add a clear cart button in the shopping cart. It empties the session via CardController's clear action and redirects to the index, via the home controller, after items are added.
Configure Facebook authentication in an asp.net core mvc app by installing and updating external login packages and registering the app with Facebook redirect settings.
Configure facebook authentication in asp.net core mvc by adding the facebook service, supplying the app key and secret, and enabling the external login flow for registration.
Enhance external login by adding full name and phone number fields, populate them from Facebook claims, and update the post handler to create an application user and assign roles.
Create an application user on Facebook login, capture full name, email, and phone number, then assign the customer role to enable correct single sign-on.
Explore how to associate a Facebook external login with an admin account, handle already-registered emails, and switch between Facebook and username/password authentication.
Redesign the login page, apply styling changes, and reuse project resource snippets to align login and registration ui across the next three weeks.
Redesign the login and register pages with provider-specific external login styling, including a Facebook button with Bootstrap and Font Awesome icons, plus email and password inputs.
Analyze a login bug in asp.net core mvc, where invalid email or password trigger missing external logins, and learn to load external logins before returning the page.
Modify the register view to build a centered Bootstrap card form with a validation summary, name, email, and phone inputs, including a plus-one prefix and conditional admin heading.
Add a confirmed password field, align both password inputs in a single row with proper padding, and refine the register user interface for improved login and signup pages.
Create an order controller with dependency injection for order and detail repositories and Braintree, and implement an order list view model with a status dropdown for the index action.
Create and populate an order view model from the repository's get all, then build a static status list in web constants to render a status dropdown in the index view.
Learn to set up Syncfusion controls in an asp.net core mvc app by installing the fusion package, enabling tag helpers, and configuring view imports, CDN scripts, and the underscore layout.
Learn how to add a Syncfusion grid to an ASP.NET Core MVC app, bind data from the view model, and enable filtering, sorting, and pagination with a five-item page size.
Use Syncfusion grid customization to add columns with headers for name, email, phone, status, and order date, then enable date formatting, filtering, sorting, pagination, and a details button.
Add filter UI with top text boxes to search by name, phone, email, status, and date; perform a get request on index using a status dropdown and Bootstrap styling.
Learn to implement dynamic order filtering in ASP.NET Core MVC by wiring text box inputs for name, email, phone, and status, applying case-insensitive contains filters with Syncfusion.
Implement client-side cart validations with JavaScript and SweetAlert in an ASP.NET Core MVC app, preventing submissions when name, phone, or email are missing for orders and inquiries.
Create an order details action method to fetch the order header and details via repository, using a view model with header and details to render details view with product data.
Build an order details view in ASP.NET Core MVC, displaying order header fields, shipping date, transaction id, status, and actions to update, process, ship, or cancel.
Extend the order details view by iterating over order details to display product name, price per square foot, quantity, line total, and grand total. Incorporate shipping date validation via script.
Create three api post actions to start processing, ship, and cancel orders by retrieving the order header by id, updating statuses, issuing refunds when settled, and redirecting to index.
Learn the Braintree transaction lifecycle, including authorization and settlement, and implement refund and void logic in ASP.NET Core MVC, with gateway retrieval, status checks, and updating order status.
Showcases conditional button visibility for start processing, ship order, and cancel order in the details view, driven by order status, with corresponding post actions and Braintree refund handling.
Update order details in ASP.NET Core MVC by editing the order header fields (fullname, phone, address, city, state, postal code, email) via a post action, with temp data alerts.
Fix validation logic to prevent zero square feet in the shopping cart by adding a custom error message, a validation scripts partial, and validation spans on index and details views.
This lecture fixes admin registration so signing in a new admin no longer logs out the current admin, introducing an admin check, a home redirect, and authorization controls.
Seed database part 1 guides deploying a site by seeding admin and customer roles and the first admin user, using a database initializer with dependency injection and pending migrations check.
seed database part 2 guides applying pending migrations, creating admin and customer roles, and seeding an initial admin user during startup, using synchronous calls and proper initialization.
Test the heartbeat naturalizer and verify that database seeding works without deployment by creating the database with pending migrations, then confirm the admin user seed before deploying to Azure.
Publish your asp.net core mvc app to azure by creating a resource group, app service, and sql database, then configure deployment slots for testing multiple sites.
Configure the Azure deployment by setting the database connection string and enabling Entity Framework migrations, publish to Azure, and verify an admin user can log in and manage categories.
Configure Facebook login by updating basic settings and redirect URI in the Facebook developers console to ensure login works in localhost and production.
ASP.NET Core(.NET 5) has advanced drastically, but with that comes many challenges for a developer.
How do you scale an existing application? How do you architect a mid-large scale project? How to correctly process payments?
This course is part 2 to the Part 1 of Up and Running ASP.NET Core MVC. In Part 1 we built our application with sending inquiry about products that are being sold.
As business requirements change, in this course we will have to add many more features to the project. But with that you need to be sure about architecture to make sure it is scalable! So there will be many changes in existing application, which is a typical real world scenario.
This course will provide you a complete real world scenario which will make you face many challenges and solve those issues as we proceed with the course.
So join me in this exciting course of exploring what real world challenges are and what issues you encounter when business changes their requirements.
We will be using the latest .NET 5 for this course along with Entity Framework Core and Braintree for payment processing.