blob: bff9760fe8c1a93fda2d319d5ef7ec72f3881933 [file] [log] [blame]
/*
*******************************************************************************
* Copyright (c) 2019 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************
*/
package org.eclipse.openk.contactbasedata.repository;
import org.eclipse.openk.contactbasedata.model.VwDetailedContact;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import java.util.UUID;
public interface DetailedContactRepository extends PagingAndSortingRepository<VwDetailedContact, Long> {
Page<VwDetailedContact> findAll(Pageable pageable);
@Query( "select dc from VwDetailedContact dc "
+ "left outer join TblAssignmentModulContact ass on"
+ " ass.tblContact.id = dc.fkContactId"
+ " where (COALESCE(:contactType) is null or COALESCE(:contactType) is not null AND dc.contactType=:contactType)"
+ " and (COALESCE(:personType) is null or COALESCE(:personType) is not null AND dc.personTypeUuid=:personType)"
+ " and (COALESCE(:searchText) is null or COALESCE(:searchText) is not null AND dc.searchfield like %:searchText%)"
+ " and (COALESCE(:moduleName) is null or COALESCE(:moduleName) is not null AND ass.modulName = :moduleName)"
+ " and (COALESCE(:withoutModule) = false or COALESCE(:withoutModule) = true AND ass is null)"
)
Page<VwDetailedContact> findByFilter(@Param("contactType")String contactType,
@Param("personType") UUID personType,
@Param("searchText") String searchText,
@Param("moduleName") String moduleName,
@Param("withoutModule") boolean withoutModule,
Pageable pageable);
@Query( "select dc from VwDetailedContact AS dc"
+ ", TblContact AS c "
+ "inner join c.assignments a where "
+ "dc.fkContactId = c.id and"
+ "(COALESCE(:modulName) is null or COALESCE(:modulName) is not null AND a.modulName =:modulName) and"
+ "(COALESCE(:searchText) is null or COALESCE(:searchText) is not null AND dc.searchfield LIKE CONCAT ('%', :searchText , '%'))")
Page<VwDetailedContact> findByModulName(@Param("modulName")String modulName, @Param("searchText")String searchText, Pageable pageable);
}