Package beans.lpu

Source Code of beans.lpu.LpuBean

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package beans.lpu;

import framework.beans.EntityDetails;
import framework.beans.FacadeBean;
import framework.beans.security.BeanRights;
import beans.user.collaborator.entities.Collaborator;
import java.util.List;
import framework.generic.ClipsServerException;
import javax.ejb.EJBException;
import javax.ejb.Stateful;
import beans.UserRightsSet;
import beans.contract.entity.Contract;
import beans.directory.cabinet.entity.Cabinet;
import beans.directory.district.entity.District;
import beans.directory.lpu.entity.Lpu;
import beans.directory.lpu.entity.LpuDetails;
import beans.directory.packet.entity.PacketTemplate;
import beans.directory.simple.entities.ClinicType;
import beans.directory.simple.entities.Insurer;
import beans.laboratory.Laboratory;
import beans.user.client.entity.Client;
import framework.audit.AuditDoc;
import framework.beans.address.entities.Address;
import framework.beans.address.entities.AddressDetails;
import framework.beans.address.entities.AddressObject;
import framework.generic.EDataIntegrity;
import framework.generic.ESecurity;
import framework.security.SecurityChecker;

/**
* Security - Ok.
* @author axe
*/
@Stateful(mappedName="clips-beans/LpuBean")
public class LpuBean extends FacadeBean<Lpu>
        implements LpuBeanRemote {
   
    public LpuBean() {
        super(Lpu.class);
    }

    @Override
    protected void initBeanRights() {
        int [] r = new int[6];
        int cmr = RightPresence(UserRightsSet.WRITE_REGION_ADMIN_DIRECTORY.id);
        r[COMMAND_CREATE] = cmr;
        r[COMMAND_MODIFY] = RightPresence(UserRightsSet.WRITE_CLINIC_ADMIN_DIRECTORY.id);
        r[COMMAND_REMOVE] = cmr;

        rights = new BeanRights(r);
    }
   
    /**
     * Обновляет данные сущности.
     * @param details новые детали сущности
     * @throws EJBException в случае если обновление отвергнуто системой
     *          безопастности либо произошла ошибка
     * @return идентификатор сущности
     */
    @Override
    protected void onUpdate(Lpu entity, EntityDetails details,
            AuditDoc auditDoc, List<AuditDoc> auditDocList)
            throws ClipsServerException {

        LpuDetails d = (LpuDetails) details;
        Lpu lpu = entity;

        if (details.getId() != 0) {
            //Проверка на модификацию только своей клиники
            Collaborator collab = findEntity(Collaborator.class, getCollaboratorId());
            if (collab.getLpu().getId() != lpu.getId()
                    && RightPresence(UserRightsSet.WRITE_REGION_ADMIN_DIRECTORY.id) < 0) {
                throw new ESecurity(SecurityChecker.getClientHasNoRightMsg(UserRightsSet.WRITE_REGION_ADMIN_DIRECTORY.id));
            }
        }

        lpu.setTitle(d.title);
        lpu.setTitleShort(d.title_short);

        if (d.lpuCode == null) {
            throw new ClipsServerException("Не указан код ЛПУ в кодировке ТФОМС");
        }
        lpu.setLpuCode(d.lpuCode);

        if (d.ogrn == null) {
            throw new ClipsServerException("Не указан ОГРН код ЛПУ");
        }
        lpu.setOgrn(d.ogrn);

        if (d.chiefDoctor == 0) {
            throw new ClipsServerException("Не указан главврач ЛПУ");
        }
        lpu.setChiefDoctor(findEntity(Collaborator.class, d.chiefDoctor));

        if (d.accountant == 0) {
            throw new ClipsServerException("Не указан бухгалтер ЛПУ");
        }
        lpu.setAccountant(findEntity(Collaborator.class, d.accountant));
       
        if (d.clinicType == 0) {
            throw new ClipsServerException("Не указан тип ЛПУ");
        }
        if (d.insurer == 0) {
            throw new ClipsServerException("Не указана страховая компания по умолчанию");
        }
        if (d.subdivisionCode == null) {
            throw new ClipsServerException("Не указан код подразделение ЛПУ");
        }
        if (d.branch == null) {
            throw new ClipsServerException("Не указан код филиала РФОМС");
        }

        lpu.setPhone(d.phone == null ? "" : d.phone);
        lpu.setFax(d.fax == null ? "" : d.fax);
        lpu.setEmail(d.email == null ? "" : d.email);
        lpu.setOkpo(d.okpo == null ? "" : d.okpo);
        lpu.setOkonh(d.okonh == null ? "" : d.okonh);
        lpu.setOkved(d.okved == null ? "" : d.okved);
        lpu.setOkogu(d.okogu == null ? "" : d.okogu);
        lpu.setOkopf(d.okopf == null ? "" : d.okopf);
        lpu.setOkfc(d.okfc == null ? "" : d.okfc);
        lpu.setClinicType(findEntity(ClinicType.class, d.clinicType));
        lpu.setInsurer(findEntity(Insurer.class, d.insurer));
        lpu.setSubdivisionCode(d.subdivisionCode);
        lpu.setBranch(d.branch);

        Address address = lpu.getAddress();
        AddressDetails ad = d.addressDetails;
        if (ad != null && ad.objectId != 0) {
            if (address == null){
                address = new Address();
            }
            address.setAddressObject(findEntity(AddressObject.class, ad.objectId));
            address.setBuilding(ad.building);
            address.setFlat(ad.flat);
            saveEntity(address);
            lpu.setAddress(address);
        }else{
            throw new EDataIntegrity("Не указан адрес");
        }

    }

   
    @Override
    protected void onRemove(Lpu entity, List<AuditDoc> auditDocList) throws ClipsServerException {
        Field fieldLpu[] = {
            new Field("lpu", entity),
        };
        Field fieldDistrictLpu[] = {
            new Field("district.lpu", entity),
        };
        if (getEntityCount(Collaborator.class, fieldLpu) > 0) {
            throw new EDataIntegrity("С клиникой связаны сотрудники, удаление невозможно");
        }
        if (getEntityCount(Client.class, fieldDistrictLpu) > 0) {
            throw new EDataIntegrity("У клиники существуют пациенты, удаление невозможно");
        }
        if (getEntityCount(District.class, fieldLpu) > 0) {
            deleteEntityList2(District.class, fieldLpu, auditDocList);
        }
        if (getEntityCount(PacketTemplate.class, fieldLpu) > 0) {
            throw new EDataIntegrity("С клиникой связаны шаблоны пакетов услуг, удаление невозможно");
        }
        if (getEntityCount(Contract.class, fieldLpu) > 0) {
            throw new EDataIntegrity("С клиникой связаны контракты, удаление невозможно");
        }
        if (getEntityCount(Laboratory.class, fieldLpu) > 0) {
            throw new EDataIntegrity("С клиникой связаны лаборатории, удаление невозможно");
        }
        if (getEntityCount(Cabinet.class, fieldLpu) > 0) {
            throw new EDataIntegrity("С клиникой связаны кабинеты, удаление невозможно");
        }
    }

}
TOP

Related Classes of beans.lpu.LpuBean

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.