/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.delegate.shedule.individual;
import beans.shedule.individual.SheduleIndividualWorkDetails;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.complex.DirectoryWorkType;
import clips.delegate.directory.complex.DirectoryCabinet;
import clips.delegate.directory.complex.DirectoryCabinetItem;
import clips.delegate.directory.complex.DirectoryWorkTypeItem;
import cli_fmw.main.ClipsException;
import cli_fmw.delegate.lists.DataChunk;
import clips.delegate.directory.ro.DirectoryCollaboratorItem;
import java.util.Date;
/**
* Делегат, представляющий работу сотрудника в заданное время.
* Т.к родительский делегат является уникальным, данный делегат
* ьудет уникальным и без программной обработки
* @author Axe Ilshat
*/
public class SheduleIndividualData extends DataChunk<SheduleIndividualWorkDetails> {
public SheduleIndividualData(DirectoryCollaboratorItem collaborator) {
super(new SheduleIndividualWorkDetails());
getDetails().collID = collaborator.getID();
}
public SheduleIndividualData(SheduleIndividualWorkDetails details) {
super(details);
}
/**
* Возвращает время начала работы
* @return TimeOffset, минут с начала точки отсчета 2007
*/
public Date getBegin() {
return getDetails().begin;
}
/**
* Задает начало работы
* @param begin - время в минутах с начала точки отсчета 2007
*/
public void setBegin(Date begin) {
if(getDetails().begin == null
|| !getDetails().begin.equals(begin)) {
getDetails().begin = begin;
fireContentStateEvent();
}
}
/**
* Возвращает продожительность работы в минутах
* @return минуты
*/
public int getWorkDuration() {
return getDetails().workDuration;
}
/**
* Задает продолжительность работы в минутах
* @param workDuration минуты
*/
public void setWorkDuration(int workDuration) {
if(getDetails().workDuration != workDuration) {
getDetails().workDuration = workDuration;
fireContentStateEvent();
}
}
/**
* Возвращает тип работы по справочнику
* @return элемент справочника
* @throws cli_fmw.delegate.exception.ClipsException
*/
public DirectoryWorkTypeItem getType() throws ClipsException {
DirectoryWorkType workTypes = (DirectoryWorkType)
DirectoryLocator.getDirectory(DirectoryWorkType.class, false);
return workTypes.getItemFromID(getDetails().typeID);
}
/**
* Задает тип работы по справочнику
* @param type элемент справочника
*/
public void setType(DirectoryWorkTypeItem type) {
if(getDetails().typeID != type.getID()) {
getDetails().typeID = type.getID();
fireContentStateEvent();
}
}
/**
* Возвращает дефолтовое время приема для данной работы
* @return время приема в минутах
*/
public int getDefaultServiceDuration() {
return getDetails().defaultServiceDuration;
}
/**
* Задает дефолтовое время приема для данной работы в минутах
* @param defaultServiceDuration минуты
*/
public void setDefaultServiceDuration(int defaultServiceDuration) {
if(getDetails().defaultServiceDuration != defaultServiceDuration) {
getDetails().defaultServiceDuration = defaultServiceDuration;
fireContentStateEvent();
}
}
/**
* Возвращает кабинет, где проводится данная работа
* @return элемент справочника
* @throws ClipsException
*/
public DirectoryCabinetItem getCabinet() throws ClipsException {
DirectoryCabinet cabinets = DirectoryLocator.getDirectory(DirectoryCabinet.class, false);
return cabinets.getItemFromID(getDetails().cabinetID);
}
/**
* Задает кабинет, где проводится данная работа
* @param cabinet элемент справочника
*/
public void setCabinet(DirectoryCabinetItem cabinet) {
if (cabinet == null || cabinet.getID() == 0) {
getDetails().cabinetID = 0;
fireContentStateEvent();
} else if (getDetails().cabinetID != cabinet.getID()) {
getDetails().cabinetID = cabinet.getID();
fireContentStateEvent();
}
}
}