Package beans.doctor.checkup.shedule

Source Code of beans.doctor.checkup.shedule.CheckupSheduleBean

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans.doctor.checkup.shedule;

import beans.directory.checkuptype.entity.CheckupType;
import framework.beans.FacadeBean;
import framework.beans.security.BeanRights;
import framework.beans.EntityDetails;
import beans.doctor.checkup.Checkup;
import beans.doctor.checkup.CheckupDetails;
import beans.service.ServiceRender;
import framework.generic.ClipsServerException;
import framework.generic.EDataIntegrity;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.ejb.Stateful;
import beans.UserRightsSet;
import beans.user.collaborator.entities.CollaboratorFunctions;
import framework.audit.AuditDetails;
import framework.audit.AuditDoc;
import framework.beans.ModificationInfo;
import java.util.ArrayList;
/**
* Бин шедули анализов
* @security
* @author petr
*/
@Stateful(mappedName="clips-beans/CheckupSheduleBean")
public class CheckupSheduleBean extends FacadeBean<CheckupShedule>
        implements CheckupSheduleBeanRemote {

    public CheckupSheduleBean() {
        super(CheckupShedule.class);
    }

    @Override
    protected void initBeanRights() {
        int[] r = new int[4];
        r[COMMAND_READ] = RightPresence(UserRightsSet.READ_CHECKUP_SHEDULE.id);
        int cmr = RightPresence(UserRightsSet.MODIFY_CHECKUP_SHEDULE.id);
        r[COMMAND_CREATE] = cmr;
        r[COMMAND_MODIFY] = cmr;
        r[COMMAND_REMOVE] = cmr;
        rights = new BeanRights(r);
    }

    @Override
    protected void onUpdate(CheckupShedule entity, EntityDetails details,
            AuditDoc auditDoc, List<AuditDoc> auditDocList) throws ClipsServerException {
        CheckupSheduleDetails d = (CheckupSheduleDetails) details;
        checkCommandAccessibility(COMMAND_MODIFY);
        if(entity.getId() != 0) {
            checkIsNotInThePast(entity.getDate());
        }
        checkIsNotInThePast(d.date);
        entity.setDate(d.date);
        entity.setType(findEntity(CheckupType.class, d.checkupTypeId));
    }


    @Override
    protected void onRemove(CheckupShedule entity, List<AuditDoc> audit) throws ClipsServerException {
        checkCommandAccessibility(COMMAND_REMOVE);
        Field f[] = { new Field("checkupShedule", entity) };
       
        if(getEntityCount(Checkup.class, f) > 0) {
            throw new EDataIntegrity("Нельзя удалять запись в расписании анализа, без самого анализа");
        }
    }
   
    @Override
    public Set<CheckupDetails> getCheckupList() throws ClipsServerException {
        checkCommandAccessibility(COMMAND_READ);
        Set<CheckupDetails> res = new HashSet<CheckupDetails>();
        CheckupShedule entity = getExistentEntity();
       
        Field fields[] = {
            new Field("checkupShedule", entity),
            new Field("serviceRender.renderedDate", "", Field.OPERATOR_IS_NULL),
            new Field("serviceRender.functions", "", Field.OPERATOR_IS_NULL),
        };
       
        List list = findEntityList(Checkup.class, fields);
        Iterator i = list.iterator();
        while (i.hasNext()) {
            CheckupDetails d = ((Checkup) i.next()).getDetails(this);
            res.add(d);
        }
        return res;
    }

   
    @Override
    public ModificationInfo setCheckupList(Set<Integer> checkupSet) throws ClipsServerException {
        checkCommandAccessibility(COMMAND_MODIFY);
        CheckupShedule entity = getExistentEntity();
        Iterator<CheckupDetails> oi = getCheckupList().iterator();
        Set<Integer> old = new HashSet<Integer>();
        while (oi.hasNext()) {
            old.add(oi.next().getId());
        }
        old.removeAll(checkupSet);
        checkupSet.removeAll(old);
        Iterator<Checkup> newI = null;
        Iterator<Checkup> oldI = null;
        Field[] fo = {new Field("id", old, Field.OPERATOR_IN)};
        Field[] fn = {new Field("id", checkupSet, Field.OPERATOR_IN)};
        if (!old.isEmpty()) {
            oldI = findEntityList(Checkup.class, fo).iterator();
        }
        if (!checkupSet.isEmpty()) {
            newI = findEntityList(Checkup.class, fn).iterator();
        }
        ArrayList<AuditDetails> auditDetailsList = new ArrayList<AuditDetails>();
        if (oldI != null) {
            while (oldI.hasNext()) {
                Checkup checkup = oldI.next();
                AuditDoc<Checkup> auditDoc = new AuditDoc<Checkup>(checkup, getCollaborator());
                checkup.setCheckupShedule(null);
                saveEntity(checkup);
                auditDoc.check(checkup);
                auditDetailsList.add(persistAudit(auditDoc));
            }
        }
        if (newI != null) {
            while (newI.hasNext()) {
                Checkup checkup = newI.next();
                AuditDoc<Checkup> auditDoc = new AuditDoc<Checkup>(checkup, getCollaborator());
                checkup.setCheckupShedule(entity);
                saveEntity(checkup);
                auditDoc.check(checkup);
                auditDetailsList.add(persistAudit(auditDoc));
            }
        }
        return new ModificationInfo(entity.getId(), auditDetailsList);
    }


    @Override
    public ModificationInfo finishRenderingServices() throws ClipsServerException {
        checkCommandAccessibility(COMMAND_MODIFY);
        CheckupShedule entity = getExistentEntity();
        //сначала найдём все анализы из расписния
        Field fields[] = {
            new Field("checkupShedule", entity),
            new Field("serviceRender.renderedDate", "", Field.OPERATOR_IS_NULL),
            new Field("serviceRender.functions", "", Field.OPERATOR_IS_NULL),
        };       
        List list = findEntityList(Checkup.class, fields);
        Iterator it = list.iterator();

        List<CollaboratorFunctions> list1
                = findEntityList(CollaboratorFunctions.class,
                                new Field[]{new Field("collaborator.id", getCollaboratorId())});
        if (list1.size() < 1){
            throwNeedAdminSecurityException("Текущий сотрудник не может оказывать услуги");
        }
        CollaboratorFunctions collFunc = list1.get(0);

        ArrayList<AuditDetails> auditDetailsList = new ArrayList<AuditDetails>();
        while (it.hasNext()) {//шуршим по всем анализам
            Checkup checkup = (Checkup) it.next();           
            AuditDoc<Checkup> auditCheckup = new AuditDoc<Checkup>(checkup, getCollaborator());
            checkup.setCheckupShedule(null);//удаляем из расписания
            saveEntity(checkup);
            auditCheckup.check(checkup);
            auditDetailsList.add(persistAudit(auditCheckup));
            //теперь услуга к которой он привязан
            //так сделано из предположения одна услуга - один анализ
            ServiceRender serren = checkup.getServiceRender();
            AuditDoc<ServiceRender> auditSerren = new AuditDoc<ServiceRender>(serren, getCollaborator());
            if (serren.isRendered()) {
                serren.setRepeat(serren.getRepeat() + 1);
            }
            serren.setFunctions(collFunc);
            serren.setRenderedDate(new Date());
            saveEntity(serren);
            auditSerren.check(serren);
            auditDetailsList.add(persistAudit(auditSerren));
        }
        AuditDoc<CheckupShedule> auditShedule = new AuditDoc<CheckupShedule>(entity, getCollaborator());
        removeEntity(entity);
        auditShedule.check(null);
        auditDetailsList.add(persistAudit(auditShedule));
        return new ModificationInfo(0, auditDetailsList);
    }
}
TOP

Related Classes of beans.doctor.checkup.shedule.CheckupSheduleBean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.