Arkadaşlar bir rezervasyon sistemi yapıyorum. Üyeler halı sahaların sahalarına saatlik rezervasyon yapacaklar. Fakat bir de abone olma durumu var. Bunu nasıl kontrol etmeliyim? Aklıma gelen birkaç yol var. Ancak hangisi en iyisi, sizin de fikirlerinizi almak istedim.
reservations tablomun yapısı şu şekilde
$table->engine = 'InnoDB';
$table->increments('id')->unsigned();
$table->integer('halisaha_id')->unsigned();
$table->integer('pitch_id')->unsigned();
$table->string('user_type',255);
$table->integer('user_id')->unsigned();
$table->dateTime('date');
$table->integer('price_id')->unsigned();
$table->boolean('is_online')->default(0); // online yapılan rezervasyon mu? Yoksa halı saha mı ekledi?
$table->boolean('is_paid')->default(0);
$table->timestamps();
Örnek bir senaryo üzerinden yapmak istediklerimi anlatayım. Mesela üye x halı sahasının y sahasına salı günü saat 21-22 için rezerv etmek istiyor. Ben Rezervasyon onay sayfasında, müşteriye ilgili gün ve saatin sonraki haftalardaki doluluk-boşluğuna göre abonelik durumunu göstermek istiyorum.
Mesela bir sonraki hafta aynı gün ve saat doluysa
"Abone olunamaz", 4 hafta sonraki aynı gün ve saat doluysa
"3 haftalık abone olabilirsin", eğer ilerde ilgili gün ve saat hiç dolu değilse
"Süre sınırı olmaksızın abone olabilirsin" gibi yazılar göstermek ve ona göre işleme devam ettirmek istiyorum.
Ve diyelimki müşteri 1 aylık rezervasyon aboneliği yapmak istedi, ben bunu nasıl bir mantıkla kayıt yapmalıyım.
Sorularımı toparlamam gerekirse;
1-) Abonelik için ayrı bir tablo oluşturmalı mıyım, yoksa üye 4 haftalık abonelik istediğinde ben 4 ayrı rezervasyon mu girmeliyim?
2-) Müşteri salı günü saat 21-22 arasını rezervasyon ederken, yukarıda anlattığım gibi metinleri göstermem için veritabanında nasıl bir sorgu çalıştırmalıyım (Yani ilerleyen haftalarda salı günleri 21 dolu mu? Doluysa arada kaç hafta var?).
3-) Eğer ayrı bir tablo olacaksa bu tablonun yapısı nasıl olmalı.
Benim şu an en iyi yol olarak düşündüğümü de yazayım da, siz eleştirin
Abonelik için ayrı bir tablo oluşturmadan, reservations tablosunda müşterinin rezervasyon yaptığı tarihten sonraki ilgili gün ve saatle eşleşen varsa ilk rezervasyonun tarihi getirilir. Müşteriye abonelik durumu gelen | gelmeyen tarihe göre gösterilir. Müşteri de ne zamana kadar abone olmak istiyorsa seçer. İlk rezervasyon ile aboneliğin son rezervasyon tarihi arasında kaç hafta varsa, o kadar rezervasyon kaydı; sadece date sütunu değişik olarak eklenir.
Eleştirilerinizi bekliyorum