میخواهیم یک سایت برای خودکار کردن فرایند فروش بلیتهای سینما بنویسیم. در این سایت امکان مشاهده فیلمهای در حال اکران وجود دارد. کاربران میتوانند عضو سایت شوند و پس از ورود به سایت برای هر فیلم صندلی موردنظر را رزرو کند.
بخشی از این پروژه نوشته شده است. از شما میخواهیم این پروژه را تکمیل کنید.
پروژه اولیه را از اینجا دانلود کنید. ساختار این پروژه به شرح زیر است:
در این سوال لازم است علاوه بر ایجاد seed ها، تغییراتی در Controller ها و route ها ایجاد کنید.
سه مدل به شرح زیر وجود دارد:
۱. مدل Movie
شامل فیلدهای زیر:
title
: نام فیلمrelease_year
: سال میلادی انتشار فیلمplay_time
: زمان اکران فیلم در سالن۲. مدل Seat
شامل فیلد زیر:
number
: شماره صندلی۳. مدل Ticket
شامل فیلدهای زیر:
movie
: فیلمی که این بلیت برای آن فروخته شده استuser
: کاربری که این بلیت را خریده استseat
: صندلی مربوط به این بلیتdate_bought
: تاریخی که بلیت خریده شده استقرار است همه صندلیهای سالن و لیست فیلمها در ابتدا با استفاده از seed
به پایگاه داده اضافه شود. سپس به ازای هر بلیتی که فروخته میشود
یک شیٔ از مدل Ticket
ساخته میشود.
مواردی که باید انجام دهید:
از شما میخواهیم در پوشه database/seeds
دو seed با نام کلاس
Movies
و Seats
ایجاد کنید.
seed
ها میخواهیم مقادیر زیر برای مدل Movie
در دیتابیس ایجاد شده باشد:
زمان اکران را به صورت native (بدون TimeZone) تعریف کنید.id | نام فیلم | سال انتشار | تاریخ اکران | ساعت اکران |
---|---|---|---|---|
1 | Children of heaven | 1997 | 2018/4/20 | 22:00 |
2 | About Elly | 2009 | 2018/4/20 | 20:00 |
3 | A separation | 2011 | 2018/4/22 | 18:00 |
4 | The salesman | 2016 | 2018/4/21 | 18:00 |
5 | The Elephant king | 2017 | 2018/4/21 | 20:00 |
Seat
نیز میخواهیم بعد از اجرای seed
مربوطهاش ۱۰ صندلی با آیدی ۱ تا ۱۰ و شمارهصندلی ۳۱ تا ۴۰ ایجاد شود.توجه کنید به هنگام داوری seed
ها با دستور
artisan db:seed --class=CLASS_NAME
اجرا میشوند پس حتما اسم کلاسها را مطابق اسمی که در صورت سوال گفته شده است قرار دهید.
در این قسمت باید Controller
مربوط به قسمت نمایش صندلیها را به نحوی تغییر دهید که فقط صندلیهایی که برای آن فیلم هنوز رزرو نشدهاند را نمایش دهد نه همه صندلیها را.
با توجه به توضیحات زیر، Controller ها را تکمیل کنید.
برای رزرو صندلی، کاربر مراحل زیر را انجام میدهد:
ابتدا از آدرس /movies
بازدید میکند که لیست فیلمهایی که در حال اکران هستند
را نمایش میدهد. سپس روی فیلم مورد نظر خود کلیک کرده و صفحهی بعدی صندلیهای رزرو
نشده برای آن فیلم را نمایش میدهد. تا این مرحله کاربر نیازی به login بودن ندارد.
وقتی کاربر روی یکی از صندلیها کلیک کرد:
در این قسمت شما باید view مربوط به آدرس stats
را به نحوی کامل کنید
که در پاسخ برای همه صندلیهای که حداقل
برای یک فیلم رزرو شدهاند (به ترتیب id
صندلی)،
یک خروجی JSON به شکل زیر بازگردد:
Controller
ها و در صورت نیاز فایل مربوط به route
ها هستند.seed
ها را با اسم گفته شده در پوشه database/seeds
قرار دهید.route
را تغییر دادید، نام یا آدرس route
های موجود در فایل را تغییر ندهید. تغییراتی که شما روی پروژه انجام میدهید نباید باعث شود کاربری اصلی پروژه مختل شود.Auth
از پیش آماده شده لاراول استفاده کنید و route
های مربوطهاش را در فایل روتها اضافه کنید.redirect
انجام شود، حتما عملیات را به صورت redirect
انجام دهید.