package com.jasamedika.medifirst2000.dao;

import java.util.List;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.jasamedika.medifirst2000.entities.Generik;

@Repository("ObatGenerikDao")
public interface ObatGenerikDao extends PagingAndSortingRepository<Generik, String> {
	
	@Query("select to_char(a.tglResep,'yyyy-MM-dd'), a.noResep, b.jumlah, b.hargaSatuan, b.produkId,c.noRegistrasi, d.noCm,d.namaPasien,d.tglLahir,d.jenisKelamin.jenisKelamin, a.ruanganTujuan.namaRuangan, c.tglRegistrasi, f.name from StrukResep a, PelayananPasien b, PasienDaftar c, Pasien d, MapGenerikToProduk e, Generik f where a.tglResep between date(:startDate) and date(:endDate) and a.strukOrderId = b.strukOrderId and a.pasien.pasienDaftar.noRec = c.noRec and c.pasienId = d.id and b.produkId = e.produkId and e.generikId = f.id")
	List<Object[]> findListObatGenerik(@Param("startDate") String startDate,@Param("endDate") String endDate);
	
	@Query("select to_char(strukResep.tglResep,'yyyy-MM-dd'), strukResep.noResep,ruangan.namaRuangan, "+
			"pelayananPasien.jumlah,produk.namaProduk,produk.kdProduk, "+
			"pasienDaftar.noRegistrasi, pasienDaftar.tglRegistrasi, "+
			"pasien.namaPasien, pasien.noCm, jenisKelamin.jenisKelamin,pasien.tglLahir "+
			"from PelayananPasien pelayananPasien  "+
			"left join pelayananPasien.strukResep strukResep "+
			"left join strukResep.ruanganTujuan ruangan "+
			"left join pelayananPasien.pasienDaftar antrian  "+
			"left join antrian.pasienDaftar pasienDaftar  "+
			"left join pasienDaftar.pasien pasien  "+
			"left join pelayananPasien.produk produk  "+
			"left join pelayananPasien.strukOrder strukOrder  "+
			"left join pasien.jenisKelamin jenisKelamin  "+
			"where produk.isNarkotika=true and strukResep.tglResep between date(:startDate) and date(:endDate)")
	List<Object[]> findListObatNarkotika(@Param("startDate") String startDate,@Param("endDate") String endDate);
	
	@Query("select to_char(strukResep.tglResep,'yyyy-MM-dd'), strukResep.noResep,ruangan.namaRuangan, "+
			"pelayananPasien.jumlah,produk.namaProduk,produk.kdProduk, "+
			"pasienDaftar.noRegistrasi, pasienDaftar.tglRegistrasi, "+
			"pasien.namaPasien, pasien.noCm, jenisKelamin.jenisKelamin,pasien.tglLahir "+
			"from PelayananPasien pelayananPasien  "+
			"left join pelayananPasien.strukResep strukResep "+
			"left join strukResep.ruanganTujuan ruangan "+
			"left join pelayananPasien.pasienDaftar antrian  "+
			"left join antrian.pasienDaftar pasienDaftar  "+
			"left join pasienDaftar.pasien pasien  "+
			"left join pelayananPasien.produk produk  "+
			"left join pelayananPasien.strukOrder strukOrder  "+
			"left join pasien.jenisKelamin jenisKelamin  "+
			"where produk.isPsikotropika=true and strukResep.tglResep between date(:startDate) and date(:endDate)")
	List<Object[]> findListObatPsikotropika(@Param("startDate") String startDate,@Param("endDate") String endDate);
	

}
