/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans.directory.packet.template;
import beans.directory.lpu.entity.Lpu;
import beans.directory.packet.entity.PacketTemplateDetails;
import framework.beans.directory.DirectoryBean;
import beans.doctor.PacketService;
import beans.contract.entity.ContractPacket;
import beans.directory.packet.entity.PacketTemplate;
import beans.directory.packet.entity.PacketTemplateItem;
import framework.generic.ClipsServerException;
import framework.generic.EMoveToTrash;
import javax.ejb.Stateful;
import beans.UserRightsSet;
import beans.directory.simple.entities.MedexamType;
import beans.user.collaborator.entities.Collaborator;
import framework.security.UserRight;
/**
* @security - Ok.
* @author axe
*/
@Stateful(mappedName="clips-beans/DirectoryPacketTemplateBean")
public class DirectoryPacketTemplateBean extends DirectoryBean<PacketTemplate, PacketTemplateDetails>
implements DirectoryPacketTemplateBeanRemote {
public DirectoryPacketTemplateBean() {
super(PacketTemplate.class, "шаблон пакета услуг");
}
@Override
protected UserRight getRightForCreateDirectoryItem() {
return UserRightsSet.WRITE_CLINIC_ADMIN_DIRECTORY;
}
@Override
protected UserRight getRightForWriteToDirectory() {
return UserRightsSet.WRITE_CLINIC_ADMIN_DIRECTORY;
}
// @Override
// public List<PacketTemplateDetails> getDirectory() {
// try {
// Collaborator collaborator = findEntity(Collaborator.class, getCollaboratorId());
// List list = findEntityWhat("a", PacketTemplate.class, new Field[]{new Field("lpu", collaborator.getLpu())}, " ORDER BY a.id");
// List<PacketTemplateDetails> detailses = new ArrayList<PacketTemplateDetails>();
// for (Object object : list) {
// detailses.add(((PacketTemplate)object).getDetails(this));
// }
// return detailses;
// } catch (ClipsServerException ex) {
// return new ArrayList<PacketTemplateDetails>();
// }
// }
@Override
protected void set(PacketTemplate packetTemplate, PacketTemplateDetails d) throws ClipsServerException {
Lpu lpu = findEntity(Collaborator.class, getCollaboratorId()).getLpu();
packetTemplate.setTitle(d.title);
packetTemplate.setmedexamType(d.medexamTypeID == 0 ? null : findEntity(MedexamType.class, d.medexamTypeID));
//packetTemplate.setDirty(details.dirty);
packetTemplate.setTrash(d.hidden);
if (lpu.getId() == d.lpuID){
packetTemplate.setLpu(lpu);
}else{
throw new ClipsServerException("Пакет можно сохранить только для текущего ЛПУ");
}
}
@Override
protected void onRemove(PacketTemplate entity) throws ClipsServerException {
Field f1[] = { new Field("packetTemplate", entity) };
if(getEntityCount(PacketService.class, f1) > 0) {
throw new EMoveToTrash("По данному пакету уже оказаны услуги, удаление невозможно");
}
Field f2[] = { new Field("packetServiceTemplate", entity) };
if(getEntityCount(ContractPacket.class, f2, "") > 0) {
throw new EMoveToTrash("Существуют договора, к которым привязан данный пакет, удаление невозможно");
}
deleteEntityList(PacketTemplateItem.class, f2);
}
}