package sikd.sikd5.sikd5ejb.mapper.ref;

import java.sql.Timestamp;
import java.util.Date;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import sikd.sikd5.sikd5bean.ws.ref.VersiAplikasi_WS;

/**
 *
 * @author soraturaes
 */

@SuppressWarnings("el-syntax")
public interface VersiMapper {
    
    @Select({
        " SELECT logcekversiid ",
        " FROM transaksi.logcekversi ",
        " where kodesatker = #{kodesatker,jdbcType=CHAR} ",
        " AND ip = #{ip,jdbcType=VARCHAR} AND tanggal = #{tanggal,jdbcType=DATE} ",
        " AND namaaplikasi = #{namaaplikasi,jdbcType=VARCHAR}"
    })
    
    Long selectLogCekVersiId(@Param("kodesatker") String kodesatker, @Param("ip") String ip, @Param("tanggal") Date tanggal, @Param("namaaplikasi") String namaaplikasi);
    
    @Select({
        "INSERT INTO transaksi.logcekversi( ",
        "	kodesatker, ip, tanggal, namaaplikasi, tanggalserver, tanggalclient, versiaplikasi, ket) ",
        "	VALUES (#{kodesatker,jdbcType=CHAR}, #{ip,jdbcType=VARCHAR}, #{tanggal,jdbcType=DATE}, ",
        "#{namaaplikasi,jdbcType=VARCHAR}, #{tanggalserver,jdbcType=TIMESTAMP}, ",
        "#{tanggalclient,jdbcType=TIMESTAMP}, #{versiaplikasi,jdbcType=VARCHAR}, #{ket,jdbcType=VARCHAR} ",
        ") returning logcekversiid "
    })
    long insertLogCekVersi(@Param("kodesatker") String kodesatker, @Param("ip") String ip, @Param("tanggal") Date tanggal, @Param("namaaplikasi") String namaaplikasi, @Param("tanggalserver") Timestamp tanggalserver, @Param("tanggalclient") Timestamp tanggalclient, @Param("versiaplikasi") String versiaplikasi, @Param("ket") String ket);

	   @Update({
        "UPDATE transaksi.logcekversi ",
        " SET tanggalserver=#{tanggalserver,jdbcType=TIMESTAMP}, tanggalclient=#{tanggalclient,jdbcType=TIMESTAMP}, ",
        " versiaplikasi=#{versiaplikasi,jdbcType=VARCHAR}, ket=#{ket,jdbcType=VARCHAR} ",
        " WHERE logcekversiid = #{logcekversiid,jdbcType=BIGINT}"
    })
	int updateCekLogVersiByPrimaryKey(@Param("logcekversiid") long logcekversiid, @Param("tanggalserver") Timestamp tanggalserver, @Param("tanggalclient") Timestamp tanggalclient, @Param("versiaplikasi") String versiaplikasi, @Param("ket") String ket );

        @Select(" SELECT versiindex, namaaplikasi, versi, NOW() tglserver, tanggalrelease, ket, statusberlaku \n" +
"	FROM transaksi.versiaplikasi WHERE namaaplikasi = #{namaaplikasi,jdbcType=VARCHAR} AND statusberlaku = true ")
	@Results({             
			@Result(property = "namaAplikasi", column = "namaAplikasi"),
			@Result(property = "versi", column = "versi"),
			@Result(property = "tanggalCurrentServer", column = "tglserver"),
			@Result(property = "tanggalReleaseAplikasi", column = "tanggalrelease"),
			@Result(property = "ket", column = "ket"),
			@Result(property = "statusBerlaku", column = "statusberlaku")
			})
	public VersiAplikasi_WS getVersiAplikasi(@Param("namaaplikasi") String namaaplikasi);
        
        
        @Select(" SELECT filenya \n" +
"	FROM transaksi.versiaplikasi WHERE namaaplikasi = #{namaaplikasi,jdbcType=VARCHAR} AND statusberlaku = true ")
	public String getAplikasiFile(@Param("namaaplikasi") String namaaplikasi);
        
        
}
