package com.ejie.ab63.service.procedimientos;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.ejie.ab63.comun.Constantes;
import com.ejie.ab63.model.Establecimiento;
import com.ejie.ab63.model.inicio.InitForm;
import com.ejie.ab63.model.terceros.DatosDirecciones;
import com.ejie.ab63.service.expedientes.DetailExpedienteService;

public class AdaptacionDecretoProcedureActions extends BaseProcedureActions {

	protected AdaptacionDecretoProcedureActions(DetailExpedienteService detailExpedienteService) {
		super(Constantes.PROCEDIMIENTO_ADAPTACION_DECRETO_ACTIVIDAD, detailExpedienteService);
	}

	@Override
	public Establecimiento findEstablecimiento(InitForm form) {
		// recuperar el establecimiento buscando por el idExpediente
		Establecimiento establecimiento = this.getDetailExpedienteService().getEstablecimientoService()
				.findEstablecimientoByIdExpediente(form.getIdExpediente());

		// Si no se encuentra por id expediente, ya ha sido procesado
		if (establecimiento == null || establecimiento.getIdEstablecimiento() == null) {
			DatosDirecciones datosDirecciones = findDireccioneEstablecimiento(form);
			establecimiento = this.getDetailExpedienteService().getEstablecimientoService()
					.findByIdenticadorEstablecimiento(datosDirecciones.getIdentificadorEstablecimiento());
		}
		return establecimiento;
	}

	@Override
	public DatosDirecciones findDireccioneEstablecimiento(InitForm form) {
		return this.getDetailExpedienteService().getDatosDireccionesService()
				.findEstablecimientoExpediente(form.getIdExpediente());
	}

	@Override
	public Boolean isEnableExecuteAction(InitForm form) {
		return super.isEnableSaveExpediente(form);
	}

	@Override
	public Map<String, String> executeAction(InitForm form) {
		Establecimiento establecimiento = findEstablecimiento(form);
		if (establecimiento != null && establecimiento.getIdEstablecimiento() != null) {
			establecimiento.setFechaBaja(new Date());
			this.getDetailExpedienteService().getEstablecimientoService().update(establecimiento);
		}
		return new HashMap<String, String>();
	}

	@Override
	public String getButtonsText(InitForm form) {
		return form.getProcedureCod();
	}

}
