/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans.doctor.direction.search;
import framework.beans.FindEntity.Field;
import framework.beans.SecuredBean;
import framework.beans.security.BeanRights;
import beans.directory.simple.entities.CommitteeReason;
import beans.doctor.direction.Direction;
import beans.doctor.direction.DirectionDetails;
import beans.user.client.entity.Client;
import framework.generic.ClipsServerException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.ejb.Stateful;
import beans.UserRightsSet; import framework.security.RightChecker;
/**
* @security - Ok.
* @author lacoste
*/
@Stateful(mappedName="clips-beans/DirectionFactoryBean")
public class DirectionFactoryBean extends SecuredBean
implements DirectionFactoryBeanRemote{
public static int COMMAND_WRITE = 0;
@Override
protected void initBeanRights() {
int [] r = new int[1];
r[COMMAND_WRITE] = RightPresence(UserRightsSet.WRITE_CEC.id);
rights = new BeanRights(r);
}
@Override
public List<DirectionDetails> getDirectionListToComm(int comReasonID, int clientID, Date from, Date till) throws ClipsServerException{
checkCommandAccessibility(COMMAND_WRITE);
int pos = 2;
Field f[];
if (comReasonID != 0) {pos++;}
if (clientID != 0) {pos++;}
if (from != null) {pos++;}
if (till != null) {pos++;}
f = new Field[pos];
Field field;
pos = 0;
field = new Field("committeeReason", "", Field.OPERATOR_NOT_NULL);
f[pos++] = field;
if (comReasonID != 0) {
CommitteeReason commReason = findEntity(CommitteeReason.class, comReasonID);
field = new Field("committeeReason", commReason);
f[pos++] = field;
}
if (clientID != 0) {
Client client = findEntity(Client.class, clientID);
field = new Field("serviceRender.disease.emc.client", client);
f[pos++] = field;
}
if (from != null) {
field = new Field("date", from, Field.OPERATOR_EQUAL_OR_MORE);
f[pos++] = field;
}
if (till != null) {
field = new Field("date", till, Field.OPERATOR_EQUAL_OR_LESS);
f[pos++] = field;
}
field = new Field("ordered", false);
f[pos] = field;
List list = findEntityList(Direction.class, f, "AND a.id not in (select b.direction.id from CommitteeDirection b )");
List<DirectionDetails> res = new ArrayList<DirectionDetails>();
Iterator i = list.iterator();
while(i.hasNext()) {
Direction j = (Direction) i.next();
res.add(j.getDetails((RightChecker) this));
}
return res;
}
}