├── .gitignore ├── 6.0 ├── Module 10 │ ├── End │ │ └── EFCoreMovies │ │ │ ├── EFCoreMovies.sln │ │ │ ├── EFCoreMovies │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── Controllers │ │ │ │ ├── ActorsController.cs │ │ │ │ ├── CinemasController.cs │ │ │ │ ├── GenresController.cs │ │ │ │ ├── InvoicesController.cs │ │ │ │ ├── MoviesController.cs │ │ │ │ ├── PaymentsController.cs │ │ │ │ ├── PeopleController.cs │ │ │ │ └── ProductsController.cs │ │ │ ├── DTOs │ │ │ │ ├── ActorCreationDTO.cs │ │ │ │ ├── ActorDTO.cs │ │ │ │ ├── ActorUpdateDTO.cs │ │ │ │ ├── CinemaCreationDTO.cs │ │ │ │ ├── CinemaDTO.cs │ │ │ │ ├── CinemaHallCreationDTO.cs │ │ │ │ ├── CinemaOfferCreationDTO.cs │ │ │ │ ├── GenreCreationDTO.cs │ │ │ │ ├── GenreDTO.cs │ │ │ │ ├── MovieActorCreationDTO.cs │ │ │ │ ├── MovieCreationDTO.cs │ │ │ │ ├── MovieDTO.cs │ │ │ │ └── MovieFilterDTO.cs │ │ │ ├── EFCoreMovies.csproj │ │ │ ├── Entities │ │ │ │ ├── Actor.cs │ │ │ │ ├── Address.cs │ │ │ │ ├── AuditableEntity.cs │ │ │ │ ├── CardPayment.cs │ │ │ │ ├── Cinema.cs │ │ │ │ ├── CinemaDetail.cs │ │ │ │ ├── CinemaHall.cs │ │ │ │ ├── CinemaHallType.cs │ │ │ │ ├── CinemaOffer.cs │ │ │ │ ├── Configurations │ │ │ │ │ ├── ActorConfig.cs │ │ │ │ │ ├── CardPaymentConfig.cs │ │ │ │ │ ├── CinemaConfig.cs │ │ │ │ │ ├── CinemaDetailConfig.cs │ │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ │ ├── GenreConfig.cs │ │ │ │ │ ├── InvoiceConfig.cs │ │ │ │ │ ├── InvoiceDetailConfig.cs │ │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ │ ├── MovieConfig.cs │ │ │ │ │ ├── PaymentConfig.cs │ │ │ │ │ └── PaypalPaymentConfig.cs │ │ │ │ ├── Conversions │ │ │ │ │ └── CurrencyToSymbolConverter.cs │ │ │ │ ├── Currency.cs │ │ │ │ ├── Functions │ │ │ │ │ └── Scalars.cs │ │ │ │ ├── Genre.cs │ │ │ │ ├── Invoice.cs │ │ │ │ ├── InvoiceDetail.cs │ │ │ │ ├── Keyless │ │ │ │ │ ├── CinemaWithoutLocation.cs │ │ │ │ │ └── MovieWithCounts.cs │ │ │ │ ├── Log.cs │ │ │ │ ├── Merchandising.cs │ │ │ │ ├── Message.cs │ │ │ │ ├── Movie.cs │ │ │ │ ├── MovieActor.cs │ │ │ │ ├── Payment.cs │ │ │ │ ├── PaymentType.cs │ │ │ │ ├── PaypalPayment.cs │ │ │ │ ├── Person.cs │ │ │ │ ├── Product.cs │ │ │ │ ├── RentMovie.cs │ │ │ │ ├── RentableMovie.cs │ │ │ │ └── Seeding │ │ │ │ │ ├── Module3Seeding.cs │ │ │ │ │ ├── Module6Seeding.cs │ │ │ │ │ └── SeedingModule9.cs │ │ │ ├── Migrations │ │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ │ ├── 20220221155417_Initial.cs │ │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ │ ├── 20220221184604_Actors.cs │ │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ │ ├── 20220221193631_Movies.cs │ │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ │ │ ├── 20220301130422_Logs.Designer.cs │ │ │ │ ├── 20220301130422_Logs.cs │ │ │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ │ │ ├── 20220301135213_UniqueIndex.cs │ │ │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ │ │ ├── 20220301142230_EnumAsString.cs │ │ │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ │ │ ├── 20220301145743_CurrencyField.cs │ │ │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ │ │ ├── 20220301153410_ViewMovieCount.cs │ │ │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ │ │ ├── 20220301183701_ActorPictureURL.cs │ │ │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ │ │ ├── 20220301192150_CleanUpModule6.cs │ │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ │ │ ├── 20220302125214_TheCinemaId.cs │ │ │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ │ │ ├── 20220302140745_CustomOnDelete.cs │ │ │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ │ │ ├── 20220302142542_CinemaDetails.cs │ │ │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ │ │ ├── 20220302144152_OwnedTypes.cs │ │ │ │ ├── 20220302151804_Payments.Designer.cs │ │ │ │ ├── 20220302151804_Payments.cs │ │ │ │ ├── 20220302161315_Products.Designer.cs │ │ │ │ ├── 20220302161315_Products.cs │ │ │ │ ├── 20220303131321_ExampleColumns.Designer.cs │ │ │ │ ├── 20220303131321_ExampleColumns.cs │ │ │ │ ├── 20220303131440_RemoveColumn2.Designer.cs │ │ │ │ ├── 20220303131440_RemoveColumn2.cs │ │ │ │ ├── 20220303133425_TestGetMigration.Designer.cs │ │ │ │ ├── 20220303133425_TestGetMigration.cs │ │ │ │ ├── 20220303133857_LogExample.Designer.cs │ │ │ │ ├── 20220303133857_LogExample.cs │ │ │ │ ├── 20220303135705_MigrateExample.Designer.cs │ │ │ │ ├── 20220303135705_MigrateExample.cs │ │ │ │ ├── 20220303171921_GenreAuditable.Designer.cs │ │ │ │ ├── 20220303171921_GenreAuditable.cs │ │ │ │ ├── 20220304142241_StoredProcedures.Designer.cs │ │ │ │ ├── 20220304142241_StoredProcedures.cs │ │ │ │ ├── 20220304150942_Invoices.Designer.cs │ │ │ │ ├── 20220304150942_Invoices.cs │ │ │ │ ├── 20220304183018_DataForInvoices.Designer.cs │ │ │ │ ├── 20220304183018_DataForInvoices.cs │ │ │ │ ├── 20220304184355_UDFs.Designer.cs │ │ │ │ ├── 20220304184355_UDFs.cs │ │ │ │ ├── 20220304200134_TVF.Designer.cs │ │ │ │ ├── 20220304200134_TVF.cs │ │ │ │ ├── 20220304205958_ComputedColumns.Designer.cs │ │ │ │ ├── 20220304205958_ComputedColumns.cs │ │ │ │ ├── 20220304224101_InvoiceSequence.Designer.cs │ │ │ │ ├── 20220304224101_InvoiceSequence.cs │ │ │ │ ├── 20220304231809_RowVersionGenre.Designer.cs │ │ │ │ ├── 20220304231809_RowVersionGenre.cs │ │ │ │ ├── 20220305135219_GenreTemporal.Designer.cs │ │ │ │ ├── 20220305135219_GenreTemporal.cs │ │ │ │ ├── 20220305140825_removeVersion.Designer.cs │ │ │ │ ├── 20220305140825_removeVersion.cs │ │ │ │ ├── 20220305161449_InvoiceTemporal.Designer.cs │ │ │ │ ├── 20220305161449_InvoiceTemporal.cs │ │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── Utilities │ │ │ │ ├── AutoMapperProfiles.cs │ │ │ │ ├── ChangeTrackerEventHandler.cs │ │ │ │ ├── IQueryableExtensions.cs │ │ │ │ ├── IUserService.cs │ │ │ │ └── UserServiceFake.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ │ └── EFCoreMoviesTests │ │ │ ├── BaseTests.cs │ │ │ ├── ChangeTrackerEventHandlerTests.cs │ │ │ ├── CinemasControllerTests.cs │ │ │ ├── EFCoreMoviesTests.csproj │ │ │ ├── GenresControllerTests.cs │ │ │ ├── LocalDbInitializer.cs │ │ │ ├── Mocks │ │ │ └── LoggerFake.cs │ │ │ └── UserServiceFakeTests.cs │ └── Start │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ ├── ActorsController.cs │ │ ├── CinemasController.cs │ │ ├── GenresController.cs │ │ ├── InvoicesController.cs │ │ ├── MoviesController.cs │ │ ├── PaymentsController.cs │ │ ├── PeopleController.cs │ │ └── ProductsController.cs │ │ ├── DTOs │ │ ├── ActorCreationDTO.cs │ │ ├── ActorDTO.cs │ │ ├── ActorUpdateDTO.cs │ │ ├── CinemaCreationDTO.cs │ │ ├── CinemaDTO.cs │ │ ├── CinemaHallCreationDTO.cs │ │ ├── CinemaOfferCreationDTO.cs │ │ ├── GenreCreationDTO.cs │ │ ├── GenreDTO.cs │ │ ├── MovieActorCreationDTO.cs │ │ ├── MovieCreationDTO.cs │ │ ├── MovieDTO.cs │ │ └── MovieFilterDTO.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Address.cs │ │ ├── AuditableEntity.cs │ │ ├── CardPayment.cs │ │ ├── Cinema.cs │ │ ├── CinemaDetail.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CardPaymentConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaDetailConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── InvoiceConfig.cs │ │ │ ├── InvoiceDetailConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ ├── MovieConfig.cs │ │ │ ├── PaymentConfig.cs │ │ │ └── PaypalPaymentConfig.cs │ │ ├── Conversions │ │ │ └── CurrencyToSymbolConverter.cs │ │ ├── Currency.cs │ │ ├── Functions │ │ │ └── Scalars.cs │ │ ├── Genre.cs │ │ ├── Invoice.cs │ │ ├── InvoiceDetail.cs │ │ ├── Keyless │ │ │ ├── CinemaWithoutLocation.cs │ │ │ └── MovieWithCounts.cs │ │ ├── Log.cs │ │ ├── Merchandising.cs │ │ ├── Message.cs │ │ ├── Movie.cs │ │ ├── MovieActor.cs │ │ ├── Payment.cs │ │ ├── PaymentType.cs │ │ ├── PaypalPayment.cs │ │ ├── Person.cs │ │ ├── Product.cs │ │ ├── RentMovie.cs │ │ ├── RentableMovie.cs │ │ └── Seeding │ │ │ ├── Module3Seeding.cs │ │ │ ├── Module6Seeding.cs │ │ │ └── SeedingModule9.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ ├── 20220222205307_Module3Data.cs │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ ├── 20220301130422_Logs.Designer.cs │ │ ├── 20220301130422_Logs.cs │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ ├── 20220301135213_UniqueIndex.cs │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ ├── 20220301142230_EnumAsString.cs │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ ├── 20220301145743_CurrencyField.cs │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ ├── 20220301153410_ViewMovieCount.cs │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ ├── 20220301183701_ActorPictureURL.cs │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ ├── 20220301192150_CleanUpModule6.cs │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ ├── 20220302125214_TheCinemaId.cs │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ ├── 20220302140745_CustomOnDelete.cs │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ ├── 20220302142542_CinemaDetails.cs │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ ├── 20220302144152_OwnedTypes.cs │ │ ├── 20220302151804_Payments.Designer.cs │ │ ├── 20220302151804_Payments.cs │ │ ├── 20220302161315_Products.Designer.cs │ │ ├── 20220302161315_Products.cs │ │ ├── 20220303131321_ExampleColumns.Designer.cs │ │ ├── 20220303131321_ExampleColumns.cs │ │ ├── 20220303131440_RemoveColumn2.Designer.cs │ │ ├── 20220303131440_RemoveColumn2.cs │ │ ├── 20220303133425_TestGetMigration.Designer.cs │ │ ├── 20220303133425_TestGetMigration.cs │ │ ├── 20220303133857_LogExample.Designer.cs │ │ ├── 20220303133857_LogExample.cs │ │ ├── 20220303135705_MigrateExample.Designer.cs │ │ ├── 20220303135705_MigrateExample.cs │ │ ├── 20220303171921_GenreAuditable.Designer.cs │ │ ├── 20220303171921_GenreAuditable.cs │ │ ├── 20220304142241_StoredProcedures.Designer.cs │ │ ├── 20220304142241_StoredProcedures.cs │ │ ├── 20220304150942_Invoices.Designer.cs │ │ ├── 20220304150942_Invoices.cs │ │ ├── 20220304183018_DataForInvoices.Designer.cs │ │ ├── 20220304183018_DataForInvoices.cs │ │ ├── 20220304184355_UDFs.Designer.cs │ │ ├── 20220304184355_UDFs.cs │ │ ├── 20220304200134_TVF.Designer.cs │ │ ├── 20220304200134_TVF.cs │ │ ├── 20220304205958_ComputedColumns.Designer.cs │ │ ├── 20220304205958_ComputedColumns.cs │ │ ├── 20220304224101_InvoiceSequence.Designer.cs │ │ ├── 20220304224101_InvoiceSequence.cs │ │ ├── 20220304231809_RowVersionGenre.Designer.cs │ │ ├── 20220304231809_RowVersionGenre.cs │ │ ├── 20220305135219_GenreTemporal.Designer.cs │ │ ├── 20220305135219_GenreTemporal.cs │ │ ├── 20220305140825_removeVersion.Designer.cs │ │ ├── 20220305140825_removeVersion.cs │ │ ├── 20220305161449_InvoiceTemporal.Designer.cs │ │ ├── 20220305161449_InvoiceTemporal.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Utilities │ │ ├── AutoMapperProfiles.cs │ │ ├── ChangeTrackerEventHandler.cs │ │ ├── IQueryableExtensions.cs │ │ ├── IUserService.cs │ │ └── UserServiceFake.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── Module 11 │ ├── End │ │ └── EFCoreMovies │ │ │ ├── EFCoreMovies.sln │ │ │ ├── EFCoreMovies │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── Controllers │ │ │ │ ├── ActorsController.cs │ │ │ │ ├── CinemasController.cs │ │ │ │ ├── GenresController.cs │ │ │ │ ├── InvoicesController.cs │ │ │ │ ├── MoviesController.cs │ │ │ │ ├── PaymentsController.cs │ │ │ │ ├── PeopleController.cs │ │ │ │ └── ProductsController.cs │ │ │ ├── DTOs │ │ │ │ ├── ActorCreationDTO.cs │ │ │ │ ├── ActorDTO.cs │ │ │ │ ├── ActorUpdateDTO.cs │ │ │ │ ├── CinemaCreationDTO.cs │ │ │ │ ├── CinemaDTO.cs │ │ │ │ ├── CinemaHallCreationDTO.cs │ │ │ │ ├── CinemaOfferCreationDTO.cs │ │ │ │ ├── GenreCreationDTO.cs │ │ │ │ ├── GenreDTO.cs │ │ │ │ ├── MovieActorCreationDTO.cs │ │ │ │ ├── MovieCreationDTO.cs │ │ │ │ ├── MovieDTO.cs │ │ │ │ └── MovieFilterDTO.cs │ │ │ ├── EFCoreMovies.csproj │ │ │ ├── Entities │ │ │ │ ├── Actor.cs │ │ │ │ ├── Address.cs │ │ │ │ ├── AuditableEntity.cs │ │ │ │ ├── CardPayment.cs │ │ │ │ ├── Cinema.cs │ │ │ │ ├── CinemaDetail.cs │ │ │ │ ├── CinemaHall.cs │ │ │ │ ├── CinemaHallType.cs │ │ │ │ ├── CinemaOffer.cs │ │ │ │ ├── Configurations │ │ │ │ │ ├── ActorConfig.cs │ │ │ │ │ ├── CardPaymentConfig.cs │ │ │ │ │ ├── CinemaConfig.cs │ │ │ │ │ ├── CinemaDetailConfig.cs │ │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ │ ├── GenreConfig.cs │ │ │ │ │ ├── InvoiceConfig.cs │ │ │ │ │ ├── InvoiceDetailConfig.cs │ │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ │ ├── MovieConfig.cs │ │ │ │ │ ├── PaymentConfig.cs │ │ │ │ │ └── PaypalPaymentConfig.cs │ │ │ │ ├── Conversions │ │ │ │ │ └── CurrencyToSymbolConverter.cs │ │ │ │ ├── Currency.cs │ │ │ │ ├── Functions │ │ │ │ │ └── Scalars.cs │ │ │ │ ├── Genre.cs │ │ │ │ ├── Invoice.cs │ │ │ │ ├── InvoiceDetail.cs │ │ │ │ ├── Keyless │ │ │ │ │ ├── CinemaWithoutLocation.cs │ │ │ │ │ └── MovieWithCounts.cs │ │ │ │ ├── Log.cs │ │ │ │ ├── Merchandising.cs │ │ │ │ ├── Message.cs │ │ │ │ ├── Movie.cs │ │ │ │ ├── MovieActor.cs │ │ │ │ ├── Payment.cs │ │ │ │ ├── PaymentType.cs │ │ │ │ ├── PaypalPayment.cs │ │ │ │ ├── Person.cs │ │ │ │ ├── Product.cs │ │ │ │ ├── RentMovie.cs │ │ │ │ ├── RentableMovie.cs │ │ │ │ └── Seeding │ │ │ │ │ ├── Module3Seeding.cs │ │ │ │ │ ├── Module6Seeding.cs │ │ │ │ │ └── SeedingModule9.cs │ │ │ ├── Migrations │ │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ │ ├── 20220221155417_Initial.cs │ │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ │ ├── 20220221184604_Actors.cs │ │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ │ ├── 20220221193631_Movies.cs │ │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ │ │ ├── 20220301130422_Logs.Designer.cs │ │ │ │ ├── 20220301130422_Logs.cs │ │ │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ │ │ ├── 20220301135213_UniqueIndex.cs │ │ │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ │ │ ├── 20220301142230_EnumAsString.cs │ │ │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ │ │ ├── 20220301145743_CurrencyField.cs │ │ │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ │ │ ├── 20220301153410_ViewMovieCount.cs │ │ │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ │ │ ├── 20220301183701_ActorPictureURL.cs │ │ │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ │ │ ├── 20220301192150_CleanUpModule6.cs │ │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ │ │ ├── 20220302125214_TheCinemaId.cs │ │ │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ │ │ ├── 20220302140745_CustomOnDelete.cs │ │ │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ │ │ ├── 20220302142542_CinemaDetails.cs │ │ │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ │ │ ├── 20220302144152_OwnedTypes.cs │ │ │ │ ├── 20220302151804_Payments.Designer.cs │ │ │ │ ├── 20220302151804_Payments.cs │ │ │ │ ├── 20220302161315_Products.Designer.cs │ │ │ │ ├── 20220302161315_Products.cs │ │ │ │ ├── 20220303131321_ExampleColumns.Designer.cs │ │ │ │ ├── 20220303131321_ExampleColumns.cs │ │ │ │ ├── 20220303131440_RemoveColumn2.Designer.cs │ │ │ │ ├── 20220303131440_RemoveColumn2.cs │ │ │ │ ├── 20220303133425_TestGetMigration.Designer.cs │ │ │ │ ├── 20220303133425_TestGetMigration.cs │ │ │ │ ├── 20220303133857_LogExample.Designer.cs │ │ │ │ ├── 20220303133857_LogExample.cs │ │ │ │ ├── 20220303135705_MigrateExample.Designer.cs │ │ │ │ ├── 20220303135705_MigrateExample.cs │ │ │ │ ├── 20220303171921_GenreAuditable.Designer.cs │ │ │ │ ├── 20220303171921_GenreAuditable.cs │ │ │ │ ├── 20220304142241_StoredProcedures.Designer.cs │ │ │ │ ├── 20220304142241_StoredProcedures.cs │ │ │ │ ├── 20220304150942_Invoices.Designer.cs │ │ │ │ ├── 20220304150942_Invoices.cs │ │ │ │ ├── 20220304183018_DataForInvoices.Designer.cs │ │ │ │ ├── 20220304183018_DataForInvoices.cs │ │ │ │ ├── 20220304184355_UDFs.Designer.cs │ │ │ │ ├── 20220304184355_UDFs.cs │ │ │ │ ├── 20220304200134_TVF.Designer.cs │ │ │ │ ├── 20220304200134_TVF.cs │ │ │ │ ├── 20220304205958_ComputedColumns.Designer.cs │ │ │ │ ├── 20220304205958_ComputedColumns.cs │ │ │ │ ├── 20220304224101_InvoiceSequence.Designer.cs │ │ │ │ ├── 20220304224101_InvoiceSequence.cs │ │ │ │ ├── 20220304231809_RowVersionGenre.Designer.cs │ │ │ │ ├── 20220304231809_RowVersionGenre.cs │ │ │ │ ├── 20220305135219_GenreTemporal.Designer.cs │ │ │ │ ├── 20220305135219_GenreTemporal.cs │ │ │ │ ├── 20220305140825_removeVersion.Designer.cs │ │ │ │ ├── 20220305140825_removeVersion.cs │ │ │ │ ├── 20220305161449_InvoiceTemporal.Designer.cs │ │ │ │ ├── 20220305161449_InvoiceTemporal.cs │ │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── Utilities │ │ │ │ ├── AutoMapperProfiles.cs │ │ │ │ ├── ChangeTrackerEventHandler.cs │ │ │ │ ├── IQueryableExtensions.cs │ │ │ │ ├── IUserService.cs │ │ │ │ ├── Singleton.cs │ │ │ │ └── UserServiceFake.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ │ └── EFCoreMoviesTests │ │ │ ├── BaseTests.cs │ │ │ ├── ChangeTrackerEventHandlerTests.cs │ │ │ ├── CinemasControllerTests.cs │ │ │ ├── EFCoreMoviesTests.csproj │ │ │ ├── GenresControllerTests.cs │ │ │ ├── LocalDbInitializer.cs │ │ │ ├── Mocks │ │ │ └── LoggerFake.cs │ │ │ └── UserServiceFakeTests.cs │ └── Start │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ ├── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ │ ├── ActorsController.cs │ │ │ ├── CinemasController.cs │ │ │ ├── GenresController.cs │ │ │ ├── InvoicesController.cs │ │ │ ├── MoviesController.cs │ │ │ ├── PaymentsController.cs │ │ │ ├── PeopleController.cs │ │ │ └── ProductsController.cs │ │ ├── DTOs │ │ │ ├── ActorCreationDTO.cs │ │ │ ├── ActorDTO.cs │ │ │ ├── ActorUpdateDTO.cs │ │ │ ├── CinemaCreationDTO.cs │ │ │ ├── CinemaDTO.cs │ │ │ ├── CinemaHallCreationDTO.cs │ │ │ ├── CinemaOfferCreationDTO.cs │ │ │ ├── GenreCreationDTO.cs │ │ │ ├── GenreDTO.cs │ │ │ ├── MovieActorCreationDTO.cs │ │ │ ├── MovieCreationDTO.cs │ │ │ ├── MovieDTO.cs │ │ │ └── MovieFilterDTO.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ │ ├── Actor.cs │ │ │ ├── Address.cs │ │ │ ├── AuditableEntity.cs │ │ │ ├── CardPayment.cs │ │ │ ├── Cinema.cs │ │ │ ├── CinemaDetail.cs │ │ │ ├── CinemaHall.cs │ │ │ ├── CinemaHallType.cs │ │ │ ├── CinemaOffer.cs │ │ │ ├── Configurations │ │ │ │ ├── ActorConfig.cs │ │ │ │ ├── CardPaymentConfig.cs │ │ │ │ ├── CinemaConfig.cs │ │ │ │ ├── CinemaDetailConfig.cs │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ ├── GenreConfig.cs │ │ │ │ ├── InvoiceConfig.cs │ │ │ │ ├── InvoiceDetailConfig.cs │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ ├── MovieConfig.cs │ │ │ │ ├── PaymentConfig.cs │ │ │ │ └── PaypalPaymentConfig.cs │ │ │ ├── Conversions │ │ │ │ └── CurrencyToSymbolConverter.cs │ │ │ ├── Currency.cs │ │ │ ├── Functions │ │ │ │ └── Scalars.cs │ │ │ ├── Genre.cs │ │ │ ├── Invoice.cs │ │ │ ├── InvoiceDetail.cs │ │ │ ├── Keyless │ │ │ │ ├── CinemaWithoutLocation.cs │ │ │ │ └── MovieWithCounts.cs │ │ │ ├── Log.cs │ │ │ ├── Merchandising.cs │ │ │ ├── Message.cs │ │ │ ├── Movie.cs │ │ │ ├── MovieActor.cs │ │ │ ├── Payment.cs │ │ │ ├── PaymentType.cs │ │ │ ├── PaypalPayment.cs │ │ │ ├── Person.cs │ │ │ ├── Product.cs │ │ │ ├── RentMovie.cs │ │ │ ├── RentableMovie.cs │ │ │ └── Seeding │ │ │ │ ├── Module3Seeding.cs │ │ │ │ ├── Module6Seeding.cs │ │ │ │ └── SeedingModule9.cs │ │ ├── Migrations │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ ├── 20220221155417_Initial.cs │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ ├── 20220221184604_Actors.cs │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ ├── 20220221193631_Movies.cs │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ │ ├── 20220301130422_Logs.Designer.cs │ │ │ ├── 20220301130422_Logs.cs │ │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ │ ├── 20220301135213_UniqueIndex.cs │ │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ │ ├── 20220301142230_EnumAsString.cs │ │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ │ ├── 20220301145743_CurrencyField.cs │ │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ │ ├── 20220301153410_ViewMovieCount.cs │ │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ │ ├── 20220301183701_ActorPictureURL.cs │ │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ │ ├── 20220301192150_CleanUpModule6.cs │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ │ ├── 20220302125214_TheCinemaId.cs │ │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ │ ├── 20220302140745_CustomOnDelete.cs │ │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ │ ├── 20220302142542_CinemaDetails.cs │ │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ │ ├── 20220302144152_OwnedTypes.cs │ │ │ ├── 20220302151804_Payments.Designer.cs │ │ │ ├── 20220302151804_Payments.cs │ │ │ ├── 20220302161315_Products.Designer.cs │ │ │ ├── 20220302161315_Products.cs │ │ │ ├── 20220303131321_ExampleColumns.Designer.cs │ │ │ ├── 20220303131321_ExampleColumns.cs │ │ │ ├── 20220303131440_RemoveColumn2.Designer.cs │ │ │ ├── 20220303131440_RemoveColumn2.cs │ │ │ ├── 20220303133425_TestGetMigration.Designer.cs │ │ │ ├── 20220303133425_TestGetMigration.cs │ │ │ ├── 20220303133857_LogExample.Designer.cs │ │ │ ├── 20220303133857_LogExample.cs │ │ │ ├── 20220303135705_MigrateExample.Designer.cs │ │ │ ├── 20220303135705_MigrateExample.cs │ │ │ ├── 20220303171921_GenreAuditable.Designer.cs │ │ │ ├── 20220303171921_GenreAuditable.cs │ │ │ ├── 20220304142241_StoredProcedures.Designer.cs │ │ │ ├── 20220304142241_StoredProcedures.cs │ │ │ ├── 20220304150942_Invoices.Designer.cs │ │ │ ├── 20220304150942_Invoices.cs │ │ │ ├── 20220304183018_DataForInvoices.Designer.cs │ │ │ ├── 20220304183018_DataForInvoices.cs │ │ │ ├── 20220304184355_UDFs.Designer.cs │ │ │ ├── 20220304184355_UDFs.cs │ │ │ ├── 20220304200134_TVF.Designer.cs │ │ │ ├── 20220304200134_TVF.cs │ │ │ ├── 20220304205958_ComputedColumns.Designer.cs │ │ │ ├── 20220304205958_ComputedColumns.cs │ │ │ ├── 20220304224101_InvoiceSequence.Designer.cs │ │ │ ├── 20220304224101_InvoiceSequence.cs │ │ │ ├── 20220304231809_RowVersionGenre.Designer.cs │ │ │ ├── 20220304231809_RowVersionGenre.cs │ │ │ ├── 20220305135219_GenreTemporal.Designer.cs │ │ │ ├── 20220305135219_GenreTemporal.cs │ │ │ ├── 20220305140825_removeVersion.Designer.cs │ │ │ ├── 20220305140825_removeVersion.cs │ │ │ ├── 20220305161449_InvoiceTemporal.Designer.cs │ │ │ ├── 20220305161449_InvoiceTemporal.cs │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Utilities │ │ │ ├── AutoMapperProfiles.cs │ │ │ ├── ChangeTrackerEventHandler.cs │ │ │ ├── IQueryableExtensions.cs │ │ │ ├── IUserService.cs │ │ │ └── UserServiceFake.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ │ └── EFCoreMoviesTests │ │ ├── BaseTests.cs │ │ ├── ChangeTrackerEventHandlerTests.cs │ │ ├── CinemasControllerTests.cs │ │ ├── EFCoreMoviesTests.csproj │ │ ├── GenresControllerTests.cs │ │ ├── LocalDbInitializer.cs │ │ ├── Mocks │ │ └── LoggerFake.cs │ │ └── UserServiceFakeTests.cs ├── Module 2 │ └── End │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ └── WeatherForecastController.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Cinema.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ └── MovieConfig.cs │ │ ├── Genre.cs │ │ ├── Movie.cs │ │ └── MovieActor.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── Module 3 │ ├── End │ │ └── EFCoreMovies │ │ │ ├── EFCoreMovies.sln │ │ │ └── EFCoreMovies │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── Controllers │ │ │ ├── ActorsController.cs │ │ │ ├── CinemasController.cs │ │ │ ├── GenresController.cs │ │ │ └── MoviesController.cs │ │ │ ├── DTOs │ │ │ ├── ActorDTO.cs │ │ │ ├── CinemaDTO.cs │ │ │ ├── GenreDTO.cs │ │ │ ├── MovieDTO.cs │ │ │ └── MovieFilterDTO.cs │ │ │ ├── EFCoreMovies.csproj │ │ │ ├── Entities │ │ │ ├── Actor.cs │ │ │ ├── Cinema.cs │ │ │ ├── CinemaHall.cs │ │ │ ├── CinemaHallType.cs │ │ │ ├── CinemaOffer.cs │ │ │ ├── Configurations │ │ │ │ ├── ActorConfig.cs │ │ │ │ ├── CinemaConfig.cs │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ ├── GenreConfig.cs │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ └── MovieConfig.cs │ │ │ ├── Genre.cs │ │ │ ├── Movie.cs │ │ │ ├── MovieActor.cs │ │ │ └── Seeding │ │ │ │ └── Module3Seeding.cs │ │ │ ├── Migrations │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ ├── 20220221155417_Initial.cs │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ ├── 20220221184604_Actors.cs │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ ├── 20220221193631_Movies.cs │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── launchSettings.json │ │ │ ├── Utilities │ │ │ ├── AutoMapperProfiles.cs │ │ │ └── IQueryableExtensions.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ └── Start │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ └── WeatherForecastController.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Cinema.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ └── MovieConfig.cs │ │ ├── Genre.cs │ │ ├── Movie.cs │ │ └── MovieActor.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── Module 4 │ ├── End │ │ └── EFCoreMovies │ │ │ ├── EFCoreMovies.sln │ │ │ └── EFCoreMovies │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── Controllers │ │ │ ├── ActorsController.cs │ │ │ ├── CinemasController.cs │ │ │ ├── GenresController.cs │ │ │ └── MoviesController.cs │ │ │ ├── DTOs │ │ │ ├── ActorCreationDTO.cs │ │ │ ├── ActorDTO.cs │ │ │ ├── CinemaCreationDTO.cs │ │ │ ├── CinemaDTO.cs │ │ │ ├── CinemaHallCreationDTO.cs │ │ │ ├── CinemaOfferCreationDTO.cs │ │ │ ├── GenreCreationDTO.cs │ │ │ ├── GenreDTO.cs │ │ │ ├── MovieActorCreationDTO.cs │ │ │ ├── MovieCreationDTO.cs │ │ │ ├── MovieDTO.cs │ │ │ └── MovieFilterDTO.cs │ │ │ ├── EFCoreMovies.csproj │ │ │ ├── Entities │ │ │ ├── Actor.cs │ │ │ ├── Cinema.cs │ │ │ ├── CinemaHall.cs │ │ │ ├── CinemaHallType.cs │ │ │ ├── CinemaOffer.cs │ │ │ ├── Configurations │ │ │ │ ├── ActorConfig.cs │ │ │ │ ├── CinemaConfig.cs │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ ├── GenreConfig.cs │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ └── MovieConfig.cs │ │ │ ├── Genre.cs │ │ │ ├── Movie.cs │ │ │ ├── MovieActor.cs │ │ │ └── Seeding │ │ │ │ └── Module3Seeding.cs │ │ │ ├── Migrations │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ ├── 20220221155417_Initial.cs │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ ├── 20220221184604_Actors.cs │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ ├── 20220221193631_Movies.cs │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── launchSettings.json │ │ │ ├── Utilities │ │ │ ├── AutoMapperProfiles.cs │ │ │ └── IQueryableExtensions.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ └── Start │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ ├── ActorsController.cs │ │ ├── CinemasController.cs │ │ ├── GenresController.cs │ │ └── MoviesController.cs │ │ ├── DTOs │ │ ├── ActorDTO.cs │ │ ├── CinemaDTO.cs │ │ ├── GenreDTO.cs │ │ ├── MovieDTO.cs │ │ └── MovieFilterDTO.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Cinema.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ └── MovieConfig.cs │ │ ├── Genre.cs │ │ ├── Movie.cs │ │ ├── MovieActor.cs │ │ └── Seeding │ │ │ └── Module3Seeding.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ ├── 20220222205307_Module3Data.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Utilities │ │ ├── AutoMapperProfiles.cs │ │ └── IQueryableExtensions.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── Module 5 │ ├── End │ │ └── EFCoreMovies │ │ │ ├── EFCoreMovies.sln │ │ │ └── EFCoreMovies │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── Controllers │ │ │ ├── ActorsController.cs │ │ │ ├── CinemasController.cs │ │ │ ├── GenresController.cs │ │ │ └── MoviesController.cs │ │ │ ├── DTOs │ │ │ ├── ActorCreationDTO.cs │ │ │ ├── ActorDTO.cs │ │ │ ├── CinemaCreationDTO.cs │ │ │ ├── CinemaDTO.cs │ │ │ ├── CinemaHallCreationDTO.cs │ │ │ ├── CinemaOfferCreationDTO.cs │ │ │ ├── GenreCreationDTO.cs │ │ │ ├── GenreDTO.cs │ │ │ ├── MovieActorCreationDTO.cs │ │ │ ├── MovieCreationDTO.cs │ │ │ ├── MovieDTO.cs │ │ │ └── MovieFilterDTO.cs │ │ │ ├── EFCoreMovies.csproj │ │ │ ├── Entities │ │ │ ├── Actor.cs │ │ │ ├── Address.cs │ │ │ ├── Cinema.cs │ │ │ ├── CinemaHall.cs │ │ │ ├── CinemaHallType.cs │ │ │ ├── CinemaOffer.cs │ │ │ ├── Configurations │ │ │ │ ├── ActorConfig.cs │ │ │ │ ├── CinemaConfig.cs │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ ├── GenreConfig.cs │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ └── MovieConfig.cs │ │ │ ├── Conversions │ │ │ │ └── CurrencyToSymbolConverter.cs │ │ │ ├── Currency.cs │ │ │ ├── Genre.cs │ │ │ ├── Keyless │ │ │ │ ├── CinemaWithoutLocation.cs │ │ │ │ └── MovieWithCounts.cs │ │ │ ├── Log.cs │ │ │ ├── Movie.cs │ │ │ ├── MovieActor.cs │ │ │ └── Seeding │ │ │ │ └── Module3Seeding.cs │ │ │ ├── Migrations │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ ├── 20220221155417_Initial.cs │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ ├── 20220221184604_Actors.cs │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ ├── 20220221193631_Movies.cs │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ │ ├── 20220301130422_Logs.Designer.cs │ │ │ ├── 20220301130422_Logs.cs │ │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ │ ├── 20220301135213_UniqueIndex.cs │ │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ │ ├── 20220301142230_EnumAsString.cs │ │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ │ ├── 20220301145743_CurrencyField.cs │ │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ │ ├── 20220301153410_ViewMovieCount.cs │ │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ │ ├── 20220301183701_ActorPictureURL.cs │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── launchSettings.json │ │ │ ├── Utilities │ │ │ ├── AutoMapperProfiles.cs │ │ │ └── IQueryableExtensions.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ └── Start │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ ├── ActorsController.cs │ │ ├── CinemasController.cs │ │ ├── GenresController.cs │ │ └── MoviesController.cs │ │ ├── DTOs │ │ ├── ActorCreationDTO.cs │ │ ├── ActorDTO.cs │ │ ├── CinemaCreationDTO.cs │ │ ├── CinemaDTO.cs │ │ ├── CinemaHallCreationDTO.cs │ │ ├── CinemaOfferCreationDTO.cs │ │ ├── GenreCreationDTO.cs │ │ ├── GenreDTO.cs │ │ ├── MovieActorCreationDTO.cs │ │ ├── MovieCreationDTO.cs │ │ ├── MovieDTO.cs │ │ └── MovieFilterDTO.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Cinema.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ └── MovieConfig.cs │ │ ├── Genre.cs │ │ ├── Movie.cs │ │ ├── MovieActor.cs │ │ └── Seeding │ │ │ └── Module3Seeding.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ ├── 20220222205307_Module3Data.cs │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Utilities │ │ ├── AutoMapperProfiles.cs │ │ └── IQueryableExtensions.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── Module 6 │ ├── End │ │ └── EFCoreMovies │ │ │ ├── EFCoreMovies.sln │ │ │ └── EFCoreMovies │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── Controllers │ │ │ ├── ActorsController.cs │ │ │ ├── CinemasController.cs │ │ │ ├── GenresController.cs │ │ │ ├── MoviesController.cs │ │ │ ├── PaymentsController.cs │ │ │ ├── PeopleController.cs │ │ │ └── ProductsController.cs │ │ │ ├── DTOs │ │ │ ├── ActorCreationDTO.cs │ │ │ ├── ActorDTO.cs │ │ │ ├── CinemaCreationDTO.cs │ │ │ ├── CinemaDTO.cs │ │ │ ├── CinemaHallCreationDTO.cs │ │ │ ├── CinemaOfferCreationDTO.cs │ │ │ ├── GenreCreationDTO.cs │ │ │ ├── GenreDTO.cs │ │ │ ├── MovieActorCreationDTO.cs │ │ │ ├── MovieCreationDTO.cs │ │ │ ├── MovieDTO.cs │ │ │ └── MovieFilterDTO.cs │ │ │ ├── EFCoreMovies.csproj │ │ │ ├── Entities │ │ │ ├── Actor.cs │ │ │ ├── Address.cs │ │ │ ├── CardPayment.cs │ │ │ ├── Cinema.cs │ │ │ ├── CinemaDetail.cs │ │ │ ├── CinemaHall.cs │ │ │ ├── CinemaHallType.cs │ │ │ ├── CinemaOffer.cs │ │ │ ├── Configurations │ │ │ │ ├── ActorConfig.cs │ │ │ │ ├── CardPaymentConfig.cs │ │ │ │ ├── CinemaConfig.cs │ │ │ │ ├── CinemaDetailConfig.cs │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ ├── GenreConfig.cs │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ ├── MovieConfig.cs │ │ │ │ ├── PaymentConfig.cs │ │ │ │ └── PaypalPaymentConfig.cs │ │ │ ├── Conversions │ │ │ │ └── CurrencyToSymbolConverter.cs │ │ │ ├── Currency.cs │ │ │ ├── Genre.cs │ │ │ ├── Keyless │ │ │ │ ├── CinemaWithoutLocation.cs │ │ │ │ └── MovieWithCounts.cs │ │ │ ├── Log.cs │ │ │ ├── Merchandising.cs │ │ │ ├── Message.cs │ │ │ ├── Movie.cs │ │ │ ├── MovieActor.cs │ │ │ ├── Payment.cs │ │ │ ├── PaymentType.cs │ │ │ ├── PaypalPayment.cs │ │ │ ├── Person.cs │ │ │ ├── Product.cs │ │ │ ├── RentMovie.cs │ │ │ ├── RentableMovie.cs │ │ │ └── Seeding │ │ │ │ ├── Module3Seeding.cs │ │ │ │ └── Module6Seeding.cs │ │ │ ├── Migrations │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ ├── 20220221155417_Initial.cs │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ ├── 20220221184604_Actors.cs │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ ├── 20220221193631_Movies.cs │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ │ ├── 20220301130422_Logs.Designer.cs │ │ │ ├── 20220301130422_Logs.cs │ │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ │ ├── 20220301135213_UniqueIndex.cs │ │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ │ ├── 20220301142230_EnumAsString.cs │ │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ │ ├── 20220301145743_CurrencyField.cs │ │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ │ ├── 20220301153410_ViewMovieCount.cs │ │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ │ ├── 20220301183701_ActorPictureURL.cs │ │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ │ ├── 20220301192150_CleanUpModule6.cs │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ │ ├── 20220302125214_TheCinemaId.cs │ │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ │ ├── 20220302140745_CustomOnDelete.cs │ │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ │ ├── 20220302142542_CinemaDetails.cs │ │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ │ ├── 20220302144152_OwnedTypes.cs │ │ │ ├── 20220302151804_Payments.Designer.cs │ │ │ ├── 20220302151804_Payments.cs │ │ │ ├── 20220302161315_Products.Designer.cs │ │ │ ├── 20220302161315_Products.cs │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── launchSettings.json │ │ │ ├── Utilities │ │ │ ├── AutoMapperProfiles.cs │ │ │ └── IQueryableExtensions.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ └── Start │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ ├── ActorsController.cs │ │ ├── CinemasController.cs │ │ ├── GenresController.cs │ │ └── MoviesController.cs │ │ ├── DTOs │ │ ├── ActorCreationDTO.cs │ │ ├── ActorDTO.cs │ │ ├── CinemaCreationDTO.cs │ │ ├── CinemaDTO.cs │ │ ├── CinemaHallCreationDTO.cs │ │ ├── CinemaOfferCreationDTO.cs │ │ ├── GenreCreationDTO.cs │ │ ├── GenreDTO.cs │ │ ├── MovieActorCreationDTO.cs │ │ ├── MovieCreationDTO.cs │ │ ├── MovieDTO.cs │ │ └── MovieFilterDTO.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Address.cs │ │ ├── Cinema.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ └── MovieConfig.cs │ │ ├── Conversions │ │ │ └── CurrencyToSymbolConverter.cs │ │ ├── Currency.cs │ │ ├── Genre.cs │ │ ├── Keyless │ │ │ ├── CinemaWithoutLocation.cs │ │ │ └── MovieWithCounts.cs │ │ ├── Log.cs │ │ ├── Movie.cs │ │ ├── MovieActor.cs │ │ └── Seeding │ │ │ └── Module3Seeding.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ ├── 20220222205307_Module3Data.cs │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ ├── 20220301130422_Logs.Designer.cs │ │ ├── 20220301130422_Logs.cs │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ ├── 20220301135213_UniqueIndex.cs │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ ├── 20220301142230_EnumAsString.cs │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ ├── 20220301145743_CurrencyField.cs │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ ├── 20220301153410_ViewMovieCount.cs │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ ├── 20220301183701_ActorPictureURL.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Utilities │ │ ├── AutoMapperProfiles.cs │ │ └── IQueryableExtensions.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── Module 7 │ ├── End │ │ ├── EFCoreMovies │ │ │ ├── EFCoreMovies.sln │ │ │ └── EFCoreMovies │ │ │ │ ├── ApplicationDbContext.cs │ │ │ │ ├── CompiledModels │ │ │ │ ├── ActorEntityType.cs │ │ │ │ ├── Address0EntityType.cs │ │ │ │ ├── Address1EntityType.cs │ │ │ │ ├── AddressEntityType.cs │ │ │ │ ├── ApplicationDbContextModel.cs │ │ │ │ ├── ApplicationDbContextModelBuilder.cs │ │ │ │ ├── CardPaymentEntityType.cs │ │ │ │ ├── CinemaDetailEntityType.cs │ │ │ │ ├── CinemaEntityType.cs │ │ │ │ ├── CinemaHallEntityType.cs │ │ │ │ ├── CinemaHallMovieEntityType.cs │ │ │ │ ├── CinemaOfferEntityType.cs │ │ │ │ ├── CinemaWithoutLocationEntityType.cs │ │ │ │ ├── GenreEntityType.cs │ │ │ │ ├── GenreMovieEntityType.cs │ │ │ │ ├── LogEntityType.cs │ │ │ │ ├── MerchandisingEntityType.cs │ │ │ │ ├── MessageEntityType.cs │ │ │ │ ├── MovieActorEntityType.cs │ │ │ │ ├── MovieEntityType.cs │ │ │ │ ├── MovieWithCountsEntityType.cs │ │ │ │ ├── PaymentEntityType.cs │ │ │ │ ├── PaypalPaymentEntityType.cs │ │ │ │ ├── PersonEntityType.cs │ │ │ │ ├── ProductEntityType.cs │ │ │ │ └── RentableMovieEntityType.cs │ │ │ │ ├── Controllers │ │ │ │ ├── ActorsController.cs │ │ │ │ ├── CinemasController.cs │ │ │ │ ├── GenresController.cs │ │ │ │ ├── MoviesController.cs │ │ │ │ ├── PaymentsController.cs │ │ │ │ ├── PeopleController.cs │ │ │ │ └── ProductsController.cs │ │ │ │ ├── DTOs │ │ │ │ ├── ActorCreationDTO.cs │ │ │ │ ├── ActorDTO.cs │ │ │ │ ├── CinemaCreationDTO.cs │ │ │ │ ├── CinemaDTO.cs │ │ │ │ ├── CinemaHallCreationDTO.cs │ │ │ │ ├── CinemaOfferCreationDTO.cs │ │ │ │ ├── GenreCreationDTO.cs │ │ │ │ ├── GenreDTO.cs │ │ │ │ ├── MovieActorCreationDTO.cs │ │ │ │ ├── MovieCreationDTO.cs │ │ │ │ ├── MovieDTO.cs │ │ │ │ └── MovieFilterDTO.cs │ │ │ │ ├── EFCoreMovies.csproj │ │ │ │ ├── Entities │ │ │ │ ├── Actor.cs │ │ │ │ ├── Address.cs │ │ │ │ ├── CardPayment.cs │ │ │ │ ├── Cinema.cs │ │ │ │ ├── CinemaDetail.cs │ │ │ │ ├── CinemaHall.cs │ │ │ │ ├── CinemaHallType.cs │ │ │ │ ├── CinemaOffer.cs │ │ │ │ ├── Configurations │ │ │ │ │ ├── ActorConfig.cs │ │ │ │ │ ├── CardPaymentConfig.cs │ │ │ │ │ ├── CinemaConfig.cs │ │ │ │ │ ├── CinemaDetailConfig.cs │ │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ │ ├── GenreConfig.cs │ │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ │ ├── MovieConfig.cs │ │ │ │ │ ├── PaymentConfig.cs │ │ │ │ │ └── PaypalPaymentConfig.cs │ │ │ │ ├── Conversions │ │ │ │ │ └── CurrencyToSymbolConverter.cs │ │ │ │ ├── Currency.cs │ │ │ │ ├── Genre.cs │ │ │ │ ├── Keyless │ │ │ │ │ ├── CinemaWithoutLocation.cs │ │ │ │ │ └── MovieWithCounts.cs │ │ │ │ ├── Log.cs │ │ │ │ ├── Merchandising.cs │ │ │ │ ├── Message.cs │ │ │ │ ├── Movie.cs │ │ │ │ ├── MovieActor.cs │ │ │ │ ├── Payment.cs │ │ │ │ ├── PaymentType.cs │ │ │ │ ├── PaypalPayment.cs │ │ │ │ ├── Person.cs │ │ │ │ ├── Product.cs │ │ │ │ ├── RentMovie.cs │ │ │ │ ├── RentableMovie.cs │ │ │ │ └── Seeding │ │ │ │ │ ├── Module3Seeding.cs │ │ │ │ │ └── Module6Seeding.cs │ │ │ │ ├── Migrations │ │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ │ ├── 20220221155417_Initial.cs │ │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ │ ├── 20220221184604_Actors.cs │ │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ │ ├── 20220221193631_Movies.cs │ │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ │ │ ├── 20220301130422_Logs.Designer.cs │ │ │ │ ├── 20220301130422_Logs.cs │ │ │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ │ │ ├── 20220301135213_UniqueIndex.cs │ │ │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ │ │ ├── 20220301142230_EnumAsString.cs │ │ │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ │ │ ├── 20220301145743_CurrencyField.cs │ │ │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ │ │ ├── 20220301153410_ViewMovieCount.cs │ │ │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ │ │ ├── 20220301183701_ActorPictureURL.cs │ │ │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ │ │ ├── 20220301192150_CleanUpModule6.cs │ │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ │ │ ├── 20220302125214_TheCinemaId.cs │ │ │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ │ │ ├── 20220302140745_CustomOnDelete.cs │ │ │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ │ │ ├── 20220302142542_CinemaDetails.cs │ │ │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ │ │ ├── 20220302144152_OwnedTypes.cs │ │ │ │ ├── 20220302151804_Payments.Designer.cs │ │ │ │ ├── 20220302151804_Payments.cs │ │ │ │ ├── 20220302161315_Products.Designer.cs │ │ │ │ ├── 20220302161315_Products.cs │ │ │ │ ├── 20220303131321_ExampleColumns.Designer.cs │ │ │ │ ├── 20220303131321_ExampleColumns.cs │ │ │ │ ├── 20220303131440_RemoveColumn2.Designer.cs │ │ │ │ ├── 20220303131440_RemoveColumn2.cs │ │ │ │ ├── 20220303133425_TestGetMigration.Designer.cs │ │ │ │ ├── 20220303133425_TestGetMigration.cs │ │ │ │ ├── 20220303133857_LogExample.Designer.cs │ │ │ │ ├── 20220303133857_LogExample.cs │ │ │ │ ├── 20220303135705_MigrateExample.Designer.cs │ │ │ │ ├── 20220303135705_MigrateExample.cs │ │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ │ ├── Utilities │ │ │ │ ├── AutoMapperProfiles.cs │ │ │ │ └── IQueryableExtensions.cs │ │ │ │ ├── appsettings.Development.json │ │ │ │ ├── appsettings.json │ │ │ │ └── efbundle.exe │ │ └── ExampleDBFirst │ │ │ ├── ExampleDBFirst.sln │ │ │ └── ExampleDBFirst │ │ │ ├── Controllers │ │ │ └── WeatherForecastController.cs │ │ │ ├── ExampleDBFirst.csproj │ │ │ ├── Models │ │ │ ├── Actor.cs │ │ │ ├── Cinema.cs │ │ │ ├── CinemaHall.cs │ │ │ ├── CinemaOffer.cs │ │ │ ├── EFCoreMoviesDBContext.cs │ │ │ ├── Genre.cs │ │ │ ├── Log.cs │ │ │ ├── Merchandising.cs │ │ │ ├── Message.cs │ │ │ ├── Movie.cs │ │ │ ├── MoviesActor.cs │ │ │ ├── MoviesWithCount.cs │ │ │ ├── Payment.cs │ │ │ ├── Person.cs │ │ │ ├── Product.cs │ │ │ └── RentableMovie.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── launchSettings.json │ │ │ ├── WeatherForecast.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ └── Start │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ ├── ActorsController.cs │ │ ├── CinemasController.cs │ │ ├── GenresController.cs │ │ ├── MoviesController.cs │ │ ├── PaymentsController.cs │ │ ├── PeopleController.cs │ │ └── ProductsController.cs │ │ ├── DTOs │ │ ├── ActorCreationDTO.cs │ │ ├── ActorDTO.cs │ │ ├── CinemaCreationDTO.cs │ │ ├── CinemaDTO.cs │ │ ├── CinemaHallCreationDTO.cs │ │ ├── CinemaOfferCreationDTO.cs │ │ ├── GenreCreationDTO.cs │ │ ├── GenreDTO.cs │ │ ├── MovieActorCreationDTO.cs │ │ ├── MovieCreationDTO.cs │ │ ├── MovieDTO.cs │ │ └── MovieFilterDTO.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Address.cs │ │ ├── CardPayment.cs │ │ ├── Cinema.cs │ │ ├── CinemaDetail.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CardPaymentConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaDetailConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ ├── MovieConfig.cs │ │ │ ├── PaymentConfig.cs │ │ │ └── PaypalPaymentConfig.cs │ │ ├── Conversions │ │ │ └── CurrencyToSymbolConverter.cs │ │ ├── Currency.cs │ │ ├── Genre.cs │ │ ├── Keyless │ │ │ ├── CinemaWithoutLocation.cs │ │ │ └── MovieWithCounts.cs │ │ ├── Log.cs │ │ ├── Merchandising.cs │ │ ├── Message.cs │ │ ├── Movie.cs │ │ ├── MovieActor.cs │ │ ├── Payment.cs │ │ ├── PaymentType.cs │ │ ├── PaypalPayment.cs │ │ ├── Person.cs │ │ ├── Product.cs │ │ ├── RentMovie.cs │ │ ├── RentableMovie.cs │ │ └── Seeding │ │ │ ├── Module3Seeding.cs │ │ │ └── Module6Seeding.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ ├── 20220222205307_Module3Data.cs │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ ├── 20220301130422_Logs.Designer.cs │ │ ├── 20220301130422_Logs.cs │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ ├── 20220301135213_UniqueIndex.cs │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ ├── 20220301142230_EnumAsString.cs │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ ├── 20220301145743_CurrencyField.cs │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ ├── 20220301153410_ViewMovieCount.cs │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ ├── 20220301183701_ActorPictureURL.cs │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ ├── 20220301192150_CleanUpModule6.cs │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ ├── 20220302125214_TheCinemaId.cs │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ ├── 20220302140745_CustomOnDelete.cs │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ ├── 20220302142542_CinemaDetails.cs │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ ├── 20220302144152_OwnedTypes.cs │ │ ├── 20220302151804_Payments.Designer.cs │ │ ├── 20220302151804_Payments.cs │ │ ├── 20220302161315_Products.Designer.cs │ │ ├── 20220302161315_Products.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Utilities │ │ ├── AutoMapperProfiles.cs │ │ └── IQueryableExtensions.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── Module 8 │ ├── End │ │ └── EFCoreMovies │ │ │ ├── EFCoreMovies.sln │ │ │ └── EFCoreMovies │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── Controllers │ │ │ ├── ActorsController.cs │ │ │ ├── CinemasController.cs │ │ │ ├── GenresController.cs │ │ │ ├── InvoicesController.cs │ │ │ ├── MoviesController.cs │ │ │ ├── PaymentsController.cs │ │ │ ├── PeopleController.cs │ │ │ └── ProductsController.cs │ │ │ ├── DTOs │ │ │ ├── ActorCreationDTO.cs │ │ │ ├── ActorDTO.cs │ │ │ ├── CinemaCreationDTO.cs │ │ │ ├── CinemaDTO.cs │ │ │ ├── CinemaHallCreationDTO.cs │ │ │ ├── CinemaOfferCreationDTO.cs │ │ │ ├── GenreCreationDTO.cs │ │ │ ├── GenreDTO.cs │ │ │ ├── MovieActorCreationDTO.cs │ │ │ ├── MovieCreationDTO.cs │ │ │ ├── MovieDTO.cs │ │ │ └── MovieFilterDTO.cs │ │ │ ├── EFCoreMovies.csproj │ │ │ ├── Entities │ │ │ ├── Actor.cs │ │ │ ├── Address.cs │ │ │ ├── AuditableEntity.cs │ │ │ ├── CardPayment.cs │ │ │ ├── Cinema.cs │ │ │ ├── CinemaDetail.cs │ │ │ ├── CinemaHall.cs │ │ │ ├── CinemaHallType.cs │ │ │ ├── CinemaOffer.cs │ │ │ ├── Configurations │ │ │ │ ├── ActorConfig.cs │ │ │ │ ├── CardPaymentConfig.cs │ │ │ │ ├── CinemaConfig.cs │ │ │ │ ├── CinemaDetailConfig.cs │ │ │ │ ├── CinemaHallConfig.cs │ │ │ │ ├── CinemaOfferConfig.cs │ │ │ │ ├── GenreConfig.cs │ │ │ │ ├── InvoiceConfig.cs │ │ │ │ ├── MovieActorConfig.cs │ │ │ │ ├── MovieConfig.cs │ │ │ │ ├── PaymentConfig.cs │ │ │ │ └── PaypalPaymentConfig.cs │ │ │ ├── Conversions │ │ │ │ └── CurrencyToSymbolConverter.cs │ │ │ ├── Currency.cs │ │ │ ├── Genre.cs │ │ │ ├── Invoice.cs │ │ │ ├── InvoiceDetail.cs │ │ │ ├── Keyless │ │ │ │ ├── CinemaWithoutLocation.cs │ │ │ │ └── MovieWithCounts.cs │ │ │ ├── Log.cs │ │ │ ├── Merchandising.cs │ │ │ ├── Message.cs │ │ │ ├── Movie.cs │ │ │ ├── MovieActor.cs │ │ │ ├── Payment.cs │ │ │ ├── PaymentType.cs │ │ │ ├── PaypalPayment.cs │ │ │ ├── Person.cs │ │ │ ├── Product.cs │ │ │ ├── RentMovie.cs │ │ │ ├── RentableMovie.cs │ │ │ └── Seeding │ │ │ │ ├── Module3Seeding.cs │ │ │ │ └── Module6Seeding.cs │ │ │ ├── Migrations │ │ │ ├── 20220221155417_Initial.Designer.cs │ │ │ ├── 20220221155417_Initial.cs │ │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ │ ├── 20220221183009_GenreNameRequired.cs │ │ │ ├── 20220221184604_Actors.Designer.cs │ │ │ ├── 20220221184604_Actors.cs │ │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ │ ├── 20220221191951_Cinemas.cs │ │ │ ├── 20220221193631_Movies.Designer.cs │ │ │ ├── 20220221193631_Movies.cs │ │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ │ ├── 20220222151132_CinemaOffers.cs │ │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ │ ├── 20220222152022_CinemaHalls.cs │ │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ │ ├── 20220222155735_ManyToManySkip.cs │ │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ │ ├── 20220222180329_MoviesActors.cs │ │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ │ ├── 20220222205307_Module3Data.cs │ │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ │ ├── 20220301130422_Logs.Designer.cs │ │ │ ├── 20220301130422_Logs.cs │ │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ │ ├── 20220301135213_UniqueIndex.cs │ │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ │ ├── 20220301142230_EnumAsString.cs │ │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ │ ├── 20220301145743_CurrencyField.cs │ │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ │ ├── 20220301153410_ViewMovieCount.cs │ │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ │ ├── 20220301183701_ActorPictureURL.cs │ │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ │ ├── 20220301192150_CleanUpModule6.cs │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ │ ├── 20220302125214_TheCinemaId.cs │ │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ │ ├── 20220302140745_CustomOnDelete.cs │ │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ │ ├── 20220302142542_CinemaDetails.cs │ │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ │ ├── 20220302144152_OwnedTypes.cs │ │ │ ├── 20220302151804_Payments.Designer.cs │ │ │ ├── 20220302151804_Payments.cs │ │ │ ├── 20220302161315_Products.Designer.cs │ │ │ ├── 20220302161315_Products.cs │ │ │ ├── 20220303131321_ExampleColumns.Designer.cs │ │ │ ├── 20220303131321_ExampleColumns.cs │ │ │ ├── 20220303131440_RemoveColumn2.Designer.cs │ │ │ ├── 20220303131440_RemoveColumn2.cs │ │ │ ├── 20220303133425_TestGetMigration.Designer.cs │ │ │ ├── 20220303133425_TestGetMigration.cs │ │ │ ├── 20220303133857_LogExample.Designer.cs │ │ │ ├── 20220303133857_LogExample.cs │ │ │ ├── 20220303135705_MigrateExample.Designer.cs │ │ │ ├── 20220303135705_MigrateExample.cs │ │ │ ├── 20220303171921_GenreAuditable.Designer.cs │ │ │ ├── 20220303171921_GenreAuditable.cs │ │ │ ├── 20220304142241_StoredProcedures.Designer.cs │ │ │ ├── 20220304142241_StoredProcedures.cs │ │ │ ├── 20220304150942_Invoices.Designer.cs │ │ │ ├── 20220304150942_Invoices.cs │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── launchSettings.json │ │ │ ├── Utilities │ │ │ ├── AutoMapperProfiles.cs │ │ │ ├── ChangeTrackerEventHandler.cs │ │ │ ├── IQueryableExtensions.cs │ │ │ ├── IUserService.cs │ │ │ └── UserServiceFake.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ └── Start │ │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── CompiledModels │ │ ├── ActorEntityType.cs │ │ ├── Address0EntityType.cs │ │ ├── Address1EntityType.cs │ │ ├── AddressEntityType.cs │ │ ├── ApplicationDbContextModel.cs │ │ ├── ApplicationDbContextModelBuilder.cs │ │ ├── CardPaymentEntityType.cs │ │ ├── CinemaDetailEntityType.cs │ │ ├── CinemaEntityType.cs │ │ ├── CinemaHallEntityType.cs │ │ ├── CinemaHallMovieEntityType.cs │ │ ├── CinemaOfferEntityType.cs │ │ ├── CinemaWithoutLocationEntityType.cs │ │ ├── GenreEntityType.cs │ │ ├── GenreMovieEntityType.cs │ │ ├── LogEntityType.cs │ │ ├── MerchandisingEntityType.cs │ │ ├── MessageEntityType.cs │ │ ├── MovieActorEntityType.cs │ │ ├── MovieEntityType.cs │ │ ├── MovieWithCountsEntityType.cs │ │ ├── PaymentEntityType.cs │ │ ├── PaypalPaymentEntityType.cs │ │ ├── PersonEntityType.cs │ │ ├── ProductEntityType.cs │ │ └── RentableMovieEntityType.cs │ │ ├── Controllers │ │ ├── ActorsController.cs │ │ ├── CinemasController.cs │ │ ├── GenresController.cs │ │ ├── MoviesController.cs │ │ ├── PaymentsController.cs │ │ ├── PeopleController.cs │ │ └── ProductsController.cs │ │ ├── DTOs │ │ ├── ActorCreationDTO.cs │ │ ├── ActorDTO.cs │ │ ├── CinemaCreationDTO.cs │ │ ├── CinemaDTO.cs │ │ ├── CinemaHallCreationDTO.cs │ │ ├── CinemaOfferCreationDTO.cs │ │ ├── GenreCreationDTO.cs │ │ ├── GenreDTO.cs │ │ ├── MovieActorCreationDTO.cs │ │ ├── MovieCreationDTO.cs │ │ ├── MovieDTO.cs │ │ └── MovieFilterDTO.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Address.cs │ │ ├── CardPayment.cs │ │ ├── Cinema.cs │ │ ├── CinemaDetail.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CardPaymentConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaDetailConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ ├── MovieConfig.cs │ │ │ ├── PaymentConfig.cs │ │ │ └── PaypalPaymentConfig.cs │ │ ├── Conversions │ │ │ └── CurrencyToSymbolConverter.cs │ │ ├── Currency.cs │ │ ├── Genre.cs │ │ ├── Keyless │ │ │ ├── CinemaWithoutLocation.cs │ │ │ └── MovieWithCounts.cs │ │ ├── Log.cs │ │ ├── Merchandising.cs │ │ ├── Message.cs │ │ ├── Movie.cs │ │ ├── MovieActor.cs │ │ ├── Payment.cs │ │ ├── PaymentType.cs │ │ ├── PaypalPayment.cs │ │ ├── Person.cs │ │ ├── Product.cs │ │ ├── RentMovie.cs │ │ ├── RentableMovie.cs │ │ └── Seeding │ │ │ ├── Module3Seeding.cs │ │ │ └── Module6Seeding.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ ├── 20220222205307_Module3Data.cs │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ ├── 20220301130422_Logs.Designer.cs │ │ ├── 20220301130422_Logs.cs │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ ├── 20220301135213_UniqueIndex.cs │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ ├── 20220301142230_EnumAsString.cs │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ ├── 20220301145743_CurrencyField.cs │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ ├── 20220301153410_ViewMovieCount.cs │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ ├── 20220301183701_ActorPictureURL.cs │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ ├── 20220301192150_CleanUpModule6.cs │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ ├── 20220302125214_TheCinemaId.cs │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ ├── 20220302140745_CustomOnDelete.cs │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ ├── 20220302142542_CinemaDetails.cs │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ ├── 20220302144152_OwnedTypes.cs │ │ ├── 20220302151804_Payments.Designer.cs │ │ ├── 20220302151804_Payments.cs │ │ ├── 20220302161315_Products.Designer.cs │ │ ├── 20220302161315_Products.cs │ │ ├── 20220303131321_ExampleColumns.Designer.cs │ │ ├── 20220303131321_ExampleColumns.cs │ │ ├── 20220303131440_RemoveColumn2.Designer.cs │ │ ├── 20220303131440_RemoveColumn2.cs │ │ ├── 20220303133425_TestGetMigration.Designer.cs │ │ ├── 20220303133425_TestGetMigration.cs │ │ ├── 20220303133857_LogExample.Designer.cs │ │ ├── 20220303133857_LogExample.cs │ │ ├── 20220303135705_MigrateExample.Designer.cs │ │ ├── 20220303135705_MigrateExample.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Utilities │ │ ├── AutoMapperProfiles.cs │ │ └── IQueryableExtensions.cs │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── efbundle.exe └── Module 9 │ ├── End │ ├── DbContextInAnotherProject │ │ ├── Data │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── Data.csproj │ │ │ ├── Migrations │ │ │ │ ├── 20220307131553_Initial.Designer.cs │ │ │ │ ├── 20220307131553_Initial.cs │ │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ └── Person.cs │ │ ├── DbContextInAnotherProject.sln │ │ └── DbContextInAnotherProject │ │ │ ├── Controllers │ │ │ └── WeatherForecastController.cs │ │ │ ├── DbContextInAnotherProject.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── launchSettings.json │ │ │ ├── WeatherForecast.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ └── EFCoreMovies │ │ ├── EFCoreMovies.sln │ │ └── EFCoreMovies │ │ ├── ApplicationDbContext.cs │ │ ├── Controllers │ │ ├── ActorsController.cs │ │ ├── CinemasController.cs │ │ ├── GenresController.cs │ │ ├── InvoicesController.cs │ │ ├── MoviesController.cs │ │ ├── PaymentsController.cs │ │ ├── PeopleController.cs │ │ └── ProductsController.cs │ │ ├── DTOs │ │ ├── ActorCreationDTO.cs │ │ ├── ActorDTO.cs │ │ ├── ActorUpdateDTO.cs │ │ ├── CinemaCreationDTO.cs │ │ ├── CinemaDTO.cs │ │ ├── CinemaHallCreationDTO.cs │ │ ├── CinemaOfferCreationDTO.cs │ │ ├── GenreCreationDTO.cs │ │ ├── GenreDTO.cs │ │ ├── MovieActorCreationDTO.cs │ │ ├── MovieCreationDTO.cs │ │ ├── MovieDTO.cs │ │ └── MovieFilterDTO.cs │ │ ├── EFCoreMovies.csproj │ │ ├── Entities │ │ ├── Actor.cs │ │ ├── Address.cs │ │ ├── AuditableEntity.cs │ │ ├── CardPayment.cs │ │ ├── Cinema.cs │ │ ├── CinemaDetail.cs │ │ ├── CinemaHall.cs │ │ ├── CinemaHallType.cs │ │ ├── CinemaOffer.cs │ │ ├── Configurations │ │ │ ├── ActorConfig.cs │ │ │ ├── CardPaymentConfig.cs │ │ │ ├── CinemaConfig.cs │ │ │ ├── CinemaDetailConfig.cs │ │ │ ├── CinemaHallConfig.cs │ │ │ ├── CinemaOfferConfig.cs │ │ │ ├── GenreConfig.cs │ │ │ ├── InvoiceConfig.cs │ │ │ ├── InvoiceDetailConfig.cs │ │ │ ├── MovieActorConfig.cs │ │ │ ├── MovieConfig.cs │ │ │ ├── PaymentConfig.cs │ │ │ └── PaypalPaymentConfig.cs │ │ ├── Conversions │ │ │ └── CurrencyToSymbolConverter.cs │ │ ├── Currency.cs │ │ ├── Functions │ │ │ └── Scalars.cs │ │ ├── Genre.cs │ │ ├── Invoice.cs │ │ ├── InvoiceDetail.cs │ │ ├── Keyless │ │ │ ├── CinemaWithoutLocation.cs │ │ │ └── MovieWithCounts.cs │ │ ├── Log.cs │ │ ├── Merchandising.cs │ │ ├── Message.cs │ │ ├── Movie.cs │ │ ├── MovieActor.cs │ │ ├── Payment.cs │ │ ├── PaymentType.cs │ │ ├── PaypalPayment.cs │ │ ├── Person.cs │ │ ├── Product.cs │ │ ├── RentMovie.cs │ │ ├── RentableMovie.cs │ │ └── Seeding │ │ │ ├── Module3Seeding.cs │ │ │ ├── Module6Seeding.cs │ │ │ └── SeedingModule9.cs │ │ ├── Migrations │ │ ├── 20220221155417_Initial.Designer.cs │ │ ├── 20220221155417_Initial.cs │ │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ │ ├── 20220221182346_GenreNameLimit150.cs │ │ ├── 20220221183009_GenreNameRequired.Designer.cs │ │ ├── 20220221183009_GenreNameRequired.cs │ │ ├── 20220221184604_Actors.Designer.cs │ │ ├── 20220221184604_Actors.cs │ │ ├── 20220221191951_Cinemas.Designer.cs │ │ ├── 20220221191951_Cinemas.cs │ │ ├── 20220221193631_Movies.Designer.cs │ │ ├── 20220221193631_Movies.cs │ │ ├── 20220222151132_CinemaOffers.Designer.cs │ │ ├── 20220222151132_CinemaOffers.cs │ │ ├── 20220222152022_CinemaHalls.Designer.cs │ │ ├── 20220222152022_CinemaHalls.cs │ │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ │ ├── 20220222154914_CinemaHallTypes.cs │ │ ├── 20220222155735_ManyToManySkip.Designer.cs │ │ ├── 20220222155735_ManyToManySkip.cs │ │ ├── 20220222180329_MoviesActors.Designer.cs │ │ ├── 20220222180329_MoviesActors.cs │ │ ├── 20220222205307_Module3Data.Designer.cs │ │ ├── 20220222205307_Module3Data.cs │ │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ │ ├── 20220225162415_GenresSoftDelete.cs │ │ ├── 20220301130422_Logs.Designer.cs │ │ ├── 20220301130422_Logs.cs │ │ ├── 20220301135213_UniqueIndex.Designer.cs │ │ ├── 20220301135213_UniqueIndex.cs │ │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ │ ├── 20220301140216_UniqueIndexFilter.cs │ │ ├── 20220301142230_EnumAsString.Designer.cs │ │ ├── 20220301142230_EnumAsString.cs │ │ ├── 20220301145743_CurrencyField.Designer.cs │ │ ├── 20220301145743_CurrencyField.cs │ │ ├── 20220301153410_ViewMovieCount.Designer.cs │ │ ├── 20220301153410_ViewMovieCount.cs │ │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ │ ├── 20220301182253_GenresCreatedDate.cs │ │ ├── 20220301183701_ActorPictureURL.Designer.cs │ │ ├── 20220301183701_ActorPictureURL.cs │ │ ├── 20220301192150_CleanUpModule6.Designer.cs │ │ ├── 20220301192150_CleanUpModule6.cs │ │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ │ ├── 20220302125214_TheCinemaId.Designer.cs │ │ ├── 20220302125214_TheCinemaId.cs │ │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ │ ├── 20220302130436_PeopleAndMessages.cs │ │ ├── 20220302140745_CustomOnDelete.Designer.cs │ │ ├── 20220302140745_CustomOnDelete.cs │ │ ├── 20220302142542_CinemaDetails.Designer.cs │ │ ├── 20220302142542_CinemaDetails.cs │ │ ├── 20220302144152_OwnedTypes.Designer.cs │ │ ├── 20220302144152_OwnedTypes.cs │ │ ├── 20220302151804_Payments.Designer.cs │ │ ├── 20220302151804_Payments.cs │ │ ├── 20220302161315_Products.Designer.cs │ │ ├── 20220302161315_Products.cs │ │ ├── 20220303131321_ExampleColumns.Designer.cs │ │ ├── 20220303131321_ExampleColumns.cs │ │ ├── 20220303131440_RemoveColumn2.Designer.cs │ │ ├── 20220303131440_RemoveColumn2.cs │ │ ├── 20220303133425_TestGetMigration.Designer.cs │ │ ├── 20220303133425_TestGetMigration.cs │ │ ├── 20220303133857_LogExample.Designer.cs │ │ ├── 20220303133857_LogExample.cs │ │ ├── 20220303135705_MigrateExample.Designer.cs │ │ ├── 20220303135705_MigrateExample.cs │ │ ├── 20220303171921_GenreAuditable.Designer.cs │ │ ├── 20220303171921_GenreAuditable.cs │ │ ├── 20220304142241_StoredProcedures.Designer.cs │ │ ├── 20220304142241_StoredProcedures.cs │ │ ├── 20220304150942_Invoices.Designer.cs │ │ ├── 20220304150942_Invoices.cs │ │ ├── 20220304183018_DataForInvoices.Designer.cs │ │ ├── 20220304183018_DataForInvoices.cs │ │ ├── 20220304184355_UDFs.Designer.cs │ │ ├── 20220304184355_UDFs.cs │ │ ├── 20220304200134_TVF.Designer.cs │ │ ├── 20220304200134_TVF.cs │ │ ├── 20220304205958_ComputedColumns.Designer.cs │ │ ├── 20220304205958_ComputedColumns.cs │ │ ├── 20220304224101_InvoiceSequence.Designer.cs │ │ ├── 20220304224101_InvoiceSequence.cs │ │ ├── 20220304231809_RowVersionGenre.Designer.cs │ │ ├── 20220304231809_RowVersionGenre.cs │ │ ├── 20220305135219_GenreTemporal.Designer.cs │ │ ├── 20220305135219_GenreTemporal.cs │ │ ├── 20220305140825_removeVersion.Designer.cs │ │ ├── 20220305140825_removeVersion.cs │ │ ├── 20220305161449_InvoiceTemporal.Designer.cs │ │ ├── 20220305161449_InvoiceTemporal.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Utilities │ │ ├── AutoMapperProfiles.cs │ │ ├── ChangeTrackerEventHandler.cs │ │ ├── IQueryableExtensions.cs │ │ ├── IUserService.cs │ │ └── UserServiceFake.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── Start │ └── EFCoreMovies │ ├── EFCoreMovies.sln │ └── EFCoreMovies │ ├── ApplicationDbContext.cs │ ├── Controllers │ ├── ActorsController.cs │ ├── CinemasController.cs │ ├── GenresController.cs │ ├── InvoicesController.cs │ ├── MoviesController.cs │ ├── PaymentsController.cs │ ├── PeopleController.cs │ └── ProductsController.cs │ ├── DTOs │ ├── ActorCreationDTO.cs │ ├── ActorDTO.cs │ ├── CinemaCreationDTO.cs │ ├── CinemaDTO.cs │ ├── CinemaHallCreationDTO.cs │ ├── CinemaOfferCreationDTO.cs │ ├── GenreCreationDTO.cs │ ├── GenreDTO.cs │ ├── MovieActorCreationDTO.cs │ ├── MovieCreationDTO.cs │ ├── MovieDTO.cs │ └── MovieFilterDTO.cs │ ├── EFCoreMovies.csproj │ ├── Entities │ ├── Actor.cs │ ├── Address.cs │ ├── AuditableEntity.cs │ ├── CardPayment.cs │ ├── Cinema.cs │ ├── CinemaDetail.cs │ ├── CinemaHall.cs │ ├── CinemaHallType.cs │ ├── CinemaOffer.cs │ ├── Configurations │ │ ├── ActorConfig.cs │ │ ├── CardPaymentConfig.cs │ │ ├── CinemaConfig.cs │ │ ├── CinemaDetailConfig.cs │ │ ├── CinemaHallConfig.cs │ │ ├── CinemaOfferConfig.cs │ │ ├── GenreConfig.cs │ │ ├── InvoiceConfig.cs │ │ ├── MovieActorConfig.cs │ │ ├── MovieConfig.cs │ │ ├── PaymentConfig.cs │ │ └── PaypalPaymentConfig.cs │ ├── Conversions │ │ └── CurrencyToSymbolConverter.cs │ ├── Currency.cs │ ├── Genre.cs │ ├── Invoice.cs │ ├── InvoiceDetail.cs │ ├── Keyless │ │ ├── CinemaWithoutLocation.cs │ │ └── MovieWithCounts.cs │ ├── Log.cs │ ├── Merchandising.cs │ ├── Message.cs │ ├── Movie.cs │ ├── MovieActor.cs │ ├── Payment.cs │ ├── PaymentType.cs │ ├── PaypalPayment.cs │ ├── Person.cs │ ├── Product.cs │ ├── RentMovie.cs │ ├── RentableMovie.cs │ └── Seeding │ │ ├── Module3Seeding.cs │ │ └── Module6Seeding.cs │ ├── Migrations │ ├── 20220221155417_Initial.Designer.cs │ ├── 20220221155417_Initial.cs │ ├── 20220221182346_GenreNameLimit150.Designer.cs │ ├── 20220221182346_GenreNameLimit150.cs │ ├── 20220221183009_GenreNameRequired.Designer.cs │ ├── 20220221183009_GenreNameRequired.cs │ ├── 20220221184604_Actors.Designer.cs │ ├── 20220221184604_Actors.cs │ ├── 20220221191951_Cinemas.Designer.cs │ ├── 20220221191951_Cinemas.cs │ ├── 20220221193631_Movies.Designer.cs │ ├── 20220221193631_Movies.cs │ ├── 20220222151132_CinemaOffers.Designer.cs │ ├── 20220222151132_CinemaOffers.cs │ ├── 20220222152022_CinemaHalls.Designer.cs │ ├── 20220222152022_CinemaHalls.cs │ ├── 20220222154914_CinemaHallTypes.Designer.cs │ ├── 20220222154914_CinemaHallTypes.cs │ ├── 20220222155735_ManyToManySkip.Designer.cs │ ├── 20220222155735_ManyToManySkip.cs │ ├── 20220222180329_MoviesActors.Designer.cs │ ├── 20220222180329_MoviesActors.cs │ ├── 20220222205307_Module3Data.Designer.cs │ ├── 20220222205307_Module3Data.cs │ ├── 20220225162415_GenresSoftDelete.Designer.cs │ ├── 20220225162415_GenresSoftDelete.cs │ ├── 20220301130422_Logs.Designer.cs │ ├── 20220301130422_Logs.cs │ ├── 20220301135213_UniqueIndex.Designer.cs │ ├── 20220301135213_UniqueIndex.cs │ ├── 20220301140216_UniqueIndexFilter.Designer.cs │ ├── 20220301140216_UniqueIndexFilter.cs │ ├── 20220301142230_EnumAsString.Designer.cs │ ├── 20220301142230_EnumAsString.cs │ ├── 20220301145743_CurrencyField.Designer.cs │ ├── 20220301145743_CurrencyField.cs │ ├── 20220301153410_ViewMovieCount.Designer.cs │ ├── 20220301153410_ViewMovieCount.cs │ ├── 20220301182253_GenresCreatedDate.Designer.cs │ ├── 20220301182253_GenresCreatedDate.cs │ ├── 20220301183701_ActorPictureURL.Designer.cs │ ├── 20220301183701_ActorPictureURL.cs │ ├── 20220301192150_CleanUpModule6.Designer.cs │ ├── 20220301192150_CleanUpModule6.cs │ ├── 20220301205109_CinemaHallOptionalRelationship.Designer.cs │ ├── 20220301205109_CinemaHallOptionalRelationship.cs │ ├── 20220302125214_TheCinemaId.Designer.cs │ ├── 20220302125214_TheCinemaId.cs │ ├── 20220302130436_PeopleAndMessages.Designer.cs │ ├── 20220302130436_PeopleAndMessages.cs │ ├── 20220302140745_CustomOnDelete.Designer.cs │ ├── 20220302140745_CustomOnDelete.cs │ ├── 20220302142542_CinemaDetails.Designer.cs │ ├── 20220302142542_CinemaDetails.cs │ ├── 20220302144152_OwnedTypes.Designer.cs │ ├── 20220302144152_OwnedTypes.cs │ ├── 20220302151804_Payments.Designer.cs │ ├── 20220302151804_Payments.cs │ ├── 20220302161315_Products.Designer.cs │ ├── 20220302161315_Products.cs │ ├── 20220303131321_ExampleColumns.Designer.cs │ ├── 20220303131321_ExampleColumns.cs │ ├── 20220303131440_RemoveColumn2.Designer.cs │ ├── 20220303131440_RemoveColumn2.cs │ ├── 20220303133425_TestGetMigration.Designer.cs │ ├── 20220303133425_TestGetMigration.cs │ ├── 20220303133857_LogExample.Designer.cs │ ├── 20220303133857_LogExample.cs │ ├── 20220303135705_MigrateExample.Designer.cs │ ├── 20220303135705_MigrateExample.cs │ ├── 20220303171921_GenreAuditable.Designer.cs │ ├── 20220303171921_GenreAuditable.cs │ ├── 20220304142241_StoredProcedures.Designer.cs │ ├── 20220304142241_StoredProcedures.cs │ ├── 20220304150942_Invoices.Designer.cs │ ├── 20220304150942_Invoices.cs │ └── ApplicationDbContextModelSnapshot.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Utilities │ ├── AutoMapperProfiles.cs │ ├── ChangeTrackerEventHandler.cs │ ├── IQueryableExtensions.cs │ ├── IUserService.cs │ └── UserServiceFake.cs │ ├── appsettings.Development.json │ └── appsettings.json └── README.md /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public double Latitude { get; set; } 7 | public double Longitude { get; set; } 8 | public CinemaOfferCreationDTO CinemaOffer { get; set; } 9 | public CinemaHallCreationDTO[] CinemaHalls { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/AuditableEntity.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class AuditableEntity 4 | { 5 | public string CreatedBy { get; set; } 6 | public string ModifiedBy { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Invoice.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Invoice 4 | { 5 | public int Id { get; set; } 6 | public DateTime CreationDate { get; set; } 7 | public int InvoiceNumber { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Utilities/IUserService.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public interface IUserService 4 | { 5 | string GetUserId(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/Utilities/UserServiceFake.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public class UserServiceFake: IUserService 4 | { 5 | public string GetUserId() 6 | { 7 | return "Felipe"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public double Latitude { get; set; } 7 | public double Longitude { get; set; } 8 | public CinemaOfferCreationDTO CinemaOffer { get; set; } 9 | public CinemaHallCreationDTO[] CinemaHalls { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/AuditableEntity.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class AuditableEntity 4 | { 5 | public string CreatedBy { get; set; } 6 | public string ModifiedBy { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Invoice.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Invoice 4 | { 5 | public int Id { get; set; } 6 | public DateTime CreationDate { get; set; } 7 | public int InvoiceNumber { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Utilities/IUserService.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public interface IUserService 4 | { 5 | string GetUserId(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/Utilities/UserServiceFake.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public class UserServiceFake: IUserService 4 | { 5 | public string GetUserId() 6 | { 7 | return "Felipe 2"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 10/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public double Latitude { get; set; } 7 | public double Longitude { get; set; } 8 | public CinemaOfferCreationDTO CinemaOffer { get; set; } 9 | public CinemaHallCreationDTO[] CinemaHalls { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/AuditableEntity.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class AuditableEntity 4 | { 5 | public string CreatedBy { get; set; } 6 | public string ModifiedBy { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Invoice.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Invoice 4 | { 5 | public int Id { get; set; } 6 | public DateTime CreationDate { get; set; } 7 | public int InvoiceNumber { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Utilities/IUserService.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public interface IUserService 4 | { 5 | string GetUserId(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/Utilities/UserServiceFake.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public class UserServiceFake: IUserService 4 | { 5 | public string GetUserId() 6 | { 7 | return "Felipe"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Dzatabase=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public double Latitude { get; set; } 7 | public double Longitude { get; set; } 8 | public CinemaOfferCreationDTO CinemaOffer { get; set; } 9 | public CinemaHallCreationDTO[] CinemaHalls { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/AuditableEntity.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class AuditableEntity 4 | { 5 | public string CreatedBy { get; set; } 6 | public string ModifiedBy { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Invoice.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Invoice 4 | { 5 | public int Id { get; set; } 6 | public DateTime CreationDate { get; set; } 7 | public int InvoiceNumber { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Utilities/IUserService.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public interface IUserService 4 | { 5 | string GetUserId(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/Utilities/UserServiceFake.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public class UserServiceFake: IUserService 4 | { 5 | public string GetUserId() 6 | { 7 | return "Felipe"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 11/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 2/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 2/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 2/End/EFCoreMovies/EFCoreMovies/Entities/Genre.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace EFCoreMovies.Entities 5 | { 6 | public class Genre 7 | { 8 | public int Id { get; set; } 9 | public string Name { get; set; } 10 | public HashSet Movies { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 2/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 2/End/EFCoreMovies/EFCoreMovies/WeatherForecast.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies 2 | { 3 | public class WeatherForecast 4 | { 5 | public DateTime Date { get; set; } 6 | 7 | public int TemperatureC { get; set; } 8 | 9 | public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); 10 | 11 | public string? Summary { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /6.0/Module 2/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 2/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/Entities/Genre.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace EFCoreMovies.Entities 5 | { 6 | public class Genre 7 | { 8 | public int Id { get; set; } 9 | public string Name { get; set; } 10 | public HashSet Movies { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 3/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 3/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 3/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 3/Start/EFCoreMovies/EFCoreMovies/Entities/Genre.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace EFCoreMovies.Entities 5 | { 6 | public class Genre 7 | { 8 | public int Id { get; set; } 9 | public string Name { get; set; } 10 | public HashSet Movies { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 3/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 3/Start/EFCoreMovies/EFCoreMovies/WeatherForecast.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies 2 | { 3 | public class WeatherForecast 4 | { 5 | public DateTime Date { get; set; } 6 | 7 | public int TemperatureC { get; set; } 8 | 9 | public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); 10 | 11 | public string? Summary { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /6.0/Module 3/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 3/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public double Latitude { get; set; } 7 | public double Longitude { get; set; } 8 | public CinemaOfferCreationDTO CinemaOffer { get; set; } 9 | public CinemaHallCreationDTO[] CinemaHalls { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 4/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/Entities/Genre.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace EFCoreMovies.Entities 5 | { 6 | public class Genre 7 | { 8 | public int Id { get; set; } 9 | public string Name { get; set; } 10 | public HashSet Movies { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 4/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Entities/Address.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | //[NotMapped] 6 | public class Address 7 | { 8 | public int Id { get; set; } 9 | public string Street { get; set; } 10 | public string Province { get; set; } 11 | public string Country { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 5/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Entities/Address.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | //[NotMapped] 6 | public class Address 7 | { 8 | public int Id { get; set; } 9 | public string Street { get; set; } 10 | public string Province { get; set; } 11 | public string Country { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 6/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 7/End/EFCoreMovies/EFCoreMovies/efbundle.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gavilanch/Introduction-To-Entity-Framework-Core/d25382564cf7031233832b096d193b38eb665663/6.0/Module 7/End/EFCoreMovies/EFCoreMovies/efbundle.exe -------------------------------------------------------------------------------- /6.0/Module 7/End/ExampleDBFirst/ExampleDBFirst/Models/Log.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace ExampleDBFirst.Models 5 | { 6 | public partial class Log 7 | { 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/End/ExampleDBFirst/ExampleDBFirst/Models/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace ExampleDBFirst.Models 5 | { 6 | public partial class RentableMovie 7 | { 8 | public int Id { get; set; } 9 | public int MovieId { get; set; } 10 | 11 | public virtual Product IdNavigation { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /6.0/Module 7/End/ExampleDBFirst/ExampleDBFirst/WeatherForecast.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDBFirst 2 | { 3 | public class WeatherForecast 4 | { 5 | public DateTime Date { get; set; } 6 | 7 | public int TemperatureC { get; set; } 8 | 9 | public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); 10 | 11 | public string? Summary { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /6.0/Module 7/End/ExampleDBFirst/ExampleDBFirst/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/End/ExampleDBFirst/ExampleDBFirst/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 7/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/AuditableEntity.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class AuditableEntity 4 | { 5 | public string CreatedBy { get; set; } 6 | public string ModifiedBy { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Invoice.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Invoice 4 | { 5 | public int Id { get; set; } 6 | public DateTime CreationDate { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/InvoiceDetail.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class InvoiceDetail 6 | { 7 | public int Id { get; set; } 8 | public int InvoiceId { get; set; } 9 | public string Product { get; set; } 10 | [Precision(18,2)] 11 | public decimal Price { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Utilities/IUserService.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public interface IUserService 4 | { 5 | string GetUserId(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/Utilities/UserServiceFake.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public class UserServiceFake: IUserService 4 | { 5 | public string GetUserId() 6 | { 7 | return "Felipe 2"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/efbundle.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gavilanch/Introduction-To-Entity-Framework-Core/d25382564cf7031233832b096d193b38eb665663/6.0/Module 8/Start/EFCoreMovies/EFCoreMovies/efbundle.exe -------------------------------------------------------------------------------- /6.0/Module 9/End/DbContextInAnotherProject/Data/Data.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | enable 6 | disable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /6.0/Module 9/End/DbContextInAnotherProject/Data/Person.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Data 8 | { 9 | public class Person 10 | { 11 | public int Id { get; set; } 12 | public string Name { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /6.0/Module 9/End/DbContextInAnotherProject/DbContextInAnotherProject/WeatherForecast.cs: -------------------------------------------------------------------------------- 1 | namespace DbContextInAnotherProject 2 | { 3 | public class WeatherForecast 4 | { 5 | public DateTime Date { get; set; } 6 | 7 | public int TemperatureC { get; set; } 8 | 9 | public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); 10 | 11 | public string? Summary { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /6.0/Module 9/End/DbContextInAnotherProject/DbContextInAnotherProject/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=DBContextInAnotherProjectDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/End/DbContextInAnotherProject/DbContextInAnotherProject/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/AuditableEntity.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class AuditableEntity 4 | { 5 | public string CreatedBy { get; set; } 6 | public string ModifiedBy { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Invoice.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Invoice 4 | { 5 | public int Id { get; set; } 6 | public DateTime CreationDate { get; set; } 7 | public int InvoiceNumber { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Utilities/IUserService.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public interface IUserService 4 | { 5 | string GetUserId(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/Utilities/UserServiceFake.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public class UserServiceFake: IUserService 4 | { 5 | public string GetUserId() 6 | { 7 | return "Felipe 2"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/End/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorCreationDTO 4 | { 5 | public string Name { get; set; } 6 | public string Biography { get; set; } 7 | public DateTime? DateOfBirth { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/ActorDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class ActorDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class CinemaDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public double Latitude { get; set; } 8 | public double Longitude { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaHallCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using EFCoreMovies.Entities; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaHallCreationDTO 6 | { 7 | public int Id { get; set; } 8 | public double Cost { get; set; } 9 | public CinemaHallType CinemaHallType { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/CinemaOfferCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class CinemaOfferCreationDTO 6 | { 7 | [Range(1, 100)] 8 | public double DiscountPercentage { get; set; } 9 | public DateTime Begin { get; set; } 10 | public DateTime End { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreCreationDTO.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.DTOs 4 | { 5 | public class GenreCreationDTO 6 | { 7 | [Required] 8 | public string Name { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class GenreDTO 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieActorCreationDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieActorCreationDTO 4 | { 5 | public int ActorId { get; set; } 6 | public string Character { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieDTO 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public ICollection Genres { get; set; } 8 | public ICollection Cinemas { get; set; } 9 | public ICollection Actors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/DTOs/MovieFilterDTO.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.DTOs 2 | { 3 | public class MovieFilterDTO 4 | { 5 | public string Title { get; set; } 6 | public int GenreId { get; set; } 7 | public bool InCinemas { get; set; } 8 | public bool UpcomingReleases { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/AuditableEntity.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class AuditableEntity 4 | { 5 | public string CreatedBy { get; set; } 6 | public string ModifiedBy { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/CardPayment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class CardPayment: Payment 6 | { 7 | [StringLength(4)] 8 | public string Last4Digits { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaHallType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum CinemaHallType 4 | { 5 | TwoDimensions = 1, 6 | ThreeDimensions = 2, 7 | CXC = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/CinemaOffer.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class CinemaOffer 4 | { 5 | public int Id { get; set; } 6 | public DateTime Begin { get; set; } 7 | public DateTime End { get; set; } 8 | public decimal DiscountPercentage { get; set; } 9 | public int CinemaId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum Currency 4 | { 5 | Unknown = 0, 6 | DominicanPeso = 1, 7 | USDollar = 2, 8 | Euro = 3 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Invoice.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Invoice 4 | { 5 | public int Id { get; set; } 6 | public DateTime CreationDate { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/InvoiceDetail.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class InvoiceDetail 6 | { 7 | public int Id { get; set; } 8 | public int InvoiceId { get; set; } 9 | public string Product { get; set; } 10 | [Precision(18,2)] 11 | public decimal Price { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/CinemaWithoutLocation.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class CinemaWithoutLocation 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Keyless/MovieWithCounts.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities.Keyless 2 | { 3 | public class MovieWithCounts 4 | { 5 | public int Id { get; set; } 6 | public string Title { get; set; } 7 | public int AmountGenres { get; set; } 8 | public int AmountCinemas { get; set; } 9 | public int AmountActors { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Log.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations.Schema; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public class Log 6 | { 7 | //[DatabaseGenerated(DatabaseGeneratedOption.None)] 8 | public Guid Id { get; set; } 9 | public string Message { get; set; } 10 | public string Example { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Merchandising.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Merchandising: Product 4 | { 5 | public bool Available { get; set; } 6 | public double Weight { get; set; } 7 | public double Volume { get; set; } 8 | public bool IsClothing { get; set; } 9 | public bool IsCollectionable { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Message.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class Message 4 | { 5 | public int Id { get; set; } 6 | public string Content { get; set; } 7 | public int SenderId { get; set; } 8 | public Person Sender { get; set; } 9 | public int ReceiverId { get; set; } 10 | public Person Receiver { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/MovieActor.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class MovieActor 4 | { 5 | public int MovieId { get; set; } 6 | public int ActorId { get; set; } 7 | public string Character { get; set; } 8 | public int Order { get; set; } 9 | public Movie Movie { get; set; } 10 | public Actor Actor { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Payment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public abstract class Payment 4 | { 5 | public int Id { get; set; } 6 | public decimal Amount { get; set; } 7 | public DateTime PaymentDate { get; set; } 8 | public PaymentType PaymentType { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/PaymentType.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public enum PaymentType 4 | { 5 | Paypal = 1, 6 | Card = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/PaypalPayment.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class PaypalPayment: Payment 4 | { 5 | public string EmailAddress { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/Product.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace EFCoreMovies.Entities 4 | { 5 | public abstract class Product 6 | { 7 | public int Id { get; set; } 8 | public string Name { get; set; } 9 | [Precision(18,2)] 10 | public decimal Price { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/RentMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentMovie 4 | { 5 | public int Id { get; set; } 6 | public int MovieId { get; set; } 7 | public DateTime EndOfRental { get; set; } 8 | public int PaymentId { get; set; } 9 | public Payment Payment { get; set; } 10 | public Movie Movie { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Entities/RentableMovie.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Entities 2 | { 3 | public class RentableMovie: Product 4 | { 5 | public int MovieId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Utilities/IQueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public static class IQueryableExtensions 4 | { 5 | public static IQueryable Paginate(this IQueryable source, int page, int recordsToTake) 6 | { 7 | return source.Skip((page - 1) * recordsToTake).Take(recordsToTake); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Utilities/IUserService.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public interface IUserService 4 | { 5 | string GetUserId(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/Utilities/UserServiceFake.cs: -------------------------------------------------------------------------------- 1 | namespace EFCoreMovies.Utilities 2 | { 3 | public class UserServiceFake: IUserService 4 | { 5 | public string GetUserId() 6 | { 7 | return "Felipe 2"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=.;Database=EFCoreMoviesDB;Integrated Security=True" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft.AspNetCore": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.0/Module 9/Start/EFCoreMovies/EFCoreMovies/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Course: Introduction to Entity Framework Core 2 | Source code for my Udemy course: Introduction to Entity Framework Core 3 | 4 | Link to the course: https://felipe-gavilan.azurewebsites.net/api/Redireccion?curso=entity-framework-core-eng 5 | 6 | ## Other courses 7 | 8 | All my courses with discount: https://www.felipe-gavilan.com/cursos?idioma=eng 9 | --------------------------------------------------------------------------------