Book store app in dot net core and entity framework core | dot net 6 project for beginners

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey there everyone it's ravindra devrani and I have come back with another video I hope you all are doing fine if you find this video helpful then please hit that like button and make sure you have subscribed this channel so that you won't miss any future update and today we are creating a bookstore project and I am using dotnet6 core MVC for that and it is how our project is going to look like so it is our book section here it is our publisher section and here it is our author genre section so let's get started so let's start with creating a new project click here create a new project and select asp.net core web application model view controller and click on next and let's name it YT bookstore and click on next and let's create it okay our project has created now so let's close this tab and here move to this folder layout.cs HTML page and let's remove some of these code from here so we will move we will remove these two files because they are not needed and here we will also remove this header div and put a and everything else let's make it clean and here class equals to container at the rate render body and here we will Define our own div and I am using a bootstrap 4 never and I have already written this code so I am just copying it here so it is our neighbor written in bootstrap 4 so let's remove this also and rename it to book store okay and here here type book store also okay okay now let's check it in browser so click here and this is our project it is looking fine right now so let's close it for now and move to the folder views and let's let's check U star.cs HTML here we have defined our layout page and it is going to be rendered in every View okay okay that's fine okay now let's create some model classes so click here create a new folder domain and here our domain models will be declared and we will add another folder which will be dto and we might need some dto models in future so I am already creating it okay here create a new class and name it genre and create it okay let's define some properties here so type prop and double tap it is a shortcut for creating a property in visible Studio and type here ID and a string name let's write here required okay it's fine now and let's create some more classes so the next one will be our publisher publisher publisher and here publisher name okay it's fine and let's create one more class and rename it to author author author and here author name and one last class will be uh book so let's rename it to book and ID title ISBN and here total pages and here book no author ID publisher ID and one more that was genre ID okay let's copy it here and here also so our book class has created now so now one more important step which is we are creating our contact class 4 database so let's name it database context dot CS and here we will Define our connection string so connection is strings equal to Let's name it c o double n con huh data source equal to Dot it is an instance of our database so name it according to your database initial catalog equals to it will be a name of our database so we will name it y t book store and Integrated Security equals to true related security equals to true so here we have created a connection string okay everything seems fine now so here but before that we have to install some nuget packages so right click here on this project and click manage nuget packages we need few packages like Microsoft dot Entity framework dot tools this package is needed for package manager console so make sure to install it accept it and wait for a moment or more than a moment it will take a while so let's play it anyway and one more one more package we will need is Microsoft dot Entity Framework code.sql server so let's also install it and it will also take a while and more than a while also so let's wait we can't do anything about it we have to wait or I can pause this video till now okay it also has installed okay now let's write some code here so ctor double tap our Constructor DB context options database context it will be name of our class options and here base options okay I think I'm missing something let's see I think I am something DB context okay now here we will Define our DB sets DB set okay let's do it later but first one last thing has remained for initial setting right here write this code and it will be c o double n uilder.services.idb context database context options options SQL Server and Etc structure okay now now let's define our DB sets properties so here right generate genre author author hotter publisher publisher and book foreign now click here on tools and select nuget package manager package manager console and write some command here like add migration init let's name it init okay build has started and we have to wait again okay our migration file has created now and let's close this tab and right here update database okay and let's create and here is some error in our connection string that is spelling mistake initial catalog okay let's again update the database and I think it is working fine now okay our database has created now so we have implemented all the initial setting for this project now let's create a folder here new folder and name it repositories and inside this create one more folder and name it abstract here we will Define our interfaces and here we will Define our implementation of those interfaces so let's rename it implementation okay now let's create a service I genre service okay and it will be our interface so it would have several methods like bull add book and model one more thing it's update and Bowl delete ID and book find by ID into ID and I queryable or we can say I enumerable book get all okay I think we will need only these methods so let's create a new class here let's name it genre services okay and inherit it to I genre services let's rename it to genre service not services and genres service here okay let's click here quick actions and refactoring and Implement interface okay now click here in program.cs class and here not here here Builder dot service Services dot add scope and high General services comma January services okay here we have added these Services into di container okay next now let's define these methods here so right here try private read only database context CTX or context CT or double tab and here database context context this dot context equals to context okay here context Dot add model context dot save changes written true okay and right here catch exception EX and here we will return false so just copy it and paste here inside the update block and just rename add to update and everything will be same so it is our update method and here let's define some more methods like this one delete okay and first we will find where data equals to context Dot generate dot find ID or we will use just below's method this dot find by ID okay if data equals to null then it will return false otherwise CTX dot remove Dot not DOT we will pass data here and everything is perfect now now let's implement this method okay return this Dot context Dot and we don't need this here it will be fine without this context dot genre write it here context or summary context or genre dot find ID oh there is a big mistake sorry guys here rename them to genre generate genre and genre or genre whatever it is here and here also here also and here also this dots Android dot add here okay this dots Android dot find yid okay and it is saying I may be a nullable type and here also genre update okay it seems everything is fine now it is our add method here and it is our delete method which we had updated recently and it is off and by ID method and it is our update method okay now let's implement this method written context Dot generate dot to list okay okay it's fine now we have written our genre Services class here let's review it again it is our add method and it is our delete method it is our fund by ID method it is our get all method it is our update method okay that's all so let's close this tab and this tab also and this tab also so now move to the controller and add here add new controller okay and here we will create a genre controller now type here ctor double tap and I genre services and right here hi genre service it will be private and read only okay this dot service equals to service and rename it to add let's write a method for ADD so here add add and it will be our post method HTTP post okay zandre and model if model state dot is valid and if model state is not valid then we will return from here and return view model okay now let's call the method of I genre service where result equal to service dot add model if result if result is true then we will return we will write here temp data MSG equals to added success fully and we will return from here return redirect to action and right here name of add okay and otherwise we will write an error message here error has occurred on server side and here return view model okay that's fine let's add an update method which will be much more same like this update update and here we will just change a method from add to update otherwise it will be same and but here we will write int ID and we will find that record which we are going to update so where record equals to service dot find by ID and pass that record to The View okay and our update method is finished so let's so let's write uh delete method and ID delete we don't need validation here we only need uh record find no delete ID okay let's rename it again to the result okay if result is success then we will redirect it to the get all method and we haven't defined that method so here right now let's add a string because we haven't defined this method yet so we can't use name of okay it doesn't matter it is success or failure we will always move to the get all method okay now let's declare get all method to get all data equals to get all written view data okay now our controller has created successfully okay let's add some views for it so here create a new folder and rename it to John Ray or you can do it in another way like scaffolding just click here and add View and a razor View so it will create folder automatically for you and here use layout page okay okay everything is fine and let's create it and it will take a time so I like to create these views manually and in future we will create all the views manually as much as possible so that we can save some of our time yeah time is precious so we must save it however it is possible and I am doing lots of copying and pasting if you are new to the asp.net MVC code so you should write all the code so that you can remember all these syntaxes you do not need to copy and I also have to save some time for this video otherwise this video will be so long too long and we don't want long videos we want as short as possible so I am trying to create this create it as much as sort so I am using lots of copy paste okay here right here model and project name our project name is YT book store dot models dot domain Dot genre okay and we don't need this view data and here declare a div class equals to container div plus equals to rho and let's write here pt5 so it will create a padding on the top it is bootstrap for Syntax for creating a padding padding top okay div class equal to call MD six here we will declare our form okay and ASP action equals to add method equals to post okay and D plus equals to form group form group label asp4 form not form name here name and input type equals to text class equals to form control and asp for name of our property which is name and here we will Define some validation logic which will be span validation ASP validation 4 name and class will be text Danger okay and here we will display our message success message or error message any kind of message will be displayed here if temp data Dot message doesn't equal to null yeah fine okay and now let's define a button here button type equals to submit and class equal to BTN BTN dark and it will be save and here let's create a link a href equal to genre slash get all and here right list and here class will be BTN BTN primary okay I think it is completed now okay now let's run it and see how is it going so I'm changing here to IIs Express okay let's hit on the Run button okay and right here genre slash add and here okay let's change here something but before we need to Define our startup page so here in program.cs file let's change it to genre and add this page will be our default page and let's put it inside a form group okay let's check it again okay and see these again giving some problem let's see them later okay here our validation is working fine but CSS is not working fine here we need this message in red color okay so let's move to the add phase of genre controller here I forgot to Define and heading which is at genre okay foreign here so PT 3 will be enough and here remove this class and here we have a spelling mistake class okay let's run it again and see how things are going okay it is fine now and here now validation error is coming in red color so let's add here name of January which will be horror and let's save it and let's see what happens is everything going right or wrong we will know soon it is not displaying anything and it has created one more text box which is a very unusual error so let's see what is going on here and when we do copy and paste we do always great mistakes here I have pasted this text box so I need to remove it and we need to remove everything from here and we just need to write an error message yeah it is a very silly mistake sorry please forgive me for this okay let's run it again and let's see I hope there will no mistakes now okay let's add here signs and fiction and let's see what happens okay add it successfully let's add one more section self help okay headed successfully now add a b c x y z and let's save it okay or add generally method has created okay and now we will Define an update method for this so I am doing some copy and paste again so please forgive me for future error I have to save some time for this video update sorry copy and paste and rename it to the upgrade okay now here if we click right click here and go to view okay let's do it carefully update generate and in update method we need a hidden field which is ID S as so input type equals to Hidden asp 4 ID and that's enough and it will be saved and we do not need to change anything at all so there will be only two changes one is updates under and second one is we have to add a hidden field for this ID okay now here had one more View which will be get all here we will display the list of genres get all and remove a form from here okay here at generate and okay here we will display a table and it will be I enumerable okay now here table class equal to table stripped table bordered and table dark T head t sorry TR TS name and accent T body TR and here and the rate for each where item in model right here TD item dot name and here we will create two link one is four and add it so here's genre and edit the ID equals to item dot ID okay and it will be an edit link class equal to BTN BTN success okay and the next one will be delete and here vtn Danger and right here right here on click written this written window dot confirm are you sure okay let's see it works fine or not okay and it will be a delete method generate delete delete okay its class will be BT and BTN Danger and Method generate delete ID equals to item number ID delete okay now let's run our project and see what is happening there okay guys just click here list button and let's see it is taking time okay here I have put an angular syntax by mistake so let's change it and add somewhere here a link of AD genre okay go to the definition not go to the definition go to view page control mg okay and here it is our generous and here not here first we need to change it at the red item dot name okay the class equals to row new class equals to call MD 6 and a href equals to genre slash add more okay and class equals to BTN BTN dark okay and let's run our project Okay click here and list and wait for a moment so here here is our table and these are our generous horror science and fiction self-help ABC and here is our add more button okay so let's try to edit it and here it is saying that this link is missing because we have because we haven't defined an edit link it was an update method so let's copy it and here its name was update and let's change some fonts of this project so I am going here again and here here Style goes to font family will be this version of Thomas sensory okay now let's run our project let's click here in edit button and rename it to new genre and let's save it error has occurred on server side so let's debug it and find what is happening so here date method and oh sorry we have added it accidentally new genre and let's rename let's modify it and click here save error has occurred so let's see what is happening here foreign let's change this method updated successfully and here I knew what is the problem we haven't changed the method name which is update okay let's run it and we need some more modification here before running it here in the case of success we will move to the get all method and in the case of failure we will move to the written View to the same view sorry okay now let's run it I hope everything is fine now okay guys click here on edit button and let's generate updated and here let's see result and here yes it is updated and let's try to delete it are you sure yes I am sure and delete button is working fine so that was our January controller class which has completed now and here we need one more modification we don't need this temp data class temp data message here okay okay now we will create and another functionality for let's see now we will create functionality for this author or publisher class okay now let's create our author section so we will start from the repositories so copy here and okay it is not accepting copy paste so we have to write it interface and I author service and here inside that I author service we will write all these method and here we need author okay and update author Google update author pull delete ENT ID author find by idid and high enumerable get author get all and now we will create a class which will be author service okay and it will Implement I author service sorry ER it is or and now we will implement this interface okay let's move to the genre interface and let's copy all of these methods okay and from here here and now let's paste them it will be author service and all this Andre will be replaced with author okay so let's check all the methods so that we can avoid mistakes in future okay here author service database contest contacts the start context context public pool add author model context.author dot add and it's fine Bool delete find by ID and here author sorry it is fine this dot find by ID and we are using this method here okay context.author dot remove data contact dot save changes okay find by ID context.author dot find get all contacts dot author dot to list update context dot author dot update contact or save changes and in the catch written false so author Services has created now okay now move to the program.cs file and here we have to add the services into our di container so I author iata service and right here author service okay and now we are good to go okay let's create author controller click here controller empty controller and name it to author controller okay and here press Ctrl m o let's copy all of these methods and let's paste them here okay so here we copy genre and we will replace all the generator to the author okay now our controller method has ready so let's cross check it and author controller okay it is our Constructor IX and add add model state is valid result service dot add model okay added successfully and here update method okay and here post method for update okay Services dot update okay delete all sorry delete a record and get all okay now we will create views for it so copy this folder and paste it here and rename it to what its name is author so let's update all of these views so here let's see it will be copies Andre to author okay and add author and here it will be Zone sorry author name author name author name author name and here okay authors let's get all okay everything is fine now let's move to the update method control MZ and replace this genre to the author okay three occurrences has replaced so update author here is our hidden field that is ID and here replace this name to author name four occurrences has replaced so here okay and submit save author slash get all list okay it's fine now and now let's move to the get all method here we will do the same thing again copy genre and replace Andre with author okay and name width author name okay here is a author so let's add add more authors table table strip table border table doc author name action and authors let's update ID edit and here is our delete method so I think we are good to go now let's move to the our layout page and here we will write some our links genres last add and it will be our genre section here authors slash add and it will be our author section and here publisher slash add it will be our publisher section publisher section and last one will be a book section so here we will Define a link for book book slash add okay now we have updated all the navigation links fine and now let's check it in a browser so let's run our project and wait for a moment so here we have our links and let's click on author add author author field is required so let's name the author zondo and let's see what happens here it is displaying an error message so let's track that error and first place a big Point here and click on save button here okay let's see and it is giving a false value so let's move again and here step into it okay let's see what is the error that is coming and it is true here and it is working fine now I wonder why it is working now added successfully let's add again let's author One and let's see hmm it is working fine I don't know what was that error but it's okay it is working fine now do [Music] and now we don't need that breakpoint since it is working fine okay let's move to the list and here is the list of our methods it is our add more button and it is our list John Doe edited it and let's add it this to James save it and here it is working fine now let's delete this and our author section has completed now let's move to the publisher section so here first we need to create our services right here create an interface okay and it will be I publisher dot CS okay here we will again copy these methods so that we can save some time for ourselves and video cannot be so long because of that the genre to publisher b u b l i s h e r publisher okay and let's click here copy this and let's see yeah it is working now let's rename it to the publisher service and here inside our publisher service find the genre and replace it with Publisher so everything is fine now let's move to the controller and we are going to copy that whole controller so copy and paste it here and rename it to what it is publisher controller okay and here just replace this genre with our publisher okay and let's see what it is saying I publisher services okay here okay let's rename it to I publisher service okay it is all right publisher service and we need to change here also I publisher service now it is fine okay now let's move to the program.cs file and here we need to change it I publisher service to publisher service okay here we have added our services into our di container now let's move to the controller now we need to create some views and again we are copying this whole folder and pasting here and rename it to the publisher okay and now let's go to the add View and here copy generally to the publisher fine and that name to the publisher name okay now let's move to the update method so click here and replace this generally with Publisher okay and name with publisher name okay and here it is our update View and let's move to the last view which is get all and here find that name and replace it with Publisher name and generate to the publisher okay let's see publisher slash update Publishers last lead okay delete and here publisher name and action okay and now let's run this project and see what is going on there okay let's click here and it is giving some error and here it is a spelling mistake Pub H and it should not be there so let's move to the layout page and here Pub and remove this h q b l i s h e r and let's run it again okay and here it is working fine publisher name feed is required so validation is okay and type here x y z publication and here it is added successfully so ABC publication and save it and let's type some random thing here okay now let's move to the list and here let's edit this record and name it to the zondo publication okay and now let's try to remove it yeah so our publisher component is working fine okay now let's move to the book section okay here and we will create again some services so copy it and rename it to the I book service okay and rename author to book okay and here go now let's create one more file which will be book service class and let's create it here and rename it to the book service so here book service okay and here replaced this author to the book okay and everything will be same okay now move to the program.cs file and it is and here we will add our services to the DI container so it will be a book service and here I book service okay and let's close it and now create our controller here so right here copy and paste and rename this author controller to book controller here controller okay now let's move back to the book service and here we have to update this method and this class also so go to the book.cs class and here add some properties like crop a string author name publisher name and one more thing is Android name and these fields will not be mapped to the database so right here not mapped and copy it here and here okay now where data equals to now let's write a join query from book in context Dot book join author in context Dot author on book dot author ID equals author dot ID and join publisher book dot sorry join publisher in context dot publisher on book dot publisher ID equals publisher.id join and here is one more table and which is done publisher header now it is genre in sorry small G and r e genre in context dot genre on book dot is Andre ID book Dot is under ID equals genre dot ID and select new select new book and here book ID equal to book dot ID author ID equal to book dot author ID and genre ID equals to the under dot ID and here ISBN equals to book dot ISBN comma here publisher ID equals to publisher dot ID comma title equals to book dot title it should be book dot publisher ID ID book Dot book dot generate ID book DOT ispn book dot publisher ID book dot title and let's see equals to Total Pages equals to book dot total pages and now we have remained genre name equal to this is Andre dot name comma author name equals to author dot name and the last one is publisher name equals to publisher dot name okay dot list and here we will return the data okay it is our book service method sorry book service class and now let's move to the book controller and here we will copy all the author to the book okay we are fine now and here right click here go to the definition and here we need some more classes sorry some more properties one is not mapped p r o p double tap list of Select list item okay and here it will be author list okay and here will be book list and one more thing which will be which will be genre list okay Let's ignore it for now okay here we have added three more properties one is author list of type select list item list another one is book list of similar type and general list of similar type so here we need some more services private read-only I author service and here author but let's first replace this service okay let's replace this service with book service book service book service book service and book service and author service and the next one will be hi zandre service so here is Andre service and the last one is publisher service High publisher service so let's also Define it here and here I send a service High publisher service and we need one more Eye author service author service okay and this dot author service equal to author service okay here it will be your book service and here it will be a book service also here also here also and here also okay now let's define a model equals to new book and here pass this model to The View okay let's create a ad section so here model Dot author list equals to author services Dot get all dot select get all Dot select and a new a new sorry uh a new select list item and here text equals to and text equals to [Music] um a DOT author name and value equals to a DOT ID dot to string okay and right here dot to list okay and here publisher list and let's see publisher list is not coming and why is that how it should be publisher list not a book list publisher list okay author list public publisher list and genre list so here publisher list equals to publisher service publisher service get all author name and rename it to publisher name and here will be our genre list and right here this is Android name but first modify this line zandre service okay and here's Andre name a dot zombie name and it is a name not genre name so here okay it is fine and let's copy this section and paste it here okay but we need two more lines here that is selected equals to a DOT a DOT what it is ID equals to hmm equals to what model dot ID model Dot author ID okay here selected equals to a DOT ID equals to model Dot publisher ID and let's see model Dot publisher ID selected equals to okay and here a DOT same selected equals to a DOT high D double equals to model dot is Android ID okay and let's copy these lines and paste it here so here let's rename record to the model okay and again here paste those lines okay fine now let's move to the views are not created yet so here copy any one of this folder right paste here and rename it to the book fine now let's move to the get all section first so here is generate to book fine and here we have multiple columns now like title ISBN and total pages and book ISBN total pages author publisher and the next one is author publisher and genre so we will type our genre here zandre okay now book name sorry it is title zandre okay the next one is BN next one is total pages next one is publisher publisher name and the last one is no this one is author name author name okay let's move to the add section right here go to view and write it copy genre and replace it with book so here okay let's change it to the title and title title title let's add some more Fields here the next one will be after the title the next one will be zandre and here genre will be our drop down list so it will be genre ID okay here select select asp4 ID and ASP items equals to genre list and it will be model dot is andrelist okay and Sandra ID fine and here class equal to form control and option option value equals to blank and right here select okay and let's create one more field which will be author and here are the list and it will be our author ID and here author ID and we need one more list here which will be publisher and here publisher ID and here publisher list publisher list and here is our publisher ID and here is our author ID here is our genre ID and here is our title and next next let's write here esp4 ISBN and here ISBN ISBN okay and here one more thing which is total pages and it will be our input type number total pages total Pages SP valuation 4 total pages and esp4 total pages okay okay let's see inside here do we have created all the properties all the means all the input controls there title ISBN total Pages author ID publisher ID genre ID okay we have created all the fields here so so first Let's test this add method and that list method okay guys it is our book section and let's see here it's our genre and here is our author and here is our publisher list okay now let's check the validations and validation is working fine okay let's name it book one and here horror and sorry what it is let's see it is ISBN so let's change it here where it is BN and it won't reflect it and it won't reflect it now but when we will debug it again it will be reflected so ISBN number ISBN ABC XYZ and two two two oh and Pages 200 and here author John Doe and John dock application save let's see what is happening here author ID author list author name and here one zero zero zero zero okay let's move to the book class here go to the definition and here let's add these things here and I am making these properties in the label maybe why they are giving error because these properties can't be null so just add a question mark here and I think problem will be solved now okay let's check it now okay let's add my inventions and genre will be science and fiction SBN total page is 200 author John Doe publisher John Doe publication and let's save it and let's see yeah that validation error has gone and let's see is it working fine or not so yeah it is working fine okay had it successfully let's add one more record let's name it record one and it will be self-help ISBN 0 0 1 1 total pages 250 Arthur James XYZ publication let's save it and let's move to the list and here here is our table and let's let's create a edit module because we haven't defined it yet so here let's go to the get module get all module first and here we have to increase the width of this table so I have changed it to md8 okay and here we don't need much padding in the top okay um let's copy all of these lines and here inside the update View let's paste it and add here uh let's rename it first it will be an update method and it will be update book and we need a hidden method here which will be ID okay and it will be hidden okay okay now let's check how all the things are going okay let's click here in edit section and rename it to Atomic habit and here okay and let's change its pages to 225 okay let's update it and it has updated now and let's add one more record let's name it horror and ISBN ABC and like this and total Pages John Doe publisher x y z publication and here let's move to the list and let's try to delete it okay and delete functionality is working fine now let's see why why it is not increased why its width is not increased so let's check let's move to the get all method and here okay here we need to okay I think it should be 10 and let's check how the things are going okay and I'm still not satisfied so let's increase his width more and let's change it to the 12 okay and let's refresh it okay and it's fine now its width is working fine so it is our project okay okay and now let's okay now let's type here bootstrap icon CDN and click here and here copy this line and paste it in our layout.cs HTML page so I will include it here okay now let's move to the uh book controller and get all section and here we can write I class equals to b i b i b i pen okay and here instead of delete we can write b i b I delete Bibi trash okay and and add a plus sign here okay and now move to the add page hair and hair right I class equal to b i b I save and inside the update method here I class equal to b i b I save and here b i b i list sorry I okay and let's copy it and let's move to the add section again and here after this section and let's see how everything is going but I forget something here I class equals to b i B I list okay and and we have to update it in the update section so here instead of this write this okay now let's check it in browser okay and here you can see we have added some icons so let's move to the list and here is our edit and delete icons let's and let's copy all these icons into some other modules like Sunray author okay okay fine and let's copy this section and let's apply it to the all other views so let's do it in other section first so here go to the ad and paste it okay and now here inside the update section paste it and let's do the same thing inside the notebook is updated inside the genre controller create here and paste here okay and here now here the last controller published controller and update this section and update the edit section also okay now okay now here in or get all section let's do some changes like at Plus add plus here and here okay right here I I class equals to bi b i b i pen and here v i b i Trace okay so author section is done now let's move to this Android section and here go to the get all method and copy it here and copy it here also and it will be a trash so close it and now let's move to the last section of publisher method publisher controller and get all method so here and here add delete and right here trash okay let's check all these things in browser okay and it is our 100 controller and here sorry let's move to oh here link has changed okay and okay guys we need to upgrade these links okay so here it will be our publisher slash get all and here inside that update method publisher slash get all okay and here in author controller it will be author slash get all and inside the update method it will be authors list get all okay now move to the genre controller and here it will be zandre and here inside the update method it will be genre also okay and here it is under method and let's click to the author here authors list and here Publishers list okay every link is working fine okay guys that's it for today if you find this video helpful then please hit that like button and make sure to subscribe this channel so you won't miss any update in future okay see you later
Info
Channel: Ravindra Devrani
Views: 29,447
Rating: undefined out of 5
Keywords: dot net core projects, dot net 6 project, dot net core mvc project, book store app in dot net core
Id: chCB6pmZZn4
Channel Id: undefined
Length: 121min 41sec (7301 seconds)
Published: Sun Oct 02 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.