@mgsmus hocam burada yapmak istediğimiz aslında şu,
uzun bir süredir dinamik bir randevu sistemi yapmak istiyoruz. takıldığımız yerleri soralım, randevu sistemini hepten forumdakilere yaptırmayalım diye didinip duruyoruz, fakat takılıp kaldık ilerlemiyor:) şimdi doktor ve hastaları ilgilendiren bir sistem bu. doktor müsait olduğu randevu randevu saatleri veritabanına kaydedecek. ve sadece bu doktara özel bir sayfada bu müsait olduğu zamanları hastalara göstereceğiz. ama performans, kullanım kolaylığı ve görsellik açısından düzgün de bir sistem olmasını istiyoruz.
arayüzüm bu şekilde:
http://prntscr.com/lozo61
boş randevu saatlerini tuttuğum tablo:
http://prntscr.com/lp018s
şimdi doktor 1 aylık randevu saati oluşturmak isteyebilir. bunları kullanıcıya 3'erli günler halinde filtreleyerek göstermeyi düşündük. kullanıcı sağ veya sol butona basınca bir sonraki veya önceki 3 günün randevuları gelmesini istiyoruz. ama bunu sayfa post etmeden, ajax ile yapmak istiyoruz.
öncelikle tüm verileri json ile blade gönderip orada filtreleme yapmayı düşündük fakat daha sonra saçma geldi. sayfaya boş yere veri çekmeye gerek yok dedik. o yüzden butona basıldığında blade'den controller'a bir sayısal değer gönderelim, bu sayısal değeri controllerda kullanıp tekrar blade gönderelim diye çalışıyoruz. aslında arkadaşın sormak istediği, bizimde tam olarak takıldığımız nokta burası
yukarıda kırmızı ile işaretlediğim yer burası,
blade;
<div class="visits randevular">
<a value="b" onclick="sol()" class="custom-scroll-link btf-l sol"><i class="fa fa-angle-double-left"></i></a>
<a onclick="sag()" class="custom-scroll-link btf-l sag"><i class="fa fa-angle-double-right"></i></a>
<p style="padding-bottom: 40px;font-size: 13px;">
@foreach($grouped as $day => $appointments)
@if($loop->first)
<strong style="width:33%;float:left;font-weight: bold">{{ $day }}</strong>
@elseif($loop->iteration == 2)
<strong style="width:33%;float:left;font-weight: bold">{{ $day }}</strong>
@else
<strong style="width:33%;float:left;font-weight: bold">{{ $day }}<br /></strong>
@endif
@endforeach
</p>
@foreach($grouped as $day => $appointments)
<ul style="width:33%; float: left">
@foreach($appointments as $appointment)
@php($zaman=$appointment->appointment_date->format('H:i'))
<li><a href="/randevu/{!! $zaman !!}">{{ $appointment->appointment_date->format('H:i') }}</a></li>
@endforeach
</ul>
@endforeach
</div>
script.js;
bu kodlar ile sayfayı post ettirmeden controller'a +3 ve -3 değerlerini gönderiyoruz(randevuları 3'erli günler halinde listelediğimiz için).
function sol(){
$.ajax({
type:'GET',
data:'gunazalt='+-3,
success: function(msg){
console.log("ok");
}
});
}
function sag(){
$.ajax({
type:'GET',
data:'gunekle='+3,
success: function(msg){
console.log("ok");
}
});
}
controller;
controller'da bu gelen değeri
addDay()
komutu ile kullanmayı düşündük.
public function index(Request $request,$id)
{
$user = Auth::user('name');
$sehirler = Sehirler::all();
$uzmanliks = Uzmanlik::all();
$a = $request->input('b');
/*$deger = 0;
if (isset($_GET['gunekle'])){
$deger += $_GET['gunekle'];
}
if (isset($_GET['gunazalt'])){
$deger -= $_GET['gunazalt'];
}*/
$deger = 3;
$baslamatarihi=Carbon::create('2018','11','17','0','0');
$bitistarihi =Carbon::create('2018','11','17','0','0')->addDay($deger);
$appointments = DoctorAppointment::whereBetween('appointment_date',[$baslamatarihi,$bitistarihi])
->where('clinic_id','=',$id)
->get();
$grouped = $appointments->groupBy(function ($appointment, $key) {
// Burada sadece gün ay yıl kısmını alıyoruz. appointment_date alanını
// modelimizde tarih olarak belirttiğimiz için otomatik olarak Carbon
// objesi oluyor ve bu şekilde rahatça üzerinde oynayabiliyoruz.
return $appointment->appointment_date->format('d-m-Y');
});
$clinic_bilgileri = Clinic::with('clinic_uzmanlik')->find($id);
//DB::enableQueryLog();
$yorum_bilgileri = Yorumlar::with('kullanici')->where('clinic_id','=',$id)->get();
//dd(DB::getQueryLog());
return view('doktorprofili', compact(
'clinic_bilgileri','yorum_bilgileri', 'uzmanliks',
'sehirler','user','grouped','a','appointments','a'));
}
fakat gelen değeri işleyip tekrardan blade'e gönderemedik. ki post etmeden controller'dan veri gönderebileceğimizden şüphelerim de yok değil:D
sırf bunun için vuejs dersi aldım ama pek bir ilerleme kaydedemedik malesef:(
belki en başından beri mantığını yanlış kuruyoruz, bu konu ile ilgili de her türlü fikre açığız