protected Long persistMessage(String messageOut) {

    if (messageEntity == null) {
      messageEntity = new MessageEntity();
      messageEntity.setEventDate(new Date());
      if (messageOut != null) {
        messageEntity.setMessage(messageOut);
      }
      messageEntity.setService(getServiceEntity());
      if ((getServiceEventEntity() == null)
          || (getServiceEventEntity() != null
              && getServiceEventEntity().getNotifyMessage()
              && getResponseEntity().getResponse() != null)) {
        messageEntity.setMessage(getResponseEntity().getResponse());
        messageEntity.setState(MessageState.RECEIVED.ordinal());
      }
      /*
       * TODO: no tengo idea de porque se hace esto
       */
      else {
        messageEntity.setState(MessageState.DELIVERED.ordinal());
      }
      messageEntity.setService(getServiceEntity());
      Long id = CsTigoApplication.getMessageHelper().insert(messageEntity);
      messageEntity.setId(id);
    } else {
      if (messageOut != null) {
        messageEntity.setMessage(messageOut);
      }
      CsTigoApplication.getMessageHelper().update(messageEntity);
    }
    return messageEntity.getId();
  }
 public ServiceEntity getServiceEntity() {
   if (serviceEntity == null) {
     serviceEntity =
         CsTigoApplication.getServiceHelper()
             .findByServiceCod(getResponseEntity().getServiceCod());
   }
   return serviceEntity;
 }
 public ServiceEventEntity getServiceEventEntity() {
   if (serviceEventEntity == null && getResponseEntity().getEvent() != null) {
     serviceEventEntity =
         CsTigoApplication.getServiceEventHelper()
             .findByServiceCodServiceEventCod(
                 getResponseEntity().getServiceCod(), getResponseEntity().getEvent());
   }
   return serviceEventEntity;
 }
  protected void notificate() {
    if ((getServiceEventEntity() == null)
        || (getServiceEventEntity() != null && getServiceEventEntity().getNotifyMessage())) {

      Integer title = event.getTitle();
      Integer desc = event.getSuccessMessage();

      if (getServiceEventEntity() == null) {
        desc = event.getErrorMessage();
      }

      CsTigoApplication.vibrate(CsTigoApplication.getGlobalParameterHelper().getPlatformVibrate());

      CsTigoApplication.showNotification(
          CSTigoNotificationID.SERVICE_UPDATE,
          CsTigoApplication.getContext().getString(title),
          CsTigoApplication.getContext().getString(desc),
          (getServiceEventEntity() != null && getServiceEventEntity().getActivityToOpen() != null
              ? getServiceEventEntity().getActivityToOpen()
              : MessageHistoryActivity.class));
    }
  }
  protected void validate() throws Exception {
    if (!CsTigoApplication.getGlobalParameterHelper().getDeviceEnabled()) {

      CsTigoApplication.vibrate(false);
      CsTigoApplication.showNotification(
          CSTigoNotificationID.SERVICE_UPDATE,
          CsTigoApplication.getContext().getString(R.string.disabled_device),
          CsTigoApplication.getContext().getString(R.string.disabled_device_desc),
          MainActivity.class);

      String messageIn = CsTigoApplication.getContext().getString(R.string.disabled_device_desc);
      MessageEntity messageEntity = new MessageEntity();
      messageEntity.setEventDate(new Date());
      messageEntity.setMessage(messageIn);
      messageEntity.setService(getServiceEntity());
      messageEntity.setState(MessageState.RECEIVED.ordinal());
      CsTigoApplication.getMessageHelper().insert(messageEntity);
      throw new Exception("");
    }
  }