├── .gitattributes ├── .gitignore ├── Listify.Backend ├── .vs │ └── Listify.Backend │ │ ├── DesignTimeBuild │ │ └── .dtbcache.v2 │ │ └── config │ │ └── applicationhost.config ├── Clients │ ├── Listify.Identity │ │ ├── Config.cs │ │ ├── Constants.cs │ │ ├── Data │ │ │ ├── ApplicationDbContext.cs │ │ │ └── Migrations │ │ │ │ ├── Identity │ │ │ │ ├── 20200811210217_inital.Designer.cs │ │ │ │ ├── 20200811210217_inital.cs │ │ │ │ └── ApplicationDbContextModelSnapshot.cs │ │ │ │ └── IdentityServer │ │ │ │ ├── ConfigurationDb │ │ │ │ ├── 20200111202043_Init.Designer.cs │ │ │ │ ├── 20200111202043_Init.cs │ │ │ │ └── ConfigurationDbContextModelSnapshot.cs │ │ │ │ └── PersistedGrantDb │ │ │ │ ├── 20200111202109_Init.Designer.cs │ │ │ │ ├── 20200111202109_Init.cs │ │ │ │ └── PersistedGrantDbContextModelSnapshot.cs │ │ ├── Listify.Identity.csproj │ │ ├── Models │ │ │ └── ApplicationUser.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Quickstart │ │ │ ├── Account │ │ │ │ ├── AccountController.cs │ │ │ │ ├── AccountOptions.cs │ │ │ │ ├── ExternalProvider.cs │ │ │ │ ├── LoggedOutViewModel.cs │ │ │ │ ├── LoginInputModel.cs │ │ │ │ ├── LoginViewModel.cs │ │ │ │ ├── LogoutInputModel.cs │ │ │ │ └── LogoutViewModel.cs │ │ │ ├── Consent │ │ │ │ ├── ConsentController.cs │ │ │ │ ├── ConsentInputModel.cs │ │ │ │ ├── ConsentOptions.cs │ │ │ │ ├── ConsentViewModel.cs │ │ │ │ ├── ProcessConsentResult.cs │ │ │ │ └── ScopeViewModel.cs │ │ │ ├── Diagnostics │ │ │ │ ├── DiagnosticsController.cs │ │ │ │ └── DiagnosticsViewModel.cs │ │ │ ├── Grants │ │ │ │ ├── GrantsController.cs │ │ │ │ └── GrantsViewModel.cs │ │ │ ├── Home │ │ │ │ ├── ErrorViewModel.cs │ │ │ │ └── HomeController.cs │ │ │ └── SecurityHeadersAttribute.cs │ │ ├── SeedData.cs │ │ ├── Startup.cs │ │ ├── Views │ │ │ ├── Account │ │ │ │ ├── LoggedOut.cshtml │ │ │ │ ├── Login.cshtml │ │ │ │ └── Logout.cshtml │ │ │ ├── Consent │ │ │ │ ├── Index.cshtml │ │ │ │ └── _ScopeListItem.cshtml │ │ │ ├── Diagnostics │ │ │ │ └── Index.cshtml │ │ │ ├── Grants │ │ │ │ └── Index.cshtml │ │ │ ├── Home │ │ │ │ └── Index.cshtml │ │ │ ├── Shared │ │ │ │ ├── Error.cshtml │ │ │ │ ├── _Layout.cshtml │ │ │ │ └── _ValidationSummary.cshtml │ │ │ ├── _ViewImports.cshtml │ │ │ └── _ViewStart.cshtml │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── tempkey.rsa │ │ └── wwwroot │ │ │ ├── css │ │ │ ├── site.css │ │ │ ├── site.less │ │ │ └── site.min.css │ │ │ ├── favicon.ico │ │ │ ├── icon.jpg │ │ │ ├── icon.png │ │ │ ├── imgs │ │ │ ├── LoginFacebook.png │ │ │ ├── LoginGithub.png │ │ │ ├── LoginGoogle.png │ │ │ ├── LoginMicrosoft.png │ │ │ ├── LoginSteam.png │ │ │ ├── LoginTwitch.png │ │ │ ├── LoginTwitter.png │ │ │ ├── LoginYoutube.png │ │ │ ├── SocialMediaAll.png │ │ │ └── TwitchIcon.png │ │ │ ├── js │ │ │ └── signout-redirect.js │ │ │ └── lib │ │ │ ├── bootstrap │ │ │ ├── css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ └── bootstrap.min.js │ │ │ ├── jquery-validation-unobtrusive │ │ │ ├── .bower.json │ │ │ ├── LICENSE.txt │ │ │ ├── bower.json │ │ │ ├── jquery.validate.unobtrusive.js │ │ │ └── jquery.validate.unobtrusive.min.js │ │ │ ├── jquery-validation │ │ │ ├── .bower.json │ │ │ ├── CONTRIBUTING.md │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── changelog.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── additional │ │ │ │ │ ├── accept.js │ │ │ │ │ ├── additional.js │ │ │ │ │ ├── alphanumeric.js │ │ │ │ │ ├── bankaccountNL.js │ │ │ │ │ ├── bankorgiroaccountNL.js │ │ │ │ │ ├── bic.js │ │ │ │ │ ├── cifES.js │ │ │ │ │ ├── cpfBR.js │ │ │ │ │ ├── creditcardtypes.js │ │ │ │ │ ├── currency.js │ │ │ │ │ ├── dateFA.js │ │ │ │ │ ├── dateITA.js │ │ │ │ │ ├── dateNL.js │ │ │ │ │ ├── extension.js │ │ │ │ │ ├── giroaccountNL.js │ │ │ │ │ ├── iban.js │ │ │ │ │ ├── integer.js │ │ │ │ │ ├── ipv4.js │ │ │ │ │ ├── ipv6.js │ │ │ │ │ ├── lettersonly.js │ │ │ │ │ ├── letterswithbasicpunc.js │ │ │ │ │ ├── mobileNL.js │ │ │ │ │ ├── mobileUK.js │ │ │ │ │ ├── nieES.js │ │ │ │ │ ├── nifES.js │ │ │ │ │ ├── notEqualTo.js │ │ │ │ │ ├── nowhitespace.js │ │ │ │ │ ├── pattern.js │ │ │ │ │ ├── phoneNL.js │ │ │ │ │ ├── phoneUK.js │ │ │ │ │ ├── phoneUS.js │ │ │ │ │ ├── phonesUK.js │ │ │ │ │ ├── postalCodeCA.js │ │ │ │ │ ├── postalcodeBR.js │ │ │ │ │ ├── postalcodeIT.js │ │ │ │ │ ├── postalcodeNL.js │ │ │ │ │ ├── postcodeUK.js │ │ │ │ │ ├── require_from_group.js │ │ │ │ │ ├── skip_or_fill_minimum.js │ │ │ │ │ ├── statesUS.js │ │ │ │ │ ├── strippedminlength.js │ │ │ │ │ ├── time.js │ │ │ │ │ ├── time12h.js │ │ │ │ │ ├── url2.js │ │ │ │ │ ├── vinUS.js │ │ │ │ │ ├── zipcodeUS.js │ │ │ │ │ └── ziprange.js │ │ │ │ ├── ajax.js │ │ │ │ ├── core.js │ │ │ │ └── localization │ │ │ │ │ ├── messages_ar.js │ │ │ │ │ ├── messages_bg.js │ │ │ │ │ ├── messages_bn_BD.js │ │ │ │ │ ├── messages_ca.js │ │ │ │ │ ├── messages_cs.js │ │ │ │ │ ├── messages_da.js │ │ │ │ │ ├── messages_de.js │ │ │ │ │ ├── messages_el.js │ │ │ │ │ ├── messages_es.js │ │ │ │ │ ├── messages_es_AR.js │ │ │ │ │ ├── messages_es_PE.js │ │ │ │ │ ├── messages_et.js │ │ │ │ │ ├── messages_eu.js │ │ │ │ │ ├── messages_fa.js │ │ │ │ │ ├── messages_fi.js │ │ │ │ │ ├── messages_fr.js │ │ │ │ │ ├── messages_ge.js │ │ │ │ │ ├── messages_gl.js │ │ │ │ │ ├── messages_he.js │ │ │ │ │ ├── messages_hr.js │ │ │ │ │ ├── messages_hu.js │ │ │ │ │ ├── messages_hy_AM.js │ │ │ │ │ ├── messages_id.js │ │ │ │ │ ├── messages_is.js │ │ │ │ │ ├── messages_it.js │ │ │ │ │ ├── messages_ja.js │ │ │ │ │ ├── messages_ka.js │ │ │ │ │ ├── messages_kk.js │ │ │ │ │ ├── messages_ko.js │ │ │ │ │ ├── messages_lt.js │ │ │ │ │ ├── messages_lv.js │ │ │ │ │ ├── messages_my.js │ │ │ │ │ ├── messages_nl.js │ │ │ │ │ ├── messages_no.js │ │ │ │ │ ├── messages_pl.js │ │ │ │ │ ├── messages_pt_BR.js │ │ │ │ │ ├── messages_pt_PT.js │ │ │ │ │ ├── messages_ro.js │ │ │ │ │ ├── messages_ru.js │ │ │ │ │ ├── messages_si.js │ │ │ │ │ ├── messages_sk.js │ │ │ │ │ ├── messages_sl.js │ │ │ │ │ ├── messages_sr.js │ │ │ │ │ ├── messages_sr_lat.js │ │ │ │ │ ├── messages_sv.js │ │ │ │ │ ├── messages_th.js │ │ │ │ │ ├── messages_tj.js │ │ │ │ │ ├── messages_tr.js │ │ │ │ │ ├── messages_uk.js │ │ │ │ │ ├── messages_vi.js │ │ │ │ │ ├── messages_zh.js │ │ │ │ │ ├── messages_zh_TW.js │ │ │ │ │ ├── methods_de.js │ │ │ │ │ ├── methods_es_CL.js │ │ │ │ │ ├── methods_fi.js │ │ │ │ │ ├── methods_nl.js │ │ │ │ │ └── methods_pt.js │ │ │ └── validation.jquery.json │ │ │ └── jquery │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ └── jquery.min.map │ └── Listify.WebAPI │ │ ├── Controllers │ │ ├── AccountController.cs │ │ ├── BaseController.cs │ │ ├── PaypalController.cs │ │ └── WeatherForecastController.cs │ │ ├── Hubs │ │ ├── ListifyHub.cs │ │ └── RoomHub.cs │ │ ├── Listify.WebAPI.csproj │ │ ├── Models │ │ ├── ContentAvailability.cs │ │ ├── ContentAvailabilityRequest.cs │ │ ├── PlaylistImageRequest.cs │ │ └── RoomInformation.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── Domain │ ├── Listify.Domain.BLL │ │ ├── AutoMap.cs │ │ ├── BaseBLL.cs │ │ ├── BasePoll.cs │ │ ├── Events │ │ │ ├── Args │ │ │ │ ├── BaseEventArgs.cs │ │ │ │ └── BasePollingEventArgs.cs │ │ │ └── EventHandlers.cs │ │ ├── IBasePoll.cs │ │ └── Listify.Domain.BLL.csproj │ ├── Listify.Domain.CodeFirst │ │ ├── ApplicationDbContext.cs │ │ ├── Listify.Domain.CodeFirst.csproj │ │ └── Migrations │ │ │ ├── 20200913135409_Init.Designer.cs │ │ │ ├── 20200913135409_Init.cs │ │ │ ├── 20200915171601_Included mature content.Designer.cs │ │ │ ├── 20200915171601_Included mature content.cs │ │ │ ├── 20200915185045_Included mature content chat filter.Designer.cs │ │ │ ├── 20200915185045_Included mature content chat filter.cs │ │ │ ├── 20200920145826_making some change in database.Designer.cs │ │ │ ├── 20200920145826_making some change in database.cs │ │ │ ├── 20200921161123_fixing purchasableLineItem bug.Designer.cs │ │ │ ├── 20200921161123_fixing purchasableLineItem bug.cs │ │ │ ├── 20200926134331_Added genres for playlist.Designer.cs │ │ │ ├── 20200926134331_Added genres for playlist.cs │ │ │ ├── 20201013123000_Added final changes to database.Designer.cs │ │ │ ├── 20201013123000_Added final changes to database.cs │ │ │ ├── 20201015140454_Adding listify schema for purchasableLineItems.Designer.cs │ │ │ ├── 20201015140454_Adding listify schema for purchasableLineItems.cs │ │ │ └── ApplicationDbContextModelSnapshot.cs │ ├── Listify.Domain.Lib │ │ ├── DTOs │ │ │ └── BaseDTO.cs │ │ ├── Entities │ │ │ ├── ApplicationUser.cs │ │ │ ├── ApplicationUserRoom.cs │ │ │ ├── ApplicationUserRoomConnection.cs │ │ │ ├── ApplicationUserRoomCurrencyRoom.cs │ │ │ ├── BaseEntity.cs │ │ │ ├── ChatMessage.cs │ │ │ ├── Currency.cs │ │ │ ├── CurrencyRoom.cs │ │ │ ├── Follow.cs │ │ │ ├── Genre.cs │ │ │ ├── LogAPI.cs │ │ │ ├── LogError.cs │ │ │ ├── Playlist.cs │ │ │ ├── PlaylistGenre.cs │ │ │ ├── PurchasableItem.cs │ │ │ ├── Purchase.cs │ │ │ ├── PurchaseLineItem.cs │ │ │ ├── PurchaseLineItemCurrency.cs │ │ │ ├── Room.cs │ │ │ ├── RoomGenre.cs │ │ │ ├── Song.cs │ │ │ ├── SongPlaylist.cs │ │ │ ├── SongQueued.cs │ │ │ ├── SongRequest.cs │ │ │ ├── Transaction.cs │ │ │ └── TransactionSongQueued.cs │ │ ├── Enums │ │ │ └── Enums.cs │ │ ├── Listify.Domain.Lib.csproj │ │ ├── Requests │ │ │ ├── BaseRequest.cs │ │ │ └── BaseUpdateRequest.cs │ │ ├── Responses │ │ │ └── Response.cs │ │ └── VMs │ │ │ └── BaseVM.cs │ └── Listify.Paths │ │ └── Listify.Paths.csproj ├── Listify.Backend.sln └── Modules │ ├── Listify.BLL │ ├── Events │ │ └── Args │ │ │ ├── CurrencyPollEventArgs.cs │ │ │ ├── PingPollEventArgs.cs │ │ │ └── RoomsOnlinePollEventArgs.cs │ ├── Listify.BLL.csproj │ └── Polls │ │ ├── CurrencyPoll.cs │ │ ├── ICurrencyPoll.cs │ │ ├── IPingPoll.cs │ │ ├── IRoomsOnlinePoll.cs │ │ ├── PingPoll.cs │ │ └── RoomsOnlinePoll.cs │ ├── Listify.DAL │ ├── IListifyDAL.cs │ ├── Listify.DAL.csproj │ └── ListifyDAL.cs │ ├── Listify.Lib │ ├── DTOs │ │ ├── ApplicationUserDTO.cs │ │ ├── ApplicationUserRoomConnectionDTO.cs │ │ ├── ApplicationUserRoomCurrencyRoomDTO.cs │ │ ├── ApplicationUserRoomDTO.cs │ │ ├── ChatMessageDTO.cs │ │ ├── CurrencyDTO.cs │ │ ├── CurrencyRoomDTO.cs │ │ ├── FollowDTO.cs │ │ ├── GenreDTO.cs │ │ ├── LogAPIDTO.cs │ │ ├── LogErrorDTO.cs │ │ ├── PlaylistDTO.cs │ │ ├── PlaylistGenreDTO.cs │ │ ├── PurchasableItemDTO.cs │ │ ├── PurchaseDTO.cs │ │ ├── PurchaseLineItemCurrencyDTO.cs │ │ ├── PurchaseLineItemDTO.cs │ │ ├── RoomDTO.cs │ │ ├── RoomGenreDTO.cs │ │ ├── SongDTO.cs │ │ ├── SongPlaylistDTO.cs │ │ ├── SongQueuedDTO.cs │ │ ├── SongRequestDTO.cs │ │ ├── TransactionDTO.cs │ │ └── TransactionSongQueuedDTO.cs │ ├── Listify.Lib.csproj │ ├── Requests │ │ ├── ApplicationUserCreateRequest.cs │ │ ├── ApplicationUserRoomConnectionCreateRequest.cs │ │ ├── ApplicationUserRoomConnectionUpdateRequest.cs │ │ ├── ApplicationUserRoomCreateRequest.cs │ │ ├── ApplicationUserRoomCurrencyRoomCreateRequest.cs │ │ ├── ApplicationUserRoomUpdateRequest.cs │ │ ├── ApplicationUserUpdateRequest.cs │ │ ├── ChatMessageCreateRequest.cs │ │ ├── CurrencyRoomCreateRequest.cs │ │ ├── FollowCreateRequest.cs │ │ ├── LogAPICreateRequest.cs │ │ ├── LogErrorCreateRequest.cs │ │ ├── PaypalPaymentRequest.cs │ │ ├── PlaylistCreateRequest.cs │ │ ├── PlaylistGenreCreateRequest.cs │ │ ├── ProfileUpdateRequest.cs │ │ ├── PurchasableItemCreateRequest.cs │ │ ├── PurchasableLineItemCreateRequest.cs │ │ ├── PurchasableLineItemCurrencyCreateRequest.cs │ │ ├── PurchaseConfirmedUpdateRequest.cs │ │ ├── PurchaseCreateRequest.cs │ │ ├── RoomUpdateRequest.cs │ │ ├── ServerStateRequest.cs │ │ ├── SongCreateRequest.cs │ │ ├── SongPlaylistCreateRequest.cs │ │ ├── SongQueuedCreateRequest.cs │ │ ├── SongRequestCreateRequest.cs │ │ ├── SongUpdateRequest.cs │ │ ├── TransactionCreateRequest.cs │ │ ├── TransactionSongQueuedCreateRequest.cs │ │ ├── UpvoteSongQueuedRequest.cs │ │ └── WagerQuantitySongQueuedRquest.cs │ ├── Responses │ │ ├── AuthToLockedRoomResponse.cs │ │ ├── NeutrinoBadWordResponse.cs │ │ ├── PlayFromServerResponse.cs │ │ ├── PurgoMalumResponse.cs │ │ ├── ServerStateResponse.cs │ │ ├── SpotifyAccessTokenResponse.cs │ │ ├── SpotifyPlaylistTracksCollabResponse.cs │ │ ├── SpotifyPlaylistTracksResponse.cs │ │ ├── YoutubePlaylistSearchResponse.cs │ │ ├── YoutubeResults.cs │ │ └── YoutubeSearchResponse.cs │ └── VMs │ │ ├── ApplicationUserRoomConnectionVM.cs │ │ ├── ApplicationUserRoomCurrencyRoomVM.cs │ │ ├── ApplicationUserRoomVM.cs │ │ ├── ApplicationUserVM.cs │ │ ├── ChatMessageVM.cs │ │ ├── CurrencyRoomVM.cs │ │ ├── CurrencyVM.cs │ │ ├── FollowVM.cs │ │ ├── GenreVM.cs │ │ ├── LogAPIVM.cs │ │ ├── LogErrorVM.cs │ │ ├── PlaylistGenreVM.cs │ │ ├── PlaylistVM.cs │ │ ├── ProfileVM.cs │ │ ├── PurchasableItemVM.cs │ │ ├── PurchaseLineItemCurrencyVM.cs │ │ ├── PurchaseLineItemVM.cs │ │ ├── PurchaseVM.cs │ │ ├── RoomGenreVM.cs │ │ ├── RoomVM.cs │ │ ├── SongPlaylistVM.cs │ │ ├── SongQueuedVM.cs │ │ ├── SongRequestVM.cs │ │ ├── SongVM.cs │ │ ├── TransactionSongQueuedVM.cs │ │ └── TransactionVM.cs │ ├── Listify.Services │ ├── IListifyService.cs │ ├── Listify.Services.csproj │ └── ListifyService.cs │ └── Listify.WebAPI.Client │ ├── Listify.WebAPI.Client.csproj │ └── ListifyWebAPIClient.cs ├── Listify ├── .browserslistrc ├── .editorconfig ├── .gitignore ├── .vscode │ └── launch.json ├── README.md ├── angular.json ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json ├── package.json ├── src │ ├── app │ │ ├── AppComponent.ts │ │ ├── account │ │ │ ├── account.component.css │ │ │ ├── account.component.html │ │ │ ├── account.component.spec.ts │ │ │ └── account.component.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── authConfig.ts │ │ ├── cart │ │ │ ├── cart.component.css │ │ │ ├── cart.component.html │ │ │ ├── cart.component.spec.ts │ │ │ └── cart.component.ts │ │ ├── checkout │ │ │ ├── checkout.component.css │ │ │ ├── checkout.component.html │ │ │ ├── checkout.component.spec.ts │ │ │ └── checkout.component.ts │ │ ├── checkoutfail │ │ │ ├── checkoutfail.component.css │ │ │ ├── checkoutfail.component.html │ │ │ ├── checkoutfail.component.spec.ts │ │ │ └── checkoutfail.component.ts │ │ ├── currencies │ │ │ ├── currencies.component.css │ │ │ ├── currencies.component.html │ │ │ ├── currencies.component.spec.ts │ │ │ └── currencies.component.ts │ │ ├── currency │ │ │ ├── currency.component.css │ │ │ ├── currency.component.html │ │ │ ├── currency.component.spec.ts │ │ │ └── currency.component.ts │ │ ├── home │ │ │ ├── home.component.css │ │ │ ├── home.component.html │ │ │ ├── home.component.spec.ts │ │ │ └── home.component.ts │ │ ├── interfaces.ts │ │ ├── material.module.ts │ │ ├── playlist │ │ │ ├── playlist.component.css │ │ │ ├── playlist.component.html │ │ │ ├── playlist.component.spec.ts │ │ │ └── playlist.component.ts │ │ ├── playlists │ │ │ ├── playlists.component.css │ │ │ ├── playlists.component.html │ │ │ ├── playlists.component.spec.ts │ │ │ └── playlists.component.ts │ │ ├── playlistscommunity │ │ │ ├── playlistscommunity.component.css │ │ │ ├── playlistscommunity.component.html │ │ │ ├── playlistscommunity.component.spec.ts │ │ │ └── playlistscommunity.component.ts │ │ ├── profile │ │ │ ├── profile.component.css │ │ │ ├── profile.component.html │ │ │ ├── profile.component.spec.ts │ │ │ └── profile.component.ts │ │ ├── purchasableitems │ │ │ ├── purchasableitems.component.css │ │ │ ├── purchasableitems.component.html │ │ │ ├── purchasableitems.component.spec.ts │ │ │ └── purchasableitems.component.ts │ │ ├── purchases │ │ │ ├── purchases.component.css │ │ │ ├── purchases.component.html │ │ │ ├── purchases.component.spec.ts │ │ │ └── purchases.component.ts │ │ ├── room │ │ │ ├── room.component.css │ │ │ ├── room.component.html │ │ │ ├── room.component.spec.ts │ │ │ └── room.component.ts │ │ ├── rooms │ │ │ ├── rooms.component.css │ │ │ ├── rooms.component.html │ │ │ ├── rooms.component.spec.ts │ │ │ └── rooms.component.ts │ │ ├── services │ │ │ ├── cart.service.spec.ts │ │ │ ├── cart.service.ts │ │ │ ├── globals.service.spec.ts │ │ │ ├── http.service.spec.ts │ │ │ ├── http.service.ts │ │ │ ├── hub.service.spec.ts │ │ │ ├── hub.service.ts │ │ │ ├── player.service.spec.ts │ │ │ ├── player.service.ts │ │ │ ├── profile.service.spec.ts │ │ │ ├── profile.service.ts │ │ │ ├── room-hub.service.spec.ts │ │ │ ├── room-hub.service.ts │ │ │ ├── youtube.service.spec.ts │ │ │ └── youtube.service.ts │ │ └── shared │ │ │ ├── applicationuserroomcurrencies │ │ │ ├── applicationuserroomcurrencies.component.css │ │ │ ├── applicationuserroomcurrencies.component.html │ │ │ ├── applicationuserroomcurrencies.component.spec.ts │ │ │ └── applicationuserroomcurrencies.component.ts │ │ │ ├── auth │ │ │ ├── authguard.service.spec.ts │ │ │ └── authguard.service.ts │ │ │ ├── chat │ │ │ ├── chat.component.css │ │ │ ├── chat.component.html │ │ │ ├── chat.component.spec.ts │ │ │ └── chat.component.ts │ │ │ ├── index.ts │ │ │ ├── modals │ │ │ ├── applicationusersfollowingmodal │ │ │ │ ├── applicationusersfollowingmodal.component.css │ │ │ │ ├── applicationusersfollowingmodal.component.spec.ts │ │ │ │ └── applicationusersfollowingmodal.component.ts │ │ │ ├── applicationusersroommodal │ │ │ │ ├── applicationusersroommodal.component.css │ │ │ │ ├── applicationusersroommodal.component.spec.ts │ │ │ │ └── applicationusersroommodal.component.ts │ │ │ ├── confirmationmodal │ │ │ │ ├── confirmationmodal.component.css │ │ │ │ ├── confirmationmodal.component.spec.ts │ │ │ │ └── confirmationmodal.component.ts │ │ │ ├── informationmodal │ │ │ │ ├── informationmodal.component.css │ │ │ │ ├── informationmodal.component.spec.ts │ │ │ │ └── informationmodal.component.ts │ │ │ └── inputmodal │ │ │ │ ├── inputmodal.component.css │ │ │ │ ├── inputmodal.component.spec.ts │ │ │ │ └── inputmodal.component.ts │ │ │ ├── player │ │ │ ├── player.component.css │ │ │ ├── player.component.html │ │ │ ├── player.component.spec.ts │ │ │ └── player.component.ts │ │ │ ├── profileplaylists │ │ │ ├── profileplaylists.component.css │ │ │ ├── profileplaylists.component.html │ │ │ ├── profileplaylists.component.spec.ts │ │ │ └── profileplaylists.component.ts │ │ │ ├── queue │ │ │ ├── queue.component.css │ │ │ ├── queue.component.html │ │ │ ├── queue.component.spec.ts │ │ │ └── queue.component.ts │ │ │ ├── roomsfollowed │ │ │ ├── roomsfollowed.component.css │ │ │ ├── roomsfollowed.component.html │ │ │ ├── roomsfollowed.component.spec.ts │ │ │ └── roomsfollowed.component.ts │ │ │ ├── searchsongplaylist │ │ │ ├── searchsongplaylist.component.css │ │ │ ├── searchsongplaylist.component.html │ │ │ ├── searchsongplaylist.component.spec.ts │ │ │ └── searchsongplaylist.component.ts │ │ │ ├── searchsongrequest │ │ │ ├── searchsongrequest.component.css │ │ │ ├── searchsongrequest.component.html │ │ │ ├── searchsongrequest.component.spec.ts │ │ │ └── searchsongrequest.component.ts │ │ │ └── songsplaylist │ │ │ ├── songsplaylist.component.css │ │ │ ├── songsplaylist.component.html │ │ │ ├── songsplaylist.component.spec.ts │ │ │ └── songsplaylist.component.ts │ ├── assets │ │ ├── .gitkeep │ │ ├── Astoundify-Listify.jpg │ │ ├── listifyfulllogo.png │ │ ├── listifylogo.png │ │ ├── origniallistifyfulllogo.jpg │ │ ├── pause.svg │ │ └── sound.gif │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ └── test.ts ├── tsconfig.app.json ├── tsconfig.base.json ├── tsconfig.json ├── tsconfig.spec.json └── tslint.json └── README.md /Listify.Backend/.vs/Listify.Backend/DesignTimeBuild/.dtbcache.v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/.vs/Listify.Backend/DesignTimeBuild/.dtbcache.v2 -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Constants.cs: -------------------------------------------------------------------------------- 1 | namespace Listify.Identity 2 | { 3 | public static class Constants 4 | { 5 | public const string CERTIFICATE_PASSWORD = "1234"; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Data/ApplicationDbContext.cs: -------------------------------------------------------------------------------- 1 | using Listify.Identity.Models; 2 | using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 3 | using Microsoft.EntityFrameworkCore; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Threading.Tasks; 8 | 9 | namespace Listify.Identity.Data 10 | { 11 | public class ApplicationDbContext : IdentityDbContext 12 | { 13 | public ApplicationDbContext(DbContextOptions options): base(options) 14 | { 15 | } 16 | 17 | protected override void OnModelCreating(ModelBuilder builder) 18 | { 19 | base.OnModelCreating(builder); 20 | // Customize the ASP.NET Identity model and override the defaults if needed. 21 | // For example, you can rename the ASP.NET Identity table names and more. 22 | // Add your customizations after calling base.OnModelCreating(builder); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Models/ApplicationUser.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity; 2 | 3 | namespace Listify.Identity.Models 4 | { 5 | public class ApplicationUser : IdentityUser 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:5000/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "environmentVariables": { 14 | "ASPNETCORE_ENVIRONMENT": "Development" 15 | } 16 | }, 17 | "Listify.Identity": { 18 | "commandName": "Project", 19 | "launchBrowser": true, 20 | "environmentVariables": { 21 | "ASPNETCORE_ENVIRONMENT": "Development" 22 | }, 23 | "applicationUrl": "http://localhost:5000" 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Account/ExternalProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ExternalProvider 8 | { 9 | public string DisplayName { get; set; } 10 | public string AuthenticationScheme { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Account/LoggedOutViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LoggedOutViewModel 8 | { 9 | public string PostLogoutRedirectUri { get; set; } 10 | public string ClientName { get; set; } 11 | public string SignOutIframeUrl { get; set; } 12 | 13 | public bool AutomaticRedirectAfterSignOut { get; set; } 14 | 15 | public string LogoutId { get; set; } 16 | public bool TriggerExternalSignout => ExternalAuthenticationScheme != null; 17 | public string ExternalAuthenticationScheme { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Account/LoginInputModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using System.ComponentModel.DataAnnotations; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class LoginInputModel 10 | { 11 | [Required] 12 | public string Username { get; set; } 13 | [Required] 14 | public string Password { get; set; } 15 | public bool RememberLogin { get; set; } 16 | public string ReturnUrl { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Account/LoginViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | 9 | namespace IdentityServer4.Quickstart.UI 10 | { 11 | public class LoginViewModel : LoginInputModel 12 | { 13 | public bool AllowRememberLogin { get; set; } 14 | public bool EnableLocalLogin { get; set; } 15 | 16 | public IEnumerable ExternalProviders { get; set; } 17 | public IEnumerable VisibleExternalProviders => ExternalProviders.Where(x => !String.IsNullOrWhiteSpace(x.DisplayName)); 18 | 19 | public bool IsExternalLoginOnly => EnableLocalLogin == false && ExternalProviders?.Count() == 1; 20 | public string ExternalLoginScheme => IsExternalLoginOnly ? ExternalProviders?.SingleOrDefault()?.AuthenticationScheme : null; 21 | } 22 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Account/LogoutInputModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutInputModel 8 | { 9 | public string LogoutId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Account/LogoutViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutViewModel : LogoutInputModel 8 | { 9 | public bool ShowLogoutPrompt { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Consent/ConsentInputModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using System.Collections.Generic; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class ConsentInputModel 10 | { 11 | public string Button { get; set; } 12 | public IEnumerable ScopesConsented { get; set; } 13 | public bool RememberConsent { get; set; } 14 | public string ReturnUrl { get; set; } 15 | } 16 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Consent/ConsentOptions.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ConsentOptions 8 | { 9 | public static bool EnableOfflineAccess = true; 10 | public static string OfflineAccessDisplayName = "Offline Access"; 11 | public static string OfflineAccessDescription = "Access to your applications and resources, even when you are offline"; 12 | 13 | public static readonly string MustChooseOneErrorMessage = "You must pick at least one permission"; 14 | public static readonly string InvalidSelectionErrorMessage = "Invalid selection"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Consent/ConsentViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using System.Collections.Generic; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class ConsentViewModel : ConsentInputModel 10 | { 11 | public string ClientName { get; set; } 12 | public string ClientUrl { get; set; } 13 | public string ClientLogoUrl { get; set; } 14 | public bool AllowRememberConsent { get; set; } 15 | 16 | public IEnumerable IdentityScopes { get; set; } 17 | public IEnumerable ResourceScopes { get; set; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Consent/ProcessConsentResult.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ProcessConsentResult 8 | { 9 | public bool IsRedirect => RedirectUri != null; 10 | public string RedirectUri { get; set; } 11 | 12 | public bool ShowView => ViewModel != null; 13 | public ConsentViewModel ViewModel { get; set; } 14 | 15 | public bool HasValidationError => ValidationError != null; 16 | public string ValidationError { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Consent/ScopeViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ScopeViewModel 8 | { 9 | public string Name { get; set; } 10 | public string DisplayName { get; set; } 11 | public string Description { get; set; } 12 | public bool Emphasize { get; set; } 13 | public bool Required { get; set; } 14 | public bool Checked { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Grants/GrantsViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | 8 | namespace IdentityServer4.Quickstart.UI 9 | { 10 | public class GrantsViewModel 11 | { 12 | public IEnumerable Grants { get; set; } 13 | } 14 | 15 | public class GrantViewModel 16 | { 17 | public string ClientId { get; set; } 18 | public string ClientName { get; set; } 19 | public string ClientUrl { get; set; } 20 | public string ClientLogoUrl { get; set; } 21 | public DateTime Created { get; set; } 22 | public DateTime? Expires { get; set; } 23 | public IEnumerable IdentityGrantNames { get; set; } 24 | public IEnumerable ApiGrantNames { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Quickstart/Home/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using IdentityServer4.Models; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class ErrorViewModel 10 | { 11 | public ErrorMessage Error { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Views/Account/LoggedOut.cshtml: -------------------------------------------------------------------------------- 1 | @model LoggedOutViewModel 2 | 3 | @{ 4 | // set this so the layout rendering sees an anonymous user 5 | ViewData["signed-out"] = true; 6 | } 7 | 8 | 27 | 28 | @section scripts 29 | { 30 | @if (Model.AutomaticRedirectAfterSignOut) 31 | { 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Views/Account/Logout.cshtml: -------------------------------------------------------------------------------- 1 | @model LogoutViewModel 2 | 3 |
4 | 7 | 8 |
9 |
10 |

Would you like to logout of IdentityServer?

11 |
12 | 13 |
14 |
15 | 16 |
17 |
18 |
19 |
20 |
21 |
-------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Views/Diagnostics/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model DiagnosticsViewModel 2 | 3 |

Authentication cookie

4 | 5 |

Claims

6 |
7 | @foreach (var claim in Model.AuthenticateResult.Principal.Claims) 8 | { 9 |
@claim.Type
10 |
@claim.Value
11 | } 12 |
13 | 14 |

Properties

15 |
16 | @foreach (var prop in Model.AuthenticateResult.Properties.Items) 17 | { 18 |
@prop.Key
19 |
@prop.Value
20 | } 21 |
22 | 23 | @if (Model.Clients.Any()) 24 | { 25 |

Clients

26 |
    27 | @foreach (var client in Model.Clients) 28 | { 29 |
  • @client
  • 30 | } 31 |
32 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Views/Shared/_ValidationSummary.cshtml: -------------------------------------------------------------------------------- 1 | @if (ViewContext.ModelState.IsValid == false) 2 | { 3 |
4 | Error 5 |
6 |
7 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using IdentityServer4.Quickstart.UI 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=DESKTOP-TRDGNUO\\ABOELKASSEMSQL;Database=Listify.Identity;Trusted_Connection=true;MultipleActiveResultSets=true" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft": "Warning", 9 | "Microsoft.Hosting.Lifetime": "Information" 10 | } 11 | }, 12 | "AllowedHosts": "*" 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/icon.jpg -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/icon.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginFacebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginFacebook.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginGithub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginGithub.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginGoogle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginGoogle.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginMicrosoft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginMicrosoft.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginSteam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginSteam.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginTwitch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginTwitch.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginTwitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginTwitter.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginYoutube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/LoginYoutube.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/SocialMediaAll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/SocialMediaAll.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/TwitchIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/imgs/TwitchIcon.png -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/js/signout-redirect.js: -------------------------------------------------------------------------------- 1 | window.addEventListener("load", function () { 2 | var a = document.querySelector("a.PostLogoutRedirectUri"); 3 | if (a) { 4 | window.location = a.href; 5 | } 6 | }); 7 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify.Backend/Clients/Listify.Identity/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) .NET Foundation. All rights reserved. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4 | these files except in compliance with the License. You may obtain a copy of the 5 | License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software distributed 10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the 12 | specific language governing permissions and limitations under the License. 13 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-validation", 3 | "homepage": "http://jqueryvalidation.org/", 4 | "repository": { 5 | "type": "git", 6 | "url": "git://github.com/jzaefferer/jquery-validation.git" 7 | }, 8 | "authors": [ 9 | "Jörn Zaefferer " 10 | ], 11 | "description": "Form validation made easy", 12 | "main": "dist/jquery.validate.js", 13 | "keywords": [ 14 | "forms", 15 | "validation", 16 | "validate" 17 | ], 18 | "license": "MIT", 19 | "ignore": [ 20 | "**/.*", 21 | "node_modules", 22 | "bower_components", 23 | "test", 24 | "demo", 25 | "lib" 26 | ], 27 | "dependencies": { 28 | "jquery": ">= 1.7.2" 29 | }, 30 | "version": "1.14.0" 31 | } 32 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/alphanumeric.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("alphanumeric", function(value, element) { 2 | return this.optional(element) || /^\w+$/i.test(value); 3 | }, "Letters, numbers, and underscores only please"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/bankaccountNL.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Dutch bank account numbers (not 'giro' numbers) have 9 digits 3 | * and pass the '11 check'. 4 | * We accept the notation with spaces, as that is common. 5 | * acceptable: 123456789 or 12 34 56 789 6 | */ 7 | $.validator.addMethod("bankaccountNL", function(value, element) { 8 | if (this.optional(element)) { 9 | return true; 10 | } 11 | if (!(/^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test(value))) { 12 | return false; 13 | } 14 | // now '11 check' 15 | var account = value.replace(/ /g, ""), // remove spaces 16 | sum = 0, 17 | len = account.length, 18 | pos, factor, digit; 19 | for ( pos = 0; pos < len; pos++ ) { 20 | factor = len - pos; 21 | digit = account.substring(pos, pos + 1); 22 | sum = sum + factor * digit; 23 | } 24 | return sum % 11 === 0; 25 | }, "Please specify a valid bank account number"); 26 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/bankorgiroaccountNL.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("bankorgiroaccountNL", function(value, element) { 2 | return this.optional(element) || 3 | ($.validator.methods.bankaccountNL.call(this, value, element)) || 4 | ($.validator.methods.giroaccountNL.call(this, value, element)); 5 | }, "Please specify a valid bank or giro account number"); 6 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/bic.js: -------------------------------------------------------------------------------- 1 | /** 2 | * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity. 3 | * 4 | * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional) 5 | * 6 | * BIC definition in detail: 7 | * - First 4 characters - bank code (only letters) 8 | * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters) 9 | * - Next 2 characters - location code (letters and digits) 10 | * a. shall not start with '0' or '1' 11 | * b. second character must be a letter ('O' is not allowed) or one of the following digits ('0' for test (therefore not allowed), '1' for passive participant and '2' for active participant) 12 | * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits) 13 | */ 14 | $.validator.addMethod("bic", function(value, element) { 15 | return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value ); 16 | }, "Please specify a valid BIC code"); 17 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/dateFA.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("dateFA", function(value, element) { 2 | return this.optional(element) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(value); 3 | }, $.validator.messages.date); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/dateNL.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("dateNL", function(value, element) { 2 | return this.optional(element) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(value); 3 | }, $.validator.messages.date); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/extension.js: -------------------------------------------------------------------------------- 1 | // Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept 2 | $.validator.addMethod("extension", function(value, element, param) { 3 | param = typeof param === "string" ? param.replace(/,/g, "|") : "png|jpe?g|gif"; 4 | return this.optional(element) || value.match(new RegExp("\\.(" + param + ")$", "i")); 5 | }, $.validator.format("Please enter a value with a valid extension.")); 6 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/giroaccountNL.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Dutch giro account numbers (not bank numbers) have max 7 digits 3 | */ 4 | $.validator.addMethod("giroaccountNL", function(value, element) { 5 | return this.optional(element) || /^[0-9]{1,7}$/.test(value); 6 | }, "Please specify a valid giro account number"); 7 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/integer.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("integer", function(value, element) { 2 | return this.optional(element) || /^-?\d+$/.test(value); 3 | }, "A positive or negative non-decimal number please"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/ipv4.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("ipv4", function(value, element) { 2 | return this.optional(element) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(value); 3 | }, "Please enter a valid IP v4 address."); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/ipv6.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("ipv6", function(value, element) { 2 | return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value); 3 | }, "Please enter a valid IP v6 address."); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/lettersonly.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("lettersonly", function(value, element) { 2 | return this.optional(element) || /^[a-z]+$/i.test(value); 3 | }, "Letters only please"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/letterswithbasicpunc.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("letterswithbasicpunc", function(value, element) { 2 | return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value); 3 | }, "Letters or punctuation only please"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/mobileNL.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("mobileNL", function(value, element) { 2 | return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value); 3 | }, "Please specify a valid mobile number"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/mobileUK.js: -------------------------------------------------------------------------------- 1 | /* For UK phone functions, do the following server side processing: 2 | * Compare original input with this RegEx pattern: 3 | * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ 4 | * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' 5 | * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. 6 | * A number of very detailed GB telephone number RegEx patterns can also be found at: 7 | * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers 8 | */ 9 | $.validator.addMethod("mobileUK", function(phone_number, element) { 10 | phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); 11 | return this.optional(element) || phone_number.length > 9 && 12 | phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/); 13 | }, "Please specify a valid mobile number"); 14 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/nieES.js: -------------------------------------------------------------------------------- 1 | /* 2 | * The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain 3 | */ 4 | $.validator.addMethod( "nieES", function( value ) { 5 | "use strict"; 6 | 7 | value = value.toUpperCase(); 8 | 9 | // Basic format test 10 | if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) { 11 | return false; 12 | } 13 | 14 | // Test NIE 15 | //T 16 | if ( /^[T]{1}/.test( value ) ) { 17 | return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) ); 18 | } 19 | 20 | //XYZ 21 | if ( /^[XYZ]{1}/.test( value ) ) { 22 | return ( 23 | value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( 24 | value.replace( "X", "0" ) 25 | .replace( "Y", "1" ) 26 | .replace( "Z", "2" ) 27 | .substring( 0, 8 ) % 23 28 | ) 29 | ); 30 | } 31 | 32 | return false; 33 | 34 | }, "Please specify a valid NIE number." ); 35 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/nifES.js: -------------------------------------------------------------------------------- 1 | /* 2 | * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals 3 | */ 4 | $.validator.addMethod( "nifES", function( value ) { 5 | "use strict"; 6 | 7 | value = value.toUpperCase(); 8 | 9 | // Basic format test 10 | if ( !value.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)") ) { 11 | return false; 12 | } 13 | 14 | // Test NIF 15 | if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) { 16 | return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) ); 17 | } 18 | // Test specials NIF (starts with K, L or M) 19 | if ( /^[KLM]{1}/.test( value ) ) { 20 | return ( value[ 8 ] === String.fromCharCode( 64 ) ); 21 | } 22 | 23 | return false; 24 | 25 | }, "Please specify a valid NIF number." ); 26 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/notEqualTo.js: -------------------------------------------------------------------------------- 1 | jQuery.validator.addMethod( "notEqualTo", function( value, element, param ) { 2 | return this.optional(element) || !$.validator.methods.equalTo.call( this, value, element, param ); 3 | }, "Please enter a different value, values must not be the same." ); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/nowhitespace.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("nowhitespace", function(value, element) { 2 | return this.optional(element) || /^\S+$/i.test(value); 3 | }, "No white space please"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/pattern.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Return true if the field value matches the given format RegExp 3 | * 4 | * @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) 5 | * @result true 6 | * 7 | * @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) 8 | * @result false 9 | * 10 | * @name $.validator.methods.pattern 11 | * @type Boolean 12 | * @cat Plugins/Validate/Methods 13 | */ 14 | $.validator.addMethod("pattern", function(value, element, param) { 15 | if (this.optional(element)) { 16 | return true; 17 | } 18 | if (typeof param === "string") { 19 | param = new RegExp("^(?:" + param + ")$"); 20 | } 21 | return param.test(value); 22 | }, "Invalid format."); 23 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/phoneNL.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Dutch phone numbers have 10 digits (or 11 and start with +31). 3 | */ 4 | $.validator.addMethod("phoneNL", function(value, element) { 5 | return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(value); 6 | }, "Please specify a valid phone number."); 7 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/phoneUS.js: -------------------------------------------------------------------------------- 1 | /** 2 | * matches US phone number format 3 | * 4 | * where the area code may not start with 1 and the prefix may not start with 1 5 | * allows '-' or ' ' as a separator and allows parens around area code 6 | * some people may want to put a '1' in front of their number 7 | * 8 | * 1(212)-999-2345 or 9 | * 212 999 2344 or 10 | * 212-999-0983 11 | * 12 | * but not 13 | * 111-123-5434 14 | * and not 15 | * 212 123 4567 16 | */ 17 | $.validator.addMethod("phoneUS", function(phone_number, element) { 18 | phone_number = phone_number.replace(/\s+/g, ""); 19 | return this.optional(element) || phone_number.length > 9 && 20 | phone_number.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/); 21 | }, "Please specify a valid phone number"); 22 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/postalCodeCA.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Matches a valid Canadian Postal Code 3 | * 4 | * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element ) 5 | * @result true 6 | * 7 | * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element ) 8 | * @result false 9 | * 10 | * @name jQuery.validator.methods.postalCodeCA 11 | * @type Boolean 12 | * @cat Plugins/Validate/Methods 13 | */ 14 | $.validator.addMethod( "postalCodeCA", function( value, element ) { 15 | return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test( value ); 16 | }, "Please specify a valid postal code" ); 17 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/postalcodeBR.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Valida CEPs do brasileiros: 3 | * 4 | * Formatos aceitos: 5 | * 99999-999 6 | * 99.999-999 7 | * 99999999 8 | */ 9 | $.validator.addMethod("postalcodeBR", function(cep_value, element) { 10 | return this.optional(element) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value ); 11 | }, "Informe um CEP válido."); 12 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/postalcodeIT.js: -------------------------------------------------------------------------------- 1 | /* Matches Italian postcode (CAP) */ 2 | $.validator.addMethod("postalcodeIT", function(value, element) { 3 | return this.optional(element) || /^\d{5}$/.test(value); 4 | }, "Please specify a valid postal code"); 5 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/postalcodeNL.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("postalcodeNL", function(value, element) { 2 | return this.optional(element) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(value); 3 | }, "Please specify a valid postal code"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/postcodeUK.js: -------------------------------------------------------------------------------- 1 | // Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) 2 | $.validator.addMethod("postcodeUK", function(value, element) { 3 | return this.optional(element) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(value); 4 | }, "Please specify a valid UK postcode"); 5 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/strippedminlength.js: -------------------------------------------------------------------------------- 1 | // TODO check if value starts with <, otherwise don't try stripping anything 2 | $.validator.addMethod("strippedminlength", function(value, element, param) { 3 | return $(value).text().length >= param; 4 | }, $.validator.format("Please enter at least {0} characters")); 5 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/time.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("time", function(value, element) { 2 | return this.optional(element) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(value); 3 | }, "Please enter a valid time, between 00:00 and 23:59"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/time12h.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("time12h", function(value, element) { 2 | return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(value); 3 | }, "Please enter a valid time in 12-hour am/pm format"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/zipcodeUS.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("zipcodeUS", function(value, element) { 2 | return this.optional(element) || /^\d{5}(-\d{4})?$/.test(value); 3 | }, "The specified US ZIP Code is invalid"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/additional/ziprange.js: -------------------------------------------------------------------------------- 1 | $.validator.addMethod("ziprange", function(value, element) { 2 | return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value); 3 | }, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx"); 4 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_da.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: DA (Danish; dansk) 4 | */ 5 | $.extend($.validator.messages, { 6 | required: "Dette felt er påkrævet.", 7 | maxlength: $.validator.format("Indtast højst {0} tegn."), 8 | minlength: $.validator.format("Indtast mindst {0} tegn."), 9 | rangelength: $.validator.format("Indtast mindst {0} og højst {1} tegn."), 10 | email: "Indtast en gyldig email-adresse.", 11 | url: "Indtast en gyldig URL.", 12 | date: "Indtast en gyldig dato.", 13 | number: "Indtast et tal.", 14 | digits: "Indtast kun cifre.", 15 | equalTo: "Indtast den samme værdi igen.", 16 | range: $.validator.format("Angiv en værdi mellem {0} og {1}."), 17 | max: $.validator.format("Angiv en værdi der højst er {0}."), 18 | min: $.validator.format("Angiv en værdi der mindst er {0}."), 19 | creditcard: "Indtast et gyldigt kreditkortnummer." 20 | }); 21 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_he.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: HE (Hebrew; עברית) 4 | */ 5 | $.extend($.validator.messages, { 6 | required: "השדה הזה הינו שדה חובה", 7 | remote: "נא לתקן שדה זה", 8 | email: "נא למלא כתובת דוא\"ל חוקית", 9 | url: "נא למלא כתובת אינטרנט חוקית", 10 | date: "נא למלא תאריך חוקי", 11 | dateISO: "נא למלא תאריך חוקי (ISO)", 12 | number: "נא למלא מספר", 13 | digits: "נא למלא רק מספרים", 14 | creditcard: "נא למלא מספר כרטיס אשראי חוקי", 15 | equalTo: "נא למלא את אותו ערך שוב", 16 | extension: "נא למלא ערך עם סיומת חוקית", 17 | maxlength: $.validator.format(".נא לא למלא יותר מ- {0} תווים"), 18 | minlength: $.validator.format("נא למלא לפחות {0} תווים"), 19 | rangelength: $.validator.format("נא למלא ערך בין {0} ל- {1} תווים"), 20 | range: $.validator.format("נא למלא ערך בין {0} ל- {1}"), 21 | max: $.validator.format("נא למלא ערך קטן או שווה ל- {0}"), 22 | min: $.validator.format("נא למלא ערך גדול או שווה ל- {0}") 23 | }); 24 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_is.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: IS (Icelandic; íslenska) 4 | */ 5 | $.extend($.validator.messages, { 6 | required: "Þessi reitur er nauðsynlegur.", 7 | remote: "Lagaðu þennan reit.", 8 | maxlength: $.validator.format("Sláðu inn mest {0} stafi."), 9 | minlength: $.validator.format("Sláðu inn minnst {0} stafi."), 10 | rangelength: $.validator.format("Sláðu inn minnst {0} og mest {1} stafi."), 11 | email: "Sláðu inn gilt netfang.", 12 | url: "Sláðu inn gilda vefslóð.", 13 | date: "Sláðu inn gilda dagsetningu.", 14 | number: "Sláðu inn tölu.", 15 | digits: "Sláðu inn tölustafi eingöngu.", 16 | equalTo: "Sláðu sama gildi inn aftur.", 17 | range: $.validator.format("Sláðu inn gildi milli {0} og {1}."), 18 | max: $.validator.format("Sláðu inn gildi sem er minna en eða jafnt og {0}."), 19 | min: $.validator.format("Sláðu inn gildi sem er stærra en eða jafnt og {0}."), 20 | creditcard: "Sláðu inn gilt greiðslukortanúmer." 21 | }); 22 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_ja.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: JA (Japanese; 日本語) 4 | */ 5 | $.extend($.validator.messages, { 6 | required: "このフィールドは必須です。", 7 | remote: "このフィールドを修正してください。", 8 | email: "有効なEメールアドレスを入力してください。", 9 | url: "有効なURLを入力してください。", 10 | date: "有効な日付を入力してください。", 11 | dateISO: "有効な日付(ISO)を入力してください。", 12 | number: "有効な数字を入力してください。", 13 | digits: "数字のみを入力してください。", 14 | creditcard: "有効なクレジットカード番号を入力してください。", 15 | equalTo: "同じ値をもう一度入力してください。", 16 | extension: "有効な拡張子を含む値を入力してください。", 17 | maxlength: $.validator.format("{0} 文字以内で入力してください。"), 18 | minlength: $.validator.format("{0} 文字以上で入力してください。"), 19 | rangelength: $.validator.format("{0} 文字から {1} 文字までの値を入力してください。"), 20 | range: $.validator.format("{0} から {1} までの値を入力してください。"), 21 | max: $.validator.format("{0} 以下の値を入力してください。"), 22 | min: $.validator.format("{0} 以上の値を入力してください。") 23 | }); 24 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_ko.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: KO (Korean; 한국어) 4 | */ 5 | $.extend($.validator.messages, { 6 | required: "필수 항목입니다.", 7 | remote: "항목을 수정하세요.", 8 | email: "유효하지 않은 E-Mail주소입니다.", 9 | url: "유효하지 않은 URL입니다.", 10 | date: "올바른 날짜를 입력하세요.", 11 | dateISO: "올바른 날짜(ISO)를 입력하세요.", 12 | number: "유효한 숫자가 아닙니다.", 13 | digits: "숫자만 입력 가능합니다.", 14 | creditcard: "신용카드 번호가 바르지 않습니다.", 15 | equalTo: "같은 값을 다시 입력하세요.", 16 | extension: "올바른 확장자가 아닙니다.", 17 | maxlength: $.validator.format("{0}자를 넘을 수 없습니다. "), 18 | minlength: $.validator.format("{0}자 이상 입력하세요."), 19 | rangelength: $.validator.format("문자 길이가 {0} 에서 {1} 사이의 값을 입력하세요."), 20 | range: $.validator.format("{0} 에서 {1} 사이의 값을 입력하세요."), 21 | max: $.validator.format("{0} 이하의 값을 입력하세요."), 22 | min: $.validator.format("{0} 이상의 값을 입력하세요.") 23 | }); 24 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_sk.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: SK (Slovak; slovenčina, slovenský jazyk) 4 | */ 5 | $.extend($.validator.messages, { 6 | required: "Povinné zadať.", 7 | maxlength: $.validator.format("Maximálne {0} znakov."), 8 | minlength: $.validator.format("Minimálne {0} znakov."), 9 | rangelength: $.validator.format("Minimálne {0} a Maximálne {1} znakov."), 10 | email: "E-mailová adresa musí byť platná.", 11 | url: "URL musí byť platný.", 12 | date: "Musí byť dátum.", 13 | number: "Musí byť číslo.", 14 | digits: "Môže obsahovať iba číslice.", 15 | equalTo: "Dva hodnoty sa musia rovnať.", 16 | range: $.validator.format("Musí byť medzi {0} a {1}."), 17 | max: $.validator.format("Nemôže byť viac ako{0}."), 18 | min: $.validator.format("Nemôže byť menej ako{0}."), 19 | creditcard: "Číslo platobnej karty musí byť platné." 20 | }); 21 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_vi.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: VI (Vietnamese; Tiếng Việt) 4 | */ 5 | $.extend($.validator.messages, { 6 | required: "Hãy nhập.", 7 | remote: "Hãy sửa cho đúng.", 8 | email: "Hãy nhập email.", 9 | url: "Hãy nhập URL.", 10 | date: "Hãy nhập ngày.", 11 | dateISO: "Hãy nhập ngày (ISO).", 12 | number: "Hãy nhập số.", 13 | digits: "Hãy nhập chữ số.", 14 | creditcard: "Hãy nhập số thẻ tín dụng.", 15 | equalTo: "Hãy nhập thêm lần nữa.", 16 | extension: "Phần mở rộng không đúng.", 17 | maxlength: $.validator.format("Hãy nhập từ {0} kí tự trở xuống."), 18 | minlength: $.validator.format("Hãy nhập từ {0} kí tự trở lên."), 19 | rangelength: $.validator.format("Hãy nhập từ {0} đến {1} kí tự."), 20 | range: $.validator.format("Hãy nhập từ {0} đến {1}."), 21 | max: $.validator.format("Hãy nhập từ {0} trở xuống."), 22 | min: $.validator.format("Hãy nhập từ {1} trở lên.") 23 | }); 24 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_zh.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語) 4 | */ 5 | $.extend($.validator.messages, { 6 | required: "这是必填字段", 7 | remote: "请修正此字段", 8 | email: "请输入有效的电子邮件地址", 9 | url: "请输入有效的网址", 10 | date: "请输入有效的日期", 11 | dateISO: "请输入有效的日期 (YYYY-MM-DD)", 12 | number: "请输入有效的数字", 13 | digits: "只能输入数字", 14 | creditcard: "请输入有效的信用卡号码", 15 | equalTo: "你的输入不相同", 16 | extension: "请输入有效的后缀", 17 | maxlength: $.validator.format("最多可以输入 {0} 个字符"), 18 | minlength: $.validator.format("最少要输入 {0} 个字符"), 19 | rangelength: $.validator.format("请输入长度在 {0} 到 {1} 之间的字符串"), 20 | range: $.validator.format("请输入范围在 {0} 到 {1} 之间的数值"), 21 | max: $.validator.format("请输入不大于 {0} 的数值"), 22 | min: $.validator.format("请输入不小于 {0} 的数值") 23 | }); 24 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/messages_zh_TW.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Translated default messages for the jQuery validation plugin. 3 | * Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語) 4 | * Region: TW (Taiwan) 5 | */ 6 | $.extend($.validator.messages, { 7 | required: "必須填寫", 8 | remote: "請修正此欄位", 9 | email: "請輸入有效的電子郵件", 10 | url: "請輸入有效的網址", 11 | date: "請輸入有效的日期", 12 | dateISO: "請輸入有效的日期 (YYYY-MM-DD)", 13 | number: "請輸入正確的數值", 14 | digits: "只可輸入數字", 15 | creditcard: "請輸入有效的信用卡號碼", 16 | equalTo: "請重複輸入一次", 17 | extension: "請輸入有效的後綴", 18 | maxlength: $.validator.format("最多 {0} 個字"), 19 | minlength: $.validator.format("最少 {0} 個字"), 20 | rangelength: $.validator.format("請輸入長度為 {0} 至 {1} 之間的字串"), 21 | range: $.validator.format("請輸入 {0} 至 {1} 之間的數值"), 22 | max: $.validator.format("請輸入不大於 {0} 的數值"), 23 | min: $.validator.format("請輸入不小於 {0} 的數值") 24 | }); 25 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/methods_de.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Localized default methods for the jQuery validation plugin. 3 | * Locale: DE 4 | */ 5 | $.extend($.validator.methods, { 6 | date: function(value, element) { 7 | return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value); 8 | }, 9 | number: function(value, element) { 10 | return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/methods_es_CL.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Localized default methods for the jQuery validation plugin. 3 | * Locale: ES_CL 4 | */ 5 | $.extend($.validator.methods, { 6 | date: function(value, element) { 7 | return this.optional(element) || /^\d\d?\-\d\d?\-\d\d\d?\d?$/.test(value); 8 | }, 9 | number: function(value, element) { 10 | return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/methods_fi.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Localized default methods for the jQuery validation plugin. 3 | * Locale: FI 4 | */ 5 | $.extend($.validator.methods, { 6 | date: function(value, element) { 7 | return this.optional(element) || /^\d{1,2}\.\d{1,2}\.\d{4}$/.test(value); 8 | }, 9 | number: function(value, element) { 10 | return this.optional(element) || /^-?(?:\d+)(?:,\d+)?$/.test(value); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/methods_nl.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Localized default methods for the jQuery validation plugin. 3 | * Locale: NL 4 | */ 5 | $.extend($.validator.methods, { 6 | date: function(value, element) { 7 | return this.optional(element) || /^\d\d?[\.\/\-]\d\d?[\.\/\-]\d\d\d?\d?$/.test(value); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/src/localization/methods_pt.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Localized default methods for the jQuery validation plugin. 3 | * Locale: PT_BR 4 | */ 5 | $.extend($.validator.methods, { 6 | date: function(value, element) { 7 | return this.optional(element) || /^\d\d?\/\d\d?\/\d\d\d?\d?$/.test(value); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.Identity/wwwroot/lib/jquery-validation/validation.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "validation", 3 | "title": "jQuery Validation", 4 | "description": "Form validation made easy. Validate a simple comment form with inline rules, or a complex signup form with powerful remote checks.", 5 | "keywords": [ 6 | "forms", 7 | "validation", 8 | "validate" 9 | ], 10 | "author": { 11 | "name": "Jörn Zaefferer", 12 | "email": "joern.zaefferer@gmail.com", 13 | "url": "http://bassistance.de" 14 | }, 15 | "licenses": [ 16 | { 17 | "type": "MIT", 18 | "url": "http://www.opensource.org/licenses/MIT" 19 | } 20 | ], 21 | "bugs": "https://github.com/jzaefferer/jquery-validation/issues", 22 | "homepage": "https://github.com/jzaefferer/jquery-validation", 23 | "docs": "http://jqueryvalidation.org/documentation/", 24 | "download": "https://github.com/jzaefferer/jquery-validation/releases", 25 | "dependencies": { 26 | "jquery": ">=1.4.4" 27 | }, 28 | "version": "1.14.0" 29 | } 30 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/Models/ContentAvailability.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace Listify.WebAPI.Models 8 | { 9 | public class ContentAvailability 10 | { 11 | public bool IsAvailable { get; set; } 12 | public ValidatedTextType ValidatedTextType { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/Models/ContentAvailabilityRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace Listify.WebAPI.Models 8 | { 9 | public class ContentAvailabilityRequest 10 | { 11 | public string Content { get; set; } 12 | public ValidatedTextType ValidatedTextType { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/Models/PlaylistImageRequest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Listify.WebAPI.Models 7 | { 8 | public class PlaylistImageRequest 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/Models/RoomInformation.cs: -------------------------------------------------------------------------------- 1 | using Listify.Lib.DTOs; 2 | using Listify.Lib.VMs; 3 | 4 | namespace Listify.WebAPI.Models 5 | { 6 | public class RoomInformation 7 | { 8 | public RoomVM Room { get; set; } 9 | public ApplicationUserDTO RoomOwner { get; set; } 10 | public ApplicationUserRoomVM ApplicationUserRoom { get; set; } 11 | public ApplicationUserRoomCurrencyRoomVM[] ApplicationUserRoomCurrenciesRoom { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Hosting; 6 | using Microsoft.Extensions.Configuration; 7 | using Microsoft.Extensions.Hosting; 8 | using Microsoft.Extensions.Logging; 9 | 10 | namespace Listify.WebAPI 11 | { 12 | public class Program 13 | { 14 | public static void Main(string[] args) 15 | { 16 | CreateHostBuilder(args).Build().Run(); 17 | } 18 | 19 | public static IHostBuilder CreateHostBuilder(string[] args) => 20 | Host.CreateDefaultBuilder(args) 21 | .ConfigureWebHostDefaults(webBuilder => 22 | { 23 | webBuilder.UseStartup(); 24 | }); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:60999", 7 | "sslPort": 44315 8 | } 9 | }, 10 | "$schema": "http://json.schemastore.org/launchsettings.json", 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchUrl": "weatherforecast", 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "Listify.WebAPI": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "launchUrl": "weatherforecast", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | }, 26 | "applicationUrl": "https://localhost:5001;http://localhost:5000" 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/WeatherForecast.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Listify.WebAPI 4 | { 5 | public class WeatherForecast 6 | { 7 | public DateTime Date { get; set; } 8 | 9 | public int TemperatureC { get; set; } 10 | 11 | public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); 12 | 13 | public string Summary { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Clients/Listify.WebAPI/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "AllowedHosts": "*" 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.BLL/BaseBLL.cs: -------------------------------------------------------------------------------- 1 | namespace Listify.Domain.BLL 2 | { 3 | public abstract class BaseBLL 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.BLL/Events/Args/BaseEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Listify.Domain.BLL.Events.Args 4 | { 5 | public class BaseEventArgs : EventArgs 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.BLL/Events/Args/BasePollingEventArgs.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | 3 | namespace Listify.Domain.BLL.Events.Args 4 | { 5 | public abstract class BasePollingEventArgs : BaseEventArgs 6 | { 7 | public PollingEventType PollingEventType { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.BLL/Events/EventHandlers.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.BLL.Events.Args; 2 | 3 | namespace Listify.Domain.BLL.Events 4 | { 5 | public delegate void ListifyEventHandler(object sender, T args) where T : BaseEventArgs; 6 | } 7 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.BLL/IBasePoll.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.BLL.Events; 2 | using Listify.Domain.BLL.Events.Args; 3 | using System.Threading.Tasks; 4 | 5 | namespace Listify.Domain.BLL 6 | { 7 | public interface IBasePoll where T: BasePollingEventArgs 8 | { 9 | event ListifyEventHandler PollingEvent; 10 | 11 | void Dispose(); 12 | void Start(int pollingIntervalMS); 13 | Task StopAync(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.BLL/Listify.Domain.BLL.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/DTOs/BaseDTO.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Domain.Lib.DTOs 6 | { 7 | public abstract class BaseDTO 8 | { 9 | public Guid Id { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/ApplicationUserRoomConnection.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using System.Text; 6 | 7 | namespace Listify.Domain.Lib.Entities 8 | { 9 | [Table("ApplicationUsersRoomsConnections", Schema = "Listify")] 10 | public class ApplicationUserRoomConnection : BaseEntity 11 | { 12 | // This is assigned for SignalR 13 | public string ConnectionId { get; set; } 14 | 15 | public bool IsOnline { get; set; } 16 | public bool HasPingBeenSent { get; set; } 17 | public ConnectionType ConnectionType { get; set; } 18 | 19 | public Guid ApplicationUserRoomId { get; set; } 20 | public ApplicationUserRoom ApplicationUserRoom { get; set; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/ApplicationUserRoomCurrencyRoom.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | [Table("ApplicationUsersRoomsCurrenciesRoom", Schema = "Listify")] 9 | public class ApplicationUserRoomCurrencyRoom : BaseEntity 10 | { 11 | public float Quantity { get; set; } 12 | 13 | public Guid ApplicationUserRoomId { get; set; } 14 | public Guid CurrencyRoomId { get; set; } 15 | 16 | public ApplicationUserRoom ApplicationUserRoom { get; set; } 17 | public CurrencyRoom CurrencyRoom { get; set; } 18 | 19 | public ICollection Transactions { get; set; } = 20 | new List(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/BaseEntity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using System.Text; 6 | 7 | namespace Listify.Domain.Lib.Entities 8 | { 9 | public abstract class BaseEntity 10 | { 11 | [Key] 12 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 13 | public Guid Id { get; set; } 14 | // for deleted records/users 15 | public bool Active { get; set; } = true; 16 | 17 | public DateTime TimeStamp { get; set; } = DateTime.UtcNow; 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/ChatMessage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace Listify.Domain.Lib.Entities 5 | { 6 | [Table("ChatMessages", Schema ="Listify")] 7 | public class ChatMessage : BaseEntity 8 | { 9 | public string Message { get; set; } 10 | 11 | public Guid ApplicationUserRoomId { get; set; } 12 | public ApplicationUserRoom ApplicationUserRoom { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/Currency.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace Listify.Domain.Lib.Entities 6 | { 7 | // Currency is controlled by the product owner and can be earned 8 | // by participating in channels over time or purchased. 9 | // Can do specials / group event awards 10 | [Table("Currencies", Schema = "Listify")] 11 | public class Currency : BaseEntity 12 | { 13 | public string CurrencyName { get; set; } 14 | public int Weight { get; set; } 15 | public int QuantityIncreasePerTick { get; set; } 16 | public float TimeSecBetweenTick { get; set; } 17 | 18 | public ICollection CurrenciesRoom { get; set; } = 19 | new List(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/CurrencyRoom.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace Listify.Domain.Lib.Entities 6 | { 7 | [Table("CurrenciesRoom", Schema = "Listify")] 8 | public class CurrencyRoom : BaseEntity 9 | { 10 | public Guid RoomId { get; set; } 11 | public Guid CurrencyId { get; set; } 12 | 13 | public string CurrencyName { get; set; } 14 | public DateTime TimestampLastUpdate { get; set; } = DateTime.UtcNow; 15 | 16 | public Room Room { get; set; } 17 | public Currency Currency { get; set; } 18 | 19 | public ICollection ApplicationUsersRoomsCurrenciesRooms { get; set; } = 20 | new List(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/Follow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | [Table("Follows", Schema = "Listify")] 9 | public class Follow: BaseEntity 10 | { 11 | public Guid RoomId { get; set; } 12 | public Guid ApplicationUserId { get; set; } 13 | 14 | public Room Room { get; set; } 15 | public ApplicationUser ApplicationUser { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/Genre.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace Listify.Domain.Lib.Entities 5 | { 6 | [Table("Genres", Schema = "Listify")] 7 | public class Genre : BaseEntity 8 | { 9 | public string Name { get; set; } 10 | 11 | public ICollection PlaylistGenres { get; set; } = 12 | new List(); 13 | 14 | public ICollection RoomGenres { get; set; } = 15 | new List(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/LogAPI.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using System.Text; 6 | 7 | namespace Listify.Domain.Lib.Entities 8 | { 9 | [Table("LogsAPI", Schema = "Listify")] 10 | public class LogAPI : BaseEntity 11 | { 12 | public EndpointType EndPointType { get; set; } 13 | public int ResponseCode { get; set; } 14 | public string IPAddress { get; set; } 15 | 16 | public Guid ApplicationUserId { get; set; } 17 | public ApplicationUser ApplicationUser { get; set; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/LogError.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace Listify.Domain.Lib.Entities 5 | { 6 | [Table("LogErrors", Schema = "Listify")] 7 | public class LogError : BaseEntity 8 | { 9 | public string Exception { get; set; } 10 | public string IPAddress { get; set; } 11 | 12 | public Guid ApplicationUserId { get; set; } 13 | public ApplicationUser ApplicationUser { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/Playlist.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | [Table("Playlists", Schema = "Listify")] 9 | public class Playlist : BaseEntity 10 | { 11 | public string PlaylistName { get; set; } 12 | 13 | // if the playlist is currently selected - there can only be 1 selected playlist at a time 14 | public bool IsSelected { get; set; } 15 | public bool IsPublic { get; set; } 16 | public string PlaylistImageUrl { get; set; } 17 | 18 | public Guid ApplicationUserId { get; set; } 19 | public ApplicationUser ApplicationUser { get; set; } 20 | 21 | public ICollection SongsPlaylist { get; set; } = 22 | new List(); 23 | 24 | public ICollection PlaylistGenres { get; set; } = 25 | new List(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/PlaylistGenre.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace Listify.Domain.Lib.Entities 5 | { 6 | [Table("PlaylistGenres", Schema = "Listify")] 7 | public class PlaylistGenre: BaseEntity 8 | { 9 | public Guid PlaylistId { get; set; } 10 | public Guid GenreId { get; set; } 11 | 12 | public Playlist Playlist { get; set; } 13 | public Genre Genre { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/PurchasableItem.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace Listify.Domain.Lib.Entities 6 | { 7 | [Table("PurchasableItems", Schema = "Listify")] 8 | public class PurchasableItem : BaseEntity 9 | { 10 | public string PurchasableItemName { get; set; } 11 | public PurchasableItemType PurchasableItemType { get; set; } 12 | public int Quantity { get; set; } 13 | public float UnitCost { get; set; } 14 | public string ImageUri { get; set; } 15 | public float DiscountApplied { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/Purchase.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | [Table("Purchases", Schema = "Listify")] 9 | public class Purchase : BaseEntity 10 | { 11 | public PurchaseMethod PurchaseMethod { get; set; } 12 | public float Subtotal { get; set; } 13 | public float AmountCharged { get; set; } 14 | public string PayerId { get; set; } 15 | public string OrderId { get; set; } 16 | public bool HasBeenCharged { get; set; } 17 | public bool WasChargeAccepted { get; set; } 18 | 19 | public Guid ApplicationUserId { get; set; } 20 | public ApplicationUser ApplicationUser { get; set; } 21 | 22 | public ICollection PurchaseLineItems { get; set; } = 23 | new List(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/PurchaseLineItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | [Table("PurchaseLineItems", Schema = "Listify")] 9 | public class PurchaseLineItem : BaseEntity 10 | { 11 | public int OrderQuantity { get; set; } 12 | 13 | public Guid PurchasableItemId { get; set; } 14 | public Guid PurchaseId { get; set; } 15 | 16 | public PurchasableItem PurchasableItem { get; set; } 17 | public Purchase Purchase { get; set; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/PurchaseLineItemCurrency.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Domain.Lib.Entities 6 | { 7 | public class PurchaseLineItemCurrency : PurchaseLineItem 8 | { 9 | public Guid ApplicationUserRoomCurrencyId { get; set; } 10 | //public ApplicationUserRoomCurrencyRoom ApplicationUserRoomCurrency { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/RoomGenre.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | [Table("RoomsGenres", Schema = "Listify")] 9 | public class RoomGenre : BaseEntity 10 | { 11 | public Guid RoomId { get; set; } 12 | public Guid GenreId { get; set; } 13 | 14 | public Room Room { get; set; } 15 | public Genre Genre { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/Song.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | [Table("Songs", Schema = "Listify")] 9 | public class Song : BaseEntity 10 | { 11 | public string SongName { get; set; } 12 | public string YoutubeId { get; set; } 13 | public int SongLengthSeconds { get; set; } 14 | 15 | // Default Thumbnail 16 | public string ThumbnailUrl { get; set; } 17 | public long? ThumbnailWidth { get; set; } 18 | public long? ThumbnailHeight { get; set; } 19 | 20 | public ICollection SongRequests { get; set; } = 21 | new List(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/SongPlaylist.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | public class SongPlaylist : SongRequest 9 | { 10 | // This is the counter to track the number of times an individual song 11 | // has been played in the playlist - this is to make sure that all songs 12 | // are played before repeating. 13 | public int PlayCount { get; set; } 14 | 15 | public Guid PlaylistId { get; set; } 16 | public Playlist Playlist { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/SongQueued.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Entities 7 | { 8 | public class SongQueued : SongRequest 9 | { 10 | // this is Value Currently assigned to the song based on incoming 11 | // and outgoing transactions 12 | public int WeightedValue { get; set; } 13 | public bool HasBeenPlayed { get; set; } 14 | public bool HasBeenSkipped { get; set; } 15 | public DateTime? TimestampPlayed { get; set; } 16 | public DateTime? TimestampSkipped { get; set; } 17 | 18 | public Guid ApplicationUserId { get; set; } 19 | public Guid RoomId { get; set; } 20 | 21 | public ApplicationUser ApplicationUser { get; set; } 22 | public Room Room { get; set; } 23 | 24 | public ICollection TransactionsSongQueued { get; set; } = 25 | new List(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/SongRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using System.Text; 6 | 7 | namespace Listify.Domain.Lib.Entities 8 | { 9 | [Table("SongRequests", Schema = "Listify")] 10 | public abstract class SongRequest : BaseEntity 11 | { 12 | public SongRequestType SongRequestType { get; set; } 13 | public Guid SongId { get; set; } 14 | public Song Song { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/Transaction.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using System.Text; 6 | 7 | namespace Listify.Domain.Lib.Entities 8 | { 9 | // This could be gaining currency for being in a room 10 | // or this could be using currency to request/ up-vote / down-vote songs. 11 | [Table("Transactions", Schema = "Listify")] 12 | public class Transaction : BaseEntity 13 | { 14 | public TransactionType TransactionType { get; set; } 15 | public int QuantityChanged { get; set; } 16 | public bool HasBeenRefunded { get; set; } 17 | public DateTime? RefundTimestamp { get; set; } 18 | 19 | public Guid ApplicationUserRoomCurrencyId { get; set; } 20 | public ApplicationUserRoomCurrencyRoom ApplicationUserRoomCurrency { get; set; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Entities/TransactionSongQueued.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Domain.Lib.Entities 6 | { 7 | public class TransactionSongQueued : Transaction 8 | { 9 | public Guid SongQueuedId { get; set; } 10 | public SongQueued SongQueued { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Listify.Domain.Lib.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Requests/BaseRequest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Domain.Lib.Requests 6 | { 7 | public abstract class BaseRequest 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Requests/BaseUpdateRequest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Domain.Lib.Requests 6 | { 7 | public abstract class BaseUpdateRequest : BaseRequest 8 | { 9 | public Guid Id { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/Responses/Response.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Domain.Lib.Responses 7 | { 8 | public class Response where T: BaseVM 9 | { 10 | public ICollection Data { get; set; } = 11 | new List(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Domain.Lib/VMs/BaseVM.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Domain.Lib.VMs 6 | { 7 | public abstract class BaseVM 8 | { 9 | public Guid Id { get; set; } = Guid.NewGuid(); 10 | public DateTime Timestamp { get; set; } = DateTime.UtcNow; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Domain/Listify.Paths/Listify.Paths.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.BLL/Events/Args/CurrencyPollEventArgs.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.BLL.Events.Args; 2 | using Listify.Lib.DTOs; 3 | using Listify.Lib.VMs; 4 | using System.Collections.Generic; 5 | 6 | namespace Listify.BLL.Events.Args 7 | { 8 | public class CurrencyPollEventArgs : BasePollingEventArgs 9 | { 10 | public ICollection ApplicationUserRoomsCurrencies { get; set; } = 11 | new List(); 12 | 13 | public RoomVM Room { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.BLL/Events/Args/PingPollEventArgs.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.BLL.Events.Args; 2 | using Listify.Lib.VMs; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.BLL.Events.Args 6 | { 7 | public class PingPollEventArgs : BasePollingEventArgs 8 | { 9 | public ICollection ConnectionsPinged { get; set; } = 10 | new List(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.BLL/Events/Args/RoomsOnlinePollEventArgs.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.BLL.Events.Args; 2 | using Listify.Lib.VMs; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.BLL.Events.Args 6 | { 7 | public class RoomsOnlinePollEventArgs : BasePollingEventArgs 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.BLL/Listify.BLL.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.BLL/Polls/ICurrencyPoll.cs: -------------------------------------------------------------------------------- 1 | using Listify.BLL.Events.Args; 2 | using Listify.Domain.BLL; 3 | 4 | namespace Listify.BLL.Polls 5 | { 6 | public interface ICurrencyPoll : IBasePoll 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.BLL/Polls/IPingPoll.cs: -------------------------------------------------------------------------------- 1 | using Listify.BLL.Events.Args; 2 | using Listify.Domain.BLL; 3 | 4 | namespace Listify.BLL.Polls 5 | { 6 | public interface IPingPoll : IBasePoll 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.BLL/Polls/IRoomsOnlinePoll.cs: -------------------------------------------------------------------------------- 1 | using Listify.BLL.Events.Args; 2 | using Listify.Domain.BLL; 3 | 4 | namespace Listify.BLL.Polls 5 | { 6 | public interface IRoomsOnlinePoll : IBasePoll 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.DAL/Listify.DAL.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/ApplicationUserDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using System; 3 | 4 | namespace Listify.Lib.DTOs 5 | { 6 | public class ApplicationUserDTO : BaseDTO 7 | { 8 | public string AspNetUserId { get; set; } 9 | public string Username { get; set; } 10 | 11 | // This is the number of Song Pools/ Playlists the user has, it should be purchasable 12 | // Default starting value is 1 song pool 13 | public int PlaylistCountMax { get; set; } 14 | 15 | // This is the number of Songs That are allowed in each Song Pool, it should be purchasable 16 | // Default starting value is 100 songs 17 | public int PlaylistSongCount { get; set; } 18 | public string ChatColor { get; set; } 19 | //public int QueueSongsCount { get; set; } = 50; 20 | public DateTime DateJoined { get; set; } 21 | public string ProfileTitle { get; set; } 22 | public string ProfileDescription { get; set; } 23 | public string ProfileImageUrl { get; set; } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/ApplicationUserRoomConnectionDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using System.Text; 6 | 7 | namespace Listify.Lib.DTOs 8 | { 9 | public class ApplicationUserRoomConnectionDTO : BaseDTO 10 | { 11 | // This is assigned for SignalR 12 | public string ConnectionId { get; set; } 13 | 14 | public bool IsOnline { get; set; } 15 | public bool HasPingBeenSent { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/ApplicationUserRoomCurrencyRoomDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class ApplicationUserRoomCurrencyRoomDTO : BaseDTO 6 | { 7 | public int Quantity { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/ApplicationUserRoomDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class ApplicationUserRoomDTO : BaseDTO 6 | { 7 | public bool IsOnline { get; set; } 8 | public bool IsOwner { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/ChatMessageDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class ChatMessageDTO : BaseDTO 6 | { 7 | public string Message { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/CurrencyDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using System; 3 | 4 | namespace Listify.Lib.DTOs 5 | { 6 | // Currency is controlled by the product owner and can be earned 7 | // by participating in channels over time or purchased. 8 | // Can do specials / group event awards 9 | public class CurrencyDTO : BaseDTO 10 | { 11 | public string CurrencyName { get; set; } 12 | public int Weight { get; set; } 13 | public int QuantityIncreasePerTick { get; set; } 14 | public int TimeSecBetweenTick { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/CurrencyRoomDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using System; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.Lib.DTOs 6 | { 7 | public class CurrencyRoomDTO : BaseDTO 8 | { 9 | public string CurrencyName { get; set; } 10 | public DateTime TimestampLastUpdate { get; set; } = DateTime.UtcNow; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/FollowDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class FollowDTO : BaseDTO 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/GenreDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.DTOs 7 | { 8 | public class GenreDTO: BaseDTO 9 | { 10 | public string Name { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/LogAPIDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using Listify.Domain.Lib.Enums; 3 | 4 | namespace Listify.Lib.DTOs 5 | { 6 | public class LogAPIDTO : BaseDTO 7 | { 8 | public EndpointType EndPointType { get; set; } 9 | public int ResponseCode { get; set; } 10 | public string IPAddress { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/LogErrorDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class LogErrorDTO : BaseDTO 6 | { 7 | public string Exception { get; set; } 8 | public string IPAddress { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/PlaylistDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class PlaylistDTO : BaseDTO 6 | { 7 | public string PlaylistName { get; set; } 8 | 9 | // if the playlist is currently selected - there can only be 1 selected playlist at a time 10 | public bool IsSelected { get; set; } 11 | public bool IsPublic { get; set; } 12 | public int NumberOfSongs { get; set; } 13 | public string PlaylistImageUrl { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/PlaylistGenreDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class PlaylistGenreDTO : BaseDTO 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/PurchasableItemDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using Listify.Domain.Lib.Enums; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Listify.Lib.DTOs 8 | { 9 | public class PurchasableItemDTO : BaseDTO 10 | { 11 | public string PurchasableItemName { get; set; } 12 | public PurchasableItemType PurchasableItemType { get; set; } 13 | public float Quantity { get; set; } 14 | public float UnitCost { get; set; } 15 | public string ImageUri { get; set; } 16 | public float DiscountApplied { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/PurchaseDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using Listify.Domain.Lib.Enums; 3 | 4 | namespace Listify.Lib.DTOs 5 | { 6 | public class PurchaseDTO: BaseDTO 7 | { 8 | public PurchaseMethod PurchaseMethod { get; set; } 9 | public float Subtotal { get; set; } 10 | public float AmountCharged { get; set; } 11 | public string PayerId { get; set; } 12 | public string OrderId { get; set; } 13 | public bool HasBeenCharged { get; set; } 14 | public bool WasChargeAccepted { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/PurchaseLineItemCurrencyDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using Listify.Domain.Lib.Enums; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Listify.Lib.DTOs 8 | { 9 | public class PurchaseLineItemCurrencyDTO : BaseDTO 10 | { 11 | public Guid ApplicationUserRoomCurrencyId { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/PurchaseLineItemDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using Listify.Domain.Lib.Entities; 3 | using Listify.Domain.Lib.Enums; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Text; 7 | 8 | namespace Listify.Lib.DTOs 9 | { 10 | public class PurchaseLineItemDTO : BaseDTO 11 | { 12 | public int orderQuantity { get; set; } 13 | 14 | public Guid PurchasableItemId { get; set; } 15 | public Guid PurchaseId { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/RoomDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class RoomDTO : BaseDTO 6 | { 7 | // the identifier for the room that can be chosen by the user 8 | public string RoomCode { get; set; } 9 | public string RoomTitle { get; set; } 10 | public bool AllowRequests { get; set; } 11 | public bool IsRoomLocked { get; set; } 12 | public bool IsRoomPublic { get; set; } = true; 13 | public bool IsRoomOnline { get; set; } = true; 14 | public bool IsRoomPlaying { get; set; } 15 | public bool MatureContent { get; set; } 16 | public bool MatureContentChat { get; set; } 17 | public int NumberUsersOnline { get; set; } 18 | public string RoomImageUrl { get; set; } 19 | public int NumberFollows { get; set; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/RoomGenreDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.DTOs 7 | { 8 | public class RoomGenreDTO : BaseDTO 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/SongDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | 3 | namespace Listify.Lib.DTOs 4 | { 5 | public class SongDTO : BaseDTO 6 | { 7 | public string SongName { get; set; } 8 | public string YoutubeId { get; set; } 9 | public int SongLengthSeconds { get; set; } 10 | 11 | // Default Thumbnail 12 | public string ThumbnailUrl { get; set; } 13 | public long? ThumbnailWidth { get; set; } 14 | public long? ThumbnailHeight { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/SongPlaylistDTO.cs: -------------------------------------------------------------------------------- 1 | namespace Listify.Lib.DTOs 2 | { 3 | public class SongPlaylistDTO : SongRequestDTO 4 | { 5 | // This is the counter to track the number of times an individual song 6 | // has been played in the playlist - this is to make sure that all songs 7 | // are played before repeating. 8 | public int PlayCount { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/SongQueuedDTO.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.DTOs 7 | { 8 | public class SongQueuedDTO : SongRequestDTO 9 | { 10 | // this is Value Currently assigned to the song based on incoming 11 | // and outgoing transactions 12 | public int WeightedCurrentValue { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/SongRequestDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using Listify.Domain.Lib.Enums; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.ComponentModel.DataAnnotations.Schema; 6 | using System.Text; 7 | 8 | namespace Listify.Lib.DTOs 9 | { 10 | public abstract class SongRequestDTO : BaseDTO 11 | { 12 | public SongRequestType SongRequestType { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/TransactionDTO.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.DTOs; 2 | using Listify.Domain.Lib.Enums; 3 | 4 | namespace Listify.Lib.DTOs 5 | { 6 | // This could be gaining currency for being in a room 7 | // or this could be using currency to request/ up-vote / down-vote songs. 8 | public class TransactionDTO : BaseDTO 9 | { 10 | public TransactionType TransactionType { get; set; } 11 | public int QuantityChanged { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/DTOs/TransactionSongQueuedDTO.cs: -------------------------------------------------------------------------------- 1 | namespace Listify.Lib.DTOs 2 | { 3 | public class TransactionSongQueuedDTO : TransactionDTO 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Listify.Lib.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ApplicationUserCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class ApplicationUserCreateRequest : BaseRequest 9 | { 10 | public Guid Id { get; set; } 11 | public string AspNetUserId { get; set; } 12 | public string Username { get; set; } 13 | public string RoomCode { get; set; } 14 | public string RoomTitle { get; set; } 15 | public string ChatColor { get; set; } 16 | 17 | // This is the number of Song Pools/ Playlists the user has, it should be purchasable 18 | // Default starting value is 1 song pool 19 | //public int PlaylistCountMax { get; set; } 20 | 21 | // This is the number of Songs That are allowed in each Song Pool, it should be purchasable 22 | // Default starting value is 100 songs 23 | //public int SongPoolCountSongsMax { get; set; } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ApplicationUserRoomConnectionCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.Requests; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Listify.Lib.Requests 8 | { 9 | public class ApplicationUserRoomConnectionCreateRequest : BaseRequest 10 | { 11 | // This is assigned for SignalR 12 | public string ConnectionId { get; set; } 13 | 14 | public bool IsOnline { get; set; } 15 | public bool HasPingBeenSent { get; set; } 16 | 17 | public Guid ApplicationUserRoomId { get; set; } 18 | public ConnectionType ConnectionType { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ApplicationUserRoomConnectionUpdateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | 4 | namespace Listify.Lib.Requests 5 | { 6 | public class ApplicationUserRoomConnectionUpdateRequest : BaseUpdateRequest 7 | { 8 | public Guid ApplicationUserRoomId { get; set; } 9 | public bool IsOnline { get; set; } 10 | public bool HasPingBeenSent { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ApplicationUserRoomCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class ApplicationUserRoomCreateRequest : BaseRequest 9 | { 10 | public bool IsOnline { get; set; } 11 | public Guid RoomId { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ApplicationUserRoomCurrencyRoomCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class ApplicationUserRoomCurrencyRoomCreateRequest : BaseRequest 9 | { 10 | public int Quantity { get; set; } 11 | 12 | public Guid ApplicationUserRoomId { get; set; } 13 | public Guid CurrencyRoomId { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ApplicationUserRoomUpdateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class ApplicationUserRoomUpdateRequest : BaseUpdateRequest 9 | { 10 | public bool IsOnline { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ApplicationUserUpdateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using Listify.Lib.DTOs; 3 | using Listify.Lib.VMs; 4 | 5 | namespace Listify.Lib.Requests 6 | { 7 | public class ApplicationUserUpdateRequest : BaseUpdateRequest 8 | { 9 | public string Username { get; set; } 10 | public string RoomCode { get; set; } 11 | public string RoomTitle { get; set; } 12 | public string RoomKey { get; set; } 13 | public bool AllowRequests { get; set; } = true; 14 | public bool IsRoomLocked { get; set; } 15 | public bool IsRoomPublic { get; set; } = true; 16 | public bool IsRoomOnline { get; set; } = true; 17 | public bool MatureContent { get; set; } 18 | public bool MatureContentChat { get; set; } 19 | public string ChatColor { get; set; } 20 | public string ProfileTitle { get; set; } 21 | public string ProfileDescription { get; set; } 22 | public RoomGenreVM[] RoomGenres { get; set; } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ChatMessageCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class ChatMessageCreateRequest : BaseRequest 9 | { 10 | public string Message { get; set; } 11 | 12 | public Guid ApplicationUserRoomId { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/CurrencyRoomCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class CurrencyRoomCreateRequest: BaseRequest 9 | { 10 | public Guid Id { get; set; } 11 | public Guid RoomId { get; set; } 12 | public Guid CurrencyId { get; set; } 13 | 14 | public string CurrencyName { get; set; } 15 | public DateTime TimestampLastUpdate { get; set; } = DateTime.UtcNow; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/FollowCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class FollowCreateRequest : BaseRequest 9 | { 10 | public Guid RoomId { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/LogAPICreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.Requests; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Listify.Lib.Requests 8 | { 9 | public class LogAPICreateRequest : BaseRequest 10 | { 11 | public EndpointType EndPointType { get; set; } 12 | public int ResponseCode { get; set; } 13 | public string IPAddress { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/LogErrorCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | 3 | namespace Listify.Lib.Requests 4 | { 5 | public class LogErrorCreateRequest : BaseRequest 6 | { 7 | public string Exception { get; set; } 8 | public string IPAddress { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/PaypalPaymentRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Entities; 2 | using Listify.Lib.Requests; 3 | 4 | namespace Listify.Lib.Requests 5 | { 6 | public class PaypalPaymentRequest 7 | { 8 | public string PayerID { get; set; } 9 | public string OrderID { get; set; } 10 | public PurchaseCreateRequest Order { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/PlaylistCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.Lib.Requests 6 | { 7 | public class PlaylistCreateRequest : BaseRequest 8 | { 9 | public Guid Id { get; set; } 10 | public string PlaylistName { get; set; } 11 | // if the playlist is currently selected - there can only be 1 selected playlist at a time 12 | public bool IsSelected { get; set; } 13 | public bool IsPublic { get; set; } 14 | public string PlaylistImageUrl { get; set; } 15 | 16 | public ICollection PlaylistGenres { get; set; } = 17 | new List(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/PlaylistGenreCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using Listify.Lib.DTOs; 3 | using System; 4 | 5 | namespace Listify.Lib.Requests 6 | { 7 | public class PlaylistGenreCreateRequest : BaseRequest 8 | { 9 | public GenreDTO Genre { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ProfileUpdateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using Listify.Lib.DTOs; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Listify.Lib.Requests 8 | { 9 | public class ProfileUpdateRequest: BaseUpdateRequest 10 | { 11 | public string Username { get; set; } 12 | public string ProfileTitle { get; set; } 13 | public string ProfileDescription { get; set; } 14 | public string ProfileImageUrl { get; set; } 15 | public int NumberFollows { get; set; } 16 | public RoomDTO Room { get; set; } 17 | public DateTime DateJoined { get; set; } 18 | public PlaylistDTO[] Playlists { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/PurchasableItemCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.Requests; 3 | using System; 4 | 5 | namespace Listify.Lib.Requests 6 | { 7 | public class PurchasableItemCreateRequest : BaseRequest 8 | { 9 | public Guid Id { get; set; } 10 | public string PurchasableItemName { get; set; } 11 | public PurchasableItemType PurchasableItemType { get; set; } 12 | public float Quantity { get; set; } 13 | public float UnitCost { get; set; } 14 | public string ImageUri { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/PurchasableLineItemCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Entities; 2 | using Listify.Domain.Lib.Requests; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Listify.Lib.Requests 8 | { 9 | public class PurchasableLineItemCreateRequest: BaseRequest 10 | { 11 | public PurchasableItem PurchasableItem { get; set; } 12 | public int OrderQuantity { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/PurchasableLineItemCurrencyCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class PurchasableLineItemCurrencyCreateRequest: PurchasableLineItemCreateRequest 9 | { 10 | public Guid ApplicationUserRoomCurrencyId { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/PurchaseConfirmedUpdateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.Requests; 3 | using Listify.Lib.VMs; 4 | using System; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class PurchaseConfirmedUpdateRequest 9 | { 10 | public PurchaseVM Purchase { get; set; } 11 | public bool WasChargeAccepted { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/PurchaseCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | 3 | namespace Listify.Lib.Requests 4 | { 5 | public class PurchaseCreateRequest 6 | { 7 | public PurchaseMethod PurchaseMethod { get; set; } 8 | public float Subtotal { get; set; } 9 | public float AmountCharged { get; set; } 10 | public string PayerId { get; set; } 11 | public string OrderId { get; set; } 12 | public string[] PurchasableItemsJSON { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/RoomUpdateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using Listify.Lib.VMs; 3 | 4 | namespace Listify.Lib.Requests 5 | { 6 | public class RoomUpdateRequest : BaseUpdateRequest 7 | { 8 | public bool IsRoomOnline { get; set; } 9 | public bool IsRoomPlaying { get; set; } 10 | 11 | public RoomGenreVM[] RoomGenres { get; set; } 12 | 13 | //// the identifier for the room that can be chosen by the user 14 | //public string RoomCode { get; set; } 15 | //public string RoomTitle { get; set; } 16 | //public string RoomKey { get; set; } 17 | //public bool AllowRequests { get; set; } = true; 18 | //public bool IsRoomLocked { get; set; } 19 | //public bool IsRoomPublic { get; set; } = true; 20 | //public bool IsRoomOnline { get; set; } = true; 21 | //public bool IsRoomPlaying { get; set; } 22 | //public int NumberUsersOnline { get; set; } 23 | //public bool MatureContentChat { get; set; } 24 | //public bool MatureContent { get; set; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/ServerStateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using Listify.Lib.DTOs; 3 | using Listify.Lib.VMs; 4 | using System; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class ServerStateRequest : BaseRequest 9 | { 10 | public string ConnectionId { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/SongCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | 4 | namespace Listify.Lib.Requests 5 | { 6 | public class SongCreateRequest : BaseRequest 7 | { 8 | public string SongName { get; set; } 9 | public string YoutubeId { get; set; } 10 | public int SongLengthSeconds { get; set; } 11 | 12 | // Default Thumbnail 13 | public string ThumbnailUrl { get; set; } 14 | public long? ThumbnailWidth { get; set; } 15 | public long? ThumbnailHeight { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/SongPlaylistCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using Listify.Lib.Responses; 3 | using System; 4 | 5 | namespace Listify.Lib.Requests 6 | { 7 | public class SongPlaylistCreateRequest : BaseRequest 8 | { 9 | public Guid PlaylistId { get; set; } 10 | public YoutubeResults.YoutubeResult SongSearchResult { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/SongQueuedCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using Listify.Lib.Responses; 3 | 4 | namespace Listify.Lib.Requests 5 | { 6 | public class SongQueuedCreateRequest : BaseRequest 7 | { 8 | public YoutubeResults.YoutubeResult SongSearchResult { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/SongRequestCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | 4 | namespace Listify.Lib.Requests 5 | { 6 | public class SongRequestCreateRequest : BaseUpdateRequest 7 | { 8 | public Guid SongId { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/SongUpdateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | 4 | namespace Listify.Lib.Requests 5 | { 6 | public class SongUpdateRequest : BaseUpdateRequest 7 | { 8 | public string SongName { get; set; } 9 | public string YoutubeId { get; set; } 10 | public int SongLengthSeconds { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/TransactionCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | 4 | namespace Listify.Lib.Requests 5 | { 6 | public class TransactionCreateRequest : BaseRequest 7 | { 8 | public int TransactionType { get; set; } 9 | public int QuantityChanged { get; set; } 10 | 11 | public Guid ApplicationUserRoomCurrencyId { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/TransactionSongQueuedCreateRequest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Listify.Lib.Requests 4 | { 5 | public class TransactionSongQueuedCreateRequest : TransactionCreateRequest 6 | { 7 | public Guid SongQueuedId { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/UpvoteSongQueuedRequest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Requests; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class UpvoteSongQueuedRequest : BaseRequest 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Requests/WagerQuantitySongQueuedRquest.cs: -------------------------------------------------------------------------------- 1 | using Listify.Lib.DTOs; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Requests 7 | { 8 | public class WagerQuantitySongQueuedRquest 9 | { 10 | public SongQueuedDTO SongQueued { get; set; } 11 | public ApplicationUserRoomDTO ApplicationUserRoom { get; set; } 12 | public ApplicationUserRoomCurrencyRoomDTO ApplicationUserRoomCurrencyRoom { get; set; } 13 | public int Quantity { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Responses/AuthToLockedRoomResponse.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Lib.VMs; 3 | 4 | namespace Listify.Lib.Responses 5 | { 6 | public class AuthToLockedRoomResponse 7 | { 8 | public AuthToLockedRoomResponseType AuthToLockedRoomResponseType { get; set; } 9 | public RoomVM Room { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Responses/NeutrinoBadWordResponse.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Responses 7 | { 8 | public class NeutrinoBadWordResponse 9 | { 10 | [JsonProperty(PropertyName = "censored-content")] 11 | public string Censoredcontent { get; set; } 12 | 13 | [JsonProperty(PropertyName = "is-bad")] 14 | public bool Isbad { get; set; } 15 | 16 | [JsonProperty(PropertyName = "bad-words-list")] 17 | public string[] Badwordslist { get; set; } 18 | 19 | [JsonProperty(PropertyName = "bad-words-total")] 20 | public int Badwordstotal { get; set; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Responses/PlayFromServerResponse.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Responses; 2 | using Listify.Lib.DTOs; 3 | using Listify.Lib.VMs; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Text; 7 | 8 | namespace Listify.Lib.Responses 9 | { 10 | public class PlayFromServerResponse 11 | { 12 | public float CurrentTime { get; set; } 13 | public int PlayerState { get; set; } 14 | public int Weight { get; set; } 15 | 16 | public SongQueuedVM SongQueued { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Responses/PurgoMalumResponse.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Lib.Responses 6 | { 7 | public class PurgoMalumResponse 8 | { 9 | public string Result { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Responses/ServerStateResponse.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Listify.Lib.Responses 7 | { 8 | public class ServerStateResponse : PlayFromServerResponse 9 | { 10 | public string ConnectionId { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Responses/SpotifyAccessTokenResponse.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Lib.Responses 6 | { 7 | public class SpotifyAccessTokenResponse 8 | { 9 | public string Access_token { get; set; } 10 | public string Token_type { get; set; } 11 | public int Expires_in { get; set; } 12 | public string Scope { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/Responses/SpotifyPlaylistTracksCollabResponse.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.Lib.Responses 6 | { 7 | public class SpotifyPlaylistTracksCollabResponse 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/ApplicationUserRoomConnectionVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.VMs; 3 | using Listify.Lib.DTOs; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public class ApplicationUserRoomConnectionVM : BaseVM 8 | { 9 | // This is assigned for SignalR 10 | public string ConnectionId { get; set; } 11 | 12 | public bool IsOnline { get; set; } 13 | public bool HasPingBeenSent { get; set; } 14 | public ConnectionType ConnectionType { get; set; } 15 | 16 | public ApplicationUserRoomDTO ApplicationUserRoom { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/ApplicationUserRoomCurrencyRoomVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public class ApplicationUserRoomCurrencyRoomVM : BaseVM 8 | { 9 | public int Quantity { get; set; } 10 | 11 | public ApplicationUserRoomDTO ApplicationUserRoom { get; set; } 12 | public CurrencyRoomVM CurrencyRoom { get; set; } 13 | 14 | //public ICollection Transactions { get; set; } = 15 | // new List(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/ApplicationUserRoomVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public class ApplicationUserRoomVM : BaseVM 8 | { 9 | public bool IsOnline { get; set; } 10 | public bool IsOwner { get; set; } 11 | 12 | public ApplicationUserDTO ApplicationUser { get; set; } 13 | public RoomDTO Room { get; set; } 14 | 15 | public ICollection ChatMessages { get; set; } = 16 | new List(); 17 | 18 | public ICollection ApplicationUsersRoomsCurrenciesRoom { get; set; } = 19 | new List(); 20 | 21 | public ICollection ApplicationUsersRoomsConnections { get; set; } = 22 | new List(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/ChatMessageVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | 3 | namespace Listify.Lib.VMs 4 | { 5 | public class ChatMessageVM : BaseVM 6 | { 7 | public string Message { get; set; } 8 | 9 | public ApplicationUserRoomVM ApplicationUserRoom { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/CurrencyRoomVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Listify.Lib.VMs 8 | { 9 | public class CurrencyRoomVM : BaseVM 10 | { 11 | public string CurrencyName { get; set; } 12 | public DateTime TimestampLastUpdate { get; set; } = DateTime.UtcNow; 13 | 14 | public RoomDTO Room { get; set; } 15 | public CurrencyDTO Currency { get; set; } 16 | 17 | public ICollection ApplicationUsersRoomsCurrenciesRooms { get; set; } = // 3 references 18 | new List(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/CurrencyVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.ComponentModel.DataAnnotations.Schema; 6 | using System.Text; 7 | 8 | namespace Listify.Lib.VMs 9 | { 10 | // Currency is controlled by the product owner and can be earned 11 | // by participating in channels over time or purchased. 12 | // Can do specials / group event awards 13 | public class CurrencyVM : BaseVM 14 | { 15 | public string CurrencyName { get; set; } 16 | public int Weight { get; set; } 17 | public int QuantityIncreasePerTick { get; set; } 18 | public int TimeSecBetweenTick { get; set; } 19 | public DateTime TimestampLastUpdated { get; set; } = DateTime.UtcNow; 20 | 21 | public RoomDTO Room { get; set; } 22 | 23 | public ICollection ApplicationUsersRoomsCurrencies { get; set; } = 24 | new List(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/FollowVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | 4 | namespace Listify.Lib.VMs 5 | { 6 | public class FollowVM : BaseVM 7 | { 8 | public RoomDTO Room { get; set; } 9 | public ApplicationUserDTO ApplicationUser { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/GenreVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public class GenreVM : BaseVM 8 | { 9 | public ICollection PlaylistGenres { get; set; } = 10 | new List(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/LogAPIVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.VMs; 3 | using Listify.Lib.DTOs; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public class LogAPIVM : BaseVM 8 | { 9 | public EndpointType EndPointType { get; set; } 10 | public int ResponseCode { get; set; } 11 | public string IPAddress { get; set; } 12 | 13 | public ApplicationUserDTO ApplicationUser { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/LogErrorVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | 4 | namespace Listify.Lib.VMs 5 | { 6 | public class LogErrorVM : BaseVM 7 | { 8 | public string Exception { get; set; } 9 | public string IPAddress { get; set; } 10 | 11 | public ApplicationUserDTO ApplicationUser { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/PlaylistGenreVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | 4 | namespace Listify.Lib.VMs 5 | { 6 | public class PlaylistGenreVM : BaseVM 7 | { 8 | public PlaylistDTO Playlist { get; set; } 9 | public GenreDTO Genre { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/PlaylistVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public class PlaylistVM : BaseVM 8 | { 9 | public string PlaylistName { get; set; } 10 | // if the playlist is currently selected - there can only be 1 selected playlist at a time 11 | public bool IsSelected { get; set; } 12 | public bool IsPublic { get; set; } 13 | public int NumberOfSongs { get; set; } 14 | public string PlaylistImageUrl { get; set; } 15 | 16 | public ApplicationUserDTO ApplicationUser { get; set; } 17 | 18 | public ICollection SongsPlaylist { get; set; } = 19 | new List(); 20 | 21 | public ICollection PlaylistGenres { get; set; } = 22 | new List(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/ProfileVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | using System; 4 | using System.Collections.Generic; 5 | 6 | namespace Listify.Lib.VMs 7 | { 8 | public class ProfileVM : BaseVM 9 | { 10 | public string Username { get; set; } 11 | public string ProfileTitle { get; set; } 12 | public string ProfileDescription { get; set; } 13 | public string ProfileImageUrl { get; set; } 14 | public DateTime DateJoined { get; set; } 15 | public int NumberFollows { get; set; } 16 | 17 | public RoomVM Room{ get; set; } 18 | public ICollection Playlists { get; set; } = 19 | new List(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/PurchasableItemVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.VMs; 3 | 4 | namespace Listify.Lib.VMs 5 | { 6 | public class PurchasableItemVM : BaseVM 7 | { 8 | public string PurchasableItemName { get; set; } 9 | public PurchasableItemType PurchasableItemType { get; set; } 10 | public float Quantity { get; set; } 11 | public float UnitCost { get; set; } 12 | public string ImageUri { get; set; } 13 | public float DiscountApplied { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/PurchaseLineItemCurrencyVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.VMs; 3 | 4 | namespace Listify.Lib.VMs 5 | { 6 | public class PurchaseLineItemCurrencyVM : BaseVM 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/PurchaseLineItemVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.VMs; 3 | using Listify.Lib.DTOs; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public class PurchaseLineItemVM : BaseVM 8 | { 9 | public PurchasableItemDTO PurchasableItem { get; set; } 10 | public PurchaseDTO Purchase { get; set; } 11 | public int orderQuantity { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/PurchaseVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.VMs; 3 | using Listify.Lib.DTOs; 4 | using System.Collections.Generic; 5 | 6 | namespace Listify.Lib.VMs 7 | { 8 | public class PurchaseVM : BaseVM 9 | { 10 | public PurchaseMethod PurchaseMethod { get; set; } 11 | public float Subtotal { get; set; } 12 | public float AmountCharged { get; set; } 13 | public string PayerId { get; set; } 14 | public string OrderId { get; set; } 15 | public bool HasBeenCharged { get; set; } 16 | public bool WasChargeAccepted { get; set; } 17 | 18 | public ApplicationUserDTO ApplicationUser { get; set; } 19 | 20 | public ICollection PurchaseLineItems { get; set; } = 21 | new List(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/RoomGenreVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | 4 | namespace Listify.Lib.VMs 5 | { 6 | public class RoomGenreVM : BaseVM 7 | { 8 | public RoomDTO Room { get; set; } 9 | public GenreDTO Genre { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/SongPlaylistVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Lib.DTOs; 2 | 3 | namespace Listify.Lib.VMs 4 | { 5 | public class SongPlaylistVM : SongRequestVM 6 | { 7 | // This is the counter to track the number of times an individual song 8 | // has been played in the playlist - this is to make sure that all songs 9 | // are played before repeating. 10 | public int PlayCount { get; set; } 11 | 12 | public PlaylistDTO Playlist { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/SongQueuedVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Lib.DTOs; 2 | using System.Collections.Generic; 3 | 4 | namespace Listify.Lib.VMs 5 | { 6 | public class SongQueuedVM : SongRequestVM 7 | { 8 | // this is Value Currently assigned to the song based on incoming 9 | // and outgoing transactions 10 | public int WeightedValue { get; set; } 11 | 12 | public ApplicationUserDTO ApplicationUser { get; set; } 13 | public RoomDTO Room { get; set; } 14 | 15 | public ICollection TransactionsSongQueued { get; set; } = 16 | new List(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/SongRequestVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.VMs; 3 | using Listify.Lib.DTOs; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public abstract class SongRequestVM : BaseVM 8 | { 9 | public SongRequestType SongRequestType { get; set; } 10 | public SongDTO Song { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/SongVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.VMs; 2 | using Listify.Lib.DTOs; 3 | using System.Collections.Generic; 4 | 5 | namespace Listify.Lib.VMs 6 | { 7 | public class SongVM : BaseVM 8 | { 9 | public string SongName { get; set; } // +2 referneces 10 | public string YoutubeId { get; set; } // +2 referneces 11 | public int SongLengthSeconds { get; set; } // +2 referneces 12 | 13 | // Default Thumbnail 14 | public string ThumbnailUrl { get; set; } 15 | public long? ThumbnailWidth { get; set; } 16 | public long? ThumbnailHeight { get; set; } 17 | 18 | public ICollection SongRequests { get; set; } = 19 | new List(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/TransactionSongQueuedVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Lib.DTOs; 2 | 3 | namespace Listify.Lib.VMs 4 | { 5 | public class TransactionSongQueuedVM : TransactionVM 6 | { 7 | public SongQueuedDTO SongQueued { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Lib/VMs/TransactionVM.cs: -------------------------------------------------------------------------------- 1 | using Listify.Domain.Lib.Enums; 2 | using Listify.Domain.Lib.VMs; 3 | using Listify.Lib.DTOs; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.ComponentModel.DataAnnotations.Schema; 7 | using System.Text; 8 | 9 | namespace Listify.Lib.VMs 10 | { 11 | // This could be gaining currency for being in a room 12 | // or this could be using currency to request/ up-vote / down-vote songs. 13 | public class TransactionVM : BaseVM 14 | { 15 | public TransactionType TransactionType { get; set; } 16 | public int QuantityChanged { get; set; } 17 | 18 | public ApplicationUserRoomCurrencyRoomDTO ApplicationUserRoomCurrency { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Services/IListifyService.cs: -------------------------------------------------------------------------------- 1 | using Listify.Lib.Requests; 2 | using Listify.Lib.Responses; 3 | using System.Threading.Tasks; 4 | 5 | namespace Listify.Services 6 | { 7 | public interface IListifyService 8 | { 9 | Task GetSpotifyAccessToken(); 10 | Task CleanContent(string content); 11 | Task IsContentValid(string content); 12 | } 13 | } -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.Services/Listify.Services.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.WebAPI.Client/Listify.WebAPI.Client.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Listify.Backend/Modules/Listify.WebAPI.Client/ListifyWebAPIClient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Listify.WebAPI.Client 6 | { 7 | class ListifyWebAPIClient 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Listify/.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # For the full list of supported browsers by the Angular framework, please see: 6 | # https://angular.io/guide/browser-support 7 | 8 | # You can see what browsers were selected by your queries by running: 9 | # npx browserslist 10 | 11 | last 1 Chrome version 12 | last 1 Firefox version 13 | last 2 Edge major versions 14 | last 2 Safari major versions 15 | last 2 iOS major versions 16 | Firefox ESR 17 | not IE 9-10 # Angular support for IE 9-10 has been deprecated and will be removed as of Angular v11. To opt-in, remove the 'not' prefix on this line. 18 | not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. 19 | -------------------------------------------------------------------------------- /Listify/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /Listify/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | # Only exists if Bazel was run 8 | /bazel-out 9 | 10 | # dependencies 11 | /node_modules 12 | 13 | # profiling files 14 | chrome-profiler-events*.json 15 | speed-measure-plugin*.json 16 | 17 | # IDEs and editors 18 | /.idea 19 | .project 20 | .classpath 21 | .c9/ 22 | *.launch 23 | .settings/ 24 | *.sublime-workspace 25 | 26 | # IDE - VSCode 27 | .vscode/* 28 | !.vscode/settings.json 29 | !.vscode/tasks.json 30 | !.vscode/launch.json 31 | !.vscode/extensions.json 32 | .history/* 33 | 34 | # misc 35 | /.sass-cache 36 | /connect.lock 37 | /coverage 38 | /libpeerconnection.log 39 | npm-debug.log 40 | yarn-error.log 41 | testem.log 42 | /typings 43 | 44 | # System Files 45 | .DS_Store 46 | Thumbs.db 47 | -------------------------------------------------------------------------------- /Listify/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "chrome", 9 | "request": "launch", 10 | "name": "Launch Chrome against localhost", 11 | "url": "http://localhost:4200", 12 | "webRoot": "${workspaceFolder}" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /Listify/e2e/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | // Protractor configuration file, see link for more information 3 | // https://github.com/angular/protractor/blob/master/lib/config.ts 4 | 5 | const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter'); 6 | 7 | /** 8 | * @type { import("protractor").Config } 9 | */ 10 | exports.config = { 11 | allScriptsTimeout: 11000, 12 | specs: [ 13 | './src/**/*.e2e-spec.ts' 14 | ], 15 | capabilities: { 16 | browserName: 'chrome' 17 | }, 18 | directConnect: true, 19 | baseUrl: 'http://localhost:4200/', 20 | framework: 'jasmine', 21 | jasmineNodeOpts: { 22 | showColors: true, 23 | defaultTimeoutInterval: 30000, 24 | print: function() {} 25 | }, 26 | onPrepare() { 27 | require('ts-node').register({ 28 | project: require('path').join(__dirname, './tsconfig.json') 29 | }); 30 | jasmine.getEnv().addReporter(new SpecReporter({ 31 | spec: { 32 | displayStacktrace: StacktraceOption.PRETTY 33 | } 34 | })); 35 | } 36 | }; -------------------------------------------------------------------------------- /Listify/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Listify app is running!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /Listify/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo(): Promise { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText(): Promise { 9 | return element(by.css('app-root .content span')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Listify/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../tsconfig.base.json", 4 | "compilerOptions": { 5 | "outDir": "../out-tsc/e2e", 6 | "module": "commonjs", 7 | "target": "es2018", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Listify/src/app/AppComponent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/app/AppComponent.ts -------------------------------------------------------------------------------- /Listify/src/app/account/account.component.css: -------------------------------------------------------------------------------- 1 | .account-container { 2 | display: flex; 3 | } 4 | -------------------------------------------------------------------------------- /Listify/src/app/account/account.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AccountComponent } from './account.component'; 4 | 5 | describe('AccountComponent', () => { 6 | let component: AccountComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ AccountComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(AccountComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | .sidenav-full { 2 | height: 100%; 3 | } 4 | 5 | .logo-nav { 6 | min-width: 230px; 7 | text-align: center; 8 | } 9 | 10 | .sidenav-fixed { 11 | position:fixed; 12 | } 13 | 14 | .button-login { 15 | display: block; 16 | } 17 | 18 | #appTitle { 19 | padding: 0px 0px 0px 10px; 20 | } 21 | 22 | .cursor-link { 23 | cursor: pointer; 24 | } 25 | 26 | .padding-simple { 27 | padding: 10px; 28 | } 29 | 30 | .padding-sides { 31 | padding: 0px 10px 0px 10px; 32 | } 33 | -------------------------------------------------------------------------------- /Listify/src/app/authConfig.ts: -------------------------------------------------------------------------------- 1 | import { AuthConfig } from 'angular-oauth2-oidc'; 2 | 3 | export const authConfig: AuthConfig = { 4 | issuer: 'http://localhost:5000', 5 | redirectUri: window.location.origin, 6 | clientId: 'listify.webapp', 7 | scope: 'profile openid roles listifyWebAPI', 8 | postLogoutRedirectUri: 'http://localhost:4200' 9 | }; 10 | -------------------------------------------------------------------------------- /Listify/src/app/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | .cartTable-Container { 2 | display: flex; 3 | flex: 1 1 100%; 4 | } 5 | 6 | .mat-column-itemName { 7 | padding: 0px 100px 0px 0px; 8 | } 9 | 10 | .mat-column-quantity { 11 | padding: 0px 60px 0px 30px; 12 | } 13 | 14 | .mat-column-cost { 15 | padding: 0px 10px 0px 30px; 16 | } 17 | 18 | .mat-column-removeFromCart { 19 | padding: 0px 20px 0px 30px; 20 | } 21 | 22 | .mat-column-image { 23 | padding: 0px 30px 0px 30px; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /Listify/src/app/cart/cart.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CartComponent } from './cart.component'; 4 | 5 | describe('CartComponent', () => { 6 | let component: CartComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ CartComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(CartComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/checkout/checkout.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-image { 2 | padding: 0px 40px 0x 0p; 3 | } 4 | 5 | .mat-column-orderQuantity { 6 | padding: 0px 60px 0px 30px; 7 | } 8 | 9 | .mat-column-orderQuantity { 10 | padding: 0px 60px 0px 30px; 11 | } 12 | -------------------------------------------------------------------------------- /Listify/src/app/checkout/checkout.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CheckoutComponent } from './checkout.component'; 4 | 5 | describe('CheckoutComponent', () => { 6 | let component: CheckoutComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ CheckoutComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(CheckoutComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/checkoutfail/checkoutfail.component.css: -------------------------------------------------------------------------------- 1 | .checkoutfail-container { 2 | padding: 10px 10px 10px 10px; 3 | } 4 | -------------------------------------------------------------------------------- /Listify/src/app/checkoutfail/checkoutfail.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
Checkout failed
5 |
Your purchase was not successful, please try to checkout again.
6 |
7 |
8 |
9 | -------------------------------------------------------------------------------- /Listify/src/app/checkoutfail/checkoutfail.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CheckoutfailComponent } from './checkoutfail.component'; 4 | 5 | describe('CheckoutfailComponent', () => { 6 | let component: CheckoutfailComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ CheckoutfailComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(CheckoutfailComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/checkoutfail/checkoutfail.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-checkoutfail', 5 | templateUrl: './checkoutfail.component.html', 6 | styleUrls: ['./checkoutfail.component.css'] 7 | }) 8 | export class CheckoutfailComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit(): void { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Listify/src/app/currencies/currencies.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/app/currencies/currencies.component.css -------------------------------------------------------------------------------- /Listify/src/app/currencies/currencies.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 10 | 11 | 12 | 18 | 19 | 20 | 21 |
Currency Name 8 | {{element.currency.currencyName}} 9 |
22 |
23 | -------------------------------------------------------------------------------- /Listify/src/app/currencies/currencies.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CurrenciesComponent } from './currencies.component'; 4 | 5 | describe('CurrenciesComponent', () => { 6 | let component: CurrenciesComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ CurrenciesComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(CurrenciesComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/currency/currency.component.css: -------------------------------------------------------------------------------- 1 | .currencyForm-container { 2 | display: flex; 3 | flex-direction: column; 4 | flex: 0 0 300px; 5 | justify-content: flex-start; 6 | } 7 | 8 | .currencyForm-container > * { 9 | width: 40%; 10 | } 11 | 12 | .formButton-container { 13 | display: flex; 14 | flex: 0 0 100%; 15 | } 16 | -------------------------------------------------------------------------------- /Listify/src/app/currency/currency.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CurrencyComponent } from './currency.component'; 4 | 5 | describe('CurrencyComponent', () => { 6 | let component: CurrencyComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ CurrencyComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(CurrencyComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/home/home.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/app/home/home.component.css -------------------------------------------------------------------------------- /Listify/src/app/home/home.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Listify/src/app/home/home.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HomeComponent } from './home.component'; 4 | 5 | describe('HomeComponent', () => { 6 | let component: HomeComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ HomeComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(HomeComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/playlist/playlist.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/app/playlist/playlist.component.css -------------------------------------------------------------------------------- /Listify/src/app/playlist/playlist.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PlaylistComponent } from './playlist.component'; 4 | 5 | describe('PlaylistComponent', () => { 6 | let component: PlaylistComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PlaylistComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PlaylistComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/playlists/playlists.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-playlistImageUrl { 2 | padding: 0px 20px 0px 10px; 3 | } 4 | 5 | .mat-column-playlistName { 6 | padding: 0px 30px 0px 20px; 7 | } 8 | 9 | .mat-column-isSelected { 10 | padding: 0px 20px 0px 20px; 11 | } 12 | 13 | .mat-column-genreName { 14 | padding: 0px 40px 0px 40px; 15 | } 16 | 17 | .playlists-container { 18 | padding: 10px 10px 10px 10px; 19 | } 20 | -------------------------------------------------------------------------------- /Listify/src/app/playlists/playlists.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PlaylistsComponent } from './playlists.component'; 4 | 5 | describe('PlaylistsComponent', () => { 6 | let component: PlaylistsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PlaylistsComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PlaylistsComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/playlistscommunity/playlistscommunity.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-playlistName { 2 | padding: 0px 30px 0px 20px; 3 | } 4 | 5 | .mat-column-owner { 6 | padding: 0px 20px 0px 20px; 7 | } 8 | 9 | .mat-column-numberOfSongs { 10 | padding: 0px 20px 0px 20px; 11 | } 12 | 13 | .playlistsCommunity-container { 14 | padding: 10px 10px 10px 10px; 15 | } 16 | -------------------------------------------------------------------------------- /Listify/src/app/playlistscommunity/playlistscommunity.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PlaylistscommunityComponent } from './playlistscommunity.component'; 4 | 5 | describe('PlaylistscommunityComponent', () => { 6 | let component: PlaylistscommunityComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PlaylistscommunityComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PlaylistscommunityComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/profile/profile.component.css: -------------------------------------------------------------------------------- 1 | .profile-container { 2 | padding: 10px 10px 10px 10px; 3 | } 4 | 5 | .padding-simple { 6 | padding: 10px 10px 10px 10px; 7 | } 8 | 9 | .padding-noTop { 10 | padding: 0px 10px 10px 10px; 11 | } 12 | 13 | .padding-topOnly { 14 | padding: 10px 0px 0px 0px; 15 | } 16 | 17 | .flex-container { 18 | display: flex; 19 | flex-wrap: wrap; 20 | } 21 | 22 | .flexVert-container { 23 | display: flex; 24 | flex-direction: column; 25 | } 26 | 27 | .flex-content { 28 | padding: 5px 5px 5px 5px; 29 | } 30 | -------------------------------------------------------------------------------- /Listify/src/app/profile/profile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | describe('ProfileComponent', () => { 6 | let component: ProfileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ProfileComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ProfileComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/purchasableitems/purchasableitems.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-purchasableItemName { 2 | padding: 0px 100px 0px 0px; 3 | } 4 | 5 | .mat-column-purchasableItemType { 6 | padding: 0px 60px 0px 20px; 7 | } 8 | 9 | .mat-column-image { 10 | padding: 0px 10px 0px 20px; 11 | } 12 | -------------------------------------------------------------------------------- /Listify/src/app/purchasableitems/purchasableitems.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PurchasableitemsComponent } from './purchasableitems.component'; 4 | 5 | describe('PurchasableitemsComponent', () => { 6 | let component: PurchasableitemsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PurchasableitemsComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PurchasableitemsComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/purchases/purchases.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/app/purchases/purchases.component.css -------------------------------------------------------------------------------- /Listify/src/app/purchases/purchases.component.html: -------------------------------------------------------------------------------- 1 |

purchases works!

2 | -------------------------------------------------------------------------------- /Listify/src/app/purchases/purchases.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PurchasesComponent } from './purchases.component'; 4 | 5 | describe('PurchasesComponent', () => { 6 | let component: PurchasesComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PurchasesComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PurchasesComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/room/room.component.css: -------------------------------------------------------------------------------- 1 | .contentFlex-container { 2 | display: flex; 3 | flex-wrap: wrap; 4 | justify-content: flex-start; 5 | align-items: flex-start; 6 | height: 100%; 7 | padding: 10px 10px 10px 10px; 8 | } 9 | 10 | .padding-simple { 11 | padding: 0px 10px 10px 10px; 12 | } 13 | 14 | .contentFlex-verticalContainer { 15 | display: flex; 16 | flex-direction: column; 17 | } 18 | 19 | .contentFlex { 20 | border: 1px; 21 | color: black; 22 | border-style: ridge; 23 | padding: 10px 10px 10px 10px; 24 | } 25 | 26 | .contentFlex-player { 27 | flex: 0 0; 28 | } 29 | 30 | .contentFlex-songQueued, .contentFlex-queue { 31 | flex: 1 1 100%; 32 | } 33 | 34 | .contentFlex-chat { 35 | flex: 1 0; 36 | min-width: 210px; 37 | } 38 | 39 | .contentFlex-queueMax { 40 | flex: 2 2; 41 | min-width: 1000px; 42 | } 43 | -------------------------------------------------------------------------------- /Listify/src/app/room/room.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 |
7 | 8 |
9 |
10 | 11 |
12 |
13 | 14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /Listify/src/app/room/room.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { RoomComponent } from './room.component'; 4 | 5 | describe('RoomComponent', () => { 6 | let component: RoomComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ RoomComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(RoomComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/rooms/rooms.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-usersOnline, 2 | .mat-column-roomTitle, 3 | .mat-column-roomName, 4 | .mat-column-isRoomLocked, 5 | .mat-column-matureContent{ 6 | justify-content: center; 7 | text-align: center; 8 | padding: 0px 50px 0px 50px; 9 | } 10 | 11 | .mat-column-profileImageUrl { 12 | justify-content: center; 13 | } 14 | 15 | .roomsComponent-container { 16 | flex: 5 5 100%; 17 | padding: 0px 10px 0px 10px; 18 | } 19 | 20 | .mat-column-username { 21 | padding: 0px 20px 0px 20px; 22 | } 23 | 24 | .padding-simple { 25 | padding: 0px 10px 10px 10px; 26 | } 27 | 28 | -------------------------------------------------------------------------------- /Listify/src/app/rooms/rooms.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { RoomsComponent } from './rooms.component'; 4 | 5 | describe('RoomsComponent', () => { 6 | let component: RoomsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ RoomsComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(RoomsComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/services/cart.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { CartService } from './cart.service'; 4 | 5 | describe('CartService', () => { 6 | let service: CartService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(CartService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/services/globals.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { GlobalsService } from './globals.service'; 4 | 5 | describe('GlobalsService', () => { 6 | let service: GlobalsService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(GlobalsService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/services/http.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { HttpService } from './http.service'; 4 | 5 | describe('HttpService', () => { 6 | let service: HttpService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(HttpService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/services/http.service.ts: -------------------------------------------------------------------------------- 1 | import { observable, Observable } from 'rxjs'; 2 | import { Injectable } from '@angular/core'; 3 | 4 | @Injectable({ 5 | providedIn: 'root' 6 | }) 7 | export class HttpService { 8 | 9 | constructor() { } 10 | 11 | requestProfileImageUploaded(file: any): Observable { 12 | // ToDo: need to complete in both backend-frontend 13 | return null; 14 | } 15 | 16 | requestRoomImageUploaded(file: any): Observable { 17 | // ToDo: need to complete in both backend-frontend 18 | return null; 19 | } 20 | 21 | requestPlaylistImageUpload(file: any, playlistId: string): Observable { 22 | // ToDo: need to complete in both backend-frontend 23 | return null; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Listify/src/app/services/hub.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { HubService } from './hub.service'; 4 | 5 | describe('HubService', () => { 6 | let service: HubService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(HubService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/services/player.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { PlayerService } from './player.service'; 4 | 5 | describe('PlayerService', () => { 6 | let service: PlayerService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(PlayerService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/services/player.service.ts: -------------------------------------------------------------------------------- 1 | import { ISongQueued } from './../interfaces'; 2 | import { Injectable } from '@angular/core'; 3 | 4 | @Injectable({ 5 | providedIn: 'root' 6 | }) 7 | export class PlayerService { 8 | 9 | currentSong: ISongQueued; 10 | 11 | constructor() { } 12 | 13 | setCurrentSong(currentSong: ISongQueued): void { 14 | this.currentSong = currentSong; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Listify/src/app/services/profile.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { ProfileService } from './profile.service'; 4 | 5 | describe('ProfileService', () => { 6 | let service: ProfileService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(ProfileService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/services/profile.service.ts: -------------------------------------------------------------------------------- 1 | import { Subject, Observable } from 'rxjs'; 2 | import { Injectable } from '@angular/core'; 3 | 4 | @Injectable({ 5 | providedIn: 'root' 6 | }) 7 | export class ProfileService { 8 | 9 | applicationUserId: string; 10 | 11 | $applicationUserIdChanged = new Subject(); 12 | 13 | constructor() { } 14 | 15 | setApplicationUserId(id: string): void { 16 | this.applicationUserId = id; 17 | 18 | this.$applicationUserIdChanged.next(this.applicationUserId); 19 | } 20 | 21 | getApplicationUserId(): Observable { 22 | return this.$applicationUserIdChanged.asObservable(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Listify/src/app/services/room-hub.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { RoomHubService } from './room-hub.service'; 4 | 5 | describe('RoomHubService', () => { 6 | let service: RoomHubService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(RoomHubService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/services/youtube.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { YoutubeService } from './youtube.service'; 4 | 5 | describe('YoutubeService', () => { 6 | let service: YoutubeService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(YoutubeService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/shared/applicationuserroomcurrencies/applicationuserroomcurrencies.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-currencyName { 2 | padding: 0px 30px 0px 0px; 3 | } 4 | 5 | .mat-column-quantity { 6 | padding: 0px 20px 0px 20px; 7 | } 8 | 9 | .mat-column-purchaseCurrency { 10 | padding: 0px 10px 0px 10px; 11 | } 12 | -------------------------------------------------------------------------------- /Listify/src/app/shared/applicationuserroomcurrencies/applicationuserroomcurrencies.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ApplicationuserroomcurrenciesComponent } from './applicationuserroomcurrencies.component'; 4 | 5 | describe('ApplicationuserroomcurrenciesComponent', () => { 6 | let component: ApplicationuserroomcurrenciesComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ApplicationuserroomcurrenciesComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ApplicationuserroomcurrenciesComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/auth/authguard.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { AuthguardService } from './authguard.service'; 4 | 5 | describe('AuthguardService', () => { 6 | let service: AuthguardService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(AuthguardService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /Listify/src/app/shared/auth/authguard.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { OAuthService } from 'angular-oauth2-oidc'; 3 | import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 4 | 5 | @Injectable({ 6 | providedIn: 'root' 7 | }) 8 | export class AuthguardService implements CanActivate { 9 | 10 | constructor(private oauthService: OAuthService, private router: Router) { } 11 | 12 | canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 13 | 14 | if (this.oauthService.hasValidAccessToken()) { 15 | return true; 16 | } 17 | 18 | this.router.navigate(['/']); 19 | return false; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Listify/src/app/shared/chat/chat.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-username { 2 | padding: 0px 20px 0px 50px; 3 | } 4 | 5 | .mat-column-message { 6 | padding: 0px 10px 0px 50px; 7 | } 8 | -------------------------------------------------------------------------------- /Listify/src/app/shared/chat/chat.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ChatComponent } from './chat.component'; 4 | 5 | describe('ChatComponent', () => { 6 | let component: ChatComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ChatComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ChatComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth/authguard.service'; 2 | -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/applicationusersfollowingmodal/applicationusersfollowingmodal.component.css: -------------------------------------------------------------------------------- 1 | .applicationUsersFollowing-container { 2 | overflow: auto; 3 | word-wrap: break-word; 4 | height: 310px; 5 | overflow-y: auto; 6 | max-width: 100%; 7 | position: relative; 8 | width: 100%; 9 | } 10 | 11 | #applicationUserFollowingList-container { 12 | word-wrap: break-word; 13 | height: 100%; 14 | overflow-y: auto; 15 | display: flex; 16 | flex-direction: column; 17 | position: relative; 18 | justify-content: flex-start; 19 | } 20 | 21 | .close-btn { 22 | display: flex; 23 | align-items: flex-start; 24 | flex-direction: column; 25 | justify-content: flex-end; 26 | padding: 0px 0px 0px 0px; 27 | } 28 | 29 | .padding-basic { 30 | padding: 10px 10px 10px 10px; 31 | } 32 | -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/applicationusersfollowingmodal/applicationusersfollowingmodal.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ApplicationusersfollowingmodalComponent } from './applicationusersfollowingmodal.component'; 4 | 5 | describe('ApplicationusersfollowingmodalComponent', () => { 6 | let component: ApplicationusersfollowingmodalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ApplicationusersfollowingmodalComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ApplicationusersfollowingmodalComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/applicationusersroommodal/applicationusersroommodal.component.css: -------------------------------------------------------------------------------- 1 | .applicationUsersRoom-container { 2 | overflow: auto; 3 | word-wrap: break-word; 4 | height: 310px; 5 | overflow-y: auto; 6 | max-width: 100%; 7 | position: relative; 8 | width: 100%; 9 | } 10 | 11 | #applicationUserRoomList-container { 12 | word-wrap: break-word; 13 | height: 100%; 14 | overflow-y: auto; 15 | display: flex; 16 | flex-direction: column; 17 | position: relative; 18 | justify-content: flex-start; 19 | } 20 | 21 | .close-btn { 22 | display: flex; 23 | align-items: flex-start; 24 | flex-direction: column; 25 | justify-content: flex-end; 26 | padding: 0px 0px 0px 0px; 27 | } 28 | 29 | .padding-basic { 30 | padding: 10px 10px 10px 10px; 31 | } 32 | -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/applicationusersroommodal/applicationusersroommodal.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ApplicationusersroommodalComponent } from './applicationusersroommodal.component'; 4 | 5 | describe('ApplicationusersroommodalComponent', () => { 6 | let component: ApplicationusersroommodalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ApplicationusersroommodalComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ApplicationusersroommodalComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/confirmationmodal/confirmationmodal.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/app/shared/modals/confirmationmodal/confirmationmodal.component.css -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/confirmationmodal/confirmationmodal.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { DialogmodalComponent } from './dialogmodal.component'; 4 | 5 | describe('DialogmodalComponent', () => { 6 | let component: DialogmodalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ DialogmodalComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(DialogmodalComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/informationmodal/informationmodal.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/app/shared/modals/informationmodal/informationmodal.component.css -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/informationmodal/informationmodal.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { InformationmodalComponent } from './informationmodal.component'; 4 | 5 | describe('InformationmodalComponent', () => { 6 | let component: InformationmodalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ InformationmodalComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(InformationmodalComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/informationmodal/informationmodal.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Inject, OnInit } from '@angular/core'; 2 | import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; 3 | import { IInformationModalData } from 'src/app/interfaces'; 4 | 5 | @Component({ 6 | selector: 'app-informationmodal', 7 | template: ` 8 |

{{data.title}}

9 |
10 |

{{data.message}}

11 |
12 |
13 | 14 |
15 | `, 16 | styleUrls: ['./informationmodal.component.css'] 17 | }) 18 | export class InformationmodalComponent implements OnInit { 19 | 20 | data = this.dataInstance; 21 | 22 | constructor( 23 | private dialogRef: MatDialogRef, 24 | @Inject(MAT_DIALOG_DATA) private dataInstance: IInformationModalData) {} 25 | 26 | ngOnInit(): void { 27 | } 28 | 29 | cancel(): void { 30 | this.dialogRef.close(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/inputmodal/inputmodal.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/app/shared/modals/inputmodal/inputmodal.component.css -------------------------------------------------------------------------------- /Listify/src/app/shared/modals/inputmodal/inputmodal.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { InputmodalComponent } from './inputmodal.component'; 4 | 5 | describe('InputmodalComponent', () => { 6 | let component: InputmodalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ InputmodalComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(InputmodalComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/player/player.component.css: -------------------------------------------------------------------------------- 1 | .cursor-link { 2 | cursor: pointer; 3 | } 4 | 5 | .playerComponent-container { 6 | display: flex; 7 | flex-direction: column; 8 | align-content: space-between; 9 | } 10 | 11 | .playerComponent-child { 12 | flex: 1; 13 | padding: 5px 0px 0px 0px; 14 | } 15 | 16 | .padding-simple { 17 | padding: 10px; 18 | } 19 | -------------------------------------------------------------------------------- /Listify/src/app/shared/player/player.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PlayerComponent } from './player.component'; 4 | 5 | describe('PlayerComponent', () => { 6 | let component: PlayerComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PlayerComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PlayerComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/profileplaylists/profileplaylists.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-playlistImageUrl { 2 | padding: 0px 20px 0px 10px; 3 | } 4 | 5 | .mat-column-playlistName { 6 | padding: 0px 30px 0px 20px; 7 | } 8 | 9 | .mat-column-isSelected { 10 | padding: 0px 20px 0px 20px; 11 | } 12 | 13 | .mat-column-genreName { 14 | padding: 0px 40px 0px 40px; 15 | } 16 | 17 | .playlists-container { 18 | padding: 10px 10px 10px 10px; 19 | } 20 | -------------------------------------------------------------------------------- /Listify/src/app/shared/profileplaylists/profileplaylists.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ProfileplaylistsComponent } from './profileplaylists.component'; 4 | 5 | describe('ProfileplaylistsComponent', () => { 6 | let component: ProfileplaylistsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ProfileplaylistsComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ProfileplaylistsComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/queue/queue.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-songThumbnail { 2 | padding: 0px 20px 0px 10px; 3 | } 4 | 5 | .mat-column-songName { 6 | padding: 0px 30px 0px 0px; 7 | } 8 | 9 | .mat-column-weightedValue { 10 | padding: 0px 40px 0px 20px; 11 | } 12 | 13 | .mat-column-applicationUserRoomCurrency { 14 | padding: 0px 20px 0px 20px; 15 | } 16 | -------------------------------------------------------------------------------- /Listify/src/app/shared/queue/queue.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { QueueComponent } from './queue.component'; 4 | 5 | describe('QueueComponent', () => { 6 | let component: QueueComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ QueueComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(QueueComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/roomsfollowed/roomsfollowed.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-usersOnline, 2 | .mat-column-roomTitle, 3 | .mat-column-roomName, 4 | .mat-column-isRoomLocked, 5 | .mat-column-matureContent{ 6 | justify-content: center; 7 | text-align: center; 8 | padding: 0px 50px 0px 50px; 9 | } 10 | 11 | .mat-column-profileImageUrl { 12 | justify-content: center; 13 | } 14 | 15 | .roomsComponent-container { 16 | flex: 5 5 100%; 17 | padding: 0px 10px 0px 10px; 18 | } 19 | 20 | .mat-column-username { 21 | padding: 0px 20px 0px 20px; 22 | } 23 | 24 | .padding-simple { 25 | padding: 0px 10px 10px 10px; 26 | } 27 | -------------------------------------------------------------------------------- /Listify/src/app/shared/roomsfollowed/roomsfollowed.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { RoomsfollowedComponent } from './roomsfollowed.component'; 4 | 5 | describe('RoomsfollowedComponent', () => { 6 | let component: RoomsfollowedComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ RoomsfollowedComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(RoomsfollowedComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/searchsongplaylist/searchsongplaylist.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-songThumbnail { 2 | padding: 0px 20px 0px 10px; 3 | } 4 | 5 | .mat-column-songName { 6 | padding: 0px 30px 0px 0px; 7 | } 8 | -------------------------------------------------------------------------------- /Listify/src/app/shared/searchsongplaylist/searchsongplaylist.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SearchsongplaylistComponent } from './searchsongplaylist.component'; 4 | 5 | describe('SearchsongplaylistComponent', () => { 6 | let component: SearchsongplaylistComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SearchsongplaylistComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SearchsongplaylistComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/searchsongrequest/searchsongrequest.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-songThumbnail { 2 | padding: 0px 20px 0px 10px; 3 | } 4 | 5 | .mat-column-CurrencyType { 6 | padding: 0px 20px 0px 20px; 7 | } 8 | -------------------------------------------------------------------------------- /Listify/src/app/shared/searchsongrequest/searchsongrequest.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SearchsongrequestComponent } from './searchsongrequest.component'; 4 | 5 | describe('SearchsongrequestComponent', () => { 6 | let component: SearchsongrequestComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SearchsongrequestComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SearchsongrequestComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/app/shared/songsplaylist/songsplaylist.component.css: -------------------------------------------------------------------------------- 1 | .mat-column-songThumbnail { 2 | padding: 0px 20px 0px 10px; 3 | } 4 | 5 | .mat-column-songName { 6 | padding: 0px 30px 0px 0px; 7 | } 8 | 9 | .mat-column-songLengthSec { 10 | padding: 0px 40px 0px 20px; 11 | } 12 | -------------------------------------------------------------------------------- /Listify/src/app/shared/songsplaylist/songsplaylist.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SongsplaylistComponent } from './songsplaylist.component'; 4 | 5 | describe('SongsplaylistComponent', () => { 6 | let component: SongsplaylistComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SongsplaylistComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SongsplaylistComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /Listify/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/assets/.gitkeep -------------------------------------------------------------------------------- /Listify/src/assets/Astoundify-Listify.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/assets/Astoundify-Listify.jpg -------------------------------------------------------------------------------- /Listify/src/assets/listifyfulllogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/assets/listifyfulllogo.png -------------------------------------------------------------------------------- /Listify/src/assets/listifylogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/assets/listifylogo.png -------------------------------------------------------------------------------- /Listify/src/assets/origniallistifyfulllogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/assets/origniallistifyfulllogo.jpg -------------------------------------------------------------------------------- /Listify/src/assets/sound.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/assets/sound.gif -------------------------------------------------------------------------------- /Listify/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /Listify/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /Listify/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkassm/Listify/1112dd7307bf3daa1e5f523ff8c29e5e7359e12c/Listify/src/favicon.ico -------------------------------------------------------------------------------- /Listify/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Listify 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Listify/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /Listify/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | /* @import "~@angular/material/prebuilt-themes/purple-green.css"; */ 3 | @import '~ngx-toastr/toastr'; 4 | /* @import "~bootstrap/dist/css/bootstrap.css"; */ 5 | /* html, body { height: 100%; } 6 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } */ 7 | 8 | html, body { 9 | height: 100%; 10 | margin: 0; 11 | padding: 0; 12 | } 13 | 14 | app-root { 15 | display: flex; 16 | height: 100%; 17 | flex-direction: column; 18 | } 19 | 20 | app-root > div:nth-child(2) { 21 | flex-grow: 2; 22 | align-items: stretch; 23 | display: flex; 24 | flex-direction: column; 25 | } 26 | 27 | app-root > div:nth-child(2) > mat-sidenav-container { 28 | flex-grow: 2; 29 | /* overflow: auto; */ 30 | } 31 | -------------------------------------------------------------------------------- /Listify/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: { 11 | context(path: string, deep?: boolean, filter?: RegExp): { 12 | keys(): string[]; 13 | (id: string): T; 14 | }; 15 | }; 16 | 17 | // First, initialize the Angular testing environment. 18 | getTestBed().initTestEnvironment( 19 | BrowserDynamicTestingModule, 20 | platformBrowserDynamicTesting() 21 | ); 22 | // Then we find all the tests. 23 | const context = require.context('./', true, /\.spec\.ts$/); 24 | // And load the modules. 25 | context.keys().map(context); 26 | -------------------------------------------------------------------------------- /Listify/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.base.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /Listify/tsconfig.base.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "sourceMap": true, 8 | "declaration": false, 9 | "downlevelIteration": true, 10 | "experimentalDecorators": true, 11 | "moduleResolution": "node", 12 | "importHelpers": true, 13 | "target": "es2015", 14 | "module": "es2020", 15 | "lib": [ 16 | "es2018", 17 | "dom" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Listify/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* 2 | This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience. 3 | It is not intended to be used to perform a compilation. 4 | 5 | To learn more about this file see: https://angular.io/config/solution-tsconfig. 6 | */ 7 | { 8 | "files": [], 9 | "references": [ 10 | { 11 | "path": "./tsconfig.app.json" 12 | }, 13 | { 14 | "path": "./tsconfig.spec.json" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /Listify/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.base.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | --------------------------------------------------------------------------------