package com.jasamedika.medifirst2000.dao;

import java.util.List;
import java.util.Map;

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.StrukClosing;

@Repository("StrukClosingDao")
public interface StrukClosingDao extends PagingAndSortingRepository<StrukClosing, String> {

	@Query("select new Map (to_char(p.tglClosing ,'dd-MM-yyyy')  as tglClosing,r.namaRuangan as namaRuangan) from StrukClosing p left join p.ruangan r "
			+ "where date(p.tglClosing)  between date(:tanggalAwal) and date(:tanggalAhir) and r.id=:ruanganId group by to_char(p.tglClosing ,'dd-MM-yyyy'),r.namaRuangan")
	List<Map<String,Object>> gridStokOpName(@Param("tanggalAwal") String tanggalAwal, @Param("tanggalAhir") String tanggalAhir, @Param("ruanganId") Integer ruanganId);

	@Query("select new map( stokProdukDetailOpname.qtyProdukReal as qtyProdukReal, "
			+ " stokProdukDetailOpname.qtyProdukSystem as qtyProdukSystem,"
			+ " produk.namaProduk as namaProduk, "
			+ " ruangan.namaRuangan as namaRuangan, "
			+ " satuan.satuanStandar as satuan,"
			+ " coalesce(asalProduk.asalProduk,'-') as asalProduk) from StokProdukDetailOpname stokProdukDetailOpname  "
			+ " left join stokProdukDetailOpname.strukClosing strukClosing"
			+ " left join stokProdukDetailOpname.produk produk "
			+ " left join strukClosing.ruangan ruangan  "
			+ " left join stokProdukDetailOpname.asalProduk asalProduk "
			+ " left join produk.detailJenisProduk detailJenisProduk "
			+ " left join produk.satuanStandar satuan "
			+ " left join detailJenisProduk.jenisProduk jenisProduk "
			+ " left join jenisProduk.kelompokProduk kelompokProduk where produk.id is not null and to_char(strukClosing.tglClosing ,'dd-MM-yyyy')=:tglClosing ")
	List<Map<String,Object>> detailStokOpName(@Param("tglClosing") String tglClosing);


}
