package org.openbravo.tickets.module;

import java.math.BigDecimal;

import javax.enterprise.event.Observes;

import org.openbravo.base.model.Entity;
import org.openbravo.base.model.ModelProvider;
import org.openbravo.base.model.Property;
import org.openbravo.client.kernel.event.EntityDeleteEvent;
import org.openbravo.client.kernel.event.EntityNewEvent;
import org.openbravo.client.kernel.event.EntityPersistenceEventObserver;
import org.openbravo.client.kernel.event.EntityUpdateEvent;
import org.openbravo.model.pricing.pricelist.ProductPrice;

public class ProductPriceHandler extends EntityPersistenceEventObserver {

  private static Entity[] entities = { ModelProvider.getInstance().getEntity(
      ProductPrice.ENTITY_NAME) };

  @Override
  protected Entity[] getObservedEntities() {
    return entities;
  }

  public void onSave(@Observes
  EntityNewEvent event) {
    if (!isValidEvent(event)) {
      return;
    }
    final Entity productPriceEntity = ModelProvider.getInstance().getEntity(
        ProductPrice.ENTITY_NAME);
    BigDecimal unitprice = ((ProductPrice) event.getTargetInstance()).getStandardPrice();
    final Property listprice = productPriceEntity.getProperty(ProductPrice.PROPERTY_LISTPRICE);
    unitprice.add(new BigDecimal(10));
    event.setCurrentState(listprice, unitprice);

    System.out.println("Product Price " + event.getTargetInstance().getId() + " is being inserted");
  }

  public void onUpdate(@Observes
  EntityUpdateEvent event) {
    if (!isValidEvent(event)) {
      return;
    }
    System.out.println("Product Price " + event.getTargetInstance().getId() + " is being updated");
  }

  public void onDelete(@Observes
  EntityDeleteEvent event) {
    if (!isValidEvent(event)) {
      return;
    }
    System.out.println("Product Price " + event.getTargetInstance().getId() + " is being deleted");
  }
}