YuhanPizza / BestMovies

BestMovies ( w/ Unit Tests) a web application built using ASP.NET MVC and Entity Framework 6.0 with Identity, designed to help users explore movie theaters and movies available in their area based on their IP address. Additionally, users can contribute by adding information about theaters and movies, and the app is equipped with user authentication

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BestMovies๐ŸŽฌ๐Ÿฟ [with Unit Tests!]

IPinfo(HomePage)

Welcome to BestMovies, a delightful web application crafted with love using ASP.NET MVC and Entity Framework 6.0 with Identity. ๐Ÿš€

Explore Cinematic Wonders Near You ๐ŸŒ

Discover movie theaters and films in your area based on your IP address. BestMovies makes it easy to find entertainment tailored to your location using the ipinfo.io API. ๐ŸŽญ๐ŸŽฅ

Features ๐ŸŒŸ

  • Location Magic: Seamlessly determines your location via IP address with the help of the ipinfo.io API.
  • Database Mastery: Manages a localDB with Microsoft SQL Server Manager, providing dedicated tables for theaters, movies, and users.
  • ASP.NET MVC Goodness: Built on the solid foundations of ASP.NET MVC, featuring well-organized controllers, models, and views.
  • Entity Framework Excellence: Leverages Entity Framework 6.0 for robust database operations, including migrations and data seeding.
  • User Authentication Awesomeness: Employs ASP.NET Identity for secure user authentication, with features like login and registration.
  • Cloudinary Charm: Elevates the visuals using Cloudinary for managing images related to theaters, movies, and user profiles.
  • Repository Pattern Elegance: Adopts a repository pattern with interfaces for streamlined management of entities.
  • Structure Matters: Keeps the codebase neat and tidy with organized folders such as Controllers, Models, Repository, Services, Enums, Helpers, Interfaces, and Views.
  • ViewModel Brilliance: Implements separate view models for different functionalities, ensuring a clean and efficient design.

Project Structure ๐Ÿ—๏ธ

Controllers ๐ŸŽฎ

LoginPage

  • AccountController: Your go-to for handling user authentication (Login, Register).
  • DashboardController: Powers user dashboard-related functionalities.
  • HomeController: The conductor for the main landing page.
  • MovieController: Orchestrates movie-related operations (Create, Delete, Detail, Edit, Index).
  • TheatreController: Directs theater-related operations (Create, Delete, Detail, Edit, Index).
  • UserController: The maestro for user-related operations.

Model ๐ŸŽจ

RegisterPage

  • Address: A model for storing address information.
  • AppUsers: The heart of the application, representing our beloved users.
  • ErrorViewModel: Ensures graceful handling of errors.
  • Movies: The star-studded model for storing movie information.
  • Theatre: The spotlight-stealing model for storing theater information.

Repository ๐Ÿ—„๏ธ

AdminMovies

  • DashboardRepository: Responsible for dashboard-related operations.
  • MovieRepository: The guardian of movie-related operations.
  • TheatreRepository: The keeper of theater-related operations.
  • UserRepository: The custodian of user-related operations.

Services ๐Ÿ› ๏ธ

  • PhotoService: UserView A trusted companion for handling image-related operations.

Enums ๐ŸŒˆ

  • A magical realm containing enums for movie and theater categories.

Helpers ๐Ÿค–

  • CloudinarySettings: The wizard behind the curtain for Cloudinary configuration.
  • IPinfo: The messenger for making API calls to ipinfo.io.

Interfaces ๐Ÿค

  • IDashboardRepository: The guide for the dashboard repository.
  • IMovieRepository: The compass for the movie repository.
  • ITheatreRepository: The compass for the theater repository.
  • IUserRepository: The compass for the user repository.

Views ๐Ÿ‘€

TheatrePage

TheatreViewPage

  • Separate folders for each model containing views for different actions.

Unit Testing

I use xUnit, FakeItEasy and Fluent Assertions.

  • xUnit: A testing framework that keeps things simple and snappy. ๐Ÿšฆ

  • FakeItEasy: Our backstage pass to mocking โ€“ perfect for faking it 'til you make it! ๐ŸŽญ

  • Fluent Assertions: Making assertions a breeze with a touch of flair. Fluent and fabulous! ๐Ÿ’ฌ

MVC Controller

TheatreController: All Test Passed!

  • Index() Passed!
  • Detail() Passed!
  • Edit() Passed!
  • Delete() Passed!

MovieController: All Test Passed!

  • Index() Passed!
  • Detail() Passed!
  • Edit() Passed!
  • Delete() Passed!

Repository Test

TheatreRepository: All Test Passed!

  • Add() Passed!
  • GetByIdAsync() Passed!
  • Delete() Passed!
  • GetAll() Passed!
  • Update() Passed!

MovieRepository: All Test Passed!

  • Add() Passed!
  • GetByIdAsync() Passed!
  • Delete() Passed!
  • GetAll() Passed!
  • Update() Passed!

License ๐Ÿ“œ

This project is licensed under the MIT License.

About

BestMovies ( w/ Unit Tests) a web application built using ASP.NET MVC and Entity Framework 6.0 with Identity, designed to help users explore movie theaters and movies available in their area based on their IP address. Additionally, users can contribute by adding information about theaters and movies, and the app is equipped with user authentication


Languages

Language:C# 72.5%Language:HTML 26.6%Language:CSS 0.7%Language:JavaScript 0.2%