текущий код акшена updateTask
Код:
package ru.bitel.bgbilling.plugins.crm.server.register;
import java.sql.SQLException;
import java.util.Date;
import org.w3c.dom.Element;
import ru.bitel.bgbilling.plugins.crm.common.model.RegisterGroup;
import ru.bitel.bgbilling.plugins.crm.common.model.RegisterTask;
import ru.bitel.bgbilling.plugins.crm.server.bean.event.RegisterTaskClosedEvent;
import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterGroupManager;
import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterTaskManager;
import bitel.billing.common.CommonUtils;
import bitel.billing.server.script.bean.event.EventProcessor;
import bitel.billing.server.util.MailMsg;
public class ActionUpdateRegisterTask extends ActionBase
{
@Override
public void doAction()
throws SQLException
{
int id = getIntParameter( "id", -1 );
int status = getIntParameter( "status", 0 );
Date now = new Date();
RegisterTask task = null;
boolean closeEvent = false;
RegisterTaskManager manager = new RegisterTaskManager( con );
if ( id < 0 )
{
task = new RegisterTask();
task.setID( -1 );
task.setContractID( cid );
task.setOpenUserID( userID.intValue() );
task.setOpenTime( new Date() );
task.setTypeID( getIntParameter( "type", 0 ) );
}
else
{
task = manager.getTaskByID( id );
// статус был изменен
if( task.getStatus() != status )
{
switch ( status )
{
case RegisterTask.STATUS_OPEN:
{
task.setOpenUserID( userID.intValue() );
task.setOpenTime( new Date() );
break;
}
case RegisterTask.STATUS_ACCEPTED:
{
task.setAcceptUserID( userID.intValue() );
task.setAcceptTime( new Date() );
break;
}
case RegisterTask.STATUS_CLOSED:
{
task.setCloseUserID( userID.intValue() );
task.setCloseTime( new Date() );
closeEvent = true;
break;
}
}
}
}
task.setTargetDate( getDateParameter( "target_date" ) );
task.setExecuteDate( getDateParameter( "execute_date" ) );
// проверка дат при закрытии
if ( status == RegisterTask.STATUS_CLOSED )
{
String checkResult = checkCloseDates( now, task );
if ( checkResult != null )
{
setErrorStatus( checkResult );
return;
}
}
else if ( status == RegisterTask.STATUS_ACCEPTED )
{
String checkResult = checkAcceptDates( now, task );
if ( checkResult != null )
{
setErrorStatus( checkResult );
return;
}
}
task.setLastmodUserID( userID );
task.setLastmodTime( new Date() );
task.setAddressParamID( getIntParameter( "apid", 0 ) );
task.setAddressObjectId( getIntParameter( "aObjectId", 0 ) );
task.setStatus( status );
task.setExecutors( CommonUtils.stringToIntegerList( getParameter( "executors" ) ) );
task.setGroupID( getIntParameter( "group", 0 ) );
task.setComment( getParameter( "comment", "" ) );
task.setResolution( getParameter( "resolution", "" ) );
manager.updateTask( task );
manager.updateExecutorList( task );
if ( closeEvent )
{
// отправка сообщения
EventProcessor.getProcessor().addEvent( new RegisterTaskClosedEvent( plugin.getPluginUID(), task ) );
}
if ( task != null && getParameter( "send.mail" ) != null )
{
sendRegisterEmail( task, getSubject( task ) );
}
Element problem = createElement( rootNode, "task" );
problem.setAttribute( "id", String.valueOf( task.getID() ) );
}
private String getSubject( RegisterTask task )
{
String pattern = pluginSetup.getStringValue( "register.task.mail.subject", setup.getStringValue( "register.task.mail.subject", "Отчет по задаче" ) );
try
{
if ( pattern.indexOf( "${group}" ) >= 0 )
{
RegisterGroup group = new RegisterGroupManager( con ).getGroupByID( task.getGroupID() );
if ( group != null )
{
pattern = pattern.replaceAll( "\\$\\{group\\}", group.getTitle() );
}
}
if ( pattern.indexOf( "${type}" ) >= 0 )
{
pattern = pattern.replaceAll( "\\$\\{type\\}", getTaskType( task.getTypeID() ) );
}
}
catch( Exception ex )
{
ex.printStackTrace();
}
return pattern;
}
protected void sendRegisterEmail( RegisterTask task, String subject )
throws SQLException
{
RegisterGroup group = new RegisterGroupManager( con ).getGroupByID( task.getGroupID() );
if ( group != null && notEmptyString( group.getEmail() ) )
{
// высылка извещения группе
MailMsg msg = new MailMsg( setup );
String message = createRegisterReport( task, group, "register_task.xsl" );
msg.sendMessage( group.getEmail(), subject, message );
}
else
{
setErrorStatus( "У группы нет почтового адреса!" );
}
}
}